Alternate indirect buffer command.
This commit is contained in:
parent
ed0b97813a
commit
522ff9d23e
|
@ -377,7 +377,7 @@ void CommandProcessor::ExecutePrimaryBuffer(uint32_t start_index,
|
|||
void CommandProcessor::ExecuteIndirectBuffer(uint32_t ptr, uint32_t length) {
|
||||
SCOPE_profile_cpu_f("gpu");
|
||||
|
||||
trace_writer_.WriteIndirectBufferStart(ptr, length / sizeof(uint32_t));
|
||||
trace_writer_.WriteIndirectBufferStart(ptr, length * sizeof(uint32_t));
|
||||
|
||||
// Execute commands!
|
||||
uint32_t ptr_mask = 0;
|
||||
|
@ -509,6 +509,7 @@ bool CommandProcessor::ExecutePacketType3(RingbufferReader* reader,
|
|||
result = ExecutePacketType3_XE_SWAP(reader, packet, count);
|
||||
break;
|
||||
case PM4_INDIRECT_BUFFER:
|
||||
case PM4_INDIRECT_BUFFER_PFD:
|
||||
result = ExecutePacketType3_INDIRECT_BUFFER(reader, packet, count);
|
||||
break;
|
||||
case PM4_WAIT_REG_MEM:
|
||||
|
@ -683,7 +684,7 @@ bool CommandProcessor::ExecutePacketType3_INDIRECT_BUFFER(
|
|||
RingbufferReader* reader, uint32_t packet, uint32_t count) {
|
||||
// indirect buffer dispatch
|
||||
uint32_t list_ptr = CpuToGpu(reader->Read());
|
||||
uint32_t list_length = reader->Read();
|
||||
uint32_t list_length = reader->Read() & 0xFFFFF;
|
||||
ExecuteIndirectBuffer(GpuToCpu(list_ptr), list_length);
|
||||
return true;
|
||||
}
|
||||
|
|
|
@ -159,7 +159,8 @@ bool PacketDisassembler::DisasmPacketType3(const uint8_t* base_ptr,
|
|||
uint32_t frontbuffer_ptr = xe::load_and_swap<uint32_t>(ptr + 0);
|
||||
break;
|
||||
}
|
||||
case PM4_INDIRECT_BUFFER: {
|
||||
case PM4_INDIRECT_BUFFER:
|
||||
case PM4_INDIRECT_BUFFER_PFD: {
|
||||
// indirect buffer dispatch
|
||||
static const PacketTypeInfo op_info = {PacketCategory::kGeneric,
|
||||
"PM4_INDIRECT_BUFFER"};
|
||||
|
|
Loading…
Reference in New Issue