[APU] Switched to New XMA decoder as default

- Added codepath for "consume only" pass. This should resolve constant clicking in Source engine games.
- Added smaller performance improvements to decoder
This commit is contained in:
Gliniak
2025-12-01 23:57:53 +01:00
parent dfa70b3677
commit dd29365970
5 changed files with 23 additions and 4 deletions

View File

@@ -128,6 +128,15 @@ bool XmaContextNew::Work() {
RingBuffer output_rb = PrepareOutputRingBuffer(&data);
if (data.IsConsumeOnlyContext()) {
Consume(&output_rb, &data);
if (data.output_buffer_read_offset == data.output_buffer_write_offset) {
Clear();
}
data.Store(context_ptr);
return true;
}
const int32_t minimum_subframe_decode_count =
(data.subframe_decode_count * 2) - 1;
@@ -257,7 +266,8 @@ void XmaContextNew::SwapInputBuffer(XMA_CONTEXT_DATA* data) {
data->input_buffer_read_offset = kBitsPerPacketHeader;
}
void XmaContextNew::Consume(RingBuffer* output_rb, XMA_CONTEXT_DATA* data) {
void XmaContextNew::Consume(RingBuffer* XE_RESTRICT output_rb,
const XMA_CONTEXT_DATA* const XE_RESTRICT data) {
if (!current_frame_remaining_subframes_) {
return;
}