diff options
author | Fernando S <fsahmkow27@gmail.com> | 2022-03-25 03:36:55 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-03-25 03:36:55 +0100 |
commit | 0608336c60c62b74af73422115ee0e0797362e8f (patch) | |
tree | 33c9b4d79130736839fc28030950d401bf4fd81b /src/core/hle/service/nvflinger/buffer_queue_consumer.h | |
parent | Merge pull request #8068 from ameerj/shader-if-false (diff) | |
parent | Update project license to GPL v3. (diff) | |
download | yuzu-0608336c60c62b74af73422115ee0e0797362e8f.tar yuzu-0608336c60c62b74af73422115ee0e0797362e8f.tar.gz yuzu-0608336c60c62b74af73422115ee0e0797362e8f.tar.bz2 yuzu-0608336c60c62b74af73422115ee0e0797362e8f.tar.lz yuzu-0608336c60c62b74af73422115ee0e0797362e8f.tar.xz yuzu-0608336c60c62b74af73422115ee0e0797362e8f.tar.zst yuzu-0608336c60c62b74af73422115ee0e0797362e8f.zip |
Diffstat (limited to 'src/core/hle/service/nvflinger/buffer_queue_consumer.h')
-rw-r--r-- | src/core/hle/service/nvflinger/buffer_queue_consumer.h | 37 |
1 files changed, 37 insertions, 0 deletions
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..f22854394 --- /dev/null +++ b/src/core/hle/service/nvflinger/buffer_queue_consumer.h @@ -0,0 +1,37 @@ +// 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 <chrono> +#include <memory> + +#include "common/common_types.h" +#include "core/hle/service/nvflinger/buffer_queue_defs.h" +#include "core/hle/service/nvflinger/status.h" + +namespace Service::android { + +class BufferItem; +class BufferQueueCore; +class IConsumerListener; + +class BufferQueueConsumer final { +public: + explicit BufferQueueConsumer(std::shared_ptr<BufferQueueCore> core_); + ~BufferQueueConsumer(); + + Status AcquireBuffer(BufferItem* out_buffer, std::chrono::nanoseconds expected_present, + u64 max_frame_number = 0); + Status ReleaseBuffer(s32 slot, u64 frame_number, const Fence& release_fence); + Status Connect(std::shared_ptr<IConsumerListener> consumer_listener, bool controlled_by_app); + +private: + std::shared_ptr<BufferQueueCore> core; + BufferQueueDefs::SlotsType& slots; +}; + +} // namespace Service::android |