<div dir="ltr">Hi Ilia,<br><div class="gmail_extra"><br><div class="gmail_quote">2015-08-14 1:02 GMT-03:00 Ilia Mirkin <span dir="ltr"><<a href="mailto:imirkin@alum.mit.edu" target="_blank">imirkin@alum.mit.edu</a>></span>:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span class="">On Thu, Aug 13, 2015 at 11:55 PM, Marcos Souza<br>
<<a href="mailto:marcos.souza.org@gmail.com">marcos.souza.org@gmail.com</a>> wrote:<br>
> Hi Ilia,<br>
><br>
> So i found the point here it addrs that double brackets, and the following<br>
> patch solves it, but this is a right solution? If someone could guide me<br>
> here, I could fix it :)<br>
><br>
> diff --git a/src/gallium/auxiliary/tgsi/tgsi_dump.c<br>
> b/src/gallium/auxiliary/tgsi/tgsi_dump.c<br>
> index 8ceb5b4..046471e 100644<br>
> --- a/src/gallium/auxiliary/tgsi/tgsi_dump.c<br>
> +++ b/src/gallium/auxiliary/tgsi/tgsi_dump.c<br>
> @@ -302,10 +302,14 @@ iter_declaration(<br>
> TXT("[]");<br>
> }<br>
><br>
> - if (decl->Declaration.Dimension) {<br>
<br>
</span>The issue is that the declaration is getting a dimension set by the<br>
parser, which in turn is causing it to print funny. It shouldn't be<br>
getting a dimension in the first place for those.<br></blockquote><div><br></div><div>The following patch fix the problem, is it the right place to put it?<br><br>diff --git a/src/gallium/auxiliary/tgsi/tgsi_text.c b/src/gallium/auxiliary/tgsi/tgsi_text.c<br>index 8647e4e..f734d58 100644<br>--- a/src/gallium/auxiliary/tgsi/tgsi_text.c<br>+++ b/src/gallium/auxiliary/tgsi/tgsi_text.c<br>@@ -1185,7 +1185,10 @@ static boolean parse_declaration( struct translate_ctx *ctx )<br> decl.Range.First = brackets[1].first;<br> decl.Range.Last = brackets[1].last;<br> <br>- decl.Declaration.Dimension = 1;<br>+ if (!(ctx->processor == TGSI_PROCESSOR_TESS_CTRL ||<br>+ ctx->processor == TGSI_PROCESSOR_TESS_EVAL))<br>+ decl.Declaration.Dimension = 1;<br>+<br> decl.Dim.Index2D = brackets[0].first;<br> }<br> <br><br></div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div class="HOEnZb"><div class="h5"><br>
> - CHR('[');<br>
> - SID(decl->Dim.Index2D);<br>
> - CHR(']');<br>
> + /* FIXME: patched version could have tree dimensions?? */<br>
> + if (patch && (iter->processor.Processor == TGSI_PROCESSOR_TESS_CTRL ||<br>
> + iter->processor.Processor == TGSI_PROCESSOR_TESS_EVAL)) {<br>
> + if (decl->Declaration.Dimension) {<br>
> + CHR('[');<br>
> + SID(decl->Dim.Index2D);<br>
> + CHR(']');<br>
> + }<br>
> }<br>
><br>
> After this patch, tess_eval output is the same before and after, but<br>
> tess_ctrl is a little different:<br>
> [marcos@x mesa]$ diff tess_ctrl tess_ctrl_new<br>
> 29c29<br>
> < 15: LRP OUT[ADDR[1].x][3], TEMP[1].xxxx, TEMP[3], TEMP[2]<br>
> ---<br>
>> 15: LRP OUT[0][3], TEMP[1].xxxx, TEMP[3], TEMP[2]<br>
> 40c40<br>
> < 26: MOV OUT[ADDR[1].x][2], TEMP[0]<br>
> ---<br>
>> 26: MOV OUT[0][2], TEMP[0]<br>
><br>
> I'll try to investigate and send a new patch in the weekend.<br>
><br>
> Thanks for all help Ilia and others!<br>
><br>
> 2015-08-13 18:43 GMT-03:00 Ilia Mirkin <<a href="mailto:imirkin@alum.mit.edu">imirkin@alum.mit.edu</a>>:<br>
>><br>
>> [mesa-dev readded, please don't drop CC's]<br>
>><br>
>> I found it by feeding the shader to nouveau_compiler with<br>
>> NV50_PROG_DEBUG=1 set, which dumps the input tgsi. Those two should<br>
>> match up.<br>
>><br>
>> On Thu, Aug 13, 2015 at 5:39 PM, Marcos Paulo de souza<br>
>> <<a href="mailto:marcos.souza.org@gmail.com">marcos.souza.org@gmail.com</a>> wrote:<br>
>> > Hi Ilia,<br>
>> ><br>
>> > So, how can I test it? Do I need to especify some patameter to verify<br>
>> > this<br>
>> > type of problem?<br>
>> ><br>
>> > Thanks for the quick revision!<br>
>> ><br>
>> ><br>
>> > Em 13-08-2015 16:03, Ilia Mirkin escreveu:<br>
>> >><br>
>> >> Hi Macros,<br>
>> >><br>
>> >> Looks like it's not parsed in exactly right. It will parse something<br>
>> >> like<br>
>> >><br>
>> >> TESS_EVAL<br>
>> >> PROPERTY TES_PRIM_MODE 7<br>
>> >> PROPERTY TES_SPACING 2<br>
>> >> PROPERTY TES_VERTEX_ORDER_CW 0<br>
>> >> PROPERTY TES_POINT_MODE 0<br>
>> >> DCL IN[][0], GENERIC[0]<br>
>> >> DCL IN[][1], GENERIC[1]<br>
>> >><br>
>> >> as<br>
>> >><br>
>> >> TESS_EVAL<br>
>> >> PROPERTY TES_PRIM_MODE 7<br>
>> >> PROPERTY TES_SPACING 2<br>
>> >> PROPERTY TES_VERTEX_ORDER_CW 0<br>
>> >> PROPERTY TES_POINT_MODE 0<br>
>> >> DCL IN[][0][0], GENERIC[0]<br>
>> >> DCL IN[][0][1], GENERIC[1]<br>
>> >><br>
>> >> Perhaps the same issue happens for geometry shaders, but that doesn't<br>
>> >> make it right :) You might have to look at the printing logic to get a<br>
>> >> better understanding of what's going wrong.<br>
>> >><br>
>> >> Also you should send patches to nouveau separately from patches to the<br>
>> >> rest of the infra. Ideally this would have been 2 patches, e.g.<br>
>> >><br>
>> >> tgsi: set implicit array size for tess stages<br>
>> >> nouveau: recognize tess stages in nouveau_compiler<br>
>> >><br>
>> >> or something like that.<br>
>> >><br>
>> >> On Wed, Aug 12, 2015 at 9:25 PM, Marcos Paulo de Souza<br>
>> >> <<a href="mailto:marcos.souza.org@gmail.com">marcos.souza.org@gmail.com</a>> wrote:<br>
>> >>><br>
>> >>> From: Marcos Paulo de Souza <<a href="mailto:marcos.souza.org@gmail.com">marcos.souza.org@gmail.com</a>><br>
>> >>><br>
>> >>> Signed-off-by: Marcos Paulo de Souza <<a href="http://marcos.souza.org" rel="noreferrer" target="_blank">marcos.souza.org</a>><br>
>> >>> Suggested-by: Ilia Mirkin <<a href="mailto:imirkin@alum.mit.edu">imirkin@alum.mit.edu</a>><br>
>> >>> ---<br>
>> >>> src/gallium/auxiliary/tgsi/tgsi_text.c | 6 +++++-<br>
>> >>> src/gallium/drivers/nouveau/nouveau_compiler.c | 4 ++++<br>
>> >>> 2 files changed, 9 insertions(+), 1 deletion(-)<br>
>> >>><br>
>> >>> diff --git a/src/gallium/auxiliary/tgsi/tgsi_text.c<br>
>> >>> b/src/gallium/auxiliary/tgsi/tgsi_text.c<br>
>> >>> index a6675c5..8647e4e 100644<br>
>> >>> --- a/src/gallium/auxiliary/tgsi/tgsi_text.c<br>
>> >>> +++ b/src/gallium/auxiliary/tgsi/tgsi_text.c<br>
>> >>> @@ -259,7 +259,7 @@ struct translate_ctx<br>
>> >>> struct tgsi_token *tokens_end;<br>
>> >>> struct tgsi_header *header;<br>
>> >>> unsigned processor : 4;<br>
>> >>> - int implied_array_size : 5;<br>
>> >>> + int implied_array_size : 6;<br>
>> >>> unsigned num_immediates;<br>
>> >>> };<br>
>> >>><br>
>> >>> @@ -1623,6 +1623,10 @@ static boolean translate( struct translate_ctx<br>
>> >>> *ctx )<br>
>> >>> if (!parse_header( ctx ))<br>
>> >>> return FALSE;<br>
>> >>><br>
>> >>> + if (ctx->processor == TGSI_PROCESSOR_TESS_CTRL ||<br>
>> >>> + ctx->processor == TGSI_PROCESSOR_TESS_EVAL)<br>
>> >>> + ctx->implied_array_size = 32 ;<br>
>> >>> +<br>
>> >>> while (*ctx->cur != '\0') {<br>
>> >>> uint label_val = 0;<br>
>> >>> if (!eat_white( &ctx->cur )) {<br>
>> >>> diff --git a/src/gallium/drivers/nouveau/nouveau_compiler.c<br>
>> >>> b/src/gallium/drivers/nouveau/nouveau_compiler.c<br>
>> >>> index 8660498..495450b 100644<br>
>> >>> --- a/src/gallium/drivers/nouveau/nouveau_compiler.c<br>
>> >>> +++ b/src/gallium/drivers/nouveau/nouveau_compiler.c<br>
>> >>> @@ -190,6 +190,10 @@ main(int argc, char *argv[])<br>
>> >>> type = PIPE_SHADER_GEOMETRY;<br>
>> >>> else if (!strncmp(text, "COMP", 4))<br>
>> >>> type = PIPE_SHADER_COMPUTE;<br>
>> >>> + else if (!strncmp(text, "TESS_CTRL", 9))<br>
>> >>> + type = PIPE_SHADER_TESS_CTRL;<br>
>> >>> + else if (!strncmp(text, "TESS_EVAL", 9))<br>
>> >>> + type = PIPE_SHADER_TESS_EVAL;<br>
>> >>> else {<br>
>> >>> _debug_printf("Unrecognized TGSI header\n");<br>
>> >>> return 1;<br>
>> >>> --<br>
>> >>> 2.4.3<br>
>> >>><br>
>> >>> _______________________________________________<br>
>> >>> mesa-dev mailing list<br>
>> >>> <a href="mailto:mesa-dev@lists.freedesktop.org">mesa-dev@lists.freedesktop.org</a><br>
>> >>> <a href="http://lists.freedesktop.org/mailman/listinfo/mesa-dev" rel="noreferrer" target="_blank">http://lists.freedesktop.org/mailman/listinfo/mesa-dev</a><br>
>> ><br>
>> ><br>
><br>
><br>
><br>
><br>
> --<br>
> Att,<br>
><br>
> Marcos Paulo de Souza<br>
> Github: <a href="https://github.com/marcosps/" rel="noreferrer" target="_blank">https://github.com/marcosps/</a><br>
</div></div></blockquote></div><br><br clear="all"><br>-- <br><div class="gmail_signature"><div dir="ltr">Att,<br><br>Marcos Paulo de Souza<br>Github: <a href="https://github.com/marcosps/" target="_blank">https://github.com/marcosps/</a><br></div></div>
</div></div>