diff options
author | bunnei <bunneidev@gmail.com> | 2014-12-03 07:05:16 +0100 |
---|---|---|
committer | bunnei <bunneidev@gmail.com> | 2014-12-10 01:07:13 +0100 |
commit | 170123982dfa8d5f7508d9808cf83d592267db21 (patch) | |
tree | d84e887fad4ad93a09fee3640c8fa5c658c25ffd | |
parent | Merge pull request #266 from yuriks/remove-ndma (diff) | |
download | yuzu-170123982dfa8d5f7508d9808cf83d592267db21.tar yuzu-170123982dfa8d5f7508d9808cf83d592267db21.tar.gz yuzu-170123982dfa8d5f7508d9808cf83d592267db21.tar.bz2 yuzu-170123982dfa8d5f7508d9808cf83d592267db21.tar.lz yuzu-170123982dfa8d5f7508d9808cf83d592267db21.tar.xz yuzu-170123982dfa8d5f7508d9808cf83d592267db21.tar.zst yuzu-170123982dfa8d5f7508d9808cf83d592267db21.zip |
-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) { { auto& params = command.set_command_list_last; WriteGPURegister(GPU_REG_INDEX(command_processor_config.address), Memory::VirtualToPhysicalAddress(params.address) >> 3); - WriteGPURegister(GPU_REG_INDEX(command_processor_config.size), params.size >> 3); + WriteGPURegister(GPU_REG_INDEX(command_processor_config.size), params.size); // TODO: Not sure if we are supposed to always write this .. seems to trigger processing though 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) { if (config.trigger & 1) { u32* buffer = (u32*)Memory::GetPointer(Memory::PhysicalToVirtualAddress(config.GetPhysicalAddress())); - u32 size = config.size << 3; - Pica::CommandProcessor::ProcessCommandList(buffer, size); + Pica::CommandProcessor::ProcessCommandList(buffer, config.size); } break; } 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 { INSERT_PADDING_WORDS(0x331); struct { - // command list size + // command list size (in bytes) u32 size; 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) { void ProcessCommandList(const u32* list, u32 size) { u32* read_pointer = (u32*)list; + u32 list_length = size / sizeof(u32); - while (read_pointer < list + size) { + while (read_pointer < list + list_length) { read_pointer += ExecuteCommandBlock(read_pointer); } } |