Mesa (master): v3d: flush jobs writing to vertex buffers used in the current draw call
GitLab Mirror
gitlab-mirror at kemper.freedesktop.org
Fri Jun 21 06:10:44 UTC 2019
Module: Mesa
Branch: master
Commit: 4d8f82946b22396c90ca102a44de7bdebd8838d6
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=4d8f82946b22396c90ca102a44de7bdebd8838d6
Author: Iago Toral Quiroga <itoral at igalia.com>
Date: Wed Jun 19 10:28:12 2019 +0200
v3d: flush jobs writing to vertex buffers used in the current draw call
This can happen when any of our vertex buffers was written by a previous
transform feedback draw.
Fixes the following piglit tests:
spec/ext_transform_feedback/position-render-bufferbase
spec/ext_transform_feedback/position-render-bufferbase-discard
spec/ext_transform_feedback/position-render-bufferoffset
spec/ext_transform_feedback/position-render-bufferoffset-discard
spec/ext_transform_feedback/position-render-bufferrange
spec/ext_transform_feedback/position-render-bufferrange-discard
Reviewed-by: Eric Anholt <eric at anholt.net>
---
src/gallium/drivers/v3d/v3dx_draw.c | 9 +++++++++
1 file changed, 9 insertions(+)
diff --git a/src/gallium/drivers/v3d/v3dx_draw.c b/src/gallium/drivers/v3d/v3dx_draw.c
index 98f630766ca..fe07231d474 100644
--- a/src/gallium/drivers/v3d/v3dx_draw.c
+++ b/src/gallium/drivers/v3d/v3dx_draw.c
@@ -177,6 +177,15 @@ v3d_predraw_check_stage_inputs(struct pipe_context *pctx,
v3d_flush_jobs_writing_resource(v3d, view->base.resource);
}
+
+ /* Flush writes to our vertex buffers (i.e. from transform feedback) */
+ if (s == PIPE_SHADER_VERTEX) {
+ foreach_bit(i, v3d->vertexbuf.enabled_mask) {
+ struct pipe_vertex_buffer *vb = &v3d->vertexbuf.vb[i];
+
+ v3d_flush_jobs_writing_resource(v3d, vb->buffer.resource);
+ }
+ }
}
static void
More information about the mesa-commit
mailing list