diff options
| -rw-r--r-- | src/core/hle/service/gsp_gpu.cpp | 31 | 
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) {      case CommandId::SET_MEMORY_FILL:      {          auto& params = command.memory_fill; -        WriteGPURegister(static_cast<u32>(GPU_REG_INDEX(memory_fill_config[0].address_start)), -                         Memory::VirtualToPhysicalAddress(params.start1) >> 3); -        WriteGPURegister(static_cast<u32>(GPU_REG_INDEX(memory_fill_config[0].address_end)), -                         Memory::VirtualToPhysicalAddress(params.end1) >> 3); -        WriteGPURegister(static_cast<u32>(GPU_REG_INDEX(memory_fill_config[0].value_32bit)), params.value1); -        WriteGPURegister(static_cast<u32>(GPU_REG_INDEX(memory_fill_config[0].control)), params.control1); - -        WriteGPURegister(static_cast<u32>(GPU_REG_INDEX(memory_fill_config[1].address_start)), -                         Memory::VirtualToPhysicalAddress(params.start2) >> 3); -        WriteGPURegister(static_cast<u32>(GPU_REG_INDEX(memory_fill_config[1].address_end)), -                         Memory::VirtualToPhysicalAddress(params.end2) >> 3); -        WriteGPURegister(static_cast<u32>(GPU_REG_INDEX(memory_fill_config[1].value_32bit)), params.value2); -        WriteGPURegister(static_cast<u32>(GPU_REG_INDEX(memory_fill_config[1].control)), params.control2); + +        if (params.start1 != 0) { +            WriteGPURegister(static_cast<u32>(GPU_REG_INDEX(memory_fill_config[0].address_start)), +                    Memory::VirtualToPhysicalAddress(params.start1) >> 3); +            WriteGPURegister(static_cast<u32>(GPU_REG_INDEX(memory_fill_config[0].address_end)), +                    Memory::VirtualToPhysicalAddress(params.end1) >> 3); +            WriteGPURegister(static_cast<u32>(GPU_REG_INDEX(memory_fill_config[0].value_32bit)), params.value1); +            WriteGPURegister(static_cast<u32>(GPU_REG_INDEX(memory_fill_config[0].control)), params.control1); +        } + +        if (params.start2 != 0) { +            WriteGPURegister(static_cast<u32>(GPU_REG_INDEX(memory_fill_config[1].address_start)), +                    Memory::VirtualToPhysicalAddress(params.start2) >> 3); +            WriteGPURegister(static_cast<u32>(GPU_REG_INDEX(memory_fill_config[1].address_end)), +                    Memory::VirtualToPhysicalAddress(params.end2) >> 3); +            WriteGPURegister(static_cast<u32>(GPU_REG_INDEX(memory_fill_config[1].value_32bit)), params.value2); +            WriteGPURegister(static_cast<u32>(GPU_REG_INDEX(memory_fill_config[1].control)), params.control2); +        }          break;      } | 
