nvhost_nvdec: stubbed ChannelMapCmdBuffer
This commit is contained in:
@@ -10,6 +10,9 @@
|
|||||||
|
|
||||||
namespace Service::Nvidia::Devices {
|
namespace Service::Nvidia::Devices {
|
||||||
|
|
||||||
|
constexpr u32 NVHOST_IOCTL_MAGIC(0x0);
|
||||||
|
constexpr u32 NVHOST_IOCTL_CHANNEL_MAP_CMD_BUFFER(0x9);
|
||||||
|
|
||||||
nvhost_nvdec::nvhost_nvdec(Core::System& system) : nvdevice(system) {}
|
nvhost_nvdec::nvhost_nvdec(Core::System& system) : nvdevice(system) {}
|
||||||
nvhost_nvdec::~nvhost_nvdec() = default;
|
nvhost_nvdec::~nvhost_nvdec() = default;
|
||||||
|
|
||||||
@@ -23,6 +26,12 @@ u32 nvhost_nvdec::ioctl(Ioctl command, const std::vector<u8>& input, const std::
|
|||||||
case IoctlCommand::IocSetNVMAPfdCommand:
|
case IoctlCommand::IocSetNVMAPfdCommand:
|
||||||
return SetNVMAPfd(input, output);
|
return SetNVMAPfd(input, output);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (command.group == NVHOST_IOCTL_MAGIC) {
|
||||||
|
if (command.cmd == NVHOST_IOCTL_CHANNEL_MAP_CMD_BUFFER) {
|
||||||
|
return ChannelMapCmdBuffer(input, output);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
UNIMPLEMENTED_MSG("Unimplemented ioctl");
|
UNIMPLEMENTED_MSG("Unimplemented ioctl");
|
||||||
return 0;
|
return 0;
|
||||||
@@ -37,4 +46,23 @@ u32 nvhost_nvdec::SetNVMAPfd(const std::vector<u8>& input, std::vector<u8>& outp
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
u32 nvhost_nvdec::ChannelMapCmdBuffer(const std::vector<u8>& input, std::vector<u8>& output) {
|
||||||
|
IoctlMapCmdBuffer params{};
|
||||||
|
std::memcpy(¶ms, input.data(), 12);
|
||||||
|
|
||||||
|
std::vector<IoctlHandleMapBuffer> handles(params.num_handles);
|
||||||
|
std::memcpy(handles.data(), input.data() + 12,
|
||||||
|
sizeof(IoctlHandleMapBuffer) * params.num_handles);
|
||||||
|
|
||||||
|
LOG_WARNING(Service_NVDRV, "(STUBBED) called, num_handles: {}, is_compressed: {}", params.num_handles, params.is_compressed);
|
||||||
|
|
||||||
|
//TODO(namkazt): Uses nvmap_pin internally to pin a given number of nvmap handles to an appropriate device
|
||||||
|
// physical address.
|
||||||
|
|
||||||
|
std::memcpy(output.data(), ¶ms, 12);
|
||||||
|
std::memcpy(output.data() + 12, handles.data(),
|
||||||
|
sizeof(IoctlHandleMapBuffer) * params.num_handles);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
} // namespace Service::Nvidia::Devices
|
} // namespace Service::Nvidia::Devices
|
||||||
|
|||||||
Reference in New Issue
Block a user