diff options
Diffstat (limited to 'src/audio_core/renderer')
| -rw-r--r-- | src/audio_core/renderer/audio_renderer.cpp | 6 | ||||
| -rw-r--r-- | src/audio_core/renderer/audio_renderer.h | 6 | ||||
| -rw-r--r-- | src/audio_core/renderer/command/command_generator.cpp | 12 | ||||
| -rw-r--r-- | src/audio_core/renderer/command/data_source/decode.cpp | 1 | ||||
| -rw-r--r-- | src/audio_core/renderer/mix/mix_info.cpp | 2 | ||||
| -rw-r--r-- | src/audio_core/renderer/splitter/splitter_context.cpp | 2 | ||||
| -rw-r--r-- | src/audio_core/renderer/splitter/splitter_context.h | 2 | ||||
| -rw-r--r-- | src/audio_core/renderer/system.cpp | 10 | ||||
| -rw-r--r-- | src/audio_core/renderer/system.h | 6 |
9 files changed, 30 insertions, 17 deletions
diff --git a/src/audio_core/renderer/audio_renderer.cpp b/src/audio_core/renderer/audio_renderer.cpp index 09efe9be9..df03d03aa 100644 --- a/src/audio_core/renderer/audio_renderer.cpp +++ b/src/audio_core/renderer/audio_renderer.cpp @@ -6,6 +6,7 @@ #include "audio_core/renderer/audio_renderer.h" #include "audio_core/renderer/system_manager.h" #include "core/core.h" +#include "core/hle/kernel/k_process.h" #include "core/hle/kernel/k_transfer_memory.h" #include "core/hle/service/audio/errors.h" @@ -17,7 +18,8 @@ Renderer::Renderer(Core::System& system_, Manager& manager_, Kernel::KEvent* ren Result Renderer::Initialize(const AudioRendererParameterInternal& params, Kernel::KTransferMemory* transfer_memory, const u64 transfer_memory_size, const u32 process_handle, - const u64 applet_resource_user_id, const s32 session_id) { + Kernel::KProcess& process, const u64 applet_resource_user_id, + const s32 session_id) { if (params.execution_mode == ExecutionMode::Auto) { if (!manager.AddSystem(system)) { LOG_ERROR(Service_Audio, @@ -28,7 +30,7 @@ Result Renderer::Initialize(const AudioRendererParameterInternal& params, } initialized = true; - system.Initialize(params, transfer_memory, transfer_memory_size, process_handle, + system.Initialize(params, transfer_memory, transfer_memory_size, process_handle, process, applet_resource_user_id, session_id); return ResultSuccess; diff --git a/src/audio_core/renderer/audio_renderer.h b/src/audio_core/renderer/audio_renderer.h index 24650278b..1219f74ca 100644 --- a/src/audio_core/renderer/audio_renderer.h +++ b/src/audio_core/renderer/audio_renderer.h @@ -14,7 +14,8 @@ class System; namespace Kernel { class KTransferMemory; -} +class KProcess; +} // namespace Kernel namespace AudioCore { struct AudioRendererParameterInternal; @@ -44,7 +45,8 @@ public: */ Result Initialize(const AudioRendererParameterInternal& params, Kernel::KTransferMemory* transfer_memory, u64 transfer_memory_size, - u32 process_handle, u64 applet_resource_user_id, s32 session_id); + u32 process_handle, Kernel::KProcess& process, u64 applet_resource_user_id, + s32 session_id); /** * Finalize the renderer for shutdown. diff --git a/src/audio_core/renderer/command/command_generator.cpp b/src/audio_core/renderer/command/command_generator.cpp index ccb186209..f97db5899 100644 --- a/src/audio_core/renderer/command/command_generator.cpp +++ b/src/audio_core/renderer/command/command_generator.cpp @@ -41,7 +41,7 @@ void CommandGenerator::GenerateDataSourceCommand(VoiceInfo& voice_info, const VoiceState& voice_state, const s8 channel) { if (voice_info.mix_id == UnusedMixId) { if (voice_info.splitter_id != UnusedSplitterId) { - auto destination{splitter_context.GetDesintationData(voice_info.splitter_id, 0)}; + auto destination{splitter_context.GetDestinationData(voice_info.splitter_id, 0)}; u32 dest_id{0}; while (destination != nullptr) { if (destination->IsConfigured()) { @@ -55,7 +55,7 @@ void CommandGenerator::GenerateDataSourceCommand(VoiceInfo& voice_info, } } dest_id++; - destination = splitter_context.GetDesintationData(voice_info.splitter_id, dest_id); + destination = splitter_context.GetDestinationData(voice_info.splitter_id, dest_id); } } } else { @@ -234,7 +234,7 @@ void CommandGenerator::GenerateVoiceCommand(VoiceInfo& voice_info) { if (voice_info.mix_id == UnusedMixId) { if (voice_info.splitter_id != UnusedSplitterId) { auto i{channel}; - auto destination{splitter_context.GetDesintationData(voice_info.splitter_id, i)}; + auto destination{splitter_context.GetDestinationData(voice_info.splitter_id, i)}; while (destination != nullptr) { if (destination->IsConfigured()) { const auto mix_id{destination->GetMixId()}; @@ -249,7 +249,7 @@ void CommandGenerator::GenerateVoiceCommand(VoiceInfo& voice_info) { } } i += voice_info.channel_count; - destination = splitter_context.GetDesintationData(voice_info.splitter_id, i); + destination = splitter_context.GetDestinationData(voice_info.splitter_id, i); } } } else { @@ -591,7 +591,7 @@ void CommandGenerator::GenerateMixCommands(MixInfo& mix_info) { if (mix_info.dst_splitter_id != UnusedSplitterId) { s16 dest_id{0}; auto destination{ - splitter_context.GetDesintationData(mix_info.dst_splitter_id, dest_id)}; + splitter_context.GetDestinationData(mix_info.dst_splitter_id, dest_id)}; while (destination != nullptr) { if (destination->IsConfigured()) { auto splitter_mix_id{destination->GetMixId()}; @@ -612,7 +612,7 @@ void CommandGenerator::GenerateMixCommands(MixInfo& mix_info) { } dest_id++; destination = - splitter_context.GetDesintationData(mix_info.dst_splitter_id, dest_id); + splitter_context.GetDestinationData(mix_info.dst_splitter_id, dest_id); } } } else { diff --git a/src/audio_core/renderer/command/data_source/decode.cpp b/src/audio_core/renderer/command/data_source/decode.cpp index 911dae3c1..905613a5a 100644 --- a/src/audio_core/renderer/command/data_source/decode.cpp +++ b/src/audio_core/renderer/command/data_source/decode.cpp @@ -9,6 +9,7 @@ #include "common/fixed_point.h" #include "common/logging/log.h" #include "common/scratch_buffer.h" +#include "core/guest_memory.h" #include "core/memory.h" namespace AudioCore::Renderer { diff --git a/src/audio_core/renderer/mix/mix_info.cpp b/src/audio_core/renderer/mix/mix_info.cpp index 5e44bde18..68bbe0aed 100644 --- a/src/audio_core/renderer/mix/mix_info.cpp +++ b/src/audio_core/renderer/mix/mix_info.cpp @@ -93,7 +93,7 @@ bool MixInfo::UpdateConnection(EdgeMatrix& edge_matrix, const InParameter& in_pa for (u32 i = 0; i < destination_count; i++) { auto destination{ - splitter_context.GetDesintationData(in_params.dest_splitter_id, i)}; + splitter_context.GetDestinationData(in_params.dest_splitter_id, i)}; if (destination) { const auto destination_id{destination->GetMixId()}; diff --git a/src/audio_core/renderer/splitter/splitter_context.cpp b/src/audio_core/renderer/splitter/splitter_context.cpp index 686150ea6..d0f3b60c2 100644 --- a/src/audio_core/renderer/splitter/splitter_context.cpp +++ b/src/audio_core/renderer/splitter/splitter_context.cpp @@ -9,7 +9,7 @@ namespace AudioCore::Renderer { -SplitterDestinationData* SplitterContext::GetDesintationData(const s32 splitter_id, +SplitterDestinationData* SplitterContext::GetDestinationData(const s32 splitter_id, const s32 destination_id) { return splitter_infos[splitter_id].GetData(destination_id); } diff --git a/src/audio_core/renderer/splitter/splitter_context.h b/src/audio_core/renderer/splitter/splitter_context.h index 556e6dcc3..1c0b84671 100644 --- a/src/audio_core/renderer/splitter/splitter_context.h +++ b/src/audio_core/renderer/splitter/splitter_context.h @@ -42,7 +42,7 @@ public: * @param destination_id - Destination index within the splitter. * @return Pointer to the found destination. May be nullptr. */ - SplitterDestinationData* GetDesintationData(s32 splitter_id, s32 destination_id); + SplitterDestinationData* GetDestinationData(s32 splitter_id, s32 destination_id); /** * Get a splitter from the given index. diff --git a/src/audio_core/renderer/system.cpp b/src/audio_core/renderer/system.cpp index 31f92087c..ca656edae 100644 --- a/src/audio_core/renderer/system.cpp +++ b/src/audio_core/renderer/system.cpp @@ -32,6 +32,7 @@ #include "core/core.h" #include "core/core_timing.h" #include "core/hle/kernel/k_event.h" +#include "core/hle/kernel/k_process.h" #include "core/hle/kernel/k_transfer_memory.h" #include "core/memory.h" @@ -101,7 +102,8 @@ System::System(Core::System& core_, Kernel::KEvent* adsp_rendered_event_) Result System::Initialize(const AudioRendererParameterInternal& params, Kernel::KTransferMemory* transfer_memory, u64 transfer_memory_size, - u32 process_handle_, u64 applet_resource_user_id_, s32 session_id_) { + u32 process_handle_, Kernel::KProcess& process_, + u64 applet_resource_user_id_, s32 session_id_) { if (!CheckValidRevision(params.revision)) { return Service::Audio::ResultInvalidRevision; } @@ -117,6 +119,7 @@ Result System::Initialize(const AudioRendererParameterInternal& params, behavior.SetUserLibRevision(params.revision); process_handle = process_handle_; + process = &process_; applet_resource_user_id = applet_resource_user_id_; session_id = session_id_; @@ -129,7 +132,7 @@ Result System::Initialize(const AudioRendererParameterInternal& params, render_device = params.rendering_device; execution_mode = params.execution_mode; - core.ApplicationMemory().ZeroBlock(transfer_memory->GetSourceAddress(), transfer_memory_size); + process->GetMemory().ZeroBlock(transfer_memory->GetSourceAddress(), transfer_memory_size); // Note: We're not actually using the transfer memory because it's a pain to code for. // Allocate the memory normally instead and hope the game doesn't try to read anything back @@ -613,7 +616,8 @@ void System::SendCommandToDsp() { static_cast<u64>((time_limit_percent / 100) * 2'880'000.0 * (static_cast<f32>(render_time_limit_percent) / 100.0f))}; audio_renderer.SetCommandBuffer(session_id, translated_addr, command_size, time_limit, - applet_resource_user_id, reset_command_buffers); + applet_resource_user_id, process, + reset_command_buffers); reset_command_buffers = false; command_buffer_size = command_size; if (remaining_command_count == 0) { diff --git a/src/audio_core/renderer/system.h b/src/audio_core/renderer/system.h index 8a8341710..753a0b796 100644 --- a/src/audio_core/renderer/system.h +++ b/src/audio_core/renderer/system.h @@ -29,6 +29,7 @@ class System; namespace Kernel { class KEvent; +class KProcess; class KTransferMemory; } // namespace Kernel @@ -80,7 +81,8 @@ public: */ Result Initialize(const AudioRendererParameterInternal& params, Kernel::KTransferMemory* transfer_memory, u64 transfer_memory_size, - u32 process_handle, u64 applet_resource_user_id, s32 session_id); + u32 process_handle, Kernel::KProcess& process, u64 applet_resource_user_id, + s32 session_id); /** * Finalize the system. @@ -275,6 +277,8 @@ private: Common::Event terminate_event{}; /// Does what locks do std::mutex lock{}; + /// Process this audio render is operating within, used for memory reads/writes. + Kernel::KProcess* process{}; /// Handle for the process for this system, unused u32 process_handle{}; /// Applet resource id for this system, unused |
