[Libva] [libva][libva-intel-driver PATCH] Use VMask instead of DMask in 3DSTATE_PS on GEN8+

Xiang, Haihao haihao.xiang at intel.com
Mon Feb 2 00:16:55 PST 2015


Mesa uses VMask instead of DMask in 3DSTATE_PS.
  "Initialize the execution mask with VMask.  Otherwise, derivatives are
  incorrect for subspans where some of the pixels are unlit.  We believe
  the bit just didn't take effect in previous generations."

To avoid potential issue, use VMask in libva too.

Signed-off-by: Xiang, Haihao <haihao.xiang at intel.com>
---
 src/gen8_render.c | 3 ++-
 src/gen9_render.c | 3 ++-
 2 files changed, 4 insertions(+), 2 deletions(-)

diff --git a/src/gen8_render.c b/src/gen8_render.c
index c01d269..45d55ea 100644
--- a/src/gen8_render.c
+++ b/src/gen8_render.c
@@ -1451,7 +1451,8 @@ gen8_emit_wm_state(VADriverContextP ctx, int kernel)
     /* DW3. PS shader flag .Binding table cnt/sample cnt */
     OUT_BATCH(batch,
               (1 << GEN7_PS_SAMPLER_COUNT_SHIFT) |
-              (5 << GEN7_PS_BINDING_TABLE_ENTRY_COUNT_SHIFT));
+              (5 << GEN7_PS_BINDING_TABLE_ENTRY_COUNT_SHIFT) |
+              GEN7_PS_VECTOR_MASK_ENABLE);
     /* DW4-5. Scatch space */
     OUT_BATCH(batch, 0); /* scratch space base offset */
     OUT_BATCH(batch, 0);
diff --git a/src/gen9_render.c b/src/gen9_render.c
index ee7a4db..fa48243 100644
--- a/src/gen9_render.c
+++ b/src/gen9_render.c
@@ -1460,7 +1460,8 @@ gen9_emit_wm_state(VADriverContextP ctx, int kernel)
     /* DW3. PS shader flag .Binding table cnt/sample cnt */
     OUT_BATCH(batch,
               (1 << GEN7_PS_SAMPLER_COUNT_SHIFT) |
-              (5 << GEN7_PS_BINDING_TABLE_ENTRY_COUNT_SHIFT));
+              (5 << GEN7_PS_BINDING_TABLE_ENTRY_COUNT_SHIFT) |
+              GEN7_PS_VECTOR_MASK_ENABLE);
     /* DW4-5. Scatch space */
     OUT_BATCH(batch, 0); /* scratch space base offset */
     OUT_BATCH(batch, 0);
-- 
1.9.1



More information about the Libva mailing list