[Mesa-dev] [PATCH 21/26] i965/nir: Provide a default LOD for buffer textures

Jordan Justen jordan.l.justen at intel.com
Tue Mar 29 19:04:17 UTC 2016


Reviewed-by: Jordan Justen <jordan.l.justen at intel.com>

On 2016-03-25 16:12:35, Jason Ekstrand wrote:
> Our hardware requires an LOD for all texelFetch commands even if they are
> on buffer textures.  GLSL IR gives us an LOD of 0 in that case, but the LOD
> is really rather meaningless.  This commit allows other NIR producers to be
> more lazy and not provide one at all.
> ---
>  src/mesa/drivers/dri/i965/brw_fs_nir.cpp   | 4 ++++
>  src/mesa/drivers/dri/i965/brw_vec4_nir.cpp | 4 ++++
>  2 files changed, 8 insertions(+)
> 
> diff --git a/src/mesa/drivers/dri/i965/brw_fs_nir.cpp b/src/mesa/drivers/dri/i965/brw_fs_nir.cpp
> index 5255434..cb362b4 100644
> --- a/src/mesa/drivers/dri/i965/brw_fs_nir.cpp
> +++ b/src/mesa/drivers/dri/i965/brw_fs_nir.cpp
> @@ -3067,6 +3067,10 @@ fs_visitor::nir_emit_texture(const fs_builder &bld, nir_tex_instr *instr)
>  
>     fs_reg coordinate, shadow_comparitor, lod, lod2, sample_index, mcs, tex_offset;
>  
> +   /* The hardware requires a LOD for buffer textures */
> +   if (instr->sampler_dim == GLSL_SAMPLER_DIM_BUF)
> +      lod = brw_imm_d(0);
> +
>     for (unsigned i = 0; i < instr->num_srcs; i++) {
>        fs_reg src = get_nir_src(instr->src[i].src);
>        switch (instr->src[i].src_type) {
> diff --git a/src/mesa/drivers/dri/i965/brw_vec4_nir.cpp b/src/mesa/drivers/dri/i965/brw_vec4_nir.cpp
> index 2e714fa..95fbf89 100644
> --- a/src/mesa/drivers/dri/i965/brw_vec4_nir.cpp
> +++ b/src/mesa/drivers/dri/i965/brw_vec4_nir.cpp
> @@ -1713,6 +1713,10 @@ vec4_visitor::nir_emit_texture(nir_tex_instr *instr)
>                                   nir_tex_instr_dest_size(instr));
>     dst_reg dest = get_nir_dest(instr->dest, instr->dest_type);
>  
> +   /* The hardware requires a LOD for buffer textures */
> +   if (instr->sampler_dim == GLSL_SAMPLER_DIM_BUF)
> +      lod = brw_imm_d(0);
> +
>     /* Load the texture operation sources */
>     uint32_t constant_offset = 0;
>     for (unsigned i = 0; i < instr->num_srcs; i++) {
> -- 
> 2.5.0.400.gff86faf
> 
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/mesa-dev


More information about the mesa-dev mailing list