diff options
Diffstat (limited to 'i965_drv_video/shaders/mpeg2/vld/field_bidirect_16x8.g4a')
-rw-r--r-- | i965_drv_video/shaders/mpeg2/vld/field_bidirect_16x8.g4a | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/i965_drv_video/shaders/mpeg2/vld/field_bidirect_16x8.g4a b/i965_drv_video/shaders/mpeg2/vld/field_bidirect_16x8.g4a new file mode 100644 index 0000000..e4fc178 --- /dev/null +++ b/i965_drv_video/shaders/mpeg2/vld/field_bidirect_16x8.g4a @@ -0,0 +1,31 @@ +/* GRF allocation: + g1~g30: constant buffer + g1~g2:intra IQ matrix + g3~g4:non intra IQ matrix + g5~g20:IDCT table + g31: thread payload + g58~g81:reference data + g82: thread payload backup + g83~g106:IDCT data + g32: message descriptor for reading reference data */ + +mov (8) g82.0<1>UD g31.0<8,8,1>UD {align1}; +mov (2) g31.0<1>UD g82.12<2,2,1>UW {align1}; +define(`UV_red',`0xffffffffUD') +define(`UV_white',`0x7f7f7f7fUD') +define(`UV_green',`0x00000000UD') +mov(2) g6.0<1>UD g82.12<2,2,1>UW {align1}; +mov(1) g6.8<1>UD 0x000f000fUD { align1 }; +mov(16) m1<1>UD 0xFFFFFFFFUD {align1 compr}; +mov(16) m3<1>UD 0xFFFFFFFFUD {align1 compr}; +mov(16) m5<1>UD 0xFFFFFFFFUD {align1 compr}; +mov(16) m7<1>UD 0xFFFFFFFFUD {align1 compr}; +send (16) 0 acc0<1>UW g6<8,8,1>UW write(0, 0, 2, 0) mlen 9 rlen 0 { align1 }; +/*Fill U buffer & V buffer with 0x7F*/ +shr (2) g6.0<1>UD g82.12<2,2,1>UW 1UW {align1}; +mov(1) g6.8<1>UD 0x00070007UD { align1 }; +mov (16) m1<1>UD UV_white {align1 compr}; +send (16) 0 acc0<1>UW g6<8,8,1>UW write(2, 0, 2, 0) mlen 3 rlen 0 { align1 }; +send (16) 0 acc0<1>UW g6<8,8,1>UW write(1, 0, 2, 0) mlen 3 rlen 0 { align1 }; +send (16) 0 acc0<1>UW g0<8,8,1>UW + thread_spawner(0, 0, 0) mlen 1 rlen 0 { align1 EOT}; |