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 <[email protected]>
---
 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

_______________________________________________
Libva mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/libva

Reply via email to