From 31c12de0fecec5889020191ca6de0b7fbf8c51ba Mon Sep 17 00:00:00 2001 From: Chloe Marcec Date: Sun, 8 Nov 2020 19:11:34 +1100 Subject: core: Make nvservices more standardized --- src/core/hle/service/nvdrv/devices/nvhost_vic.cpp | 63 +++++++++++++---------- 1 file changed, 35 insertions(+), 28 deletions(-) (limited to 'src/core/hle/service/nvdrv/devices/nvhost_vic.cpp') diff --git a/src/core/hle/service/nvdrv/devices/nvhost_vic.cpp b/src/core/hle/service/nvdrv/devices/nvhost_vic.cpp index 60db54d00..347638490 100644 --- a/src/core/hle/service/nvdrv/devices/nvhost_vic.cpp +++ b/src/core/hle/service/nvdrv/devices/nvhost_vic.cpp @@ -15,36 +15,43 @@ nvhost_vic::nvhost_vic(Core::System& system, std::shared_ptr nvmap_dev) nvhost_vic::~nvhost_vic() = default; -u32 nvhost_vic::ioctl(Ioctl command, const std::vector& input, const std::vector& input2, - std::vector& output, std::vector& output2, IoctlCtrl& ctrl, - IoctlVersion version) { - LOG_DEBUG(Service_NVDRV, "called, command=0x{:08X}, input_size=0x{:X}, output_size=0x{:X}", - command.raw, input.size(), output.size()); - - switch (static_cast(command.raw)) { - case IoctlCommand::IocSetNVMAPfdCommand: - return SetNVMAPfd(input); - case IoctlCommand::IocSubmit: - return Submit(input, output); - case IoctlCommand::IocGetSyncpoint: - return GetSyncpoint(input, output); - case IoctlCommand::IocGetWaitbase: - return GetWaitbase(input, output); - case IoctlCommand::IocMapBuffer: - case IoctlCommand::IocMapBuffer2: - case IoctlCommand::IocMapBuffer3: - case IoctlCommand::IocMapBuffer4: - case IoctlCommand::IocMapBufferEx: - return MapBuffer(input, output); - case IoctlCommand::IocUnmapBuffer: - case IoctlCommand::IocUnmapBuffer2: - case IoctlCommand::IocUnmapBuffer3: - case IoctlCommand::IocUnmapBufferEx: - return UnmapBuffer(input, output); +NvResult nvhost_vic::Ioctl1(Ioctl command, const std::vector& input, std::vector& output) { + switch (command.group) { + case 0x0: + switch (command.cmd) { + case 0x1: + return Submit(input, output); + case 0x2: + return GetSyncpoint(input, output); + case 0x3: + return GetWaitbase(input, output); + case 0x9: + return MapBuffer(input, output); + case 0xa: + return UnmapBuffer(input, output); + } + case 'H': + switch (command.cmd) { + case 0x1: + return SetNVMAPfd(input); + } + break; } - UNIMPLEMENTED_MSG("Unimplemented ioctl 0x{:X}", command.raw); - return 0; + UNIMPLEMENTED_MSG("Unimplemented ioctl={:08X}", command.raw); + return NvResult::NotImplemented; +} + +NvResult nvhost_vic::Ioctl2(Ioctl command, const std::vector& input, + const std::vector& inline_input, std::vector& output) { + UNIMPLEMENTED_MSG("Unimplemented ioctl={:08X}", command.raw); + return NvResult::NotImplemented; +} + +NvResult nvhost_vic::Ioctl3(Ioctl command, const std::vector& input, std::vector& output, + std::vector& inline_output) { + UNIMPLEMENTED_MSG("Unimplemented ioctl={:08X}", command.raw); + return NvResult::NotImplemented; } } // namespace Service::Nvidia::Devices -- cgit v1.2.3