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_Top_UV_8X2.Asm
  10. //
  11. // Load UV 8X2 Block
  12. //
  13. //----------------------------------------------------------------
  14. //  Symbols ceed To be defined before including this module
  15. //
  16. //      Source Region Is :UB
  17. //      BUF_D:                  BUF_D Base=Rxx Elementsize=4 Srcregion=Region(8,1) Type=UD
  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                       0xDDD2:w
  26. #endif
  27.  
  28. #if defined(_PROGRESSIVE)
  29.         // Read U+V
  30.     mov (1)     MSGSRC.0:ud             ORIX_TOP:w                                              { NoDDClr }                     // Block origin
  31.     asr (1)     MSGSRC.1:ud             ORIY_TOP:w                      1:w                     { NoDDClr, NoDDChk }    // NV12 U+V block origin y = half of Y comp
  32.     mov (1)     MSGSRC.2:ud             0x0001000F:ud                                   { NoDDChk }                     // NV12 U+V block width and height (16x2)
  33.  
  34.         // Read 1 GRF from DEST surface as the above MB has been deblocked.
  35.         //send (8) TOP_MB_UD(0)<1>      MSGHDRU         MSGSRC<8;8,1>:ud        RESP_LEN(1)+DWBRMSGDSC_RC+BI_DEST_UV   
  36.         mov (1) MSGDSC  RESP_LEN(1)+DWBRMSGDSC_RC+BI_DEST_UV:ud
  37. #endif
  38.  
  39. #if defined(_FIELD)
  40.  
  41. //    cmp.z.f0.0 (1)  NULLREGW PicTypeC:w       0:w                                                     // Get pic type flag
  42.     and.nz.f0.1 (1)  NULLREGW   BitFields:w     BotFieldFlag:w                  // Get bottom field flag
  43.         // They are used later in this file
  44.  
  45.         // Read U+V
  46.     mov (1)     MSGSRC.0:ud             ORIX_TOP:w                                              { NoDDClr }                     // Block origin
  47.     asr (1)     MSGSRC.1:ud             ORIY_TOP:w                      1:w                     { NoDDClr, NoDDChk }    // NV12 U+V block origin y = half of Y comp
  48.     mov (1)     MSGSRC.2:ud             0x0001000F:ud                                   { NoDDChk }                     // NV12 U+V block width and height (16x2)
  49.  
  50.         // Load NV12 U+V
  51.        
  52.     // Set message descriptor
  53.     // Frame picture
  54. //    (f0.0) mov (1)    MSGDSC  DWBRMSGDSC_RC+0x00010000+BI_DEST_UV:ud                  // Read 1 GRF from SRC_UV
  55. //      (f0.0) jmpi             Load_Top_UV_8x2
  56.  
  57.         // Field picture
  58.     (f0.1) mov (1)      MSGDSC  RESP_LEN(1)+DWBRMSGDSC_RC_BF+BI_DEST_UV:ud  // Read 1 GRF from SRC_Y bottom field
  59.     (-f0.1) mov (1)     MSGDSC  RESP_LEN(1)+DWBRMSGDSC_RC_TF+BI_DEST_UV:ud  // Read 1 GRF from SRC_Y top field
  60.  
  61. //Load_Top_UV_8x2:
  62.  
  63.         // Read 1 GRF from DEST surface as the above MB has been deblocked.
  64. //      send (8) PREV_MB_UD(0)<1>       MSGHDRU         MSGSRC<8;8,1>:ud        MSGDSC 
  65.  
  66. #endif
  67.  
  68.         send (8) TOP_MB_UD(0)<1>        MSGHDRU         MSGSRC<8;8,1>:ud        DAPREAD MSGDSC 
  69.                
  70. // End of load_Top_UV_8x2.asm
  71.