nir: add nir_intrinsic_image_descriptor_amd
This returns the AMD shader resource descriptor. Reviewed-by: Jason Ekstrand <jason.ekstrand@collabora.com> Reviewed-by: Pierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer@amd.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17693>
This commit is contained in:
@@ -79,6 +79,7 @@ lower_impl(nir_builder *b, nir_instr *instr, bool bindless_only)
|
||||
case nir_intrinsic_image_deref_samples:
|
||||
case nir_intrinsic_image_deref_size:
|
||||
case nir_intrinsic_image_deref_samples_identical:
|
||||
case nir_intrinsic_image_deref_descriptor_amd:
|
||||
case nir_intrinsic_image_deref_store: {
|
||||
deref = nir_src_as_deref(intrinsic->src[0]);
|
||||
var = nir_deref_instr_get_variable(deref);
|
||||
|
@@ -329,6 +329,7 @@ lower_intrinsic(nir_intrinsic_instr *instr,
|
||||
instr->intrinsic == nir_intrinsic_image_deref_atomic_fadd ||
|
||||
instr->intrinsic == nir_intrinsic_image_deref_size ||
|
||||
instr->intrinsic == nir_intrinsic_image_deref_samples_identical ||
|
||||
instr->intrinsic == nir_intrinsic_image_deref_descriptor_amd ||
|
||||
instr->intrinsic == nir_intrinsic_image_deref_samples) {
|
||||
|
||||
b->cursor = nir_before_instr(&instr->instr);
|
||||
|
@@ -373,6 +373,9 @@ visit_intrinsic(nir_shader *shader, nir_intrinsic_instr *instr)
|
||||
case nir_intrinsic_image_size:
|
||||
case nir_intrinsic_image_deref_size:
|
||||
case nir_intrinsic_bindless_image_size:
|
||||
case nir_intrinsic_image_descriptor_amd:
|
||||
case nir_intrinsic_image_deref_descriptor_amd:
|
||||
case nir_intrinsic_bindless_image_descriptor_amd:
|
||||
case nir_intrinsic_copy_deref:
|
||||
case nir_intrinsic_vulkan_resource_index:
|
||||
case nir_intrinsic_vulkan_resource_reindex:
|
||||
|
@@ -651,6 +651,9 @@ image("atomic_inc_wrap", src_comp=[4, 1, 1], dest_comp=1)
|
||||
image("atomic_dec_wrap", src_comp=[4, 1, 1], dest_comp=1)
|
||||
# This returns true if all samples within the pixel have equal color values.
|
||||
image("samples_identical", dest_comp=1, src_comp=[4], flags=[CAN_ELIMINATE])
|
||||
# Non-uniform access is not lowered for image_descriptor_amd.
|
||||
# dest_comp can be either 4 (buffer) or 8 (image).
|
||||
image("descriptor_amd", dest_comp=0, src_comp=[], flags=[CAN_ELIMINATE, CAN_REORDER])
|
||||
# CL-specific format queries
|
||||
image("format", dest_comp=1, flags=[CAN_ELIMINATE, CAN_REORDER])
|
||||
image("order", dest_comp=1, flags=[CAN_ELIMINATE, CAN_REORDER])
|
||||
|
Reference in New Issue
Block a user