[Mesa-dev] [PATCH] draw: initialize shader inputs

Marek Olšák maraeo at gmail.com
Wed Oct 12 16:12:38 UTC 2016


On Wed, Oct 12, 2016 at 12:04 AM,  <sroland at vmware.com> wrote:
> From: Roland Scheidegger <sroland at vmware.com>
>
> This should make the code more robust if a shader tries to use inputs which
> aren't defined by the vertex element layout (which usually shouldn't happen).
>
> No piglit change.
> ---
>  src/gallium/auxiliary/draw/draw_llvm.c | 7 +++++++
>  1 file changed, 7 insertions(+)
>
> diff --git a/src/gallium/auxiliary/draw/draw_llvm.c b/src/gallium/auxiliary/draw/draw_llvm.c
> index 87951fa..4270a8f 100644
> --- a/src/gallium/auxiliary/draw/draw_llvm.c
> +++ b/src/gallium/auxiliary/draw/draw_llvm.c
> @@ -1705,6 +1705,13 @@ draw_llvm_generate(struct draw_llvm *llvm, struct draw_llvm_variant *variant,
>        lp_build_printf(gallivm, " --- io %d = %p, loop counter %d\n",
>                        io_itr, io, lp_loop.counter);
>  #endif
> +
> +      for (j = draw->pt.nr_vertex_elements; j < PIPE_MAX_SHADER_INPUTS; j++) {
> +         for (i = 0; i < TGSI_NUM_CHANNELS; i++) {
> +            inputs[j][i] = lp_build_zero(gallivm, vs_type);
> +         }
> +      }

It's better to use LLVMGetUndef for uninitialized inputs and temps.
That can eliminate more code than initializing everything to 0.
(radeonsi uses undef)

Marek


More information about the mesa-dev mailing list