nir: allow bindless image/texture/sampler handles to be vectors

Signed-off-by: Rhys Perry <pendingchaos02@gmail.com>
Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Timur Kristóf <timur.kristof@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/12773>
This commit is contained in:
Rhys Perry 2020-09-25 11:42:30 +01:00 committed by Marge Bot
parent e6672f6fd1
commit e82aba88dc
2 changed files with 6 additions and 1 deletions

View File

@ -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;
}

View File

@ -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])