<div dir="ltr"><div><div><div><div>Hi Ilia,<br><br></div>So i found the point here it addrs that double brackets, and the following patch solves it, but this is a right solution? If someone could guide me here, I could fix it :)<br><br>diff --git a/src/gallium/auxiliary/tgsi/tgsi_dump.c 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>-      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></div>After this patch, tess_eval output is the same before and after, but 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></div>I'll try to investigate and send a new patch in the weekend.<br><br></div>Thanks for all help Ilia and others!<br></div><div class="gmail_extra"><br><div class="gmail_quote">2015-08-13 18:43 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">[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>
<div class="HOEnZb"><div class="h5"><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 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 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>
</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>