VME message doesn't output the transform 8x8 flag, the shader set the right flag accordingly.
Signed-off-by: Xiang, Haihao <haihao.xi...@intel.com> Tested-by: Meng, Jia <jia.m...@intel.com> --- src/shaders/vme/inter_frame_gen8.asm | 13 +++++++++++++ src/shaders/vme/inter_frame_gen8.g8b | 9 +++++++-- src/shaders/vme/inter_frame_gen9.g9b | 9 +++++++-- src/shaders/vme/intra_frame_gen8.asm | 13 +++++++++++++ src/shaders/vme/intra_frame_gen8.g8b | 5 +++++ src/shaders/vme/intra_frame_gen9.g9b | 5 +++++ src/shaders/vme/vme8.inc | 5 +++++ 7 files changed, 55 insertions(+), 4 deletions(-) diff --git a/src/shaders/vme/inter_frame_gen8.asm b/src/shaders/vme/inter_frame_gen8.asm index 17bc412..6296aa1 100644 --- a/src/shaders/vme/inter_frame_gen8.asm +++ b/src/shaders/vme/inter_frame_gen8.asm @@ -458,6 +458,19 @@ send (8) mlen sic_vme_msg_length rlen vme_wb_length {align1}; + +/* Check whether mb type is 0 */ +and.z.f0.0 (1) null<1>:UD vme_wb.0<0,1,0>:UD W0_INTRA_MB_TYPE_MASK {align1}; +(-f0.0) jmpi (1) __write_intra_output; + +/* Check whether intra mb mode is INTRA_8x8 */ +and (1) tmp_reg2<1>:UD vme_wb.0<0,1,0>:UD W0_INTRA_MB_MODE_MASK {align1}; +cmp.z.f0.0 (1) null<1>:UD tmp_reg2<0,1,0>:UD W0_INTRA_8x8 {align1}; + +/* Set transform 8x8 flag */ +(f0.0) or (1) vme_wb.0<1>:UD vme_wb.0<0,1,0>:UD W0_TRANSFORM_8x8_FLAG {align1}; + +__write_intra_output: /* * Oword Block Write message */ diff --git a/src/shaders/vme/inter_frame_gen8.g8b b/src/shaders/vme/inter_frame_gen8.g8b index d0cc25d..ddc96fc 100644 --- a/src/shaders/vme/inter_frame_gen8.g8b +++ b/src/shaders/vme/inter_frame_gen8.g8b @@ -146,13 +146,13 @@ { 0x00000001, 0x2fa41a68, 0x00000b04, 0x00000000 }, { 0x00000001, 0x2fa81a68, 0x00000b24, 0x00000000 }, { 0x00000040, 0x2fe00008, 0x06001400, 0x00000020 }, - { 0x00000020, 0x34000000, 0x0e001400, 0x00000a20 }, + { 0x00000020, 0x34000000, 0x0e001400, 0x00000a70 }, { 0x00000001, 0x2ac01a68, 0x00000fe4, 0x00000000 }, { 0x00000001, 0x2fa01a68, 0x00000ae6, 0x00000000 }, { 0x00000001, 0x2fa41a68, 0x00000b06, 0x00000000 }, { 0x00000001, 0x2fa81a68, 0x00000b26, 0x00000000 }, { 0x00000040, 0x2fe00008, 0x06001400, 0x00000020 }, - { 0x00000020, 0x34000000, 0x0e001400, 0x000009c0 }, + { 0x00000020, 0x34000000, 0x0e001400, 0x00000a10 }, { 0x00000001, 0x2ac21a68, 0x00000fe4, 0x00000000 }, { 0x0020000c, 0x2a801a68, 0x1e450ac0, 0x00020002 }, { 0x00200040, 0x2a881a68, 0x1e450a80, 0x00030003 }, @@ -183,6 +183,11 @@ { 0x00000001, 0x244c0608, 0x00000000, 0x00800000 }, { 0x00600001, 0x28000208, 0x008d0440, 0x00000000 }, { 0x0d600031, 0x21800a08, 0x0e000800, 0x10782000 }, + { 0x01000005, 0x20000200, 0x06000180, 0x001f0000 }, + { 0x00110020, 0x34000000, 0x0e001400, 0x00000030 }, + { 0x00000005, 0x24400208, 0x06000180, 0x00000030 }, + { 0x01000010, 0x20000200, 0x06000440, 0x00000010 }, + { 0x00010006, 0x21800208, 0x06000180, 0x00008000 }, { 0x00600001, 0x28000208, 0x008d0480, 0x00000000 }, { 0x00000001, 0x28200208, 0x00000180, 0x00000000 }, { 0x00000001, 0x28240208, 0x00000190, 0x00000000 }, diff --git a/src/shaders/vme/inter_frame_gen9.g9b b/src/shaders/vme/inter_frame_gen9.g9b index b79042c..1a7376c 100644 --- a/src/shaders/vme/inter_frame_gen9.g9b +++ b/src/shaders/vme/inter_frame_gen9.g9b @@ -146,13 +146,13 @@ { 0x00000001, 0x2fa41a68, 0x00000b04, 0x00000000 }, { 0x00000001, 0x2fa81a68, 0x00000b24, 0x00000000 }, { 0x00000040, 0x2fe00008, 0x06001400, 0x00000020 }, - { 0x00000020, 0x34000000, 0x0e001400, 0x00000a20 }, + { 0x00000020, 0x34000000, 0x0e001400, 0x00000a70 }, { 0x00000001, 0x2ac01a68, 0x00000fe4, 0x00000000 }, { 0x00000001, 0x2fa01a68, 0x00000ae6, 0x00000000 }, { 0x00000001, 0x2fa41a68, 0x00000b06, 0x00000000 }, { 0x00000001, 0x2fa81a68, 0x00000b26, 0x00000000 }, { 0x00000040, 0x2fe00008, 0x06001400, 0x00000020 }, - { 0x00000020, 0x34000000, 0x0e001400, 0x000009c0 }, + { 0x00000020, 0x34000000, 0x0e001400, 0x00000a10 }, { 0x00000001, 0x2ac21a68, 0x00000fe4, 0x00000000 }, { 0x0020000c, 0x2a801a68, 0x1e450ac0, 0x00020002 }, { 0x00200040, 0x2a881a68, 0x1e450a80, 0x00030003 }, @@ -183,6 +183,11 @@ { 0x00000001, 0x244c0608, 0x00000000, 0x00800000 }, { 0x00600001, 0x28000208, 0x008d0440, 0x00000000 }, { 0x0d600031, 0x21800a08, 0x06000800, 0x10782000 }, + { 0x01000005, 0x20000200, 0x06000180, 0x001f0000 }, + { 0x00110020, 0x34000000, 0x0e001400, 0x00000030 }, + { 0x00000005, 0x24400208, 0x06000180, 0x00000030 }, + { 0x01000010, 0x20000200, 0x06000440, 0x00000010 }, + { 0x00010006, 0x21800208, 0x06000180, 0x00008000 }, { 0x00600001, 0x28000208, 0x008d0480, 0x00000000 }, { 0x00000001, 0x28200208, 0x00000180, 0x00000000 }, { 0x00000001, 0x28240208, 0x00000190, 0x00000000 }, diff --git a/src/shaders/vme/intra_frame_gen8.asm b/src/shaders/vme/intra_frame_gen8.asm index 15b260e..d43ec92 100644 --- a/src/shaders/vme/intra_frame_gen8.asm +++ b/src/shaders/vme/intra_frame_gen8.asm @@ -157,6 +157,19 @@ send (8) mlen sic_vme_msg_length rlen vme_wb_length {align1}; + +/* Check whether mb type is 0 */ +and.z.f0.0 (1) null<1>:UD vme_wb.0<0,1,0>:UD W0_INTRA_MB_TYPE_MASK {align1}; +(-f0.0) jmpi (1) __write_intra_output; + +/* Check whether intra mb mode is INTRA_8x8 */ +and (1) tmp_reg2<1>:UD vme_wb.0<0,1,0>:UD W0_INTRA_MB_MODE_MASK {align1}; +cmp.z.f0.0 (1) null<1>:UD tmp_reg2<0,1,0>:UD W0_INTRA_8x8 {align1}; + +/* Set transform 8x8 flag */ +(f0.0) or (1) vme_wb.0<1>:UD vme_wb.0<0,1,0>:UD W0_TRANSFORM_8x8_FLAG {align1}; + +__write_intra_output: /* * Oword Block Write message */ diff --git a/src/shaders/vme/intra_frame_gen8.g8b b/src/shaders/vme/intra_frame_gen8.g8b index 56c7283..a4ddf29 100644 --- a/src/shaders/vme/intra_frame_gen8.g8b +++ b/src/shaders/vme/intra_frame_gen8.g8b @@ -58,6 +58,11 @@ { 0x00000040, 0x244c0208, 0x0600044c, 0x00800000 }, { 0x00600001, 0x28000208, 0x008d0440, 0x00000000 }, { 0x0d600031, 0x21800a08, 0x0e000800, 0x10782000 }, + { 0x01000005, 0x20000200, 0x06000180, 0x001f0000 }, + { 0x00110020, 0x34000000, 0x0e001400, 0x00000030 }, + { 0x00000005, 0x24400208, 0x06000180, 0x00000030 }, + { 0x01000010, 0x20000200, 0x06000440, 0x00000010 }, + { 0x00010006, 0x21800208, 0x06000180, 0x00008000 }, { 0x00600001, 0x28000208, 0x008d0480, 0x00000000 }, { 0x00000001, 0x28200208, 0x00000180, 0x00000000 }, { 0x00000001, 0x28240208, 0x00000190, 0x00000000 }, diff --git a/src/shaders/vme/intra_frame_gen9.g9b b/src/shaders/vme/intra_frame_gen9.g9b index 63d7455..2d92cf4 100644 --- a/src/shaders/vme/intra_frame_gen9.g9b +++ b/src/shaders/vme/intra_frame_gen9.g9b @@ -58,6 +58,11 @@ { 0x00000040, 0x244c0208, 0x0600044c, 0x00800000 }, { 0x00600001, 0x28000208, 0x008d0440, 0x00000000 }, { 0x0d600031, 0x21800a08, 0x06000800, 0x10782000 }, + { 0x01000005, 0x20000200, 0x06000180, 0x001f0000 }, + { 0x00110020, 0x34000000, 0x0e001400, 0x00000030 }, + { 0x00000005, 0x24400208, 0x06000180, 0x00000030 }, + { 0x01000010, 0x20000200, 0x06000440, 0x00000010 }, + { 0x00010006, 0x21800208, 0x06000180, 0x00008000 }, { 0x00600001, 0x28000208, 0x008d0480, 0x00000000 }, { 0x00000001, 0x28200208, 0x00000180, 0x00000000 }, { 0x00000001, 0x28240208, 0x00000190, 0x00000000 }, diff --git a/src/shaders/vme/vme8.inc b/src/shaders/vme/vme8.inc index 5f05ef2..c2bdaab 100644 --- a/src/shaders/vme/vme8.inc +++ b/src/shaders/vme/vme8.inc @@ -129,6 +129,11 @@ define(`OBW_WRITE_COMMIT_CATEGORY', `0') /* category on Ivybridge */ define(`OBW_HEADER_PRESENT', `1') +define(`W0_INTRA_MB_TYPE_MASK', `0x1F0000:UD') +define(`W0_INTRA_MB_MODE_MASK', `0x30:UD') +define(`W0_INTRA_8x8', `0x10:UD') +define(`W0_TRANSFORM_8x8_FLAG', `0x8000:UD') + /* GRF registers * r0 header * r1~r4 constant buffer (reserved) -- 1.9.1 _______________________________________________ Libva mailing list Libva@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libva