summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorbunnei <bunneidev@gmail.com>2022-03-20 06:06:46 +0100
committerbunnei <bunneidev@gmail.com>2022-03-25 02:13:33 +0100
commitddd5a2b1c67a82f0b1dbaa75dc4b99ee71f93173 (patch)
tree51dd49fec795ed3d2e4db833e191e5b142f1fe8b
parenthle: nvflinger: buffer_queue_core: Cleanup locking. (diff)
downloadyuzu-ddd5a2b1c67a82f0b1dbaa75dc4b99ee71f93173.tar
yuzu-ddd5a2b1c67a82f0b1dbaa75dc4b99ee71f93173.tar.gz
yuzu-ddd5a2b1c67a82f0b1dbaa75dc4b99ee71f93173.tar.bz2
yuzu-ddd5a2b1c67a82f0b1dbaa75dc4b99ee71f93173.tar.lz
yuzu-ddd5a2b1c67a82f0b1dbaa75dc4b99ee71f93173.tar.xz
yuzu-ddd5a2b1c67a82f0b1dbaa75dc4b99ee71f93173.tar.zst
yuzu-ddd5a2b1c67a82f0b1dbaa75dc4b99ee71f93173.zip
-rw-r--r--src/core/hle/service/nvflinger/buffer_queue_consumer.cpp4
-rw-r--r--src/core/hle/service/nvflinger/buffer_queue_core.cpp6
-rw-r--r--src/core/hle/service/nvflinger/buffer_queue_core.h2
-rw-r--r--src/core/hle/service/nvflinger/buffer_queue_producer.cpp2
4 files changed, 7 insertions, 7 deletions
diff --git a/src/core/hle/service/nvflinger/buffer_queue_consumer.cpp b/src/core/hle/service/nvflinger/buffer_queue_consumer.cpp
index 5184d876a..cf12cceff 100644
--- a/src/core/hle/service/nvflinger/buffer_queue_consumer.cpp
+++ b/src/core/hle/service/nvflinger/buffer_queue_consumer.cpp
@@ -74,7 +74,7 @@ Status BufferQueueConsumer::AcquireBuffer(BufferItem* out_buffer,
LOG_DEBUG(Service_NVFlinger, "drop desire={} expect={} size={}", desired_present,
expected_present.count(), core->queue.size());
- if (core->StillTracking(&*front)) {
+ if (core->StillTracking(*front)) {
// Front buffer is still in mSlots, so mark the slot as free
slots[front->slot].buffer_state = BufferState::Free;
core->free_buffers.push_back(front->slot);
@@ -110,7 +110,7 @@ Status BufferQueueConsumer::AcquireBuffer(BufferItem* out_buffer,
LOG_DEBUG(Service_NVFlinger, "acquiring slot={}", slot);
// If the front buffer is still being tracked, update its slot state
- if (core->StillTracking(&*front)) {
+ if (core->StillTracking(*front)) {
slots[slot].acquire_called = true;
slots[slot].needs_cleanup_on_release = false;
slots[slot].buffer_state = BufferState::Acquired;
diff --git a/src/core/hle/service/nvflinger/buffer_queue_core.cpp b/src/core/hle/service/nvflinger/buffer_queue_core.cpp
index 4a26d2fdc..3f1ce78b0 100644
--- a/src/core/hle/service/nvflinger/buffer_queue_core.cpp
+++ b/src/core/hle/service/nvflinger/buffer_queue_core.cpp
@@ -116,10 +116,10 @@ void BufferQueueCore::FreeAllBuffersLocked() {
}
}
-bool BufferQueueCore::StillTracking(const BufferItem* item) const {
- const BufferSlot& slot = slots[item->slot];
+bool BufferQueueCore::StillTracking(const BufferItem& item) const {
+ const BufferSlot& slot = slots[item.slot];
- return (slot.graphic_buffer != nullptr) && (item->graphic_buffer == slot.graphic_buffer);
+ return (slot.graphic_buffer != nullptr) && (item.graphic_buffer == slot.graphic_buffer);
}
void BufferQueueCore::WaitWhileAllocatingLocked() const {
diff --git a/src/core/hle/service/nvflinger/buffer_queue_core.h b/src/core/hle/service/nvflinger/buffer_queue_core.h
index 252a36350..ad10b4c3c 100644
--- a/src/core/hle/service/nvflinger/buffer_queue_core.h
+++ b/src/core/hle/service/nvflinger/buffer_queue_core.h
@@ -45,7 +45,7 @@ private:
s32 GetPreallocatedBufferCountLocked() const;
void FreeBufferLocked(s32 slot);
void FreeAllBuffersLocked();
- bool StillTracking(const BufferItem* item) const;
+ bool StillTracking(const BufferItem& item) const;
void WaitWhileAllocatingLocked() const;
private:
diff --git a/src/core/hle/service/nvflinger/buffer_queue_producer.cpp b/src/core/hle/service/nvflinger/buffer_queue_producer.cpp
index 2f7e9dcfc..eba486754 100644
--- a/src/core/hle/service/nvflinger/buffer_queue_producer.cpp
+++ b/src/core/hle/service/nvflinger/buffer_queue_producer.cpp
@@ -554,7 +554,7 @@ Status BufferQueueProducer::QueueBuffer(s32 slot, const QueueBufferInput& input,
if (front->is_droppable) {
// If the front queued buffer is still being tracked, we first
// mark it as freed
- if (core->StillTracking(&*front)) {
+ if (core->StillTracking(*front)) {
slots[front->slot].buffer_state = BufferState::Free;
core->free_buffers.push_front(front->slot);
}