diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/core/hle/service/gsp_gpu.cpp | 2 | ||||
| -rw-r--r-- | src/core/hw/gpu.cpp | 3 | ||||
| -rw-r--r-- | src/core/hw/gpu.h | 2 | ||||
| -rw-r--r-- | src/video_core/command_processor.cpp | 3 |
4 files changed, 5 insertions, 5 deletions
diff --git a/src/core/hle/service/gsp_gpu.cpp b/src/core/hle/service/gsp_gpu.cpp index de1bd3f61..0d3a52478 100644 --- a/src/core/hle/service/gsp_gpu.cpp +++ b/src/core/hle/service/gsp_gpu.cpp | |||
| @@ -219,7 +219,7 @@ static void ExecuteCommand(const Command& command, u32 thread_id) { | |||
| 219 | { | 219 | { |
| 220 | auto& params = command.set_command_list_last; | 220 | auto& params = command.set_command_list_last; |
| 221 | WriteGPURegister(GPU_REG_INDEX(command_processor_config.address), Memory::VirtualToPhysicalAddress(params.address) >> 3); | 221 | WriteGPURegister(GPU_REG_INDEX(command_processor_config.address), Memory::VirtualToPhysicalAddress(params.address) >> 3); |
| 222 | WriteGPURegister(GPU_REG_INDEX(command_processor_config.size), params.size >> 3); | 222 | WriteGPURegister(GPU_REG_INDEX(command_processor_config.size), params.size); |
| 223 | 223 | ||
| 224 | // TODO: Not sure if we are supposed to always write this .. seems to trigger processing though | 224 | // TODO: Not sure if we are supposed to always write this .. seems to trigger processing though |
| 225 | WriteGPURegister(GPU_REG_INDEX(command_processor_config.trigger), 1); | 225 | WriteGPURegister(GPU_REG_INDEX(command_processor_config.trigger), 1); |
diff --git a/src/core/hw/gpu.cpp b/src/core/hw/gpu.cpp index af5e1b39b..77557e582 100644 --- a/src/core/hw/gpu.cpp +++ b/src/core/hw/gpu.cpp | |||
| @@ -154,8 +154,7 @@ inline void Write(u32 addr, const T data) { | |||
| 154 | if (config.trigger & 1) | 154 | if (config.trigger & 1) |
| 155 | { | 155 | { |
| 156 | u32* buffer = (u32*)Memory::GetPointer(Memory::PhysicalToVirtualAddress(config.GetPhysicalAddress())); | 156 | u32* buffer = (u32*)Memory::GetPointer(Memory::PhysicalToVirtualAddress(config.GetPhysicalAddress())); |
| 157 | u32 size = config.size << 3; | 157 | Pica::CommandProcessor::ProcessCommandList(buffer, config.size); |
| 158 | Pica::CommandProcessor::ProcessCommandList(buffer, size); | ||
| 159 | } | 158 | } |
| 160 | break; | 159 | break; |
| 161 | } | 160 | } |
diff --git a/src/core/hw/gpu.h b/src/core/hw/gpu.h index 3fa7b9ccf..86cd5e680 100644 --- a/src/core/hw/gpu.h +++ b/src/core/hw/gpu.h | |||
| @@ -169,7 +169,7 @@ struct Regs { | |||
| 169 | INSERT_PADDING_WORDS(0x331); | 169 | INSERT_PADDING_WORDS(0x331); |
| 170 | 170 | ||
| 171 | struct { | 171 | struct { |
| 172 | // command list size | 172 | // command list size (in bytes) |
| 173 | u32 size; | 173 | u32 size; |
| 174 | 174 | ||
| 175 | INSERT_PADDING_WORDS(0x1); | 175 | INSERT_PADDING_WORDS(0x1); |
diff --git a/src/video_core/command_processor.cpp b/src/video_core/command_processor.cpp index 298b04c51..585323a81 100644 --- a/src/video_core/command_processor.cpp +++ b/src/video_core/command_processor.cpp | |||
| @@ -272,8 +272,9 @@ static std::ptrdiff_t ExecuteCommandBlock(const u32* first_command_word) { | |||
| 272 | 272 | ||
| 273 | void ProcessCommandList(const u32* list, u32 size) { | 273 | void ProcessCommandList(const u32* list, u32 size) { |
| 274 | u32* read_pointer = (u32*)list; | 274 | u32* read_pointer = (u32*)list; |
| 275 | u32 list_length = size / sizeof(u32); | ||
| 275 | 276 | ||
| 276 | while (read_pointer < list + size) { | 277 | while (read_pointer < list + list_length) { |
| 277 | read_pointer += ExecuteCommandBlock(read_pointer); | 278 | read_pointer += ExecuteCommandBlock(read_pointer); |
| 278 | } | 279 | } |
| 279 | } | 280 | } |