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
@@ -547,6 +547,12 @@ brw_instruction_name(const struct gen_device_info *devinfo, enum opcode op)
|
||||
return "rnd_mode";
|
||||
case SHADER_OPCODE_FLOAT_CONTROL_MODE:
|
||||
return "float_control_mode";
|
||||
case SHADER_OPCODE_GET_DSS_ID:
|
||||
return "get_dss_id";
|
||||
case SHADER_OPCODE_BTD_SPAWN_LOGICAL:
|
||||
return "btd_spawn_logical";
|
||||
case SHADER_OPCODE_BTD_RETIRE_LOGICAL:
|
||||
return "btd_retire_logical";
|
||||
}
|
||||
|
||||
unreachable("not reached");
|
||||
@@ -1104,6 +1110,8 @@ backend_instruction::has_side_effects() const
|
||||
case FS_OPCODE_SCHEDULING_FENCE:
|
||||
case SHADER_OPCODE_OWORD_BLOCK_WRITE_LOGICAL:
|
||||
case SHADER_OPCODE_A64_OWORD_BLOCK_WRITE_LOGICAL:
|
||||
case SHADER_OPCODE_BTD_SPAWN_LOGICAL:
|
||||
case SHADER_OPCODE_BTD_RETIRE_LOGICAL:
|
||||
return true;
|
||||
default:
|
||||
return eot;
|
||||
|
Reference in New Issue
Block a user