• Home
  • History
  • Annotate
Name Date Size #Lines LOC

..09-Feb-2022-

examples/H09-Feb-2022-485359

README.rstH A D09-Feb-20221.7 KiB5646

a4xx.cH A D09-Feb-202211.4 KiB349252

a6xx.cH A D09-Feb-202218.4 KiB532387

ir3_asm.cH A D09-Feb-20222.2 KiB6632

ir3_asm.hH A D09-Feb-20221.6 KiB4516

main.cH A D09-Feb-20228.2 KiB319223

main.hH A D09-Feb-20223 KiB9042

meson.buildH A D09-Feb-20221.7 KiB5751

README.rst

1Overview
2========
3
4Computerator is a tool to launch compute shaders, written in assembly.
5The main purpose is to have an easy way to experiment with instructions
6without dealing with the entire compiler stack (which makes controlling
7the order of instructions, the registers chosen, etc, difficult).  The
8choice of compute shaders is simply because there is far less state
9setup required.
10
11Headers
12-------
13
14The shader assembly can be prefixed with headers to control state setup:
15
16* ``@localsize X, Y, Z`` - configures local workgroup size
17* ``@buf SZ (cN.c)`` - configures an SSBO of the specified size (in dwords).
18  The order of the ``@buf`` headers determines the index, ie the first
19  ``@buf`` header is ``g[0]``, the second ``g[1]``, and so on.
20  The iova of the buffer is written as a vec2 to ``cN.c``
21* ``@const(cN.c)`` configures a const vec4 starting at specified
22  const register, ie ``@const(c1.x) 1.0, 2.0, 3.0, 4.0`` will populate
23  ``c1.xyzw`` with ``vec4(1.0, 2.0, 3.0, 4.0)``
24* ``@invocationid(rN.c)`` will populate a vec3 starting at the specified
25  register with the local invocation-id
26* ``@wgid(rN.c)`` will populate a vec3 starting at the specified register
27  with the workgroup-id (must be a high-reg, ie. ``r48.x`` and above)
28* ``@numwg(cN.c)`` will populate a vec3 starting at the specified const
29  register
30
31Example
32-------
33
34```
35@localsize 32, 1, 1
36@buf 32  ; g[0]
37@const(c0.x)  0.0, 0.0, 0.0, 0.0
38@const(c1.x)  1.0, 2.0, 3.0, 4.0
39@wgid(r48.x)        ; r48.xyz
40@invocationid(r0.x) ; r0.xyz
41@numwg(c2.x)        ; c2.xyz
42mov.u32u32 r0.y, r0.x
43(rpt5)nop
44stib.untyped.1d.u32.1 g[0] + r0.y, r0.x
45end
46nop
47```
48
49Usage
50-----
51
52```
53cat myshader.asm | ./computerator --disasm --groups=4,4,4
54```
55
56