mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-04-09 11:50:38 +02:00
Add a tool that programs the hardware the minimum amount to be
able to execute compute shaders and then executes a script that
can perform data manipulation and dispatch execution of the shaders
(written in Xe assembly).
The goal is to have a tool to experiment directly with certain
assembly instructions and the shared units without having to
instrument the drivers.
To make more convenient to write assembly, a few macros (indicated by
the @-symbol) will be processed into the full instruction.
For example, the script
```
local r = execute {
data={ [42] = 0x100 },
src=[[
@mov g1 42
@read g2 g1
@id g3
add(8) g4<1>UD g2<8,8,1>UD g3<8,8,1>UD { align1 @1 1Q };
@write g3 g4
@eot
]]
}
dump(r, 4)
```
produces
```
[0x00000000] 0x00000100 0x00000101 0x00000102 0x00000103
```
There's a help message inside the code that describes the script
environment and the macros for assembly sources.
Acked-by: Ian Romanick <ian.d.romanick@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/30062>
20 lines
240 B
Lua
20 lines
240 B
Lua
local data = {}
|
|
for i = 0, 8-1 do
|
|
data[i] = i * 4
|
|
end
|
|
|
|
local r = execute {
|
|
data = data,
|
|
src = [[
|
|
@id g1
|
|
@read g3 g1
|
|
|
|
add(8) g3<1>UD g3<8,8,1>UD 0x100UD { align1 1Q };
|
|
|
|
@write g1 g3
|
|
|
|
@eot
|
|
]],
|
|
}
|
|
|
|
dump(r, 8)
|