summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZhao Yakui <yakui.zhao@intel.com>2013-08-12 15:13:23 +0800
committerXiang, Haihao <haihao.xiang@intel.com>2013-09-06 15:33:05 +0800
commit6d6c227ca19ffaa7454cc748b5864f2024974b33 (patch)
tree20b3438589dabf8ba83a8914ae8613b326f5b7c6
parent19c32cefd707c0b547be5da5123160eaf22411bb (diff)
Configure the cost-center of MPEG2 VME shader on haswell
This is derived from the neighbour macroblock based on MPEG2 spec. Signed-off-by: Zhao Yakui <yakui.zhao@intel.com> (cherry picked from commit a51860aba2d2713a9c8c817c430ffa93abd5145a)
-rw-r--r--src/shaders/vme/mpeg2_inter_haswell.asm14
-rw-r--r--src/shaders/vme/mpeg2_inter_haswell.g75b13
-rw-r--r--src/shaders/vme/vme75_mpeg2.inc2
3 files changed, 18 insertions, 11 deletions
diff --git a/src/shaders/vme/mpeg2_inter_haswell.asm b/src/shaders/vme/mpeg2_inter_haswell.asm
index bd41a90..cc9efa4 100644
--- a/src/shaders/vme/mpeg2_inter_haswell.asm
+++ b/src/shaders/vme/mpeg2_inter_haswell.asm
@@ -39,15 +39,16 @@ shl (2) pic_ref.0<1>:uw r4.24<2,2,1>:uw 4:uw {align1};
mov (2) pic_ref.16<1>:uw r4.20<2,2,1>:uw {align1};
mov (8) mb_mvp_ref.0<1>:ud 0:ud {align1};
mov (8) mb_ref_win.0<1>:ud 0:ud {align1};
+mov (8) mba_result.0<1>:ud 0x0:ud {align1};
+mov (8) mbb_result.0<1>:ud 0x0:ud {align1};
+mov (8) mbc_result.0<1>:ud 0x0:ud {align1};
+
and.z.f0.0 (1) null:uw mb_hwdep<0,1,0>:uw 0x04:uw {align1};
(f0.0) jmpi (1) __mb_hwdep_end;
/* read back the data for MB A */
/* the layout of MB result is: rx.0(Available). rx.4(MVa), rX.8(MVb), rX.16(Pred_L0 flag),
* rX.18 (Pred_L1 flag), rX.20(Forward reference ID), rX.22(Backwared reference ID)
*/
-mov (8) mba_result.0<1>:ud 0x0:ud {align1};
-mov (8) mbb_result.0<1>:ud 0x0:ud {align1};
-mov (8) mbc_result.0<1>:ud 0x0:ud {align1};
mba_start:
mov (8) mb_msg0.0<1>:ud 0:ud {align1};
and.z.f0.0 (1) null:uw input_mb_intra_ub<0,1,0>:ub INTRA_PRED_AVAIL_FLAG_AE:uw {align1};
@@ -330,6 +331,8 @@ mov (1) mb_mvp_ref.2<1>:w RET_ARG<0,1,0>:w {align1};
__mb_hwdep_end:
+mov (2) mv_cc_ref.0<1>:w mba_result.4<2,2,1>:w {align1};
+
/* Calibrate the ref window for MPEG2 */
mov (1) vme_m0.0<1>:W -16:W {align1};
mov (1) vme_m0.2<1>:W -12:W {align1};
@@ -460,8 +463,9 @@ mov (1) vme_m1.0<1>:UD ADAPTIVE_SEARCH_ENABLE:ud {align1} ;
mov (1) vme_m1.4<1>:UB r4.28<0,1,0>:UB {align1};
mov (1) vme_m1.8<1>:UD START_CENTER + SEARCH_PATH_LEN:UD {align1};
/* Set the MV cost center */
-mov (1) vme_m1.16<1>:ud 0:ud {align1};
-mov (1) vme_m1.20<1>:ud 0:ud {align1};
+mov (1) vme_m1.16<1>:ud mv_cc_ref.0<0,1,0>:ud {align1};
+mov (1) vme_m1.20<1>:ud mv_cc_ref.0<0,1,0>:ud {align1};
+
mov (8) vme_msg_1.0<1>:UD vme_m1.0<8,8,1>:UD {align1};
mov (8) vme_msg_2<1>:UD vme_m2.0<8,8,1>:UD {align1};
diff --git a/src/shaders/vme/mpeg2_inter_haswell.g75b b/src/shaders/vme/mpeg2_inter_haswell.g75b
index cdaeb4c..277f116 100644
--- a/src/shaders/vme/mpeg2_inter_haswell.g75b
+++ b/src/shaders/vme/mpeg2_inter_haswell.g75b
@@ -12,11 +12,11 @@
{ 0x00200001, 0x2a500129, 0x00450094, 0x00000000 },
{ 0x00600001, 0x2ac00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x2a800061, 0x00000000, 0x00000000 },
- { 0x01000005, 0x20002d28, 0x000000a6, 0x00040004 },
- { 0x00010020, 0x34001c00, 0x00001400, 0x00000740 },
{ 0x00600001, 0x2ae00061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x2b000061, 0x00000000, 0x00000000 },
{ 0x00600001, 0x2b200061, 0x00000000, 0x00000000 },
+ { 0x01000005, 0x20002d28, 0x000000a6, 0x00040004 },
+ { 0x00010020, 0x34001c00, 0x00001400, 0x00000710 },
{ 0x00600001, 0x2b400061, 0x00000000, 0x00000000 },
{ 0x01000005, 0x20002e28, 0x000000a5, 0x00600060 },
{ 0x00210001, 0x2af401ed, 0x00000000, 0xffffffff },
@@ -122,14 +122,15 @@
{ 0x00000001, 0x2fa401ad, 0x00000b04, 0x00000000 },
{ 0x00000001, 0x2fa801ad, 0x00000b24, 0x00000000 },
{ 0x00000040, 0x2fe00c01, 0x00001400, 0x00000020 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x00000720 },
+ { 0x00000020, 0x34001c00, 0x00001400, 0x00000730 },
{ 0x00000001, 0x2ac001ad, 0x00000fe4, 0x00000000 },
{ 0x00000001, 0x2fa001ad, 0x00000ae6, 0x00000000 },
{ 0x00000001, 0x2fa401ad, 0x00000b06, 0x00000000 },
{ 0x00000001, 0x2fa801ad, 0x00000b26, 0x00000000 },
{ 0x00000040, 0x2fe00c01, 0x00001400, 0x00000020 },
- { 0x00000020, 0x34001c00, 0x00001400, 0x000006c0 },
+ { 0x00000020, 0x34001c00, 0x00001400, 0x000006d0 },
{ 0x00000001, 0x2ac201ad, 0x00000fe4, 0x00000000 },
+ { 0x00200001, 0x2a2001ad, 0x00450ae4, 0x00000000 },
{ 0x00000001, 0x244001ed, 0x00000000, 0xfff0fff0 },
{ 0x00000001, 0x244201ed, 0x00000000, 0xfff4fff4 },
{ 0x00000001, 0x2fa00021, 0x00000440, 0x00000000 },
@@ -180,8 +181,8 @@
{ 0x00000001, 0x24600061, 0x00000000, 0x00000002 },
{ 0x00000001, 0x24640231, 0x0000009c, 0x00000000 },
{ 0x00000001, 0x24680061, 0x00000000, 0x30003030 },
- { 0x00000001, 0x24700061, 0x00000000, 0x00000000 },
- { 0x00000001, 0x24740061, 0x00000000, 0x00000000 },
+ { 0x00000001, 0x24700021, 0x00000a20, 0x00000000 },
+ { 0x00000001, 0x24740021, 0x00000a20, 0x00000000 },
{ 0x00600001, 0x28200021, 0x008d0460, 0x00000000 },
{ 0x00600001, 0x28400021, 0x008d0560, 0x00000000 },
{ 0x00000001, 0x28600061, 0x00000000, 0x01010101 },
diff --git a/src/shaders/vme/vme75_mpeg2.inc b/src/shaders/vme/vme75_mpeg2.inc
index c8e42cc..b297a49 100644
--- a/src/shaders/vme/vme75_mpeg2.inc
+++ b/src/shaders/vme/vme75_mpeg2.inc
@@ -19,3 +19,5 @@ define(`INTER_PART_MASK', `0x7e000000')
define(`mpeg2_ref', `r83')
define(`pic_ref', `r82')
define(`INTRA16_DC_PRED', `0xBB')
+/* Cost center ref */
+define(`mv_cc_ref', `r81')