define(`OB_HEADER_PRESENT', `1')
define(`INTER_VME_OUTPUT_IN_BYTES', `160')
+define(`INTER_VME_OUTPUT_IN_OWS', `10')
+define(`INTER_VME_OUTPUT_MV_IN_OWS', `8')
define(`MFC_AVC_PAK_OBJECT_INTRA_DW0', `0x71490009:UD')
define(`MFC_AVC_PAK_OBJECT_INTRA_DW3', `0x000e0000:UD') /* CbpDC (1 << 19 | 1 << 18 | 1 << 17) */
define(`MFC_AVC_PAK_OBJECT_INTER_DW0', `MFC_AVC_PAK_OBJECT_INTRA_DW0')
define(`MFC_AVC_PAK_OBJECT_INTER_DW1', `0x20:UD') /* 32 MVs */
define(`MFC_AVC_PAK_OBJECT_INTER_DW2', `INTER_VME_OUTPUT_IN_BYTES:UD') /* offset, in bytes */
-define(`MFC_AVC_PAK_OBJECT_INTER_DW3', `0x014e0120:UD') /*
+define(`MFC_AVC_PAK_OBJECT_INTER_DW3', `0x014e0000:UD') /*
* (1 << 24) | PackedMvNum, Debug
* (4 << 20) | 8 MV, SNB don't use it
* (1 << 19) | CbpDcY
define(`tmp_vme_output', `tmp_reg0')
define(`tmp_slice_header', `tmp_reg1')
define(`tmp_mfc_batchbuffer', `tmp_reg2')
-
+define(`tmp_offset', `tmp_reg7')
/*
* GRF 16~23 write back for Oword Block Read message
*/
define(`ob_read_wb_len_slice_header', `1')
define(`ob_read_wb_len_vme_intra', `1')
-define(`ob_read_wb_len_vme_inter', `4')
+define(`ob_read_wb_len_vme_inter', `2')
#ifdef DEV_SNB
* Xiang Haihao <haihao.xiang@intel.com>
*/
-__PAK_OBJECT:
+__PAK_OBJECT:
+ mul (1) tmp_offset.0<1>:ud width_in_mb<0,1,0>:uw mb_y<0,1,0>:ub {align1};
+ add (1) tmp_offset.0<1>:ud tmp_offset.0<0,1,0>:ud mb_x<0,1,0>:ub {align1};
+ /*
+ * The layout of VME output
+ * ++++++++++++++++++++++++++++++++++++++++++++++
+ * | MV(128bytes) | other info (32bytes) |
+ * ++++++++++++++++++++++++++++++++++++++++++++++
+ */
+ mul (1) tmp_vme_output.8<1>:ud tmp_offset.0<0,1,0>:ud INTER_VME_OUTPUT_IN_OWS:ud {align1} ; /* point to output buffer */
+ add (1) tmp_vme_output.8<1>:ud tmp_vme_output.8<0,1,0>:ud INTER_VME_OUTPUT_MV_IN_OWS:uw {align1}; /* point to other info */
+
mov (16) pak_object_ud<1>:ud 0x0:ud {align1} ;
/* DW0 */
mov (1) pak_object0_ud<1>:ud MFC_AVC_PAK_OBJECT_INTER_DW0 ;
/* DW1 */
mov (1) pak_object1_ud<1>:ud MFC_AVC_PAK_OBJECT_INTER_DW1 ;
/* DW2 */
- mul (1) pak_object2_ud<1>:ud width_in_mb<0,1,0>:uw mb_y<0,1,0>:ub {align1};
- add (1) pak_object2_ud<1>:ud pak_object2_ud<0,1,0>:ud mb_x<0,1,0>:ub {align1};
- mul (1) pak_object2_ud<1>:ud pak_object2_ud<0,1,0>:ud INTER_VME_OUTPUT_IN_BYTES:ud {align1} ;
- /* DW3 */
- mov (1) pak_object3_ud<1>:ud MFC_AVC_PAK_OBJECT_INTER_DW3 ;
+ mul (1) pak_object2_ud<1>:ud tmp_offset.0<0,1,0>:ud INTER_VME_OUTPUT_IN_BYTES:ud {align1} ;
+
/* DW5 */
mov (1) pak_object5_ud<1>:ud MFC_AVC_PAK_OBJECT_INTRA_DW5 ;
and.z.f0.1 (1) null<1>:uw flags<0,1,0>:uw FLAG_MASK_LAST_OBJECT {align1};
__PAK_OBJECT_LOOP:
+ mov (8) msg_reg0.0<1>:ud tmp_vme_output<8,8,1>:ud {align1} ;
+
+send (16)
+ msg_ind
+ ob_read_wb
+ null
+ data_port(
+ OB_CACHE_TYPE,
+ OB_READ,
+ OB_CONTROL_2,
+ BIND_IDX_VME_OUTPUT,
+ OB_WRITE_COMMIT_CATEGORY,
+ OB_HEADER_PRESENT
+ )
+ mlen 1
+ rlen ob_read_wb_len_vme_inter
+ {align1};
+
+ /* DW3 */
+ and (1) pak_object3_ud<1>:ud ob_read_wb0.0<0,1,0>:ud 0xFFFF {align1} ;
+ add (1) pak_object3_ud<1>:ud pak_object3_ud<0,1,0>:ud MFC_AVC_PAK_OBJECT_INTER_DW3 {align1} ;
+
/* DW4 */
add (1) pak_object4_ud<1>:ud mb_xy<0,1,0>:uw MFC_AVC_PAK_OBJECT_INTER_DW4 {align1} ;
add (1) mb_x<1>:ub mb_x<0,1,0>:ub 1:uw {align1};
(-f0.0)mov (1) pak_object6_ud<1>:ud 0x0:ud {align1} ;
add (1) pak_object6_ud<1>:ud pak_object6_ud<0,1,0>:ud qp<0,1,0>:ub {align1} ;
+ /* DW7 */
+ mov (1) pak_object7_ud<1>:ud ob_read_wb0.4<0,1,0>:ud {align1} ;
+
mov (8) msg_reg0.0<1>:ud tmp_mfc_batchbuffer<8,8,1>:ud {align1} ;
mov (8) msg_reg1.0<1>:ud pak_object_ud<8,8,1>:ud {align1} ;
mov (8) msg_reg2.0<1>:ud pak_object8_ud<8,8,1>:ud {align1} ;
+
+ /* point to the next other info block */
+ add (1) tmp_vme_output.8<1>:ud tmp_vme_output.8<0,1,0>:ud INTER_VME_OUTPUT_IN_OWS:ud {align1} ;
send (16)
msg_ind
{ 0x00000040, 0x21480c21, 0x00000148, 0x00000001 },
{ 0x01000040, 0x20aa3dad, 0x000000aa, 0xffffffff },
{ 0x00110020, 0x34001c00, 0x00001400, 0xffffffee },
+ { 0x00000041, 0x21e04521, 0x000000b4, 0x000000b1 },
+ { 0x00000040, 0x21e04421, 0x000001e0, 0x000000b0 },
+ { 0x00000041, 0x21080c21, 0x000001e0, 0x0000000a },
+ { 0x00000040, 0x21082c21, 0x00000108, 0x00080008 },
{ 0x00800001, 0x23400061, 0x00000000, 0x00000000 },
{ 0x00000001, 0x23400061, 0x00000000, 0x71490009 },
{ 0x00000001, 0x23440061, 0x00000000, 0x00000020 },
- { 0x00000041, 0x23484521, 0x000000b4, 0x000000b1 },
- { 0x00000040, 0x23484421, 0x00000348, 0x000000b0 },
- { 0x00000041, 0x23480c21, 0x00000348, 0x000000a0 },
- { 0x00000001, 0x234c0061, 0x00000000, 0x014e0120 },
+ { 0x00000041, 0x23480c21, 0x000001e0, 0x000000a0 },
{ 0x00000001, 0x23540061, 0x00000000, 0x000f000f },
{ 0x01000005, 0x20002d28, 0x020000ac, 0x00020002 },
+ { 0x00600001, 0x20000022, 0x008d0100, 0x00000000 },
+ { 0x05800031, 0x22001cc9, 0x00000000, 0x022a0200 },
+ { 0x00000005, 0x234c1c21, 0x00000200, 0x0000ffff },
+ { 0x00000040, 0x234c0c21, 0x0000034c, 0x014e0000 },
{ 0x00000040, 0x23500d21, 0x000000b0, 0xffff0000 },
{ 0x00000040, 0x20b02e31, 0x000000b0, 0x00010001 },
{ 0x01000010, 0x20004528, 0x000000b4, 0x000000b0 },
{ 0x01000010, 0x20002d28, 0x000000ae, 0x00010001 },
{ 0x00110001, 0x23580061, 0x00000000, 0x00000000 },
{ 0x00000040, 0x23584421, 0x00000358, 0x000000b6 },
+ { 0x00000001, 0x235c0021, 0x00000204, 0x00000000 },
{ 0x00600001, 0x20000022, 0x008d0140, 0x00000000 },
{ 0x00600001, 0x20200022, 0x008d0340, 0x00000000 },
{ 0x00600001, 0x20400022, 0x008d0360, 0x00000000 },
+ { 0x00000040, 0x21080c21, 0x00000108, 0x0000000a },
{ 0x05800031, 0x23001cdd, 0x00000000, 0x061b0302 },
{ 0x00000040, 0x21480c21, 0x00000148, 0x00000004 },
{ 0x00000040, 0x23480c21, 0x00000348, 0x000000a0 },
{ 0x01000040, 0x20ae3dad, 0x000000ae, 0xffffffff },
- { 0x00110020, 0x34001c00, 0x00001400, 0xffffffdc },
+ { 0x00110020, 0x34001c00, 0x00001400, 0xffffffd0 },
{ 0x00010020, 0x34001c00, 0x02001400, 0x0000001e },
{ 0x00600001, 0x20000022, 0x008d0120, 0x00000000 },
{ 0x05800031, 0x22001cc9, 0x00000000, 0x021a0001 },
{ 0x00000040, 0x21480c21, 0x00000148, 0x00000001 },
{ 0x01000040, 0x20aa3dad, 0x000000aa, 0xffffffff },
{ 0x00110020, 0x34001c00, 0x00001400, 0xffffffee },
+ { 0x00000041, 0x21e04521, 0x000000b4, 0x000000b1 },
+ { 0x00000040, 0x21e04421, 0x000001e0, 0x000000b0 },
+ { 0x00000041, 0x21080c21, 0x000001e0, 0x0000000a },
+ { 0x00000040, 0x21082c21, 0x00000108, 0x00080008 },
{ 0x00800001, 0x23400061, 0x00000000, 0x00000000 },
{ 0x00000001, 0x23400061, 0x00000000, 0x71490009 },
{ 0x00000001, 0x23440061, 0x00000000, 0x00000020 },
- { 0x00000041, 0x23484521, 0x000000b4, 0x000000b1 },
- { 0x00000040, 0x23484421, 0x00000348, 0x000000b0 },
- { 0x00000041, 0x23480c21, 0x00000348, 0x000000a0 },
- { 0x00000001, 0x234c0061, 0x00000000, 0x014e0120 },
+ { 0x00000041, 0x23480c21, 0x000001e0, 0x000000a0 },
{ 0x00000001, 0x23540061, 0x00000000, 0x000f000f },
{ 0x01000005, 0x20002d28, 0x020000ac, 0x00020002 },
+ { 0x00600001, 0x28000021, 0x008d0100, 0x00000000 },
+ { 0x0a800031, 0x22001ca9, 0x00000800, 0x02280200 },
+ { 0x00000005, 0x234c1c21, 0x00000200, 0x0000ffff },
+ { 0x00000040, 0x234c0c21, 0x0000034c, 0x014e0000 },
{ 0x00000040, 0x23500d21, 0x000000b0, 0xffff0000 },
{ 0x00000040, 0x20b02e31, 0x000000b0, 0x00010001 },
{ 0x01000010, 0x20004528, 0x000000b4, 0x000000b0 },
{ 0x01000010, 0x20002d28, 0x000000ae, 0x00010001 },
{ 0x00110001, 0x23580061, 0x00000000, 0x00000000 },
{ 0x00000040, 0x23584421, 0x00000358, 0x000000b6 },
+ { 0x00000001, 0x235c0021, 0x00000204, 0x00000000 },
{ 0x00600001, 0x28000021, 0x008d0140, 0x00000000 },
{ 0x00600001, 0x28200021, 0x008d0340, 0x00000000 },
{ 0x00600001, 0x28400021, 0x008d0360, 0x00000000 },
+ { 0x00000040, 0x21080c21, 0x00000108, 0x0000000a },
{ 0x0a800031, 0x20001cac, 0x00000800, 0x060a0302 },
{ 0x00000040, 0x21480c21, 0x00000148, 0x00000004 },
{ 0x00000040, 0x23480c21, 0x00000348, 0x000000a0 },
{ 0x01000040, 0x20ae3dad, 0x000000ae, 0xffffffff },
- { 0x00110020, 0x34001c00, 0x00001400, 0xffffffdc },
+ { 0x00110020, 0x34001c00, 0x00001400, 0xffffffd0 },
{ 0x00010020, 0x34001c00, 0x02001400, 0x0000001e },
{ 0x00600001, 0x28000021, 0x008d0120, 0x00000000 },
{ 0x0a800031, 0x22001ca9, 0x00000800, 0x02180001 },