[Mesa-dev] [PATCH v2 13/23] nir/glsl_to_nir: set the bit-size in the result of evaluate_rvalue

Samuel Iglesias Gonsálvez siglesias at igalia.com
Mon Apr 4 07:47:35 UTC 2016



On 01/04/16 22:45, Jason Ekstrand wrote:
> On Thu, Mar 31, 2016 at 3:00 AM, Samuel Iglesias Gonsálvez <
> siglesias at igalia.com> wrote:
> 
>> From: Iago Toral Quiroga <itoral at igalia.com>
>>
>> Found while testing UBO loads in scenarios like this:
>>
>> (assign (x) (var_ref vec_ctor)
>>   (expression float d2f
>>       (expression double ubo_load (constant uint (0)) (constant uint
>> (0)))))
>>
>> Without this patch, the src expression of d2f would be evaluated to a
>> bitsize
>> of 32, which is not correct and would hit an assert in nir_validate.
>> ---
>>  src/compiler/nir/glsl_to_nir.cpp | 1 +
>>  1 file changed, 1 insertion(+)
>>
>> diff --git a/src/compiler/nir/glsl_to_nir.cpp
>> b/src/compiler/nir/glsl_to_nir.cpp
>> index c77b430..8c75843 100644
>> --- a/src/compiler/nir/glsl_to_nir.cpp
>> +++ b/src/compiler/nir/glsl_to_nir.cpp
>> @@ -1190,6 +1190,7 @@ nir_visitor::evaluate_rvalue(ir_rvalue* ir)
>>        load_instr->dest.ssa.bit_size =
>> glsl_get_bit_size(ir->type->base_type);
>>     }
>>
>> +   this->result->bit_size = glsl_get_bit_size(ir->type->base_type);
>>
> 
> I don't think this is the correct solution.  Make everything 32-bit and
> then stomp it various places to fix bugs.  We need to make every instance
> if init_ssa_dest do the right thing (I would recommend doing a full
> audit).  In particular, add_instr probably needs a bit_size parameter.
> 

Right. I will do the audit.

Thanks,

Sam

> 
>>     return this->result;
>>  }
>>
>> --
>> 2.5.0
>>
>> _______________________________________________
>> 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