From 0b9d2d1828061ad38b7f637716411419c3227014 Mon Sep 17 00:00:00 2001 From: Maufeat Date: Sun, 4 Jan 2026 08:17:23 +0100 Subject: [PATCH] use frame_number instead of frame_counter --- .../hle/service/nvnflinger/buffer_queue_consumer.cpp | 10 +++++++++- .../hle/service/nvnflinger/buffer_queue_producer.cpp | 2 +- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/src/core/hle/service/nvnflinger/buffer_queue_consumer.cpp b/src/core/hle/service/nvnflinger/buffer_queue_consumer.cpp index 2913d25819..98a12e1ebe 100644 --- a/src/core/hle/service/nvnflinger/buffer_queue_consumer.cpp +++ b/src/core/hle/service/nvnflinger/buffer_queue_consumer.cpp @@ -102,7 +102,7 @@ Status BufferQueueConsumer::AcquireBuffer(BufferItem* out_buffer, // Mark tracked buffer history records as acquired for (auto& buffer_history_record : core->buffer_history) { - if (buffer_history_record.frame_number == core->frame_counter) { + if (buffer_history_record.frame_number == out_buffer->frame_number) { buffer_history_record.state = BufferState::Acquired; break; } @@ -163,6 +163,14 @@ Status BufferQueueConsumer::ReleaseBuffer(s32 slot, u64 frame_number, const Fenc // slots[slot].fence = release_fence; slots[slot].buffer_state = BufferState::Free; + // Update history: acquired -> free + for (auto& buffer_history_record : core->buffer_history) { + if (buffer_history_record.frame_number == frame_number) { + buffer_history_record.state = BufferState::Free; + break; + } + } + listener = core->connected_producer_listener; LOG_DEBUG(Service_Nvnflinger, "releasing slot {}", slot); diff --git a/src/core/hle/service/nvnflinger/buffer_queue_producer.cpp b/src/core/hle/service/nvnflinger/buffer_queue_producer.cpp index 0723592716..06d97f85e4 100644 --- a/src/core/hle/service/nvnflinger/buffer_queue_producer.cpp +++ b/src/core/hle/service/nvnflinger/buffer_queue_producer.cpp @@ -830,7 +830,7 @@ Status BufferQueueProducer::GetBufferHistory(s32 buffer_history_count, std::scoped_lock lk(core->mutex); constexpr u32 history_max = BufferQueueCore::BUFFER_HISTORY_SIZE; - buffer_history_count = std::min(buffer_history_count, static_cast(history_max)); + buffer_history_count = std::min(buffer_history_count, history_max); out_buffer_history.resize(buffer_history_count);