summaryrefslogtreecommitdiffstats
path: root/src/core/hle/service/nvnflinger/ui/graphic_buffer.cpp
diff options
context:
space:
mode:
authorLiam <byteslice@airmail.cc>2023-10-29 21:37:11 +0100
committerLiam <byteslice@airmail.cc>2023-10-30 03:12:16 +0100
commit79e7d7f4ba3ed4f395e6b30eea218a34348726a2 (patch)
treef7e73263e401b6eb761df2eebce6cb52908be5f6 /src/core/hle/service/nvnflinger/ui/graphic_buffer.cpp
parentMerge pull request #11866 from liamwhite/more-qt-nonsense (diff)
downloadyuzu-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.cpp34
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