[Mesa-dev] [PATCH] st/glsl_to_tgsi: make sure resource file for samplers is PROGRAM_SAMPLER

Samuel Pitoiset samuel.pitoiset at gmail.com
Wed May 10 10:04:34 UTC 2017


Ping?

On 05/05/2017 03:36 PM, Samuel Pitoiset wrote:
> Similar to how image resources are handled. That way we are sure
> that inst->resource.file is PROGRAM_SAMPLER for "bound" samplers.
> 
> Signed-off-by: Samuel Pitoiset <samuel.pitoiset at gmail.com>
> ---
>   src/mesa/state_tracker/st_glsl_to_tgsi.cpp | 18 +++++++++---------
>   1 file changed, 9 insertions(+), 9 deletions(-)
> 
> diff --git a/src/mesa/state_tracker/st_glsl_to_tgsi.cpp b/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
> index 81c1d00dfb..25050834e3 100644
> --- a/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
> +++ b/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
> @@ -4149,7 +4149,6 @@ glsl_to_tgsi_visitor::visit(ir_texture *ir)
>      unsigned opcode = TGSI_OPCODE_NOP;
>      const glsl_type *sampler_type = ir->sampler->type;
>      unsigned sampler_array_size = 1, sampler_base = 0;
> -   uint16_t sampler_index = 0;
>      bool is_cube_array = false, is_cube_shadow = false;
>      unsigned i;
>   
> @@ -4380,10 +4379,16 @@ glsl_to_tgsi_visitor::visit(ir_texture *ir)
>         coord_dst.writemask = WRITEMASK_XYZW;
>      }
>   
> +   st_src_reg sampler(PROGRAM_SAMPLER, 0, GLSL_TYPE_UINT);
> +
>      get_deref_offsets(ir->sampler, &sampler_array_size, &sampler_base,
> -                     &sampler_index, &reladdr, true);
> -   if (reladdr.file != PROGRAM_UNDEFINED)
> +                     (uint16_t *)&sampler.index, &reladdr, true);
> +
> +   if (reladdr.file != PROGRAM_UNDEFINED) {
> +      sampler.reladdr = ralloc(mem_ctx, st_src_reg);
> +      *sampler.reladdr = reladdr;
>         emit_arl(ir, sampler_reladdr, reladdr);
> +   }
>   
>      if (opcode == TGSI_OPCODE_TXD)
>         inst = emit_asm(ir, opcode, result_dst, coord, dx, dy);
> @@ -4414,15 +4419,10 @@ glsl_to_tgsi_visitor::visit(ir_texture *ir)
>      if (ir->shadow_comparator)
>         inst->tex_shadow = GL_TRUE;
>   
> -   inst->resource.index = sampler_index;
> +   inst->resource = sampler;
>      inst->sampler_array_size = sampler_array_size;
>      inst->sampler_base = sampler_base;
>   
> -   if (reladdr.file != PROGRAM_UNDEFINED) {
> -      inst->resource.reladdr = ralloc(mem_ctx, st_src_reg);
> -      memcpy(inst->resource.reladdr, &reladdr, sizeof(reladdr));
> -   }
> -
>      if (ir->offset) {
>         if (!inst->tex_offsets)
>            inst->tex_offsets = rzalloc_array(inst, st_src_reg, MAX_GLSL_TEXTURE_OFFSET);
> 


More information about the mesa-dev mailing list