intel: add mesh shading memory debugging tool
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