Browse Source
Merge pull request #439 from ogniK5377/GetTPCMasks
More accurate GetTPCMasks impl
pull/15/merge
bunnei
8 years ago
committed by
GitHub
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with
8 additions and
4 deletions
-
src/core/hle/service/nvdrv/devices/nvhost_ctrl_gpu.cpp
-
src/core/hle/service/nvdrv/devices/nvhost_ctrl_gpu.h
|
|
|
@ -77,9 +77,13 @@ u32 nvhost_ctrl_gpu::GetCharacteristics(const std::vector<u8>& input, std::vecto |
|
|
|
u32 nvhost_ctrl_gpu::GetTPCMasks(const std::vector<u8>& input, std::vector<u8>& output) { |
|
|
|
IoctlGpuGetTpcMasksArgs params{}; |
|
|
|
std::memcpy(¶ms, input.data(), input.size()); |
|
|
|
NGLOG_WARNING(Service_NVDRV, "(STUBBED) called, mask=0x{:X}, mask_buf_addr=0x{:X}", |
|
|
|
params.mask_buf_size, params.mask_buf_addr); |
|
|
|
params.unk = 0xcafe; // TODO(ogniK): Needs to be non 0, what does this actually do?
|
|
|
|
NGLOG_INFO(Service_NVDRV, "called, mask=0x{:X}, mask_buf_addr=0x{:X}", params.mask_buf_size, |
|
|
|
params.mask_buf_addr); |
|
|
|
// TODO(ogniK): Confirm value on hardware
|
|
|
|
if (params.mask_buf_size) |
|
|
|
params.tpc_mask_size = 4 * 1; // 4 * num_gpc
|
|
|
|
else |
|
|
|
params.tpc_mask_size = 0; |
|
|
|
std::memcpy(output.data(), ¶ms, sizeof(params)); |
|
|
|
return 0; |
|
|
|
} |
|
|
|
|
|
|
|
@ -86,7 +86,7 @@ private: |
|
|
|
/// [in] pointer to TPC mask buffer. It will receive one 32-bit TPC mask per GPC or 0 if |
|
|
|
/// GPC is not enabled or not present. This parameter is ignored if mask_buf_size is 0. |
|
|
|
u64_le mask_buf_addr; |
|
|
|
u64_le unk; // Nintendo add this? |
|
|
|
u64_le tpc_mask_size; // Nintendo add this? |
|
|
|
}; |
|
|
|
static_assert(sizeof(IoctlGpuGetTpcMasksArgs) == 24, |
|
|
|
"IoctlGpuGetTpcMasksArgs is incorrect size"); |
|
|
|
|