nir: add nir_intrinsic_ssbo_descriptor_amd for lowering get_ssbo_size

Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Pierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer@amd.com>
Reviewed-by: Rhys Perry <pendingchaos02@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/38097>
This commit is contained in:
Marek Olšák 2025-10-27 17:24:16 -04:00 committed by Marge Bot
parent 6a70406bb2
commit 3e2c11597a
3 changed files with 6 additions and 1 deletions

View file

@ -620,6 +620,7 @@ visit_intrinsic(nir_intrinsic_instr *instr, struct divergence_state *state)
}
case nir_intrinsic_get_ssbo_size:
case nir_intrinsic_ssbo_descriptor_amd:
case nir_intrinsic_deref_buffer_array_length:
is_divergent = src_divergent(instr->src[0], state) &&
(nir_intrinsic_access(instr) & ACCESS_NON_UNIFORM);

View file

@ -893,7 +893,8 @@ gather_intrinsic_info(nir_intrinsic_instr *instr, nir_shader *shader)
instr->intrinsic == nir_intrinsic_image_deref_samples ||
instr->intrinsic == nir_intrinsic_bindless_image_levels ||
instr->intrinsic == nir_intrinsic_bindless_image_size ||
instr->intrinsic == nir_intrinsic_bindless_image_samples)
instr->intrinsic == nir_intrinsic_bindless_image_samples ||
instr->intrinsic == nir_intrinsic_get_ssbo_size)
shader->info.uses_resource_info_query = true;
break;
}

View file

@ -446,6 +446,9 @@ intrinsic("get_ssbo_size", src_comp=[-1], dest_comp=1, bit_sizes=[32],
intrinsic("get_ubo_size", src_comp=[-1], dest_comp=1,
flags=[CAN_ELIMINATE, CAN_REORDER])
intrinsic("ssbo_descriptor_amd", src_comp=[-1], dest_comp=4, bit_sizes=[32],
indices=[ACCESS], flags=[CAN_ELIMINATE, CAN_REORDER])
# Intrinsics which provide a run-time mode-check. Unlike the compile-time
# mode checks, a pointer can only have exactly one mode at runtime.
intrinsic("deref_mode_is", src_comp=[-1], dest_comp=1,