Browse Source
Merge pull request #11465 from Kelebek1/skip_remaining_reset
[Audio] Do not reset the remaining command count each time
pull/15/merge
liamwhite
2 years ago
committed by
GitHub
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with
14 additions and
27 deletions
-
src/audio_core/adsp/apps/audio_renderer/audio_renderer.cpp
-
src/audio_core/adsp/apps/audio_renderer/audio_renderer.h
-
src/audio_core/adsp/apps/audio_renderer/command_list_processor.cpp
-
src/audio_core/adsp/apps/audio_renderer/command_list_processor.h
-
src/audio_core/renderer/system.cpp
|
|
|
@ -88,8 +88,13 @@ MailboxMessage AudioRenderer::Receive(Direction dir, bool block) { |
|
|
|
return mailbox.Receive(dir, block); |
|
|
|
} |
|
|
|
|
|
|
|
void AudioRenderer::SetCommandBuffer(s32 session_id, CommandBuffer& buffer) noexcept { |
|
|
|
command_buffers[session_id] = buffer; |
|
|
|
void AudioRenderer::SetCommandBuffer(s32 session_id, CpuAddr buffer, u64 size, u64 time_limit, |
|
|
|
u64 applet_resource_user_id, bool reset) noexcept { |
|
|
|
command_buffers[session_id].buffer = buffer; |
|
|
|
command_buffers[session_id].size = size; |
|
|
|
command_buffers[session_id].time_limit = time_limit; |
|
|
|
command_buffers[session_id].applet_resource_user_id = applet_resource_user_id; |
|
|
|
command_buffers[session_id].reset_buffer = reset; |
|
|
|
} |
|
|
|
|
|
|
|
u32 AudioRenderer::GetRemainCommandCount(s32 session_id) const noexcept { |
|
|
|
|
|
|
|
@ -75,7 +75,8 @@ public: |
|
|
|
void Send(Direction dir, MailboxMessage message); |
|
|
|
MailboxMessage Receive(Direction dir, bool block = true); |
|
|
|
|
|
|
|
void SetCommandBuffer(s32 session_id, CommandBuffer& buffer) noexcept; |
|
|
|
void SetCommandBuffer(s32 session_id, CpuAddr buffer, u64 size, u64 time_limit, |
|
|
|
u64 applet_resource_user_id, bool reset) noexcept; |
|
|
|
u32 GetRemainCommandCount(s32 session_id) const noexcept; |
|
|
|
void ClearRemainCommandCount(s32 session_id) noexcept; |
|
|
|
u64 GetRenderingStartTick(s32 session_id) const noexcept; |
|
|
|
|
|
|
|
@ -37,11 +37,6 @@ u32 CommandListProcessor::GetRemainingCommandCount() const { |
|
|
|
return command_count - processed_command_count; |
|
|
|
} |
|
|
|
|
|
|
|
void CommandListProcessor::SetBuffer(const CpuAddr buffer, const u64 size) { |
|
|
|
commands = reinterpret_cast<u8*>(buffer + sizeof(Renderer::CommandListHeader)); |
|
|
|
commands_buffer_size = size; |
|
|
|
} |
|
|
|
|
|
|
|
Sink::SinkStream* CommandListProcessor::GetOutputSinkStream() const { |
|
|
|
return stream; |
|
|
|
} |
|
|
|
|
|
|
|
@ -56,14 +56,6 @@ public: |
|
|
|
*/ |
|
|
|
u32 GetRemainingCommandCount() const; |
|
|
|
|
|
|
|
/** |
|
|
|
* Set the command buffer. |
|
|
|
* |
|
|
|
* @param buffer - The buffer to use. |
|
|
|
* @param size - The size of the buffer. |
|
|
|
*/ |
|
|
|
void SetBuffer(CpuAddr buffer, u64 size); |
|
|
|
|
|
|
|
/** |
|
|
|
* Get the stream for this command list. |
|
|
|
* |
|
|
|
|
|
|
|
@ -609,17 +609,11 @@ void System::SendCommandToDsp() { |
|
|
|
time_limit_percent = 70.0f; |
|
|
|
} |
|
|
|
|
|
|
|
AudioRenderer::CommandBuffer command_buffer{ |
|
|
|
.buffer{translated_addr}, |
|
|
|
.size{command_size}, |
|
|
|
.time_limit{ |
|
|
|
static_cast<u64>((time_limit_percent / 100) * 2'880'000.0 * |
|
|
|
(static_cast<f32>(render_time_limit_percent) / 100.0f))}, |
|
|
|
.applet_resource_user_id{applet_resource_user_id}, |
|
|
|
.reset_buffer{reset_command_buffers}, |
|
|
|
}; |
|
|
|
|
|
|
|
audio_renderer.SetCommandBuffer(session_id, command_buffer); |
|
|
|
auto time_limit{ |
|
|
|
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); |
|
|
|
reset_command_buffers = false; |
|
|
|
command_buffer_size = command_size; |
|
|
|
if (remaining_command_count == 0) { |
|
|
|
|