[Mesa-dev] [PATCH] st/glsl_to_tgsi: make sure resource file for samplers is PROGRAM_SAMPLER
Nicolai Hähnle
nhaehnle at gmail.com
Wed May 10 11:44:50 UTC 2017
On 10.05.2017 12:04, Samuel Pitoiset wrote:
> 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>
Reviewed-by: Nicolai Hähnle <nicolai.haehnle at amd.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);
>>
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/mesa-dev
--
Lerne, wie die Welt wirklich ist,
Aber vergiss niemals, wie sie sein sollte.
More information about the mesa-dev
mailing list