Browse Source

use frame_number instead of frame_counter

fix/gbh_test
Maufeat 4 weeks ago
committed by crueter
parent
commit
0b9d2d1828
  1. 10
      src/core/hle/service/nvnflinger/buffer_queue_consumer.cpp
  2. 2
      src/core/hle/service/nvnflinger/buffer_queue_producer.cpp

10
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);

2
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<s32>(buffer_history_count, static_cast<s32>(history_max));
buffer_history_count = std::min<s32>(buffer_history_count, history_max);
out_buffer_history.resize(buffer_history_count);

Loading…
Cancel
Save