[Mesa-dev] [PATCH 2/2] nvc0: fix setting of tess_mode in various situations

Martin Peres martin.peres at free.fr
Sat May 21 20:39:54 UTC 2016


On 21/05/16 23:18, Ilia Mirkin wrote:
> This fixes a lot of INVALID_VALUE errors reported by the card when
> running dEQP tests.
>
> Signed-off-by: Ilia Mirkin <imirkin at alum.mit.edu>
> Cc: "11.1 11.2" <mesa-stable at lists.freedesktop.org>
> ---
>   src/gallium/drivers/nouveau/nvc0/nvc0_program.c | 17 +++++++++++++----
>   1 file changed, 13 insertions(+), 4 deletions(-)
>
> diff --git a/src/gallium/drivers/nouveau/nvc0/nvc0_program.c b/src/gallium/drivers/nouveau/nvc0/nvc0_program.c
> index b573ac0..37517c22 100644
> --- a/src/gallium/drivers/nouveau/nvc0/nvc0_program.c
> +++ b/src/gallium/drivers/nouveau/nvc0/nvc0_program.c
> @@ -294,11 +294,20 @@ nvc0_tp_get_tess_mode(struct nvc0_program *tp, struct nv50_ir_prog_info *info)
>         return;
>      }
>   
> -   if (info->prop.tp.winding > 0)
> -      tp->tp.tess_mode |= NVC0_3D_TESS_MODE_CW;
> +   // It seems like lines want the "CW" bit to indicate they're connected, and
> +   // spit out errors in dmesg when the "CONNECTED" bit is set.

// is a c++ thing :)

Seems like the rest of the file is mostly using /* */
> +   if (info->prop.tp.outputPrim != PIPE_PRIM_POINTS) {
> +      if (info->prop.tp.domain == PIPE_PRIM_LINES)
> +         tp->tp.tess_mode |= NVC0_3D_TESS_MODE_CW;
> +      else
> +         tp->tp.tess_mode |= NVC0_3D_TESS_MODE_CONNECTED;
> +   }
>   
> -   if (info->prop.tp.outputPrim != PIPE_PRIM_POINTS)
> -      tp->tp.tess_mode |= NVC0_3D_TESS_MODE_CONNECTED;
> +   // Winding only matters for triangles/quads, not lines.
> +   if (info->prop.tp.domain != PIPE_PRIM_LINES &&
> +       info->prop.tp.outputPrim != PIPE_PRIM_POINTS &&
> +       info->prop.tp.winding > 0)
> +      tp->tp.tess_mode |= NVC0_3D_TESS_MODE_CW;
>   
>      switch (info->prop.tp.partitioning) {
>      case PIPE_TESS_SPACING_EQUAL:




More information about the mesa-dev mailing list