On Thu, Mar 31, 2016 at 3:00 AM, Samuel Iglesias Gonsálvez <
sigles...@igalia.com> wrote:

> From: Iago Toral Quiroga <ito...@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.


>     return this->result;
>  }
>
> --
> 2.5.0
>
> _______________________________________________
> mesa-dev mailing list
> mesa-dev@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/mesa-dev
>
_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to