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_ILDB_Cntrl_Data_16DW.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_ILDB_Cntrl_Data_16DW.asm\r
10 //\r
11 // This module loads AVC ILDB 64DW control data for one MB CTG. \r
12 // Dataport expands from 16DW to 64DW.\r
13 //\r
14 //----------------------------------------------------------------\r
15 //  Symbols need to be defined before including this module\r
16 //\r
17 //      Source region in :ud\r
18 //      CNTRL_DATA_D:   CNTRL_DATA_D Base=rxx ElementSize=4 SrcRegion=REGION(8,1) Type=ud                       // 8 GRFs\r
19 //\r
20 //      Binding table index: \r
21 //      BI_CNTRL_DATA:  Binding table index of control data surface\r
22 //\r
23 //----------------------------------------------------------------\r
24 \r
25 // On CTG, MB control data in memory occupy 16 DWs. Data port returns 8 GRFs with expanded control data.\r
26 \r
27 #if defined(_MBAFF) \r
28         // We need to get control data offset for the bottom MB in mbaff mode.\r
29         // That is, get f0.1=1 if MbaffFlag==1 && BotFieldFlag==1\r
30 //      and (1) CTemp1_W:uw             BitFields:uw    MbaffFlag+BotFieldFlag:uw       // Mute all other bits\r
31 //      cmp.e.f0.1 (1) NULLREGW         CTemp1_W:uw     MbaffFlag+BotFieldFlag:uw       // Check mbaff and bot flags\r
32                 \r
33         and.ne.f0.1 (1) NULLREGW        BitFields:uw    BotFieldFlag:uw\r
34 \r
35         // Global offset\r
36         mov (1) MSGSRC.2:ud             CntrlDataOffsetY:ud\r
37                 \r
38         (f0.1) add (1) MSGSRC.2:ud              MSGSRC.2:ud             64:w    // +64 to the next MB control data (bot MB)\r
39 #endif\r
40 \r
41     send (8) CNTRL_DATA_D(0)<1> MSGHDRY MSGSRC<8;8,1>:ud        DAPREAD RESP_LEN(8)+ILDBRMSGDSC+BI_CNTRL_DATA   // Receive 8 GRFs\r
42 \r
43 // End of load_ILDB_Cntrl_Data_16DW.asm\r
44 \r
45 \r
46 \r
47 // AVC ILDB control data message header format\r
48 \r
49 //DWord Bit     Description\r
50 //M0.7  31:0    Debug \r
51 //M0.6  31:0    Debug\r
52 //M0.5  31:8    Ignored\r
53 //              7:0             Dispatch ID. // This ID is assigned by the fixed function unit and is a unique identifier for the thread.  It is used to free up resources used by the thread upon thread completion.\r
54 //M0.4  31:0    Ignored\r
55 //M0.3  31:0    Ignored\r
56 //M0.2  31:0    Global Offset. Specifies the global byte offset into the buffer.\r
57                                 //      This offset must be OWord aligned (bits 3:0 MBZ) Format = U32 Range = [0,FFFFFFF0h]\r
58 //M0.1  31:0    Ignored\r
59 //M0.0  31:0    Ignored\r
60 \r
61 \r
62 \r