mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-25 21:18:26 +02:00
It prints out the constant of the generated commands. $ ANV_DEBUG=dgc-dump ./deqp-vk -n dEQP-VK.dgc.ext.compute.smoke.4_sequences_device_local_from_host_preprocess_state_same_universal_queue Test case 'dEQP-VK.dgc.ext.compute.smoke.4_sequences_device_local_from_host_preprocess_state_same_universal_queue'.. call from 0xffffeffeffe04694 0x0000000400000000: MI_STORE_DATA_IMM 0x10000403 0x00000178 0x00000004 0xffe047b8 0xffffeffe 0x0000000400000014: MI_BATCH_BUFFER_START 0x18800101 0x00000020 0x00000004 0x0000000400000020: MI_ARB_CHECK 0x02800100 0x0000000400000024: MEDIA_CURBE_LOAD 0x70010002 0x00000000 0x00000020 0x40000180 0x0000000400000034: GPGPU_WALKER 0x7105000d 0x00000000 0x00000000 0x00000000 0x40000003 0x00000000 0x00000000 0x00000001 0x00000000 0x00000000 0x0000004c 0x00000000 0x00000001 0x0000ffff 0xffffffff 0x0000000400000070: MEDIA_STATE_FLUSH 0x70040000 0x00000000 0x0000000400000078: MEDIA_CURBE_LOAD 0x70010002 0x00000000 0x00000020 0x40001400 0x0000000400000088: GPGPU_WALKER 0x7105000d 0x00000000 0x00000000 0x00000000 0x40000003 0x00000000 0x00000000 0x00000017 0x00000000 0x00000000 0x00000001 0x00000000 0x00000001 0x0000ffff 0xffffffff 0x00000004000000c4: MEDIA_STATE_FLUSH 0x70040000 0x00000000 0x00000004000000cc: MEDIA_CURBE_LOAD 0x70010002 0x00000000 0x00000020 0x40002680 0x00000004000000dc: GPGPU_WALKER 0x7105000d 0x00000000 0x00000000 0x00000000 0x40000003 0x00000000 0x00000000 0x00000001 0x00000000 0x00000000 0x00000001 0x00000000 0x000000d5 0x0000ffff 0xffffffff 0x0000000400000118: MEDIA_STATE_FLUSH 0x70040000 0x00000000 0x0000000400000120: MEDIA_CURBE_LOAD 0x70010002 0x00000000 0x00000020 0x40003900 0x0000000400000130: GPGPU_WALKER 0x7105000d 0x00000000 0x00000000 0x00000000 0x40000003 0x00000000 0x00000000 0x00000001 0x00000000 0x00000000 0x000000dc 0x00000000 0x00000001 0x0000ffff 0xffffffff Pass (Pass) Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com> Acked-by: Alyssa Rosenzweig <alyssa.rosenzweig@intel.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/31384>
144 lines
3.8 KiB
C
144 lines
3.8 KiB
C
/*
|
|
* Copyright 2026 Intel Corporation
|
|
* SPDX-License-Identifier: MIT
|
|
*/
|
|
|
|
#include "libintel_shaders.h"
|
|
|
|
#define CMD(cmd_type, cmd_subtype, _opcode, _subopcode) \
|
|
(((cmd_type) << 29) | \
|
|
((cmd_subtype) << 27) | \
|
|
((_opcode) << 24) | \
|
|
((_subopcode) << 16))
|
|
#define CMD5(cmd_type, cmd_subtype, _opcode, _subopcode, _variant) \
|
|
(((cmd_type) << 29) | \
|
|
((cmd_subtype) << 27) | \
|
|
((_opcode) << 24) | \
|
|
((_subopcode) << 18) | \
|
|
((_variant) << 16))
|
|
|
|
void
|
|
genX(libanv_dgc_dump)(global uint32_t *cmd_base,
|
|
uint32_t n_dwords,
|
|
global void *call_addr)
|
|
{
|
|
printf("call from 0x%016lx\n", call_addr);
|
|
uint32_t bbs_count = 0;
|
|
for (uint32_t i = 0; i < n_dwords && bbs_count < 2; ) {
|
|
uint32_t n_dwords = cmd_base[i] & 0xff;
|
|
uint32_t bias_dwords = 0;
|
|
printf("0x%016lx: ", cmd_base + i);
|
|
switch (cmd_base[i] & 0xffff0000) {
|
|
case CMD(3, 3, 3, 0):
|
|
printf("3DPRIMITIVE\n");
|
|
bias_dwords = 2;
|
|
break;
|
|
case CMD(3, 3, 3, 2):
|
|
printf("3DMESH_3D\n");
|
|
bias_dwords = 2;
|
|
break;
|
|
case CMD(3, 3, 0, 21):
|
|
printf("3DSTATE_CONSTANT_VS\n");
|
|
bias_dwords = 2;
|
|
break;
|
|
case CMD(3, 3, 0, 25):
|
|
printf("3DSTATE_CONSTANT_HS\n");
|
|
bias_dwords = 2;
|
|
break;
|
|
case CMD(3, 3, 0, 26):
|
|
printf("3DSTATE_CONSTANT_DS\n");
|
|
bias_dwords = 2;
|
|
break;
|
|
case CMD(3, 3, 0, 22):
|
|
printf("3DSTATE_CONSTANT_GS\n");
|
|
bias_dwords = 2;
|
|
break;
|
|
case CMD(3, 3, 0, 23):
|
|
printf("3DSTATE_CONSTANT_PS\n");
|
|
bias_dwords = 2;
|
|
break;
|
|
case CMD(3, 3, 0, 109):
|
|
printf("3DSTATE_CONSTANT_ALL\n");
|
|
bias_dwords = 2;
|
|
break;
|
|
case CMD(3, 3, 0, 123):
|
|
printf("3DSTATE_MESH_SHADER_DATA\n");
|
|
bias_dwords = 2;
|
|
break;
|
|
case CMD(3, 3, 0, 126):
|
|
printf("3DSTATE_TASK_SHADER_DATA\n");
|
|
bias_dwords = 2;
|
|
break;
|
|
case CMD(3, 3, 0, 10):
|
|
printf("3DSTATE_INDEX_BUFFER\n");
|
|
bias_dwords = 2;
|
|
break;
|
|
case CMD(3, 3, 0, 8):
|
|
printf("3DSTATE_VERTEX_BUFFERS\n");
|
|
bias_dwords = 2;
|
|
break;
|
|
case CMD(3, 3, 0, 27):
|
|
printf("3DSTATE_HS\n");
|
|
bias_dwords = 2;
|
|
break;
|
|
case CMD(3, 3, 0, 29):
|
|
printf("3DSTATE_DS\n");
|
|
bias_dwords = 2;
|
|
break;
|
|
case CMD(3, 2, 0, 4):
|
|
printf("MEDIA_STATE_FLUSH\n");
|
|
bias_dwords = 2;
|
|
break;
|
|
case CMD(3, 2, 0, 0):
|
|
printf("MEDIA_VFE_STATE\n");
|
|
bias_dwords = 2;
|
|
break;
|
|
case CMD(3, 2, 0, 1):
|
|
printf("MEDIA_CURBE_LOAD\n");
|
|
bias_dwords = 2;
|
|
break;
|
|
case CMD(3, 2, 0, 2):
|
|
printf("MEDIA_INTERFACE_DESCRIPTOR_LOAD\n");
|
|
bias_dwords = 2;
|
|
break;
|
|
case CMD(3, 2, 1, 5):
|
|
printf("GPGPU_WALKER\n");
|
|
bias_dwords = 2;
|
|
break;
|
|
case CMD5(3, 2, 2, 2, 0):
|
|
printf("COMPUTE_WALKER\n");
|
|
bias_dwords = 2;
|
|
break;
|
|
case 0x10000000:
|
|
printf("MI_STORE_DATA_IMM\n");
|
|
bias_dwords = 2;
|
|
break;
|
|
case 0x02800000:
|
|
printf("MI_ARB_CHECK\n");
|
|
bias_dwords = 1;
|
|
break;
|
|
case 0x18800000:
|
|
printf("MI_BATCH_BUFFER_START\n");
|
|
bias_dwords = 2;
|
|
bbs_count++;
|
|
break;
|
|
case 0x00000000:
|
|
printf("MI_NOOP\n");
|
|
bias_dwords = 1;
|
|
break;
|
|
default:
|
|
printf("unknown : 0x%08x\n", cmd_base[i]);
|
|
return;
|
|
}
|
|
|
|
printf(" ");
|
|
for (uint32_t j = 0; j < (bias_dwords + n_dwords); j++) {
|
|
if (j > 0 && (j % 8) == 0)
|
|
printf("\n ");
|
|
printf("0x%08x ", cmd_base[i + j]);
|
|
}
|
|
printf("\n");
|
|
|
|
i += bias_dwords + n_dwords;
|
|
}
|
|
}
|