Subversion Repositories Kolibri OS

Rev

Blame | Last modification | View Log | RSS feed

  1. /*
  2.  * Copyright © <2010>, Intel Corporation.
  3.  *
  4.  * This program is licensed under the terms and conditions of the
  5.  * Eclipse Public License (EPL), version 1.0.  The full text of the EPL is at
  6.  * http://www.opensource.org/licenses/eclipse-1.0.php.
  7.  *
  8.  */
  9. // Module name: load_Cur_UV_8x8T.asm
  10. //
  11. // Load and transpose UV 8x8 block (NV12: 8x8U and 8x8V mixed)
  12. //
  13. //----------------------------------------------------------------
  14. //  Symbols need to be defined before including this module
  15. //
  16. //      Source region in :ud
  17. //      SRC_UD:                 SRC_UD Base=rxx ElementSize=4 SrcRegion=REGION(8,1) Type=ud   (U+V for NV12)    // 4 GRFs
  18. //
  19. //      Binding table index:
  20. //      BI_SRC_UV:              Binding table index of UV surface (NV12)
  21. //
  22. //----------------------------------------------------------------
  23.  
  24. #if defined(_DEBUG)
  25.         mov             (1)             EntrySignatureC:w                       0xDDD1:w
  26. #endif
  27.  
  28.         // Read U+V blk
  29. #if defined(_PROGRESSIVE)
  30.     mov (1)     MSGSRC.0:ud             ORIX_CUR:w                              { NoDDClr }             // Block origin
  31.     asr (1)     MSGSRC.1:ud             ORIY_CUR:w              1:w             { NoDDClr, NoDDChk }    // NV12 U+V block origin y = half of Y comp
  32.     mov (1)     MSGSRC.2:ud             0x0007000F:ud                   { NoDDChk }                     // NV12 U+V block width and height (16x8 bytes)
  33.  
  34.     //send (8) SRC_UD(0)<1>     MSGHDRU         MSGSRC<8;8,1>:ud        DWBRMSGDSC_SC+0x00040000+BI_SRC_UV
  35.     mov (1)     MSGDSC  RESP_LEN(4)+DWBRMSGDSC_SC+BI_SRC_UV:ud 
  36. #endif
  37.  
  38. #if defined(_FIELD)
  39. //    cmp.z.f0.0 (1)  NULLREGW  PicTypeC:w      0:w                                             // Get pic type flag
  40.     and.nz.f0.1 (1) NULLREGW    BitFields:w     BotFieldFlag:w                  // Get bottom field flag
  41.         // they are used later in this file
  42.  
  43.     mov (1)     MSGSRC.0:ud             ORIX_CUR:w                              { NoDDClr }             // Block origin
  44.     asr (1)     MSGSRC.1:ud             ORIY_CUR:w              1:w             { NoDDClr, NoDDChk }    // NV12 U+V block origin y = half of Y comp
  45.     mov (1)     MSGSRC.2:ud             0x0007000F:ud                   { NoDDChk }                     // NV12 U+V block width and height (16x8 bytes)
  46.  
  47.     // Set message descriptor
  48.  
  49.     // Frame picture
  50. //    (f0.0) mov (1)    MSGDSC  RESP_LEN(4)+DWBRMSGDSC_SC+BI_SRC_UV:ud                  // Read 4 GRFs from SRC_UV
  51. //      (f0.0) jmpi             load_UV_8x8T
  52.  
  53.         // Field picture
  54.     (f0.1) mov (1)      MSGDSC  RESP_LEN(4)+DWBRMSGDSC_SC_BF+BI_SRC_UV:ud  // Read 4 GRFs from SRC_UV bottom field
  55.     (-f0.1) mov (1)     MSGDSC  RESP_LEN(4)+DWBRMSGDSC_SC_TF+BI_SRC_UV:ud  // Read 4 GRFs from SRC_UV top field
  56.  
  57. //load_UV_8x8T:
  58.  
  59. #endif
  60.  
  61.     send (8) SRC_UD(0)<1>       MSGHDRU         MSGSRC<8;8,1>:ud        DAPREAD MSGDSC
  62.  
  63. //      #include "Transpose_Cur_UV_8x8.asm"
  64.  
  65. // End of load_UV_8x8T
  66.