[Mesa-dev] [PATCH] tgsi/nouveau: Add support for tesselation ctrl and tesselation eval

Ilia Mirkin imirkin at alum.mit.edu
Thu Aug 13 12:03:42 PDT 2015


Hi Macros,

Looks like it's not parsed in exactly right. It will parse something like

TESS_EVAL
PROPERTY TES_PRIM_MODE 7
PROPERTY TES_SPACING 2
PROPERTY TES_VERTEX_ORDER_CW 0
PROPERTY TES_POINT_MODE 0
DCL IN[][0], GENERIC[0]
DCL IN[][1], GENERIC[1]

as

TESS_EVAL
PROPERTY TES_PRIM_MODE 7
PROPERTY TES_SPACING 2
PROPERTY TES_VERTEX_ORDER_CW 0
PROPERTY TES_POINT_MODE 0
DCL IN[][0][0], GENERIC[0]
DCL IN[][0][1], GENERIC[1]

Perhaps the same issue happens for geometry shaders, but that doesn't
make it right :) You might have to look at the printing logic to get a
better understanding of what's going wrong.

Also you should send patches to nouveau separately from patches to the
rest of the infra. Ideally this would have been 2 patches, e.g.

tgsi: set implicit array size for tess stages
nouveau: recognize tess stages in nouveau_compiler

or something like that.

On Wed, Aug 12, 2015 at 9:25 PM, Marcos Paulo de Souza
<marcos.souza.org at gmail.com> wrote:
> From: Marcos Paulo de Souza <marcos.souza.org at gmail.com>
>
> Signed-off-by: Marcos Paulo de Souza <marcos.souza.org>
> Suggested-by: Ilia Mirkin <imirkin at alum.mit.edu>
> ---
>  src/gallium/auxiliary/tgsi/tgsi_text.c         | 6 +++++-
>  src/gallium/drivers/nouveau/nouveau_compiler.c | 4 ++++
>  2 files changed, 9 insertions(+), 1 deletion(-)
>
> diff --git a/src/gallium/auxiliary/tgsi/tgsi_text.c b/src/gallium/auxiliary/tgsi/tgsi_text.c
> index a6675c5..8647e4e 100644
> --- a/src/gallium/auxiliary/tgsi/tgsi_text.c
> +++ b/src/gallium/auxiliary/tgsi/tgsi_text.c
> @@ -259,7 +259,7 @@ struct translate_ctx
>     struct tgsi_token *tokens_end;
>     struct tgsi_header *header;
>     unsigned processor : 4;
> -   int implied_array_size : 5;
> +   int implied_array_size : 6;
>     unsigned num_immediates;
>  };
>
> @@ -1623,6 +1623,10 @@ static boolean translate( struct translate_ctx *ctx )
>     if (!parse_header( ctx ))
>        return FALSE;
>
> +   if (ctx->processor == TGSI_PROCESSOR_TESS_CTRL ||
> +       ctx->processor == TGSI_PROCESSOR_TESS_EVAL)
> +       ctx->implied_array_size = 32 ;
> +
>     while (*ctx->cur != '\0') {
>        uint label_val = 0;
>        if (!eat_white( &ctx->cur )) {
> diff --git a/src/gallium/drivers/nouveau/nouveau_compiler.c b/src/gallium/drivers/nouveau/nouveau_compiler.c
> index 8660498..495450b 100644
> --- a/src/gallium/drivers/nouveau/nouveau_compiler.c
> +++ b/src/gallium/drivers/nouveau/nouveau_compiler.c
> @@ -190,6 +190,10 @@ main(int argc, char *argv[])
>        type = PIPE_SHADER_GEOMETRY;
>     else if (!strncmp(text, "COMP", 4))
>        type = PIPE_SHADER_COMPUTE;
> +   else if (!strncmp(text, "TESS_CTRL", 9))
> +      type = PIPE_SHADER_TESS_CTRL;
> +   else if (!strncmp(text, "TESS_EVAL", 9))
> +      type = PIPE_SHADER_TESS_EVAL;
>     else {
>        _debug_printf("Unrecognized TGSI header\n");
>        return 1;
> --
> 2.4.3
>
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/mesa-dev


More information about the mesa-dev mailing list