From e82aba88dc30bb03002eebecbbd48a8dafde5af4 Mon Sep 17 00:00:00 2001 From: Rhys Perry Date: Fri, 25 Sep 2020 11:42:30 +0100 Subject: [PATCH] nir: allow bindless image/texture/sampler handles to be vectors MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Rhys Perry Reviewed-by: Samuel Pitoiset Reviewed-by: Timur Kristóf Part-of: --- src/compiler/nir/nir.c | 5 +++++ src/compiler/nir/nir_intrinsics.py | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/src/compiler/nir/nir.c b/src/compiler/nir/nir.c index a70be38f8e0..3804de7534a 100644 --- a/src/compiler/nir/nir.c +++ b/src/compiler/nir/nir.c @@ -3386,6 +3386,11 @@ nir_tex_instr_src_size(const nir_tex_instr *instr, unsigned src) instr->src[src].src_type == nir_tex_src_backend2) return nir_src_num_components(instr->src[src].src); + /* For AMD, this can be a vec8/vec4 image/sampler descriptor. */ + if (instr->src[src].src_type == nir_tex_src_texture_handle || + instr->src[src].src_type == nir_tex_src_sampler_handle) + return 0; + return 1; } diff --git a/src/compiler/nir/nir_intrinsics.py b/src/compiler/nir/nir_intrinsics.py index a4189f798b8..e2898555c0c 100644 --- a/src/compiler/nir/nir_intrinsics.py +++ b/src/compiler/nir/nir_intrinsics.py @@ -602,7 +602,7 @@ def image(name, src_comp=[], extra_indices=[], **kwargs): indices=[IMAGE_DIM, IMAGE_ARRAY, FORMAT, ACCESS] + extra_indices, **kwargs) intrinsic("image_" + name, src_comp=[1] + src_comp, indices=[IMAGE_DIM, IMAGE_ARRAY, FORMAT, ACCESS] + extra_indices, **kwargs) - intrinsic("bindless_image_" + name, src_comp=[1] + src_comp, + intrinsic("bindless_image_" + name, src_comp=[-1] + src_comp, indices=[IMAGE_DIM, IMAGE_ARRAY, FORMAT, ACCESS] + extra_indices, **kwargs) image("load", src_comp=[4, 1, 1], extra_indices=[DEST_TYPE], dest_comp=0, flags=[CAN_ELIMINATE])