summaryrefslogtreecommitdiffstats
path: root/src/core/hle/service/nvdrv/devices/nvhost_nvdec_common.cpp
diff options
context:
space:
mode:
authorFernando Sahmkow <fsahmkow27@gmail.com>2022-04-18 21:07:21 +0200
committerFernando Sahmkow <fsahmkow27@gmail.com>2022-10-06 21:00:53 +0200
commit8d774e7415fac1153d8944baa2cc250cc4831107 (patch)
treec28efcc3cc27fc399412783b589f7a1f574304c3 /src/core/hle/service/nvdrv/devices/nvhost_nvdec_common.cpp
parentVulkan Texture Cache: Limit render area to the max width/height of the targets. (diff)
downloadyuzu-8d774e7415fac1153d8944baa2cc250cc4831107.tar
yuzu-8d774e7415fac1153d8944baa2cc250cc4831107.tar.gz
yuzu-8d774e7415fac1153d8944baa2cc250cc4831107.tar.bz2
yuzu-8d774e7415fac1153d8944baa2cc250cc4831107.tar.lz
yuzu-8d774e7415fac1153d8944baa2cc250cc4831107.tar.xz
yuzu-8d774e7415fac1153d8944baa2cc250cc4831107.tar.zst
yuzu-8d774e7415fac1153d8944baa2cc250cc4831107.zip
Diffstat (limited to '')
-rw-r--r--src/core/hle/service/nvdrv/devices/nvhost_nvdec_common.cpp16
1 files changed, 12 insertions, 4 deletions
diff --git a/src/core/hle/service/nvdrv/devices/nvhost_nvdec_common.cpp b/src/core/hle/service/nvdrv/devices/nvhost_nvdec_common.cpp
index 008092dbb..fe83423d5 100644
--- a/src/core/hle/service/nvdrv/devices/nvhost_nvdec_common.cpp
+++ b/src/core/hle/service/nvdrv/devices/nvhost_nvdec_common.cpp
@@ -51,8 +51,12 @@ std::unordered_map<DeviceFD, u32> nvhost_nvdec_common::fd_to_id{};
nvhost_nvdec_common::nvhost_nvdec_common(Core::System& system_, NvCore::Container& core_,
NvCore::ChannelType channel_type_)
: nvdevice{system_}, core{core_}, syncpoint_manager{core.GetSyncpointManager()},
- nvmap{core.GetNvMapFile()}, channel_type{channel_type_} {}
-nvhost_nvdec_common::~nvhost_nvdec_common() = default;
+ nvmap{core.GetNvMapFile()}, channel_type{channel_type_} {
+ channel_syncpoint = syncpoint_manager.AllocateSyncpoint(false);
+}
+nvhost_nvdec_common::~nvhost_nvdec_common() {
+ syncpoint_manager.FreeSyncpoint(channel_syncpoint);
+}
NvResult nvhost_nvdec_common::SetNVMAPfd(const std::vector<u8>& input) {
IoctlSetNvmapFD params{};
@@ -117,8 +121,8 @@ NvResult nvhost_nvdec_common::GetSyncpoint(const std::vector<u8>& input, std::ve
std::memcpy(&params, input.data(), sizeof(IoctlGetSyncpoint));
LOG_DEBUG(Service_NVDRV, "called GetSyncpoint, id={}", params.param);
- const u32 id{NvCore::SyncpointManager::channel_syncpoints[static_cast<u32>(channel_type)]};
- params.value = id;
+ // const u32 id{NvCore::SyncpointManager::channel_syncpoints[static_cast<u32>(channel_type)]};
+ params.value = channel_syncpoint;
std::memcpy(output.data(), &params, sizeof(IoctlGetSyncpoint));
return NvResult::Success;
@@ -176,4 +180,8 @@ Kernel::KEvent* nvhost_nvdec_common::QueryEvent(u32 event_id) {
return nullptr;
}
+void nvhost_nvdec_common::Reset() {
+ fd_to_id.clear();
+}
+
} // namespace Service::Nvidia::Devices