mirror of
https://github.com/tiagovignatti/intel-gpu-tools.git
synced 2025-06-12 02:16:17 +00:00
tools/decode: decode XY_SETUP_* cmds
And extract decode code for br00 and br01. Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
This commit is contained in:
parent
24e60385fe
commit
c2657e865f
@ -213,11 +213,53 @@ decode_mi(uint32_t *data, int count, uint32_t hw_offset, int *failures)
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
decode_2d_br00(uint32_t *data, int count, uint32_t hw_offset, char *cmd)
|
||||||
|
{
|
||||||
|
instr_out(data, hw_offset, 0,
|
||||||
|
"%s (rgb %sabled, alpha %sabled, src tile %d, dst tile %d)\n",
|
||||||
|
cmd,
|
||||||
|
(data[count] & (1 << 20)) ? "en" : "dis",
|
||||||
|
(data[count] & (1 << 21)) ? "en" : "dis",
|
||||||
|
(data[count] >> 15) & 1,
|
||||||
|
(data[count] >> 11) & 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
decode_2d_br01(uint32_t *data, int count, uint32_t hw_offset)
|
||||||
|
{
|
||||||
|
char *format;
|
||||||
|
switch ((data[count] >> 24) & 0x3) {
|
||||||
|
case 0:
|
||||||
|
format="8";
|
||||||
|
break;
|
||||||
|
case 1:
|
||||||
|
format="565";
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
format="1555";
|
||||||
|
break;
|
||||||
|
case 3:
|
||||||
|
format="8888";
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
instr_out(data, hw_offset, count, "format %s, pitch %d, rop 0x%02x, "
|
||||||
|
"clipping %sabled, %s%s \n",
|
||||||
|
|
||||||
|
format,
|
||||||
|
(short)(data[count] & 0xffff),
|
||||||
|
(data[count] >> 16) &0xff,
|
||||||
|
data[count] & (1 << 30) ? "en" : "dis",
|
||||||
|
data[count] & (1 << 31) ? "solid pattern enabled, " : "",
|
||||||
|
data[count] & (1 << 31) ? "mono pattern transparency enabled, " : "");
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
decode_2d(uint32_t *data, int count, uint32_t hw_offset, int *failures)
|
decode_2d(uint32_t *data, int count, uint32_t hw_offset, int *failures)
|
||||||
{
|
{
|
||||||
unsigned int opcode, len;
|
unsigned int opcode, len;
|
||||||
char *format = NULL;
|
|
||||||
|
|
||||||
struct {
|
struct {
|
||||||
uint32_t opcode;
|
uint32_t opcode;
|
||||||
@ -253,12 +295,61 @@ decode_2d(uint32_t *data, int count, uint32_t hw_offset, int *failures)
|
|||||||
};
|
};
|
||||||
|
|
||||||
switch ((data[0] & 0x1fc00000) >> 22) {
|
switch ((data[0] & 0x1fc00000) >> 22) {
|
||||||
|
case 0x01:
|
||||||
|
decode_2d_br00(data, 0, hw_offset, "XY_SETUP_BLT");
|
||||||
|
|
||||||
|
len = (data[0] & 0x000000ff) + 2;
|
||||||
|
if (len != 8)
|
||||||
|
fprintf(out, "Bad count in XY_SETUP_BLT\n");
|
||||||
|
if (count < 8)
|
||||||
|
BUFFER_FAIL(count, len, "XY_SETUP_BLT");
|
||||||
|
|
||||||
|
decode_2d_br01(data, 1, hw_offset);
|
||||||
|
instr_out(data, hw_offset, 2, "cliprect (%d,%d)\n",
|
||||||
|
data[2] & 0xffff, data[2] >> 16);
|
||||||
|
instr_out(data, hw_offset, 3, "cliprect (%d,%d)\n",
|
||||||
|
data[3] & 0xffff, data[3] >> 16);
|
||||||
|
instr_out(data, hw_offset, 4, "setup dst offset 0x%08x\n", data[4]);
|
||||||
|
instr_out(data, hw_offset, 5, "setup background color\n");
|
||||||
|
instr_out(data, hw_offset, 6, "setup foreground color\n");
|
||||||
|
instr_out(data, hw_offset, 7, "color pattern offset\n");
|
||||||
|
return len;
|
||||||
|
case 0x03:
|
||||||
|
decode_2d_br00(data, 0, hw_offset, "XY_SETUP_CLIP_BLT");
|
||||||
|
|
||||||
|
len = (data[0] & 0x000000ff) + 2;
|
||||||
|
if (len != 3)
|
||||||
|
fprintf(out, "Bad count in XY_SETUP_CLIP_BLT\n");
|
||||||
|
if (count < 3)
|
||||||
|
BUFFER_FAIL(count, len, "XY_SETUP_CLIP_BLT");
|
||||||
|
|
||||||
|
instr_out(data, hw_offset, 1, "cliprect (%d,%d)\n",
|
||||||
|
data[1] & 0xffff, data[2] >> 16);
|
||||||
|
instr_out(data, hw_offset, 2, "cliprect (%d,%d)\n",
|
||||||
|
data[2] & 0xffff, data[3] >> 16);
|
||||||
|
return len;
|
||||||
|
case 0x11:
|
||||||
|
decode_2d_br00(data, 0, hw_offset, "XY_SETUP_MONO_PATTERN_SL_BLT");
|
||||||
|
|
||||||
|
len = (data[0] & 0x000000ff) + 2;
|
||||||
|
if (len != 9)
|
||||||
|
fprintf(out, "Bad count in XY_SETUP_MONO_PATTERN_SL_BLT\n");
|
||||||
|
if (count < 9)
|
||||||
|
BUFFER_FAIL(count, len, "XY_SETUP_MONO_PATTERN_SL_BLT");
|
||||||
|
|
||||||
|
decode_2d_br01(data, 1, hw_offset);
|
||||||
|
instr_out(data, hw_offset, 2, "cliprect (%d,%d)\n",
|
||||||
|
data[2] & 0xffff, data[2] >> 16);
|
||||||
|
instr_out(data, hw_offset, 3, "cliprect (%d,%d)\n",
|
||||||
|
data[3] & 0xffff, data[3] >> 16);
|
||||||
|
instr_out(data, hw_offset, 4, "setup dst offset 0x%08x\n", data[4]);
|
||||||
|
instr_out(data, hw_offset, 5, "setup background color\n");
|
||||||
|
instr_out(data, hw_offset, 6, "setup foreground color\n");
|
||||||
|
instr_out(data, hw_offset, 7, "mono pattern dw0\n");
|
||||||
|
instr_out(data, hw_offset, 8, "mono pattern dw1\n");
|
||||||
|
return len;
|
||||||
case 0x50:
|
case 0x50:
|
||||||
instr_out(data, hw_offset, 0,
|
decode_2d_br00(data, 0, hw_offset, "XY_COLOR_BLT");
|
||||||
"XY_COLOR_BLT (rgb %sabled, alpha %sabled, dst tile %d)\n",
|
|
||||||
(data[0] & (1 << 20)) ? "en" : "dis",
|
|
||||||
(data[0] & (1 << 21)) ? "en" : "dis",
|
|
||||||
(data[0] >> 11) & 1);
|
|
||||||
|
|
||||||
len = (data[0] & 0x000000ff) + 2;
|
len = (data[0] & 0x000000ff) + 2;
|
||||||
if (len != 6)
|
if (len != 6)
|
||||||
@ -266,25 +357,7 @@ decode_2d(uint32_t *data, int count, uint32_t hw_offset, int *failures)
|
|||||||
if (count < 6)
|
if (count < 6)
|
||||||
BUFFER_FAIL(count, len, "XY_COLOR_BLT");
|
BUFFER_FAIL(count, len, "XY_COLOR_BLT");
|
||||||
|
|
||||||
switch ((data[1] >> 24) & 0x3) {
|
decode_2d_br01(data, 1, hw_offset);
|
||||||
case 0:
|
|
||||||
format="8";
|
|
||||||
break;
|
|
||||||
case 1:
|
|
||||||
format="565";
|
|
||||||
break;
|
|
||||||
case 2:
|
|
||||||
format="1555";
|
|
||||||
break;
|
|
||||||
case 3:
|
|
||||||
format="8888";
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
instr_out(data, hw_offset, 1, "format %s, pitch %d, "
|
|
||||||
"clipping %sabled\n", format,
|
|
||||||
(short)(data[1] & 0xffff),
|
|
||||||
data[1] & (1 << 30) ? "en" : "dis");
|
|
||||||
instr_out(data, hw_offset, 2, "(%d,%d)\n",
|
instr_out(data, hw_offset, 2, "(%d,%d)\n",
|
||||||
data[2] & 0xffff, data[2] >> 16);
|
data[2] & 0xffff, data[2] >> 16);
|
||||||
instr_out(data, hw_offset, 3, "(%d,%d)\n",
|
instr_out(data, hw_offset, 3, "(%d,%d)\n",
|
||||||
@ -293,13 +366,7 @@ decode_2d(uint32_t *data, int count, uint32_t hw_offset, int *failures)
|
|||||||
instr_out(data, hw_offset, 5, "color\n");
|
instr_out(data, hw_offset, 5, "color\n");
|
||||||
return len;
|
return len;
|
||||||
case 0x53:
|
case 0x53:
|
||||||
instr_out(data, hw_offset, 0,
|
decode_2d_br00(data, 0, hw_offset, "XY_SRC_COPY_BLT");
|
||||||
"XY_SRC_COPY_BLT (rgb %sabled, alpha %sabled, "
|
|
||||||
"src tile %d, dst tile %d)\n",
|
|
||||||
(data[0] & (1 << 20)) ? "en" : "dis",
|
|
||||||
(data[0] & (1 << 21)) ? "en" : "dis",
|
|
||||||
(data[0] >> 15) & 1,
|
|
||||||
(data[0] >> 11) & 1);
|
|
||||||
|
|
||||||
len = (data[0] & 0x000000ff) + 2;
|
len = (data[0] & 0x000000ff) + 2;
|
||||||
if (len != 8)
|
if (len != 8)
|
||||||
@ -307,25 +374,7 @@ decode_2d(uint32_t *data, int count, uint32_t hw_offset, int *failures)
|
|||||||
if (count < 8)
|
if (count < 8)
|
||||||
BUFFER_FAIL(count, len, "XY_SRC_COPY_BLT");
|
BUFFER_FAIL(count, len, "XY_SRC_COPY_BLT");
|
||||||
|
|
||||||
switch ((data[1] >> 24) & 0x3) {
|
decode_2d_br01(data, 1, hw_offset);
|
||||||
case 0:
|
|
||||||
format="8";
|
|
||||||
break;
|
|
||||||
case 1:
|
|
||||||
format="565";
|
|
||||||
break;
|
|
||||||
case 2:
|
|
||||||
format="1555";
|
|
||||||
break;
|
|
||||||
case 3:
|
|
||||||
format="8888";
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
instr_out(data, hw_offset, 1, "format %s, dst pitch %d, "
|
|
||||||
"clipping %sabled\n", format,
|
|
||||||
(short)(data[1] & 0xffff),
|
|
||||||
data[1] & (1 << 30) ? "en" : "dis");
|
|
||||||
instr_out(data, hw_offset, 2, "dst (%d,%d)\n",
|
instr_out(data, hw_offset, 2, "dst (%d,%d)\n",
|
||||||
data[2] & 0xffff, data[2] >> 16);
|
data[2] & 0xffff, data[2] >> 16);
|
||||||
instr_out(data, hw_offset, 3, "dst (%d,%d)\n",
|
instr_out(data, hw_offset, 3, "dst (%d,%d)\n",
|
||||||
|
Loading…
x
Reference in New Issue
Block a user