Skip to content

intel: add mesh shading memory debugging tool

Marcin Ślusarz requested to merge mslusarz/mesa:anv-mesh-dump into main

This tool allows inspection of memory coming in and out of mesh shaders.

Example:

$ INTEL_DEBUG=meshdump VK_ENABLE_PIPELINE_CACHE=0 ./crucible run -j1 func.mesh.ext.basic.mesh.q0 2>&1 | tee basic.meshdump

$ intel_mesh_dump_decode -fi basic.meshdump

output
Decoding mesh buffer
>>> 00000000 00000000 00000000 00000000 00000028 00000070 00000003 000000B8
>>>      idx        z        y        x   in_len  out_len vperprim  tot_len
Workgroup 0,0,0, workgroup idx 0
Total data length 184, output data length 112, input data length 40

>>> 00000000 33445566 00000000 60606060 00000000 00000001 00000001 00000001
>>>      pad      pad      pad      pad task_len       nz       ny       nx
Num workgroups 1,1,1
Task data length 0

>>> 64366438 31323631 33356461 37313763 36326665 39393533 3538662D 6873656D
>>> 00000000 00000000 00000000 00000000 00000030 32626536 38373931 32656230
mesh-f853599ef26c717ad5316218d6d0be219786eb20
Input:
>>> 00000000 00010100 00000000 00010001 00000000 02000500 00000000 00000003
>>>      tue    x mue   id ssb    z   y      xp0      var    thrid    indir
>>> 000F000E 000D000C 000B000A 00090008 00070006 00050004 00030002 00010000
>>> locFlocE locDlocC locBlocA loc9loc8 loc7loc6 loc5loc4 loc3loc2 loc1loc0
>>> 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
>>> CCCCCCCC CCCCCCCC CCCCCCCC CCCCCCCC CCCCCCCC CCCCCCCC CCCCCCCC CCCCCCCC
>>> CCCCCCCC CCCCCCCC CCCCCCCC CCCCCCCC CCCCCCCC CCCCCCCC CCCCCCCC 06400024
End of input

Primitive indices:
>>> 00001007 00001006 00001005 00001004 00001003 00050403 00020100 00000002
>>>      pad      pad      pad      pad      pad        1        0  primcnt
Primitive count: 2
prim 0: 0 1 2 
prim 1: 3 4 5 
End of primitive indices

Vertex 0
>>> 3F800000 00000000 BE800000 BE800000 0000100B 0000100A 00001009 00001008
>>>        w        z        y        x     ptsz     rsvd     rsvd      cps
Position: -0.250000 -0.250000  0.000000  1.000000

Vertex 0 attributes:
>>> 00001017 00001016 00001015 00001014 3F800000 00000000 00000000 3F800000
per_vertex[*].color.x = (1.000000,0.000000,0.000000,1.000000) [3F800000,00000000,00000000,3F800000]

Vertex 1
>>> 3F800000 00000000 BE800000 BF400000 0000101B 0000101A 00001019 00001018
>>>        w        z        y        x     ptsz     rsvd     rsvd      cps
Position: -0.750000 -0.250000  0.000000  1.000000

Vertex 1 attributes:
>>> 00001027 00001026 00001025 00001024 3F800000 00000000 3F800000 00000000
per_vertex[*].color.x = (0.000000,1.000000,0.000000,1.000000) [00000000,3F800000,00000000,3F800000]

Vertex 2
>>> 3F800000 00000000 BF400000 BF000000 0000102B 0000102A 00001029 00001028
>>>        w        z        y        x     ptsz     rsvd     rsvd      cps
Position: -0.500000 -0.750000  0.000000  1.000000

Vertex 2 attributes:
>>> 00001037 00001036 00001035 00001034 3F800000 3F800000 00000000 00000000
per_vertex[*].color.x = (0.000000,0.000000,1.000000,1.000000) [00000000,00000000,3F800000,3F800000]

Vertex 3
>>> 3F800000 00000000 3F400000 3F400000 0000103B 0000103A 00001039 00001038
>>>        w        z        y        x     ptsz     rsvd     rsvd      cps
Position:  0.750000  0.750000  0.000000  1.000000

Vertex 3 attributes:
>>> 00001047 00001046 00001045 00001044 3F800000 3F800000 3F800000 00000000
per_vertex[*].color.x = (0.000000,1.000000,1.000000,1.000000) [00000000,3F800000,3F800000,3F800000]

Vertex 4
>>> 3F800000 00000000 3F400000 3E800000 0000104B 0000104A 00001049 00001048
>>>        w        z        y        x     ptsz     rsvd     rsvd      cps
Position:  0.250000  0.750000  0.000000  1.000000

Vertex 4 attributes:
>>> 00001057 00001056 00001055 00001054 3F800000 3F800000 00000000 3F800000
per_vertex[*].color.x = (1.000000,0.000000,1.000000,1.000000) [3F800000,00000000,3F800000,3F800000]

Vertex 5
>>> 3F800000 00000000 3E800000 3F000000 0000105B 0000105A 00001059 00001058
>>>        w        z        y        x     ptsz     rsvd     rsvd      cps
Position:  0.500000  0.250000  0.000000  1.000000

Vertex 5 attributes:
>>> 00001067 00001066 00001065 00001064 3F800000 00000000 3F800000 3F800000
per_vertex[*].color.x = (1.000000,1.000000,0.000000,1.000000) [3F800000,3F800000,00000000,3F800000]

Full primitive, Position: -0.250000 -0.250000  0.000000  1.000000, per_vertex[*].color.x = (1.000000,0.000000,0.000000,1.000000) [3F800000,00000000,00000000,3F800000], Position: -0.750000 -0.250000  0.000000  1.000000, per_vertex[*].color.x = (0.000000,1.000000,0.000000,1.000000) [00000000,3F800000,00000000,3F800000], Position: -0.500000 -0.750000  0.000000  1.000000, per_vertex[*].color.x = (0.000000,0.000000,1.000000,1.000000) [00000000,00000000,3F800000,3F800000], 
Full primitive, Position:  0.750000  0.750000  0.000000  1.000000, per_vertex[*].color.x = (0.000000,1.000000,1.000000,1.000000) [00000000,3F800000,3F800000,3F800000], Position:  0.250000  0.750000  0.000000  1.000000, per_vertex[*].color.x = (1.000000,0.000000,1.000000,1.000000) [3F800000,00000000,3F800000,3F800000], Position:  0.500000  0.250000  0.000000  1.000000, per_vertex[*].color.x = (1.000000,1.000000,0.000000,1.000000) [3F800000,3F800000,00000000,3F800000], 
Edited by Marcin Ślusarz

Merge request reports