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_Y_16X4.asm
  10. //
  11. // Load Y 16X4 Block to PREV_MB_YD
  12. //
  13. //----------------------------------------------------------------
  14. //  Symbols Need To Be Defined Before Including This Module
  15. //
  16. //      Source Region In :Ud
  17. //      Src_YD:                 Src_Yd Base=Rxx Elementsize=4 Srcregion=Region(8,1) Type=Ud                     // 3 Grfs (2 For Y, 1 For U+V)
  18. //
  19. //      Source Region Is :Ub.  The Same Region As :Ud Region
  20. //      Src_YB:                 Src_Yb Base=Rxx Elementsize=1 Srcregion=Region(16,1) Type=Ub            // 2 Grfs
  21. //
  22. //      Binding Table Index:
  23. //      Bi_Src_Y:               Binding Table Index Of Y Surface
  24. //
  25. //      Temp Buffer:
  26. //      Buf_D:                  Buf_D Base=Rxx Elementsize=4 Srcregion=Region(8,1) Type=Ud
  27. //      Buf_B:                  Buf_B Base=Rxx Elementsize=1 Srcregion=Region(16,1) Type=Ub
  28. //
  29. //----------------------------------------------------------------
  30.  
  31. #if defined(_DEBUG)
  32.         mov             (1)             EntrySignatureC:w                       0xDDD2:w
  33. #endif
  34.  
  35. #if defined(_PROGRESSIVE)
  36.         // Read Y
  37.     mov (2)     MSGSRC.0<1>:ud  ORIX_TOP<2;2,1>:w               { NoDDClr }             // Block origin
  38.     mov (1)     MSGSRC.2<1>:ud  0x0003000F:ud                   { NoDDChk }             // Block width and height (16x4)
  39.  
  40.     mov (1)     MSGDSC  RESP_LEN(2)+DWBRMSGDSC_RC+BI_DEST_Y:ud                  // Read 2 GRFs from SRC_Y
  41. #endif
  42.  
  43. #if defined(_FIELD)
  44.  
  45. //    cmp.z.f0.0 (1)  NULLREGW  PicTypeC:w      0:w                                             // Get pic type flag
  46.     and.nz.f0.1 (1) NULLREGW    BitFields:w     BotFieldFlag:w                  // Get bottom field flag
  47.         // they are used later in this file
  48.        
  49.     mov (2)     MSGSRC.0<1>:ud  ORIX_TOP<2;2,1>:w               { NoDDClr }             // Block origin
  50.     mov (1)     MSGSRC.2<1>:ud  0x0003000F:ud                   { NoDDChk }             // Block width and height (16x4)
  51.    
  52.     // Set message descriptor
  53.  
  54.     // Frame picture
  55. //      (f0.0) mov (1)  MSGDSC  DWBRMSGDSC_RC+0x00020000+BI_DEST_Y:ud                   // Read 2 GRFs from SRC_Y
  56. //      (f0.0) jmpi             load_Y_16x4
  57.  
  58.         // Field picture
  59.     (f0.1) mov (1)      MSGDSC  RESP_LEN(2)+DWBRMSGDSC_RC_BF+BI_DEST_Y:ud  // Read 2 GRFs from SRC_Y bottom field
  60.     (-f0.1) mov (1)     MSGDSC  RESP_LEN(2)+DWBRMSGDSC_RC_TF+BI_DEST_Y:ud  // Read 2 GRFs from SRC_Y top field
  61.  
  62. //load_Y_16x4:
  63.     // Read 2 GRFs from DEST surface, as the above MB has been deblocked
  64. //    send (8) PREV_MB_YD(0)<1> MSGHDRY         MSGSRC<8;8,1>:ud        MSGDSC
  65.    
  66. #endif
  67.    
  68.     send (8) TOP_MB_YD(0)<1>    MSGHDRT         MSGSRC<8;8,1>:ud        DAPREAD MSGDSC
  69.            
  70. // End of load_Y_16x4.asm
  71.