Browse Source
Merge pull request #11912 from liamwhite/nv-graphic-buffer
Merge pull request #11912 from liamwhite/nv-graphic-buffer
nvnflinger: use graphic buffer lifetime for map handlence_cpp
committed by
GitHub
12 changed files with 71 additions and 37 deletions
-
1src/core/CMakeLists.txt
-
2src/core/hle/service/nvnflinger/buffer_item.h
-
8src/core/hle/service/nvnflinger/buffer_queue_consumer.cpp
-
8src/core/hle/service/nvnflinger/buffer_queue_consumer.h
-
19src/core/hle/service/nvnflinger/buffer_queue_producer.cpp
-
3src/core/hle/service/nvnflinger/buffer_queue_producer.h
-
2src/core/hle/service/nvnflinger/buffer_slot.h
-
2src/core/hle/service/nvnflinger/fb_share_buffer_manager.cpp
-
2src/core/hle/service/nvnflinger/status.h
-
34src/core/hle/service/nvnflinger/ui/graphic_buffer.cpp
-
25src/core/hle/service/nvnflinger/ui/graphic_buffer.h
-
2src/core/hle/service/vi/display/vi_display.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
|
||||
Write
Preview
Loading…
Cancel
Save
Reference in new issue