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 / load_Cur_UV_8x8T.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: load_Cur_UV_8x8T.asm\r
10 //\r
11 // Load and transpose UV 8x8 block (NV12: 8x8U and 8x8V mixed)\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_UD:                 SRC_UD Base=rxx ElementSize=4 SrcRegion=REGION(8,1) Type=ud   (U+V for NV12)    // 4 GRFs\r
18 //\r
19 //      Binding table index: \r
20 //      BI_SRC_UV:              Binding table index of UV surface (NV12)\r
21 //\r
22 //----------------------------------------------------------------\r
23 \r
24 #if defined(_DEBUG) \r
25         mov             (1)             EntrySignatureC:w                       0xDDD1:w\r
26 #endif\r
27 \r
28         // Read U+V blk\r
29 #if defined(_PROGRESSIVE) \r
30     mov (1)     MSGSRC.0:ud             ORIX_CUR:w                              { NoDDClr }             // Block origin\r
31     asr (1)     MSGSRC.1:ud             ORIY_CUR:w              1:w             { NoDDClr, NoDDChk }    // NV12 U+V block origin y = half of Y comp\r
32     mov (1)     MSGSRC.2:ud             0x0007000F:ud                   { NoDDChk }                     // NV12 U+V block width and height (16x8 bytes)\r
33 \r
34     //send (8) SRC_UD(0)<1>     MSGHDRU         MSGSRC<8;8,1>:ud        DWBRMSGDSC_SC+0x00040000+BI_SRC_UV\r
35     mov (1)     MSGDSC  RESP_LEN(4)+DWBRMSGDSC_SC+BI_SRC_UV:ud  \r
36 #endif\r
37 \r
38 #if defined(_FIELD)\r
39 //    cmp.z.f0.0 (1)  NULLREGW  PicTypeC:w      0:w                                             // Get pic type flag\r
40     and.nz.f0.1 (1) NULLREGW    BitFields:w     BotFieldFlag:w                  // Get bottom field flag\r
41         // they are used later in this file\r
42 \r
43     mov (1)     MSGSRC.0:ud             ORIX_CUR:w                              { NoDDClr }             // Block origin\r
44     asr (1)     MSGSRC.1:ud             ORIY_CUR:w              1:w             { NoDDClr, NoDDChk }    // NV12 U+V block origin y = half of Y comp\r
45     mov (1)     MSGSRC.2:ud             0x0007000F:ud                   { NoDDChk }                     // NV12 U+V block width and height (16x8 bytes)\r
46 \r
47     // Set message descriptor\r
48 \r
49     // Frame picture\r
50 //    (f0.0) mov (1)    MSGDSC  RESP_LEN(4)+DWBRMSGDSC_SC+BI_SRC_UV:ud                  // Read 4 GRFs from SRC_UV\r
51 //      (f0.0) jmpi             load_UV_8x8T\r
52 \r
53         // Field picture\r
54     (f0.1) mov (1)      MSGDSC  RESP_LEN(4)+DWBRMSGDSC_SC_BF+BI_SRC_UV:ud  // Read 4 GRFs from SRC_UV bottom field\r
55     (-f0.1) mov (1)     MSGDSC  RESP_LEN(4)+DWBRMSGDSC_SC_TF+BI_SRC_UV:ud  // Read 4 GRFs from SRC_UV top field\r
56 \r
57 //load_UV_8x8T:\r
58 \r
59 #endif\r
60 \r
61     send (8) SRC_UD(0)<1>       MSGHDRU         MSGSRC<8;8,1>:ud        DAPREAD MSGDSC\r
62 \r
63 //      #include "Transpose_Cur_UV_8x8.asm"\r
64 \r
65 // End of load_UV_8x8T\r