[Nouveau] [mesa PATCH] nv50: handle VP without inputs

Christoph Bumiller e0425955 at student.tuwien.ac.at
Sun May 6 12:05:21 PDT 2012


On 06.05.2012 20:53, Marcin Slusarz wrote:
> Fixes 3 piglit tests:
> general/pos-array
> shaders/glsl-novertexdata
> shaders/glsl-vs-point-size
> and makes shaders/vp-ignore-input not trigger PGRAPH DATA_ERROR
> ---
> It's a bit ugly... If there's a way to fix it properly, I'm open to suggestions.
> ---
>  src/gallium/drivers/nv50/nv50_program.c |    7 +++++++
>  1 files changed, 7 insertions(+), 0 deletions(-)
>
> diff --git a/src/gallium/drivers/nv50/nv50_program.c b/src/gallium/drivers/nv50/nv50_program.c
> index 48e8db3..c44f537 100644
> --- a/src/gallium/drivers/nv50/nv50_program.c
> +++ b/src/gallium/drivers/nv50/nv50_program.c
> @@ -53,6 +53,13 @@ nv50_vertprog_assign_slots(struct nv50_ir_prog_info *info)
>           if (info->in[i].mask & (1 << c))
>              info->in[i].slot[c] = n++;
>     }
> +
> +   // Corner case: VP has no inputs, but we will still need to submit data to
> +   // draw it. HW will shout at us and won't draw anything if we don't enable
> +   // any input, so let's just pretend it's the first one.
> +   if (info->numInputs == 0)
> +      prog->vp.attrs[0] |= 0xf;
> +
>     prog->in_nr = info->numInputs;
>  
>     for (i = 0; i < info->numSysVals; ++i) {
Ah thank you, I've been wondering how to make the nv50 draw without any
inputs (on nvc0 it just works even if you don't enable any).

2 issues though:
- please don't use C++ style comments in here (the style guardians would
sooner or later patch this up)
- if InstanceID or VertexID are used, enabling any inputs will move them
to a different position in input space, they always come after all the
ordinary vertex attributes; see usage of the "unsigned n" in the code
directly above & below


More information about the Nouveau mailing list