[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