From 6e7f687df421e3d30b5b08e8e1747e6084e89342 Mon Sep 17 00:00:00 2001 From: bunnei Date: Thu, 11 Nov 2021 18:53:00 -0800 Subject: hle: nvflinger: Add implementation for BufferQueueConsumer class. --- .../hle/service/nvflinger/buffer_queue_consumer.h | 36 ++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 src/core/hle/service/nvflinger/buffer_queue_consumer.h (limited to 'src/core/hle/service/nvflinger/buffer_queue_consumer.h') diff --git a/src/core/hle/service/nvflinger/buffer_queue_consumer.h b/src/core/hle/service/nvflinger/buffer_queue_consumer.h new file mode 100644 index 000000000..fbeb8b8d7 --- /dev/null +++ b/src/core/hle/service/nvflinger/buffer_queue_consumer.h @@ -0,0 +1,36 @@ +// SPDX-License-Identifier: GPL-3.0-or-later +// Copyright 2021 yuzu Emulator Project +// Copyright 2014 The Android Open Source Project +// Parts of this implementation were base on: +// https://cs.android.com/android/platform/superproject/+/android-5.1.1_r38:frameworks/native/include/gui/BufferQueueConsumer.h + +#pragma once + +#include + +#include "common/common_types.h" +#include "core/hle/service/nvflinger/buffer_queue_defs.h" +#include "core/hle/service/nvflinger/status.h" + +namespace android { + +class BufferItem; +class BufferQueueCore; +class IConsumerListener; + +class BufferQueueConsumer final { +public: + explicit BufferQueueConsumer(std::shared_ptr core_); + ~BufferQueueConsumer(); + + Status AcquireBuffer(BufferItem* out_buffer, s64 expected_presenst_ns, + u64 max_frame_number = 0); + Status ReleaseBuffer(s32 slot, u64 frame_number, const Fence& release_fence); + Status Connect(std::shared_ptr consumer_listener, bool controlled_by_app); + +private: + std::shared_ptr core; + BufferQueueDefs::SlotsType& slots; +}; + +} // namespace android -- cgit v1.2.3