i965: Set Address Modify Enable in VERTEX_BUFFER on Ivybridge.
authorKenneth Graunke <kenneth@whitecape.org>
Tue, 19 Apr 2011 22:38:10 +0000 (15:38 -0700)
committerKenneth Graunke <kenneth@whitecape.org>
Wed, 18 May 2011 06:33:01 +0000 (23:33 -0700)
Otherwise, Ivybridge seems to ignore the newly supplied data, giving us
rubbish for vertices.

Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Eric Anholt <eric@anholt.net>
src/mesa/drivers/dri/i965/brw_defines.h
src/mesa/drivers/dri/i965/brw_draw_upload.c

index 9f1234446eba8154d50c683831a8201863382f83..5eb7892bb081371f77f6286fba9f899dbb8acea8 100644 (file)
 # define BRW_VB0_ACCESS_INSTANCEDATA   (1 << 26)
 # define GEN6_VB0_ACCESS_VERTEXDATA    (0 << 20)
 # define GEN6_VB0_ACCESS_INSTANCEDATA  (1 << 20)
+# define GEN7_VB0_ADDRESS_MODIFYENABLE  (1 << 14)
 # define BRW_VB0_PITCH_SHIFT           0
 
 #define CMD_VERTEX_ELEMENT            0x7809
index 9389eb6733f29dcd5a48eb02321b3dc0a72bfed1..3cc3372048664788ac4809be295f3ae0d0df62a6 100644 (file)
@@ -570,6 +570,9 @@ static void brw_emit_vertices(struct brw_context *brw)
            dw0 = BRW_VB0_ACCESS_VERTEXDATA | (i << BRW_VB0_INDEX_SHIFT);
         }
 
+        if (intel->gen >= 7)
+           dw0 |= GEN7_VB0_ADDRESS_MODIFYENABLE;
+
         OUT_BATCH(dw0 | (buffer->stride << BRW_VB0_PITCH_SHIFT));
         OUT_RELOC(buffer->bo, I915_GEM_DOMAIN_VERTEX, 0, buffer->offset);
         if (intel->gen >= 5) {