PM4_LOAD_ALU_CONSTANT
This commit is contained in:
parent
7d6dda356c
commit
0355047838
|
@ -569,13 +569,13 @@ uint32_t RingBufferWorker::ExecutePacket(PacketArgs& args) {
|
||||||
uint32_t type = (offset_type >> 16) & 0xFF;
|
uint32_t type = (offset_type >> 16) & 0xFF;
|
||||||
switch (type) {
|
switch (type) {
|
||||||
case 0x4: // REGISTER
|
case 0x4: // REGISTER
|
||||||
index += 0x2000;
|
index += 0x2000; // registers
|
||||||
for (uint32_t n = 0; n < count - 1; n++, index++) {
|
for (uint32_t n = 0; n < count - 1; n++, index++) {
|
||||||
uint32_t data = READ_PTR();
|
uint32_t data = READ_PTR();
|
||||||
const char* reg_name = xenos::GetRegisterName(index);
|
const char* reg_name = xenos::GetRegisterName(index);
|
||||||
XELOGGPU("[%.8X] %.8X -> %.4X %s",
|
XELOGGPU("[%.8X] %.8X -> %.4X %s",
|
||||||
packet_ptr + (1 + n) * 4,
|
packet_ptr + (1 + n) * 4,
|
||||||
data, index, reg_name? reg_name : "");
|
data, index, reg_name ? reg_name : "");
|
||||||
WriteRegister(packet_ptr, index, data);
|
WriteRegister(packet_ptr, index, data);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
@ -585,6 +585,29 @@ uint32_t RingBufferWorker::ExecutePacket(PacketArgs& args) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
case PM4_LOAD_ALU_CONSTANT:
|
||||||
|
// load constants from memory
|
||||||
|
{
|
||||||
|
XELOGGPU("[%.8X] Packet(%.8X): PM4_LOAD_ALU_CONSTANT",
|
||||||
|
packet_ptr, packet);
|
||||||
|
uint32_t address = READ_PTR();
|
||||||
|
address &= 0x3FFFFFFF;
|
||||||
|
uint32_t offset_type = READ_PTR();
|
||||||
|
uint32_t index = offset_type & 0x7FF;
|
||||||
|
uint32_t size = READ_PTR();
|
||||||
|
size &= 0xFFF;
|
||||||
|
index += 0x4000; // alu constants
|
||||||
|
for (uint32_t n = 0; n < size; n++, index++) {
|
||||||
|
uint32_t data = XEGETUINT32BE(
|
||||||
|
p + GpuToCpu(packet_ptr, address + n * 4));
|
||||||
|
const char* reg_name = xenos::GetRegisterName(index);
|
||||||
|
XELOGGPU("[%.8X] %.8X -> %.4X %s",
|
||||||
|
packet_ptr,
|
||||||
|
data, index, reg_name ? reg_name : "");
|
||||||
|
WriteRegister(packet_ptr, index, data);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
case PM4_IM_LOAD:
|
case PM4_IM_LOAD:
|
||||||
// load sequencer instruction memory (pointer-based)
|
// load sequencer instruction memory (pointer-based)
|
||||||
|
|
|
@ -56,6 +56,7 @@ enum Type3Opcode {
|
||||||
PM4_VIZ_QUERY = 0x23, // begin/end initiator for viz query extent processing
|
PM4_VIZ_QUERY = 0x23, // begin/end initiator for viz query extent processing
|
||||||
PM4_SET_STATE = 0x25, // fetch state sub-blocks and initiate shader code DMAs
|
PM4_SET_STATE = 0x25, // fetch state sub-blocks and initiate shader code DMAs
|
||||||
PM4_SET_CONSTANT = 0x2d, // load constant into chip and to memory
|
PM4_SET_CONSTANT = 0x2d, // load constant into chip and to memory
|
||||||
|
PM4_LOAD_ALU_CONSTANT = 0x2f, // load constants from memory
|
||||||
PM4_IM_LOAD = 0x27, // load sequencer instruction memory (pointer-based)
|
PM4_IM_LOAD = 0x27, // load sequencer instruction memory (pointer-based)
|
||||||
PM4_IM_LOAD_IMMEDIATE = 0x2b, // load sequencer instruction memory (code embedded in packet)
|
PM4_IM_LOAD_IMMEDIATE = 0x2b, // load sequencer instruction memory (code embedded in packet)
|
||||||
PM4_LOAD_CONSTANT_CONTEXT = 0x2e, // load constants from a location in memory
|
PM4_LOAD_CONSTANT_CONTEXT = 0x2e, // load constants from a location in memory
|
||||||
|
|
Loading…
Reference in New Issue