[Mesa-dev] [PATCH] i965: Extend compute-to-mrf pass to understand blocks of MOVs

Kristian Høgsberg krh at bitplanet.net
Mon Jul 7 23:07:10 PDT 2014


On Mon, Jun 30, 2014 at 3:14 PM, Matt Turner <mattst88 at gmail.com> wrote:
> On Fri, Jun 27, 2014 at 12:00 PM, Kristian Høgsberg <krh at bitplanet.net> wrote:
>> From: Kristian Høgsberg <krh at century-sparrow.local>
>
> With your email address fixed,

Done, thanks for the review.  I realized that this also applies to MRT
shaders where we write the same value to two render targets.  From
piglits fbo-drawbuffers2-blend:

0x00000000: pln(8)          g6<1>F          g4<0,1,0>F      g2<8,8,1>F
     { align1 WE_normal 1Q compacted };
0x00000008: pln(8)          g7<1>F          g4.4<0,1,0>F    g2<8,8,1>F
     { align1 WE_normal 1Q compacted };
0x00000010: pln(8)          g8<1>F          g5.4<0,1,0>F    g2<8,8,1>F
     { align1 WE_normal 1Q compacted };
0x00000018: math inv(8)     g2<1>F          g8<8,8,1>F      null
     { align1 WE_normal 1Q compacted };
0x00000020: mul(8)          g3<1>F          g6<8,8,1>F      g2<8,8,1>F
     { align1 WE_normal 1Q compacted };
0x00000028: mul(8)          g4<1>F          g7<8,8,1>F      g2<8,8,1>F
     { align1 WE_normal 1Q compacted };
0x00000030: send(8)         g2<1>UW         g3<8,8,1>F
                            sampler (1, 0, 0, 1) mlen 2 rlen 4
     { align1 WE_normal 1Q };
0x00000040: mov(8)          g113<1>F        g2<8,8,1>F
     { align1 WE_normal 1Q compacted };
0x00000048: mov(8)          g114<1>F        g3<8,8,1>F
     { align1 WE_normal 1Q compacted };
0x00000050: mov(8)          g115<1>F        g4<8,8,1>F
     { align1 WE_normal 1Q compacted };
0x00000058: mov(8)          g116<1>F        g5<8,8,1>F
     { align1 WE_normal 1Q compacted };
0x00000060: sendc(8)        null            g113<8,8,1>F
                            render RT write SIMD8 LastRT Surface = 0
mlen 4 rlen 0 { align1 WE_normal 1Q EOT };

becomes:

0x00000000: pln(8)          g6<1>F          g4<0,1,0>F      g2<8,8,1>F
     { align1 WE_normal 1Q compacted };
0x00000008: pln(8)          g8<1>F          g4.4<0,1,0>F    g2<8,8,1>F
     { align1 WE_normal 1Q compacted };
0x00000010: pln(8)          g9<1>F          g5.4<0,1,0>F    g2<8,8,1>F
     { align1 WE_normal 1Q compacted };
0x00000018: math inv(8)     g7<1>F          g9<8,8,1>F      null
     { align1 WE_normal 1Q compacted };
0x00000020: mul(8)          g2<1>F          g6<8,8,1>F      g7<8,8,1>F
     { align1 WE_normal 1Q compacted };
0x00000028: mul(8)          g3<1>F          g8<8,8,1>F      g7<8,8,1>F
     { align1 WE_normal 1Q compacted };
0x00000030: send(8)         g113<1>UW       g2<8,8,1>F
                            sampler (1, 0, 0, 1) mlen 2 rlen 4
     { align1 WE_normal 1Q };
0x00000040: sendc(8)        null            g113<8,8,1>F
                            render RT write SIMD8 LastRT Surface = 0
mlen 4 rlen 0 { align1 WE_normal 1Q EOT };

which is lovely.

Kristian

> Reviewed-by: Matt Turner <mattst88 at gmail.com>


More information about the mesa-dev mailing list