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

Reply via email to