diff options
Diffstat (limited to 'src/core')
| -rw-r--r-- | src/core/hle/service/nvdrv/devices/nvhost_ctrl_gpu.cpp | 14 | 
1 files changed, 11 insertions, 3 deletions
diff --git a/src/core/hle/service/nvdrv/devices/nvhost_ctrl_gpu.cpp b/src/core/hle/service/nvdrv/devices/nvhost_ctrl_gpu.cpp index 44e062f50..010072a5b 100644 --- a/src/core/hle/service/nvdrv/devices/nvhost_ctrl_gpu.cpp +++ b/src/core/hle/service/nvdrv/devices/nvhost_ctrl_gpu.cpp @@ -97,7 +97,9 @@ u32 nvhost_ctrl_gpu::GetTPCMasks(const std::vector<u8>& input, std::vector<u8>&  u32 nvhost_ctrl_gpu::GetActiveSlotMask(const std::vector<u8>& input, std::vector<u8>& output) {      LOG_DEBUG(Service_NVDRV, "called");      IoctlActiveSlotMask params{}; -    std::memcpy(¶ms, input.data(), input.size()); +    if (input.size() > 0) { +        std::memcpy(¶ms, input.data(), input.size()); +    }      params.slot = 0x07;      params.mask = 0x01;      std::memcpy(output.data(), ¶ms, output.size()); @@ -107,7 +109,9 @@ u32 nvhost_ctrl_gpu::GetActiveSlotMask(const std::vector<u8>& input, std::vector  u32 nvhost_ctrl_gpu::ZCullGetCtxSize(const std::vector<u8>& input, std::vector<u8>& output) {      LOG_DEBUG(Service_NVDRV, "called");      IoctlZcullGetCtxSize params{}; -    std::memcpy(¶ms, input.data(), input.size()); +    if (input.size() > 0) { +        std::memcpy(¶ms, input.data(), input.size()); +    }      params.size = 0x1;      std::memcpy(output.data(), ¶ms, output.size());      return 0; @@ -116,7 +120,11 @@ u32 nvhost_ctrl_gpu::ZCullGetCtxSize(const std::vector<u8>& input, std::vector<u  u32 nvhost_ctrl_gpu::ZCullGetInfo(const std::vector<u8>& input, std::vector<u8>& output) {      LOG_DEBUG(Service_NVDRV, "called");      IoctlNvgpuGpuZcullGetInfoArgs params{}; -    std::memcpy(¶ms, input.data(), input.size()); + +    if (input.size() > 0) { +        std::memcpy(¶ms, input.data(), input.size()); +    } +      params.width_align_pixels = 0x20;      params.height_align_pixels = 0x20;      params.pixel_squares_by_aliquots = 0x400;  | 
