diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/compiler/nir/nir.h | 6 | ||||
-rw-r--r-- | src/compiler/nir/nir_lower_tex.c | 2 | ||||
-rw-r--r-- | src/intel/compiler/brw_nir.c | 1 |
3 files changed, 9 insertions, 0 deletions
diff --git a/src/compiler/nir/nir.h b/src/compiler/nir/nir.h index 9d210ac80e0..20f4db0a801 100644 --- a/src/compiler/nir/nir.h +++ b/src/compiler/nir/nir.h @@ -3284,6 +3284,12 @@ typedef struct nir_lower_tex_options { /** * If true, lower nir_texop_txd with min_lod to a nir_texop_txl if the + * sampler is bindless. + */ + bool lower_txd_clamp_bindless_sampler; + + /** + * If true, lower nir_texop_txd with min_lod to a nir_texop_txl if the * sampler index is not statically determinable to be less than 16. */ bool lower_txd_clamp_if_sampler_index_not_lt_16; diff --git a/src/compiler/nir/nir_lower_tex.c b/src/compiler/nir/nir_lower_tex.c index 8a37ec9a650..c5762b860fd 100644 --- a/src/compiler/nir/nir_lower_tex.c +++ b/src/compiler/nir/nir_lower_tex.c @@ -1100,6 +1100,8 @@ nir_lower_tex_block(nir_block *block, nir_builder *b, (options->lower_txd_shadow && tex->is_shadow) || (options->lower_txd_shadow_clamp && tex->is_shadow && has_min_lod) || (options->lower_txd_offset_clamp && has_offset && has_min_lod) || + (options->lower_txd_clamp_bindless_sampler && has_min_lod && + nir_tex_instr_src_index(tex, nir_tex_src_sampler_handle) != -1) || (options->lower_txd_clamp_if_sampler_index_not_lt_16 && has_min_lod && !sampler_index_lt(tex, 16)) || (options->lower_txd_cube_map && diff --git a/src/intel/compiler/brw_nir.c b/src/intel/compiler/brw_nir.c index 4aa7905e4c4..e0a393fc298 100644 --- a/src/intel/compiler/brw_nir.c +++ b/src/intel/compiler/brw_nir.c @@ -949,6 +949,7 @@ brw_nir_apply_sampler_key(nir_shader *nir, { const struct gen_device_info *devinfo = compiler->devinfo; nir_lower_tex_options tex_options = { + .lower_txd_clamp_bindless_sampler = true, .lower_txd_clamp_if_sampler_index_not_lt_16 = true, }; |