Add more audio logging to pinpoint issues better
This commit is contained in:
parent
3b66092a5b
commit
01b790ff29
2 changed files with 17 additions and 8 deletions
|
@ -7,7 +7,7 @@
|
||||||
|
|
||||||
#include "common/alignment.h"
|
#include "common/alignment.h"
|
||||||
#include "common/assert.h"
|
#include "common/assert.h"
|
||||||
#include "common/common_types.h"
|
#include "common/common_types.h"
|
||||||
|
|
||||||
namespace AudioCore {
|
namespace AudioCore {
|
||||||
/**
|
/**
|
||||||
|
@ -35,13 +35,14 @@ public:
|
||||||
auto current{buffer + offset};
|
auto current{buffer + offset};
|
||||||
auto aligned_buffer{Common::AlignUp(current, alignment)};
|
auto aligned_buffer{Common::AlignUp(current, alignment)};
|
||||||
if (aligned_buffer + byte_size <= buffer + size) {
|
if (aligned_buffer + byte_size <= buffer + size) {
|
||||||
|
LOG_DEBUG(Service_Audio,
|
||||||
|
"Workbuffer Allocate: T={} count={} align={} → ptr=0x{:X} offset=0x{:X}",
|
||||||
|
typeid(T).name(), count, alignment, aligned_buffer, offset);
|
||||||
out = aligned_buffer;
|
out = aligned_buffer;
|
||||||
offset = byte_size - buffer + aligned_buffer;
|
offset = byte_size - buffer + aligned_buffer;
|
||||||
} else {
|
} else {
|
||||||
LOG_ERROR(
|
LOG_ERROR(Service_Audio,
|
||||||
Service_Audio,
|
"Workbuffer OVERFLOW: size=0x{:X} offset=0x{:X} need=0x{:X} align=0x{:X}",
|
||||||
"Allocated buffer was too small to hold new alloc.\nAllocator size={:08X}, "
|
|
||||||
"offset={:08X}.\nAttempting to allocate {:08X} with alignment={:02X}",
|
|
||||||
size, offset, byte_size, alignment);
|
size, offset, byte_size, alignment);
|
||||||
count = 0;
|
count = 0;
|
||||||
}
|
}
|
||||||
|
|
|
@ -21,12 +21,15 @@ namespace AudioCore::Renderer {
|
||||||
template <typename T, CommandId Id>
|
template <typename T, CommandId Id>
|
||||||
T& CommandBuffer::GenerateStart(const s32 node_id) {
|
T& CommandBuffer::GenerateStart(const s32 node_id) {
|
||||||
if (size + sizeof(T) >= command_list.size_bytes()) {
|
if (size + sizeof(T) >= command_list.size_bytes()) {
|
||||||
LOG_ERROR(
|
LOG_ERROR(Service_Audio,
|
||||||
Service_Audio,
|
"CommandBuffer OVERFLOW: size={} + {} > capacity={}",
|
||||||
"Attempting to write commands beyond the end of allocated command buffer memory!");
|
size_, sizeof(T), command_list.size_bytes());
|
||||||
UNREACHABLE();
|
UNREACHABLE();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
LOG_TRACE(Service_Audio,
|
||||||
|
"GenerateStart: CmdId={} node={} curSize={} → newSize={}",
|
||||||
|
static_cast<int>(Id), node_id, size_, size_ + sizeof(T));
|
||||||
auto& cmd{*std::construct_at<T>(reinterpret_cast<T*>(&command_list[size]))};
|
auto& cmd{*std::construct_at<T>(reinterpret_cast<T*>(&command_list[size]))};
|
||||||
|
|
||||||
cmd.magic = CommandMagic;
|
cmd.magic = CommandMagic;
|
||||||
|
@ -44,6 +47,11 @@ void CommandBuffer::GenerateEnd(T& cmd) {
|
||||||
estimated_process_time += cmd.estimated_process_time;
|
estimated_process_time += cmd.estimated_process_time;
|
||||||
size += sizeof(T);
|
size += sizeof(T);
|
||||||
count++;
|
count++;
|
||||||
|
|
||||||
|
// Trace completion: how many commands & bytes are now committed
|
||||||
|
LOG_TRACE(Service_Audio,
|
||||||
|
"GenerateEnd<{}>: totalCmds={} totalBytes={} estTime={}",
|
||||||
|
static_cast<int>(cmd.type), count, size, estimated_process_time);
|
||||||
}
|
}
|
||||||
|
|
||||||
void CommandBuffer::GeneratePcmInt16Version1Command(const s32 node_id,
|
void CommandBuffer::GeneratePcmInt16Version1Command(const s32 node_id,
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue