summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar Yuri Kunde Schlesner2015-07-23 17:31:38 -0700
committerGravatar Yuri Kunde Schlesner2015-07-23 17:31:38 -0700
commita989522384681381e60495f6189a31f66fa45940 (patch)
tree23b366f1fe32a78a91c2bde9ae6cb831233fb13d
parentMerge pull request #980 from Subv/more_breakpoints (diff)
parentGSP: Don't try to write memory fill registers if start address is 0 (diff)
downloadyuzu-a989522384681381e60495f6189a31f66fa45940.tar.gz
yuzu-a989522384681381e60495f6189a31f66fa45940.tar.xz
yuzu-a989522384681381e60495f6189a31f66fa45940.zip
Merge pull request #983 from yuriks/null-memory-fill
GSP: Don't try to write memory fill registers if start address is 0
Diffstat (limited to '')
-rw-r--r--src/core/hle/service/gsp_gpu.cpp31
1 files changed, 18 insertions, 13 deletions
diff --git a/src/core/hle/service/gsp_gpu.cpp b/src/core/hle/service/gsp_gpu.cpp
index 832273f39..e93c1b436 100644
--- a/src/core/hle/service/gsp_gpu.cpp
+++ b/src/core/hle/service/gsp_gpu.cpp
@@ -395,19 +395,24 @@ static void ExecuteCommand(const Command& command, u32 thread_id) {
395 case CommandId::SET_MEMORY_FILL: 395 case CommandId::SET_MEMORY_FILL:
396 { 396 {
397 auto& params = command.memory_fill; 397 auto& params = command.memory_fill;
398 WriteGPURegister(static_cast<u32>(GPU_REG_INDEX(memory_fill_config[0].address_start)), 398
399 Memory::VirtualToPhysicalAddress(params.start1) >> 3); 399 if (params.start1 != 0) {
400 WriteGPURegister(static_cast<u32>(GPU_REG_INDEX(memory_fill_config[0].address_end)), 400 WriteGPURegister(static_cast<u32>(GPU_REG_INDEX(memory_fill_config[0].address_start)),
401 Memory::VirtualToPhysicalAddress(params.end1) >> 3); 401 Memory::VirtualToPhysicalAddress(params.start1) >> 3);
402 WriteGPURegister(static_cast<u32>(GPU_REG_INDEX(memory_fill_config[0].value_32bit)), params.value1); 402 WriteGPURegister(static_cast<u32>(GPU_REG_INDEX(memory_fill_config[0].address_end)),
403 WriteGPURegister(static_cast<u32>(GPU_REG_INDEX(memory_fill_config[0].control)), params.control1); 403 Memory::VirtualToPhysicalAddress(params.end1) >> 3);
404 404 WriteGPURegister(static_cast<u32>(GPU_REG_INDEX(memory_fill_config[0].value_32bit)), params.value1);
405 WriteGPURegister(static_cast<u32>(GPU_REG_INDEX(memory_fill_config[1].address_start)), 405 WriteGPURegister(static_cast<u32>(GPU_REG_INDEX(memory_fill_config[0].control)), params.control1);
406 Memory::VirtualToPhysicalAddress(params.start2) >> 3); 406 }
407 WriteGPURegister(static_cast<u32>(GPU_REG_INDEX(memory_fill_config[1].address_end)), 407
408 Memory::VirtualToPhysicalAddress(params.end2) >> 3); 408 if (params.start2 != 0) {
409 WriteGPURegister(static_cast<u32>(GPU_REG_INDEX(memory_fill_config[1].value_32bit)), params.value2); 409 WriteGPURegister(static_cast<u32>(GPU_REG_INDEX(memory_fill_config[1].address_start)),
410 WriteGPURegister(static_cast<u32>(GPU_REG_INDEX(memory_fill_config[1].control)), params.control2); 410 Memory::VirtualToPhysicalAddress(params.start2) >> 3);
411 WriteGPURegister(static_cast<u32>(GPU_REG_INDEX(memory_fill_config[1].address_end)),
412 Memory::VirtualToPhysicalAddress(params.end2) >> 3);
413 WriteGPURegister(static_cast<u32>(GPU_REG_INDEX(memory_fill_config[1].value_32bit)), params.value2);
414 WriteGPURegister(static_cast<u32>(GPU_REG_INDEX(memory_fill_config[1].control)), params.control2);
415 }
411 break; 416 break;
412 } 417 }
413 418