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
