glsl/nir: add support for lowering bindless images_derefs

v2: handle atomics as well
    make use of nir_rewrite_image_intrinsic
v3: remove call to nir_remove_dead_derefs
v4: (Timothy Arceri) dont actually call lowering yet

Signed-off-by: Karol Herbst <kherbst@redhat.com>
Reviewed-by: Jason Ekstrand <jason@jlekstrand.net> (v3)
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
This commit is contained in:
Karol Herbst
2019-03-24 20:43:55 +01:00
parent 0b2e8d9e17
commit 4a3c04a11f
9 changed files with 108 additions and 6 deletions

View File

@@ -1991,12 +1991,14 @@ nir_get_single_slot_attribs_mask(uint64_t attribs, uint64_t dual_slot)
}
void
nir_rewrite_image_intrinsic(nir_intrinsic_instr *intrin, nir_ssa_def *src)
nir_rewrite_image_intrinsic(nir_intrinsic_instr *intrin, nir_ssa_def *src,
bool bindless)
{
switch (intrin->intrinsic) {
#define CASE(op) \
case nir_intrinsic_image_deref_##op: \
intrin->intrinsic = nir_intrinsic_image_##op; \
intrin->intrinsic = bindless ? nir_intrinsic_bindless_image_##op \
: nir_intrinsic_image_##op; \
break;
CASE(load)
CASE(store)