OSDN Git Service

i965_drv_video: add support for H264 on Clarkdale/Arrandale
[android-x86/hardware-intel-common-libva.git] / i965_drv_video / shaders / h264 / ildb / loadNV12_16x16T.asm
1 /*\r
2  * Copyright © <2010>, Intel Corporation.\r
3  *\r
4  * This program is licensed under the terms and conditions of the\r
5  * Eclipse Public License (EPL), version 1.0.  The full text of the EPL is at\r
6  * http://www.opensource.org/licenses/eclipse-1.0.php.\r
7  *\r
8  */\r
9 // Module name: loadNV12_16x16T.asm\r
10 //\r
11 // Load and transpose NV12 16x16 block \r
12 //\r
13 //----------------------------------------------------------------\r
14 //  Symbols need to be defined before including this module\r
15 //\r
16 //      Source region in :ud\r
17 //      SRC_YD:                 SRC_YD Base=rxx ElementSize=4 SrcRegion=REGION(8,1) Type=ud                     // 8 GRFs\r
18 //      SRC_UD:                 SRC_UD Base=rxx ElementSize=4 SrcRegion=REGION(8,1) Type=ud   (U+V for NV12)    // 4 GRFs\r
19 //\r
20 //      Source region is :ub.  The same region as :ud region\r
21 //      SRC_YB:                 SRC_YB Base=rxx ElementSize=1 SrcRegion=REGION(16,1) Type=ub            // 8 GRFs\r
22 //      SRC_UB:                 SRC_UB Base=rxx ElementSize=1 SrcRegion=REGION(16,1) Type=ub            // 2 GRFs\r
23 //      SRC_VB:                 SRC_VB Base=rxx ElementSize=1 SrcRegion=REGION(16,1) Type=ub            // 2 GRFs\r
24 //\r
25 //      Binding table index: \r
26 //      BI_SRC_Y:               Binding table index of Y surface\r
27 //      BI_SRC_UV:              Binding table index of UV surface (NV12)\r
28 //\r
29 //      Temp buffer:\r
30 //      BUF_B:                  BUF_B Base=rxx ElementSize=1 SrcRegion=REGION(16,1) Type=ub\r
31 //\r
32 //----------------------------------------------------------------\r
33 \r
34 #if defined(_DEBUG) \r
35         mov             (1)             EntrySignatureC:w                       0xDDD1:w\r
36 #endif\r
37 \r
38         // Read Y\r
39     mov (2)     MSGSRC.0<1>:ud  ORIX_CUR<2;2,1>:w               // Block origin\r
40     mov (1)     MSGSRC.2<1>:ud  0x000F000F:ud           // Block width and height (16x16)\r
41     send (8) SRC_YD(0)<1>       MSGHDRY MSGSRC<8;8,1>:ud        DAPREAD RESP_LEN(8)+DWBRMSGDSC_RC+BI_SRC_Y      // Read 8 GRFs\r
42 \r
43         // Read U+V\r
44     asr (1)     MSGSRC.1:ud             MSGSRC.1:ud                     1:w                                             // NV12 U+V block origin y = half of Y comp\r
45     mov (1)     MSGSRC.2<1>:ud  0x0007000F:ud           // NV12 U+V block width and height (16x8)\r
46     send (8) SRC_UD(0)<1>       MSGHDRU MSGSRC<8;8,1>:ud        DAPREAD RESP_LEN(4)+DWBRMSGDSC_RC+BI_SRC_UV     // Read 4 GRFs\r
47 \r
48         #include "TransposeNV12_16x16.asm"\r
49 \r
50 //      #include "Transpose_Y_16x16.asm"        \r
51 //      #include "Transpose_NV12_UV_16x8.asm"   \r
52                 \r
53 // End of loadNV12_16x16T\r