diff options
Diffstat (limited to 'src/mesa/drivers/dri/i965/brw_disasm.c')
-rw-r--r-- | src/mesa/drivers/dri/i965/brw_disasm.c | 50 |
1 files changed, 37 insertions, 13 deletions
diff --git a/src/mesa/drivers/dri/i965/brw_disasm.c b/src/mesa/drivers/dri/i965/brw_disasm.c index 1075c5acba5..db23a187a93 100644 --- a/src/mesa/drivers/dri/i965/brw_disasm.c +++ b/src/mesa/drivers/dri/i965/brw_disasm.c @@ -412,6 +412,22 @@ static const char *const gen7_gateway_subfuncid[8] = { [BRW_MESSAGE_GATEWAY_SFID_MMIO_READ_WRITE] = "mmio read/write", }; +static const char *const gen4_dp_read_port_msg_type[4] = { + [0b00] = "OWord Block Read", + [0b01] = "OWord Dual Block Read", + [0b10] = "Media Block Read", + [0b11] = "DWord Scattered Read", +}; + +static const char *const g45_dp_read_port_msg_type[8] = { + [0b000] = "OWord Block Read", + [0b010] = "OWord Dual Block Read", + [0b100] = "Media Block Read", + [0b110] = "DWord Scattered Read", + [0b001] = "Render Target UNORM Read", + [0b011] = "AVC Loop Filter Read", +}; + static const char *const dp_write_port_msg_type[8] = { [0b000] = "OWord block write", [0b001] = "OWord dual block write", @@ -556,15 +572,15 @@ static const char *const gen5_urb_opcode[] = { }; static const char *const gen7_urb_opcode[] = { - [0] = "write HWord", - [1] = "write OWord", - [2] = "read HWord", - [3] = "read OWord", - [4] = "atomic mov", /* Gen7+ */ - [5] = "atomic inc", /* Gen7+ */ - [6] = "atomic add", /* Gen8+ */ - [7] = "SIMD8 write", /* Gen8+ */ - [8] = "SIMD8 read", /* Gen8+ */ + [BRW_URB_OPCODE_WRITE_HWORD] = "write HWord", + [BRW_URB_OPCODE_WRITE_OWORD] = "write OWord", + [BRW_URB_OPCODE_READ_HWORD] = "read HWord", + [BRW_URB_OPCODE_READ_OWORD] = "read OWord", + [GEN7_URB_OPCODE_ATOMIC_MOV] = "atomic mov", /* Gen7+ */ + [GEN7_URB_OPCODE_ATOMIC_INC] = "atomic inc", /* Gen7+ */ + [GEN8_URB_OPCODE_ATOMIC_ADD] = "atomic add", /* Gen8+ */ + [GEN8_URB_OPCODE_SIMD8_WRITE] = "SIMD8 write", /* Gen8+ */ + [GEN8_URB_OPCODE_SIMD8_READ] = "SIMD8 read", /* Gen8+ */ /* [9-15] - reserved */ }; @@ -601,6 +617,7 @@ static const char *const gen5_sampler_msg_type[] = { [GEN7_SAMPLER_MESSAGE_SAMPLE_GATHER4] = "gather4", [GEN5_SAMPLER_MESSAGE_LOD] = "lod", [GEN5_SAMPLER_MESSAGE_SAMPLE_RESINFO] = "resinfo", + [GEN6_SAMPLER_MESSAGE_SAMPLE_SAMPLEINFO] = "sampleinfo", [GEN7_SAMPLER_MESSAGE_SAMPLE_GATHER4_C] = "gather4_c", [GEN7_SAMPLER_MESSAGE_SAMPLE_GATHER4_PO] = "gather4_po", [GEN7_SAMPLER_MESSAGE_SAMPLE_GATHER4_PO_C] = "gather4_po_c", @@ -1444,10 +1461,17 @@ brw_disassemble_inst(FILE *file, const struct brw_device_info *devinfo, brw_inst_dp_msg_type(devinfo, inst), devinfo->gen >= 7 ? 0 : brw_inst_dp_write_commit(devinfo, inst)); } else { - format(file, " (%ld, %ld, %ld)", - brw_inst_binding_table_index(devinfo, inst), - brw_inst_dp_read_msg_control(devinfo, inst), - brw_inst_dp_read_msg_type(devinfo, inst)); + bool is_965 = devinfo->gen == 4 && !devinfo->is_g4x; + err |= control(file, "DP read message type", + is_965 ? gen4_dp_read_port_msg_type : + g45_dp_read_port_msg_type, + brw_inst_dp_read_msg_type(devinfo, inst), + &space); + + format(file, " MsgCtrl = 0x%lx", + brw_inst_dp_read_msg_control(devinfo, inst)); + + format(file, " Surface = %ld", brw_inst_binding_table_index(devinfo, inst)); } break; |