diff --git a/src/xenia/gpu/gl4/command_processor.cc b/src/xenia/gpu/gl4/command_processor.cc index 2dd6b7b44..907427790 100644 --- a/src/xenia/gpu/gl4/command_processor.cc +++ b/src/xenia/gpu/gl4/command_processor.cc @@ -686,6 +686,10 @@ bool CommandProcessor::ExecutePacketType3(RingbufferReader* reader, result = ExecutePacketType3_EVENT_WRITE_SHD(reader, packet_ptr, packet, count); break; + case PM4_EVENT_WRITE_EXT: + result = + ExecutePacketType3_EVENT_WRITE_EXT(reader, packet_ptr, packet, count); + break; case PM4_DRAW_INDX: result = ExecutePacketType3_DRAW_INDX(reader, packet_ptr, packet, count); break; @@ -1096,6 +1100,17 @@ bool CommandProcessor::ExecutePacketType3_EVENT_WRITE_SHD( return true; } +bool CommandProcessor::ExecutePacketType3_EVENT_WRITE_EXT( + RingbufferReader* reader, uint32_t packet_ptr, uint32_t packet, + uint32_t count) { + // generate a screen extent event + XETRACECP("[%.8X] Packet(%.8X): PM4_EVENT_WRITE_EXT", packet_ptr, packet); + reader->TraceData(count); + uint32_t unk0 = reader->Read(); + uint32_t unk1 = reader->Read(); + return true; +} + bool CommandProcessor::ExecutePacketType3_DRAW_INDX(RingbufferReader* reader, uint32_t packet_ptr, uint32_t packet, diff --git a/src/xenia/gpu/gl4/command_processor.h b/src/xenia/gpu/gl4/command_processor.h index 481bb98ff..6a21459dd 100644 --- a/src/xenia/gpu/gl4/command_processor.h +++ b/src/xenia/gpu/gl4/command_processor.h @@ -151,6 +151,9 @@ class CommandProcessor { bool ExecutePacketType3_EVENT_WRITE_SHD(RingbufferReader* reader, uint32_t packet_ptr, uint32_t packet, uint32_t count); + bool ExecutePacketType3_EVENT_WRITE_EXT(RingbufferReader* reader, + uint32_t packet_ptr, uint32_t packet, + uint32_t count); bool ExecutePacketType3_DRAW_INDX(RingbufferReader* reader, uint32_t packet_ptr, uint32_t packet, uint32_t count); diff --git a/src/xenia/gpu/xenos.h b/src/xenia/gpu/xenos.h index 77e9b766a..3b8446e27 100644 --- a/src/xenia/gpu/xenos.h +++ b/src/xenia/gpu/xenos.h @@ -398,6 +398,7 @@ enum Type3Opcode { PM4_EVENT_WRITE = 0x46, // generate an event that creates a write to memory when completed PM4_EVENT_WRITE_SHD = 0x58, // generate a VS|PS_done event PM4_EVENT_WRITE_CFL = 0x59, // generate a cache flush done event + PM4_EVENT_WRITE_EXT = 0x5a, // generate a screen extent event PM4_EVENT_WRITE_ZPD = 0x5b, // generate a z_pass done event PM4_DRAW_INDX = 0x22, // initiate fetch of index buffer and draw