mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-06-03 19:48:17 +02:00
nir: add new intrinsics for SPV_KHR_abort
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/41651>
This commit is contained in:
parent
691371a176
commit
f431d6bc87
4 changed files with 16 additions and 0 deletions
|
|
@ -355,6 +355,8 @@ visit_intrinsic(nir_intrinsic_instr *instr, struct divergence_state *state)
|
|||
case nir_intrinsic_load_tcs_mem_attrib_stride:
|
||||
case nir_intrinsic_load_printf_buffer_address:
|
||||
case nir_intrinsic_load_printf_buffer_size:
|
||||
case nir_intrinsic_load_abort_buffer_address:
|
||||
case nir_intrinsic_load_abort_buffer_size:
|
||||
case nir_intrinsic_load_samples_log2_agx:
|
||||
case nir_intrinsic_load_active_subgroup_count_agx:
|
||||
case nir_intrinsic_load_root_agx:
|
||||
|
|
@ -1042,6 +1044,7 @@ visit_intrinsic(nir_intrinsic_instr *instr, struct divergence_state *state)
|
|||
case nir_intrinsic_ldtram_nv:
|
||||
case nir_intrinsic_cmat_muladd_nv:
|
||||
case nir_intrinsic_printf:
|
||||
case nir_intrinsic_abort:
|
||||
case nir_intrinsic_load_gs_header_ir3:
|
||||
case nir_intrinsic_load_tcs_header_ir3:
|
||||
case nir_intrinsic_load_rel_patch_id_ir3:
|
||||
|
|
|
|||
|
|
@ -906,6 +906,10 @@ gather_intrinsic_info(nir_intrinsic_instr *instr, nir_shader *shader)
|
|||
break;
|
||||
}
|
||||
|
||||
case nir_intrinsic_abort:
|
||||
shader->info.uses_abort = true;
|
||||
break;
|
||||
|
||||
default:
|
||||
shader->info.uses_bindless |= intrinsic_is_bindless(instr);
|
||||
if (nir_intrinsic_writes_external_memory(instr))
|
||||
|
|
|
|||
|
|
@ -1414,6 +1414,12 @@ system_value("printf_buffer_size", 1, bit_sizes=[32])
|
|||
# buffer. This avoids a separate abort buffer.
|
||||
intrinsic("printf_abort")
|
||||
|
||||
# SPV_KHR_abort
|
||||
# The source is a deref to the message type.
|
||||
intrinsic("abort", src_comp=[1])
|
||||
system_value("abort_buffer_address", 1, bit_sizes=[32,64])
|
||||
system_value("abort_buffer_size", 1, bit_sizes=[32])
|
||||
|
||||
# Mesh shading MultiView intrinsics
|
||||
system_value("mesh_view_count", 1)
|
||||
load("mesh_view_indices", [1], [BASE, RANGE], [CAN_ELIMINATE, CAN_REORDER])
|
||||
|
|
|
|||
|
|
@ -226,6 +226,9 @@ typedef struct shader_info {
|
|||
/* Whether texture size, levels, or samples is queried. */
|
||||
bool uses_resource_info_query:1;
|
||||
|
||||
/* Whether a shader abort instruction is used. */
|
||||
bool uses_abort:1;
|
||||
|
||||
/* Bitmask of bit-sizes used with ALU instructions. */
|
||||
uint8_t bit_sizes_float;
|
||||
uint8_t bit_sizes_int;
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue