nir: add additional flag to resource_intel for embedded samplers

This will enable specific lowering of embedded samplers.

Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Reviewed-by: Ivan Briano <ivan.briano@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/22151>
This commit is contained in:
Lionel Landwerlin 2023-03-21 10:36:24 +02:00 committed by Marge Bot
parent 99047451c9
commit 259cdc5496
4 changed files with 12 additions and 3 deletions

View file

@ -268,6 +268,7 @@ typedef enum {
nir_resource_intel_pushable = 1u << 1,
nir_resource_intel_sampler = 1u << 2,
nir_resource_intel_non_uniform = 1u << 3,
nir_resource_intel_sampler_embedded = 1u << 4,
} nir_resource_data_intel;
/**

View file

@ -1997,9 +1997,9 @@ intrinsic("load_reloc_const_intel", dest_comp=1, bit_sizes=[32],
# With this intrinsic, we can just check the surface_index src with
# nir_src_is_const() and ignore set_offset.
#
# src[] = { set_offset, surface_index, array_index }
# src[] = { set_offset, surface_index, array_index, bindless_base_offset }
intrinsic("resource_intel", dest_comp=1, bit_sizes=[32],
src_comp=[1, 1, 1],
src_comp=[1, 1, 1, 1],
indices=[DESC_SET, BINDING, RESOURCE_ACCESS_INTEL, RESOURCE_BLOCK_INTEL],
flags=[CAN_ELIMINATE, CAN_REORDER])

View file

@ -1517,6 +1517,9 @@ print_intrinsic_instr(nir_intrinsic_instr *instr, print_state *state)
case nir_resource_intel_non_uniform:
fprintf(fp, "non-uniform");
break;
case nir_resource_intel_sampler_embedded:
fprintf(fp, "sampler-embedded");
break;
default:
fprintf(fp, "unknown");
break;

View file

@ -867,6 +867,7 @@ build_surface_index_for_binding(nir_builder *b,
set_offset,
surface_index,
array_index,
nir_undef(b, 1, 32) /* bindless_base_offset */,
.desc_set = set,
.binding = binding,
.resource_block_intel = state->set[set].binding[binding].push_block,
@ -946,7 +947,11 @@ build_sampler_handle_for_binding(nir_builder *b,
state->set[set].binding[binding].sampler_offset + plane);
}
return nir_resource_intel(b, set_offset, sampler_index, array_index,
return nir_resource_intel(b,
set_offset,
sampler_index,
array_index,
nir_undef(b, 1, 32) /* bindless_base_offset */,
.desc_set = set,
.binding = binding,
.resource_access_intel =