diff options
author | Liam <byteslice@airmail.cc> | 2023-10-29 21:37:11 +0100 |
---|---|---|
committer | Liam <byteslice@airmail.cc> | 2023-10-30 03:12:16 +0100 |
commit | 79e7d7f4ba3ed4f395e6b30eea218a34348726a2 (patch) | |
tree | f7e73263e401b6eb761df2eebce6cb52908be5f6 /src/core/hle/service/nvnflinger/ui/graphic_buffer.cpp | |
parent | Merge pull request #11866 from liamwhite/more-qt-nonsense (diff) | |
download | yuzu-79e7d7f4ba3ed4f395e6b30eea218a34348726a2.tar yuzu-79e7d7f4ba3ed4f395e6b30eea218a34348726a2.tar.gz yuzu-79e7d7f4ba3ed4f395e6b30eea218a34348726a2.tar.bz2 yuzu-79e7d7f4ba3ed4f395e6b30eea218a34348726a2.tar.lz yuzu-79e7d7f4ba3ed4f395e6b30eea218a34348726a2.tar.xz yuzu-79e7d7f4ba3ed4f395e6b30eea218a34348726a2.tar.zst yuzu-79e7d7f4ba3ed4f395e6b30eea218a34348726a2.zip |
Diffstat (limited to 'src/core/hle/service/nvnflinger/ui/graphic_buffer.cpp')
-rw-r--r-- | src/core/hle/service/nvnflinger/ui/graphic_buffer.cpp | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/src/core/hle/service/nvnflinger/ui/graphic_buffer.cpp b/src/core/hle/service/nvnflinger/ui/graphic_buffer.cpp new file mode 100644 index 000000000..ce70946ec --- /dev/null +++ b/src/core/hle/service/nvnflinger/ui/graphic_buffer.cpp @@ -0,0 +1,34 @@ +// SPDX-FileCopyrightText: Copyright 2023 yuzu Emulator Project +// SPDX-License-Identifier: GPL-3.0-or-later + +#include "core/hle/service/nvdrv/core/nvmap.h" +#include "core/hle/service/nvnflinger/ui/graphic_buffer.h" + +namespace Service::android { + +static NvGraphicBuffer GetBuffer(std::shared_ptr<NvGraphicBuffer>& buffer) { + if (buffer) { + return *buffer; + } else { + return {}; + } +} + +GraphicBuffer::GraphicBuffer(u32 width_, u32 height_, PixelFormat format_, u32 usage_) + : NvGraphicBuffer(width_, height_, format_, usage_), m_nvmap(nullptr) {} + +GraphicBuffer::GraphicBuffer(Service::Nvidia::NvCore::NvMap& nvmap, + std::shared_ptr<NvGraphicBuffer> buffer) + : NvGraphicBuffer(GetBuffer(buffer)), m_nvmap(std::addressof(nvmap)) { + if (this->BufferId() > 0) { + m_nvmap->DuplicateHandle(this->BufferId(), true); + } +} + +GraphicBuffer::~GraphicBuffer() { + if (m_nvmap != nullptr && this->BufferId() > 0) { + m_nvmap->FreeHandle(this->BufferId(), true); + } +} + +} // namespace Service::android |