diff options
| author | 2022-11-29 08:26:25 -0500 | |
|---|---|---|
| committer | 2022-11-29 08:26:25 -0500 | |
| commit | a7f1fa7bfcf1a2e6ca087a14ea4d524f63e711db (patch) | |
| tree | cbad20d396d0786fd2f7abcb6aac9a378be7955b /src | |
| parent | Merge pull request #9343 from lioncash/bounds (diff) | |
| parent | buffer_item_consumer: Pass fence by const-ref in ReleaseBuffer() (diff) | |
| download | yuzu-a7f1fa7bfcf1a2e6ca087a14ea4d524f63e711db.tar.gz yuzu-a7f1fa7bfcf1a2e6ca087a14ea4d524f63e711db.tar.xz yuzu-a7f1fa7bfcf1a2e6ca087a14ea4d524f63e711db.zip | |
Merge pull request #9345 from lioncash/fence
consumer_base: Pass std::shared_ptr by const reference
Diffstat (limited to '')
6 files changed, 15 insertions, 16 deletions
diff --git a/src/core/hle/service/nvflinger/buffer_item_consumer.cpp b/src/core/hle/service/nvflinger/buffer_item_consumer.cpp index 6d2c92a2c..152bb5bdf 100644 --- a/src/core/hle/service/nvflinger/buffer_item_consumer.cpp +++ b/src/core/hle/service/nvflinger/buffer_item_consumer.cpp | |||
| @@ -39,7 +39,7 @@ Status BufferItemConsumer::AcquireBuffer(BufferItem* item, std::chrono::nanoseco | |||
| 39 | return Status::NoError; | 39 | return Status::NoError; |
| 40 | } | 40 | } |
| 41 | 41 | ||
| 42 | Status BufferItemConsumer::ReleaseBuffer(const BufferItem& item, Fence& release_fence) { | 42 | Status BufferItemConsumer::ReleaseBuffer(const BufferItem& item, const Fence& release_fence) { |
| 43 | std::scoped_lock lock{mutex}; | 43 | std::scoped_lock lock{mutex}; |
| 44 | 44 | ||
| 45 | if (const auto status = AddReleaseFenceLocked(item.buf, item.graphic_buffer, release_fence); | 45 | if (const auto status = AddReleaseFenceLocked(item.buf, item.graphic_buffer, release_fence); |
diff --git a/src/core/hle/service/nvflinger/buffer_item_consumer.h b/src/core/hle/service/nvflinger/buffer_item_consumer.h index 69046233d..a5c655d9e 100644 --- a/src/core/hle/service/nvflinger/buffer_item_consumer.h +++ b/src/core/hle/service/nvflinger/buffer_item_consumer.h | |||
| @@ -22,7 +22,7 @@ public: | |||
| 22 | explicit BufferItemConsumer(std::unique_ptr<BufferQueueConsumer> consumer); | 22 | explicit BufferItemConsumer(std::unique_ptr<BufferQueueConsumer> consumer); |
| 23 | Status AcquireBuffer(BufferItem* item, std::chrono::nanoseconds present_when, | 23 | Status AcquireBuffer(BufferItem* item, std::chrono::nanoseconds present_when, |
| 24 | bool wait_for_fence = true); | 24 | bool wait_for_fence = true); |
| 25 | Status ReleaseBuffer(const BufferItem& item, Fence& release_fence); | 25 | Status ReleaseBuffer(const BufferItem& item, const Fence& release_fence); |
| 26 | }; | 26 | }; |
| 27 | 27 | ||
| 28 | } // namespace Service::android | 28 | } // namespace Service::android |
diff --git a/src/core/hle/service/nvflinger/buffer_queue_consumer.cpp b/src/core/hle/service/nvflinger/buffer_queue_consumer.cpp index 1ce67c771..0767e548d 100644 --- a/src/core/hle/service/nvflinger/buffer_queue_consumer.cpp +++ b/src/core/hle/service/nvflinger/buffer_queue_consumer.cpp | |||
| @@ -169,7 +169,7 @@ Status BufferQueueConsumer::Connect(std::shared_ptr<IConsumerListener> consumer_ | |||
| 169 | return Status::NoInit; | 169 | return Status::NoInit; |
| 170 | } | 170 | } |
| 171 | 171 | ||
| 172 | core->consumer_listener = consumer_listener; | 172 | core->consumer_listener = std::move(consumer_listener); |
| 173 | core->consumer_controlled_by_app = controlled_by_app; | 173 | core->consumer_controlled_by_app = controlled_by_app; |
| 174 | 174 | ||
| 175 | return Status::NoError; | 175 | return Status::NoError; |
diff --git a/src/core/hle/service/nvflinger/consumer_base.cpp b/src/core/hle/service/nvflinger/consumer_base.cpp index 5b9995854..982531e2d 100644 --- a/src/core/hle/service/nvflinger/consumer_base.cpp +++ b/src/core/hle/service/nvflinger/consumer_base.cpp | |||
| @@ -83,7 +83,7 @@ Status ConsumerBase::AcquireBufferLocked(BufferItem* item, std::chrono::nanoseco | |||
| 83 | } | 83 | } |
| 84 | 84 | ||
| 85 | Status ConsumerBase::AddReleaseFenceLocked(s32 slot, | 85 | Status ConsumerBase::AddReleaseFenceLocked(s32 slot, |
| 86 | const std::shared_ptr<GraphicBuffer> graphic_buffer, | 86 | const std::shared_ptr<GraphicBuffer>& graphic_buffer, |
| 87 | const Fence& fence) { | 87 | const Fence& fence) { |
| 88 | LOG_DEBUG(Service_NVFlinger, "slot={}", slot); | 88 | LOG_DEBUG(Service_NVFlinger, "slot={}", slot); |
| 89 | 89 | ||
| @@ -100,7 +100,7 @@ Status ConsumerBase::AddReleaseFenceLocked(s32 slot, | |||
| 100 | } | 100 | } |
| 101 | 101 | ||
| 102 | Status ConsumerBase::ReleaseBufferLocked(s32 slot, | 102 | Status ConsumerBase::ReleaseBufferLocked(s32 slot, |
| 103 | const std::shared_ptr<GraphicBuffer> graphic_buffer) { | 103 | const std::shared_ptr<GraphicBuffer>& graphic_buffer) { |
| 104 | // If consumer no longer tracks this graphic_buffer (we received a new | 104 | // If consumer no longer tracks this graphic_buffer (we received a new |
| 105 | // buffer on the same slot), the buffer producer is definitely no longer | 105 | // buffer on the same slot), the buffer producer is definitely no longer |
| 106 | // tracking it. | 106 | // tracking it. |
| @@ -121,7 +121,7 @@ Status ConsumerBase::ReleaseBufferLocked(s32 slot, | |||
| 121 | } | 121 | } |
| 122 | 122 | ||
| 123 | bool ConsumerBase::StillTracking(s32 slot, | 123 | bool ConsumerBase::StillTracking(s32 slot, |
| 124 | const std::shared_ptr<GraphicBuffer> graphic_buffer) const { | 124 | const std::shared_ptr<GraphicBuffer>& graphic_buffer) const { |
| 125 | if (slot < 0 || slot >= BufferQueueDefs::NUM_BUFFER_SLOTS) { | 125 | if (slot < 0 || slot >= BufferQueueDefs::NUM_BUFFER_SLOTS) { |
| 126 | return false; | 126 | return false; |
| 127 | } | 127 | } |
diff --git a/src/core/hle/service/nvflinger/consumer_base.h b/src/core/hle/service/nvflinger/consumer_base.h index 90ba07f45..9a8a5f6bb 100644 --- a/src/core/hle/service/nvflinger/consumer_base.h +++ b/src/core/hle/service/nvflinger/consumer_base.h | |||
| @@ -27,18 +27,18 @@ public: | |||
| 27 | 27 | ||
| 28 | protected: | 28 | protected: |
| 29 | explicit ConsumerBase(std::unique_ptr<BufferQueueConsumer> consumer_); | 29 | explicit ConsumerBase(std::unique_ptr<BufferQueueConsumer> consumer_); |
| 30 | virtual ~ConsumerBase(); | 30 | ~ConsumerBase() override; |
| 31 | 31 | ||
| 32 | virtual void OnFrameAvailable(const BufferItem& item) override; | 32 | void OnFrameAvailable(const BufferItem& item) override; |
| 33 | virtual void OnFrameReplaced(const BufferItem& item) override; | 33 | void OnFrameReplaced(const BufferItem& item) override; |
| 34 | virtual void OnBuffersReleased() override; | 34 | void OnBuffersReleased() override; |
| 35 | virtual void OnSidebandStreamChanged() override; | 35 | void OnSidebandStreamChanged() override; |
| 36 | 36 | ||
| 37 | void FreeBufferLocked(s32 slot_index); | 37 | void FreeBufferLocked(s32 slot_index); |
| 38 | Status AcquireBufferLocked(BufferItem* item, std::chrono::nanoseconds present_when); | 38 | Status AcquireBufferLocked(BufferItem* item, std::chrono::nanoseconds present_when); |
| 39 | Status ReleaseBufferLocked(s32 slot, const std::shared_ptr<GraphicBuffer> graphic_buffer); | 39 | Status ReleaseBufferLocked(s32 slot, const std::shared_ptr<GraphicBuffer>& graphic_buffer); |
| 40 | bool StillTracking(s32 slot, const std::shared_ptr<GraphicBuffer> graphic_buffer) const; | 40 | bool StillTracking(s32 slot, const std::shared_ptr<GraphicBuffer>& graphic_buffer) const; |
| 41 | Status AddReleaseFenceLocked(s32 slot, const std::shared_ptr<GraphicBuffer> graphic_buffer, | 41 | Status AddReleaseFenceLocked(s32 slot, const std::shared_ptr<GraphicBuffer>& graphic_buffer, |
| 42 | const Fence& fence); | 42 | const Fence& fence); |
| 43 | 43 | ||
| 44 | struct Slot final { | 44 | struct Slot final { |
diff --git a/src/core/hle/service/nvflinger/nvflinger.cpp b/src/core/hle/service/nvflinger/nvflinger.cpp index c3af12c90..d1cbadde4 100644 --- a/src/core/hle/service/nvflinger/nvflinger.cpp +++ b/src/core/hle/service/nvflinger/nvflinger.cpp | |||
| @@ -307,8 +307,7 @@ void NVFlinger::Compose() { | |||
| 307 | 307 | ||
| 308 | swap_interval = buffer.swap_interval; | 308 | swap_interval = buffer.swap_interval; |
| 309 | 309 | ||
| 310 | auto fence = android::Fence::NoFence(); | 310 | layer.GetConsumer().ReleaseBuffer(buffer, android::Fence::NoFence()); |
| 311 | layer.GetConsumer().ReleaseBuffer(buffer, fence); | ||
| 312 | } | 311 | } |
| 313 | } | 312 | } |
| 314 | 313 | ||