[Libva] [PATCH] i965 render: Explicitly disable instancing for vertex elements on Gen8+

Sean V Kelley seanvk at posteo.de
Fri Jan 9 13:39:36 PST 2015


From: Kenneth Graunke <kenneth at whitecape.org>

We really should guarantee that vertex elements non-instanced,
especially since we don't use our own hardware context - other
programs can change this on us.

Signed-off-by: Kenneth Graunke <kenneth at whitecape.org>
Acked-by: Sean V Kelley <seanvk at posteo.de>
---
 src/gen8_render.c  | 8 ++++++++
 src/i965_defines.h | 3 +++
 2 files changed, 11 insertions(+)

diff --git a/src/gen8_render.c b/src/gen8_render.c
index b7494a1..8a8012d 100644
--- a/src/gen8_render.c
+++ b/src/gen8_render.c
@@ -950,6 +950,7 @@ gen8_emit_vertex_element_state(VADriverContextP ctx)
 {
     struct i965_driver_data *i965 = i965_driver_data(ctx);
     struct intel_batchbuffer *batch = i965->batch;
+    int i;
 
     /*
      * The VUE layout
@@ -993,6 +994,13 @@ gen8_emit_vertex_element_state(VADriverContextP ctx)
               (I965_VFCOMPONENT_STORE_SRC << VE1_VFCOMPONENT_1_SHIFT) |
               (I965_VFCOMPONENT_STORE_1_FLT << VE1_VFCOMPONENT_2_SHIFT) |
               (I965_VFCOMPONENT_STORE_1_FLT << VE1_VFCOMPONENT_3_SHIFT));
+
+    /* Disable instancing for all vertex elements. */
+    for (i = 0; i < 3; i++) {
+	OUT_BATCH(batch, GEN8_3DSTATE_VF_INSTANCING | (3 - 2));
+	OUT_BATCH(batch, i);
+	OUT_BATCH(batch, 0);
+    }
 }
 
 static void
diff --git a/src/i965_defines.h b/src/i965_defines.h
index 33829db..727abd6 100755
--- a/src/i965_defines.h
+++ b/src/i965_defines.h
@@ -327,6 +327,9 @@
 #define GEN7_3DSTATE_SAMPLER_STATE_POINTERS_HS          CMD(3, 0, 0x2c)
 #define GEN7_3DSTATE_SAMPLER_STATE_POINTERS_DS          CMD(3, 0, 0x2d)
 
+#define GEN7_3DSTATE_VF                                 CMD(3, 0, 0x0c)
+#define GEN8_3DSTATE_VF_INSTANCING                      CMD(3, 0, 0x49)
+
 #define MFX(pipeline, op, sub_opa, sub_opb)     \
     (3 << 29 |                                  \
      (pipeline) << 27 |                         \
-- 
2.1.4



More information about the Libva mailing list