[Mesa-dev] [PATCH] i965/skl: Use an exec size of 8 to initialise the message header

Neil Roberts neil at linux.intel.com
Mon Apr 13 06:04:53 PDT 2015


Ben Widawsky <ben at bwidawsk.net> writes:

> Can you do me a favor since I am lazy? Can you send the generated asm
> diff with this patch? I am admittedly rusty on the matter, but I
> thought a mov is just a mov, and only the regioning is effected by the
> retype. If it indeed does what you say, it really should fix
> something. Does this happen to allow concurrent piglit to not die in a
> fire?

Here is the diff when compiling the interface-name-basic.vert shader:

--- without-patch.txt   2015-04-13 13:53:56.834861036 +0100
+++ with-patch.txt      2015-04-13 13:53:56.836861036 +0100
@@ -35,19 +35,19 @@
 mov(1)          g11<1>UD        0x00000008UD                    { align1 WE_all compacted };
 mov(1)          g13<1>UD        0x0000000cUD                    { align1 WE_all compacted };
 mov(8)          g123<1>UD       g1<8,8,1>UD                     { align1 WE_all 1Q compacted };
-mov(4)          g6<1>UD         g0<4,4,1>UD                     { align1 WE_all compacted };
+mov(8)          g6<1>UD         g0<8,8,1>UD                     { align1 WE_all 1Q compacted };
 mov(1)          g6.2<1>UD       0x00400000UD                    { align1 WE_all };
 send(4)         g6<1>F          g6<4,4,1>UD
                             sampler (0, 0, 7, 0) mlen 2 rlen 1              { align1 WE_all };
-mov(4)          g8<1>UD         g0<4,4,1>UD                     { align1 WE_all compacted };
+mov(8)          g8<1>UD         g0<8,8,1>UD                     { align1 WE_all 1Q compacted };
 mov(1)          g8.2<1>UD       0x00400000UD                    { align1 WE_all };
 send(4)         g7<1>F          g8<4,4,1>UD
                             sampler (0, 0, 7, 0) mlen 2 rlen 1              { align1 WE_all };
-mov(4)          g10<1>UD        g0<4,4,1>UD                     { align1 WE_all compacted };
+mov(8)          g10<1>UD        g0<8,8,1>UD                     { align1 WE_all 1Q compacted };
 mov(1)          g10.2<1>UD      0x00400000UD                    { align1 WE_all };
 send(4)         g8<1>F          g10<4,4,1>UD
                             sampler (0, 0, 7, 0) mlen 2 rlen 1              { align1 WE_all };
-mov(4)          g12<1>UD        g0<4,4,1>UD                     { align1 WE_all compacted };
+mov(8)          g12<1>UD        g0<8,8,1>UD                     { align1 WE_all 1Q compacted };
 mov(1)          g12.2<1>UD      0x00400000UD                    { align1 WE_all };
 send(4)         g9<1>F          g12<4,4,1>UD
                             sampler (0, 0, 7, 0) mlen 2 rlen 1              { align1 WE_all };

I think the intention of your original patch was just to change the
width of the source in the *send* instructions to 4 instead of 8. This
was required because the send instruction is using an exec size of 4.
However it also inadvertently changed the exec size of the mov
instruction above the send to 4. My patch just puts the exec size back
to 8.

> I also wonder how you don't run into the original issue that my patch
> fixed. Are you getting execsize=8 on this instruction now?

No, my patch only affects the mov instruction and leaves the send
instruction as it was. Your original patch is still used to fix the
problem with the send instruction.

Regards,
- Neil


More information about the mesa-dev mailing list