mirror of
https://github.com/tiagovignatti/intel-gpu-tools.git
synced 2025-06-20 22:36:24 +00:00
decode: Improve parsing of i915 fixed-length indexed primitives
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
This commit is contained in:
parent
d4d769a432
commit
aa0a346deb
@ -1145,7 +1145,7 @@ decode_3d_primitive(uint32_t *data, int count, uint32_t hw_offset,
|
|||||||
int *failures)
|
int *failures)
|
||||||
{
|
{
|
||||||
char immediate = (data[0] & (1 << 23)) == 0;
|
char immediate = (data[0] & (1 << 23)) == 0;
|
||||||
unsigned int len, i, ret;
|
unsigned int len, i, j, ret;
|
||||||
char *primtype;
|
char *primtype;
|
||||||
int original_s2 = saved_s2;
|
int original_s2 = saved_s2;
|
||||||
int original_s4 = saved_s4;
|
int original_s4 = saved_s4;
|
||||||
@ -1283,19 +1283,18 @@ decode_3d_primitive(uint32_t *data, int count, uint32_t hw_offset,
|
|||||||
for (i = 1; i < count; i++) {
|
for (i = 1; i < count; i++) {
|
||||||
if ((data[i] & 0xffff) == 0xffff) {
|
if ((data[i] & 0xffff) == 0xffff) {
|
||||||
instr_out(data, hw_offset, i,
|
instr_out(data, hw_offset, i,
|
||||||
" indices: (terminator)\n");
|
" indices: (terminator)\n");
|
||||||
ret = i;
|
ret = i;
|
||||||
goto out;
|
goto out;
|
||||||
} else if ((data[i] >> 16) == 0xffff) {
|
} else if ((data[i] >> 16) == 0xffff) {
|
||||||
instr_out(data, hw_offset, i,
|
instr_out(data, hw_offset, i,
|
||||||
" indices: 0x%04x, "
|
" indices: 0x%04x, (terminator)\n",
|
||||||
"(terminator)\n",
|
|
||||||
data[i] & 0xffff);
|
data[i] & 0xffff);
|
||||||
ret = i;
|
ret = i;
|
||||||
goto out;
|
goto out;
|
||||||
} else {
|
} else {
|
||||||
instr_out(data, hw_offset, i,
|
instr_out(data, hw_offset, i,
|
||||||
" indices: 0x%04x, 0x%04x\n",
|
" indices: 0x%04x, 0x%04x\n",
|
||||||
data[i] & 0xffff, data[i] >> 16);
|
data[i] & 0xffff, data[i] >> 16);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1306,15 +1305,15 @@ decode_3d_primitive(uint32_t *data, int count, uint32_t hw_offset,
|
|||||||
goto out;
|
goto out;
|
||||||
} else {
|
} else {
|
||||||
/* fixed size vertex index buffer */
|
/* fixed size vertex index buffer */
|
||||||
for (i = 0; i < len; i += 2) {
|
for (j = 1, i = 0; i < len; i += 2, j++) {
|
||||||
if (i * 2 == len - 1) {
|
if (i * 2 == len - 1) {
|
||||||
instr_out(data, hw_offset, i,
|
instr_out(data, hw_offset, j,
|
||||||
" indices: 0x%04x\n",
|
" indices: 0x%04x\n",
|
||||||
data[i] & 0xffff);
|
data[j] & 0xffff);
|
||||||
} else {
|
} else {
|
||||||
instr_out(data, hw_offset, i,
|
instr_out(data, hw_offset, j,
|
||||||
" indices: 0x%04x, 0x%04x\n",
|
" indices: 0x%04x, 0x%04x\n",
|
||||||
data[i] & 0xffff, data[i] >> 16);
|
data[j] & 0xffff, data[j] >> 16);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user