2020-07-12 04:59:14 -07:00
|
|
|
// Copyright 2020 yuzu Emulator Project
|
|
|
|
// Licensed under GPLv2 or any later version
|
|
|
|
// Refer to the license.txt file included.
|
|
|
|
|
|
|
|
#pragma once
|
|
|
|
|
|
|
|
#include "common/common_funcs.h"
|
|
|
|
#include "common/common_types.h"
|
|
|
|
#include "common/swap.h"
|
|
|
|
|
|
|
|
namespace AudioCore {
|
|
|
|
|
|
|
|
class ServerMemoryPoolInfo {
|
|
|
|
public:
|
|
|
|
ServerMemoryPoolInfo();
|
|
|
|
~ServerMemoryPoolInfo();
|
|
|
|
|
|
|
|
enum class State : u32_le {
|
|
|
|
Invalid = 0x0,
|
|
|
|
Aquired = 0x1,
|
|
|
|
RequestDetach = 0x2,
|
|
|
|
Detached = 0x3,
|
|
|
|
RequestAttach = 0x4,
|
|
|
|
Attached = 0x5,
|
|
|
|
Released = 0x6,
|
|
|
|
};
|
|
|
|
|
|
|
|
struct InParams {
|
|
|
|
u64_le address{};
|
|
|
|
u64_le size{};
|
2020-11-25 12:21:03 -08:00
|
|
|
State state{};
|
2020-07-12 04:59:14 -07:00
|
|
|
INSERT_PADDING_WORDS(3);
|
|
|
|
};
|
2020-11-25 12:21:03 -08:00
|
|
|
static_assert(sizeof(InParams) == 0x20, "InParams are an invalid size");
|
2020-07-12 04:59:14 -07:00
|
|
|
|
|
|
|
struct OutParams {
|
2020-11-25 12:21:03 -08:00
|
|
|
State state{};
|
2020-07-12 04:59:14 -07:00
|
|
|
INSERT_PADDING_WORDS(3);
|
|
|
|
};
|
2020-11-25 12:21:03 -08:00
|
|
|
static_assert(sizeof(OutParams) == 0x10, "OutParams are an invalid size");
|
2020-07-12 04:59:14 -07:00
|
|
|
|
2020-11-25 12:21:03 -08:00
|
|
|
bool Update(const InParams& in_params, OutParams& out_params);
|
2020-07-12 04:59:14 -07:00
|
|
|
|
|
|
|
private:
|
|
|
|
// There's another entry here which is the DSP address, however since we're not talking to the
|
|
|
|
// DSP we can just use the same address provided by the guest without needing to remap
|
|
|
|
u64_le cpu_address{};
|
|
|
|
u64_le size{};
|
|
|
|
bool used{};
|
|
|
|
};
|
|
|
|
|
|
|
|
} // namespace AudioCore
|