intel/compiler: Add support for bindless shaders
The Intel bindless thread dispatch model is very simple. When a compute shader is to be used for bindless dispatch, it can request a set of stack IDs. These are allocated per-dual-subslice by the hardware and recycled automatically when the stack ID is returned. Passed to the bindless dispatch are a global argument address, a stack ID, and an address of the BINDLESS_SHADER_RECORD to invoke. When the bindless shader is dispatched, it is passed its stack ID as well as the global and local argument pointers. The local argument pointer is the address of the BINDLESS_SHADER_RECORD plus some offset which is specified as part of the BINDLESS_SHADER_RECORD. Reviewed-by: Caio Marcelo de Oliveira Filho <caio.oliveira@intel.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/7356>
This commit is contained in:

committed by
Marge Bot

parent
27f44116fe
commit
7280b0911d
@@ -1081,3 +1081,12 @@ store("ssbo_block_intel", [-1, 1], [WRMASK, ACCESS, ALIGN_MUL, ALIGN_OFFSET])
|
||||
# src[] = { value, offset }.
|
||||
store("shared_block_intel", [1], [BASE, WRMASK, ALIGN_MUL, ALIGN_OFFSET])
|
||||
|
||||
# Intrinsics for Intel bindless thread dispatch
|
||||
system_value("btd_dss_id_intel", 1)
|
||||
system_value("btd_stack_id_intel", 1)
|
||||
system_value("btd_global_arg_addr_intel", 1, bit_sizes=[64])
|
||||
system_value("btd_local_arg_addr_intel", 1, bit_sizes=[64])
|
||||
# src[] = { global_arg_addr, btd_record }
|
||||
intrinsic("btd_spawn_intel", src_comp=[1, 1])
|
||||
# src[] = { }
|
||||
intrinsic("btd_retire_intel")
|
||||
|
Reference in New Issue
Block a user