diff options
authorJason Ekstrand <>2017-06-06 17:53:26 -0700
committerAndres Gomez <>2017-06-28 20:15:03 +0300
commitd0201078d58272bc162d71bc68664e86417a7682 (patch)
parent3ec9e035011c4f295dfe8fcf54d10f740dc6643b (diff)
i965: Set step_rate = 0 for interleaved vertex buffers
Before, we weren't setting step rate so we got whatever old value happened to be lying around. This can lead to some interesting rendering errors. In particular, if you run the OpenGL ES CTS with dEQP-GLES3.functional.instanced.types.mat2x4 immediately followed by one of the dEQP-GLES3.functional.transform_feedback.* tests, the transform feedback test gets stale instancing data from the other test and fails. The only thing that is causing this to not be a problem today is that we use meta for clears and meta is setting up vertex buffers via the VBO or non-interleaved path and setting step_rate to 0 for us. When blorp depth/stencil clears are enabled, meta is no longer sitting between the two tests and the stale data starts causing noticeable problems. Cc: "17.1" <> Reviewed-by: Samuel Iglesias Gonsálvez <> (cherry picked from commit f762962f7ffd280ee1fd4280744800f73e133901)
1 files changed, 1 insertions, 0 deletions
diff --git a/src/mesa/drivers/dri/i965/brw_draw_upload.c b/src/mesa/drivers/dri/i965/brw_draw_upload.c
index b8c7cb51a67..fced0b45194 100644
--- a/src/mesa/drivers/dri/i965/brw_draw_upload.c
+++ b/src/mesa/drivers/dri/i965/brw_draw_upload.c
@@ -728,6 +728,7 @@ brw_prepare_vertices(struct brw_context *brw)
buffer, interleaved);
buffer->offset -= delta * interleaved;
buffer->size += delta * interleaved;
+ buffer->step_rate = 0;
for (i = 0; i < nr_uploads; i++) {
/* Then, just point upload[i] at upload[0]'s buffer. */