[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:17:08 PDT 2014


On Mon, Jul 7, 2014 at 11:07 PM, Kristian Høgsberg <krh at bitplanet.net> wrote:
> 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

Ugh, nevermind that, that's a sampler send there...

>      { 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