aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/core/hw
diff options
context:
space:
mode:
authorGravatar Tony Wasserka <NeoBrainX@gmail.com>2014-07-26 14:42:46 +0200
committerGravatar Tony Wasserka <NeoBrainX@gmail.com>2014-08-12 13:47:30 +0200
commit76a586de4952df6d8dd9db9d97716c00690cebdd (patch)
treead6a954780faa4ab7908780e4ab605952b7e400b /src/core/hw
parent98ad16a45b9441a54d80e67425ac3ddee24f08dc (diff)
Pica: Add command processor.
Diffstat (limited to 'src/core/hw')
-rw-r--r--src/core/hw/gpu.cpp8
1 files changed, 5 insertions, 3 deletions
diff --git a/src/core/hw/gpu.cpp b/src/core/hw/gpu.cpp
index 591997aa..87cf93ba 100644
--- a/src/core/hw/gpu.cpp
+++ b/src/core/hw/gpu.cpp
@@ -14,6 +14,7 @@
#include "core/hw/gpu.h"
+#include "video_core/command_processor.h"
#include "video_core/video_core.h"
@@ -143,14 +144,15 @@ inline void Write(u32 addr, const T data) {
break;
}
+ // Seems like writing to this register triggers processing
case GPU_REG_INDEX(command_processor_config.trigger):
{
const auto& config = g_regs.command_processor_config;
if (config.trigger & 1)
{
- // u32* buffer = (u32*)Memory::GetPointer(config.GetPhysicalAddress());
- ERROR_LOG(GPU, "Beginning 0x%08x bytes of commands from address 0x%08x", config.size, config.GetPhysicalAddress());
- // TODO: Process command list!
+ u32* buffer = (u32*)Memory::GetPointer(Memory::PhysicalToVirtualAddress(config.GetPhysicalAddress()));
+ u32 size = config.size << 3;
+ Pica::CommandProcessor::ProcessCommandList(buffer, size);
}
break;
}