pan/genxml/v9+: Add support for NullDescriptor decode

It's now valuable to know whether a decoded descriptor is completely
zeroed (NullDescriptor) or invalid.

Reviewed-by: Boris Brezillon <boris.brezillon@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/35609>
This commit is contained in:
Lars-Ivar Hesselberg Simonsen
2025-06-18 16:36:09 +02:00
committed by Marge Bot
parent 01d20680e2
commit bbe3c7e1a3
5 changed files with 49 additions and 4 deletions
+9 -4
View File
@@ -455,9 +455,14 @@ pandecode_resources(struct pandecode_context *ctx, uint64_t addr, unsigned size)
assert((size % 0x20) == 0);
for (unsigned i = 0; i < size; i += 0x20) {
unsigned type = (cl[i] & 0xF);
switch (type) {
pan_unpack((const struct mali_descriptor_header_packed *)&cl[i],
DESCRIPTOR_HEADER, header)
;
switch (header.type) {
case MALI_DESCRIPTOR_TYPE_NULL:
DUMP_CL(ctx, NULL_DESCRIPTOR, cl + i, "NullDescriptor @%" PRIx64 "\n",
addr + i);
break;
case MALI_DESCRIPTOR_TYPE_SAMPLER:
DUMP_CL(ctx, SAMPLER, cl + i, "Sampler @%" PRIx64 ":\n", addr + i);
break;
@@ -472,7 +477,7 @@ pandecode_resources(struct pandecode_context *ctx, uint64_t addr, unsigned size)
DUMP_CL(ctx, BUFFER, cl + i, "Buffer @%" PRIx64 ":\n", addr + i);
break;
default:
fprintf(ctx->dump_stream, "Unknown descriptor type %X\n", type);
fprintf(ctx->dump_stream, "Unknown descriptor type %X\n", header.type);
break;
}
}
+10
View File
@@ -35,6 +35,7 @@
</enum>
<enum name="Descriptor Type">
<value name="Null" value="0"/>
<value name="Sampler" value="1"/>
<value name="Texture" value="2"/>
<value name="Attribute" value="5"/>
@@ -920,6 +921,15 @@
<value name="TEM_ROW_STRIDE" value="46"/>
</enum>
<struct name="Descriptor Header" size="1" align="32">
<field name="Type" size="4" start="0:0" type="Descriptor Type" default="Null"/>
<field name="Ignore" size="28" start="0:4" type="uint"/>
</struct>
<struct name="Null Descriptor" size="8" align="32">
<field name="Type" size="4" start="0:0" type="Descriptor Type" default="Null"/>
</struct>
<struct name="Attribute" size="8" align="32">
<field name="Type" size="4" start="0:0" type="Descriptor Type" default="Attribute"/>
<field name="Attribute type" size="4" start="0:4" type="Attribute Type"/>
+10
View File
@@ -35,6 +35,7 @@
</enum>
<enum name="Descriptor Type">
<value name="Null" value="0"/>
<value name="Sampler" value="1"/>
<value name="Texture" value="2"/>
<value name="Attribute" value="5"/>
@@ -1156,6 +1157,15 @@
<value name="ITER_TRACE_ID1" value="63"/>
</enum>
<struct name="Descriptor Header" size="1" align="32">
<field name="Type" size="4" start="0:0" type="Descriptor Type" default="Null"/>
<field name="Ignore" size="28" start="0:4" type="uint"/>
</struct>
<struct name="Null Descriptor" size="8" align="32">
<field name="Type" size="4" start="0:0" type="Descriptor Type" default="Null"/>
</struct>
<struct name="Attribute" size="8" align="32">
<field name="Type" size="4" start="0:0" type="Descriptor Type" default="Attribute"/>
<field name="Attribute type" size="4" start="0:4" type="Attribute Type"/>
+10
View File
@@ -35,6 +35,7 @@
</enum>
<enum name="Descriptor Type">
<value name="Null" value="0"/>
<value name="Sampler" value="1"/>
<value name="Texture" value="2"/>
<value name="Attribute" value="5"/>
@@ -1465,6 +1466,15 @@
<value name="ITER_TRACE_ID1" value="63"/>
</enum>
<struct name="Descriptor Header" size="1" align="32">
<field name="Type" size="4" start="0:0" type="Descriptor Type" default="Null"/>
<field name="Ignore" size="28" start="0:4" type="uint"/>
</struct>
<struct name="Null Descriptor" size="8" align="32">
<field name="Type" size="4" start="0:0" type="Descriptor Type" default="Null"/>
</struct>
<struct name="Attribute" size="8" align="32">
<field name="Type" size="4" start="0:0" type="Descriptor Type" default="Attribute"/>
<field name="Attribute type" size="4" start="0:4" type="Attribute Type"/>
+10
View File
@@ -47,6 +47,7 @@
</enum>
<enum name="Descriptor Type">
<value name="Null" value="0"/>
<value name="Sampler" value="1"/>
<value name="Texture" value="2"/>
<value name="Attribute" value="5"/>
@@ -467,6 +468,15 @@
<value name="Instance" value="1"/>
</enum>
<struct name="Descriptor Header" size="1" align="32">
<field name="Type" size="4" start="0:0" type="Descriptor Type" default="Null"/>
<field name="Ignore" size="28" start="0:4" type="uint"/>
</struct>
<struct name="Null Descriptor" size="8" align="32">
<field name="Type" size="4" start="0:0" type="Descriptor Type" default="Null"/>
</struct>
<struct name="Attribute" size="8" align="32">
<field name="Type" size="4" start="0:0" type="Descriptor Type" default="Attribute"/>
<field name="Attribute type" size="4" start="0:4" type="Attribute Type"/>