Mesa (master): freedreno/a4xx: invalidate cache when vbo's change
Rob Clark
robclark at kemper.freedesktop.org
Mon Dec 1 17:03:09 UTC 2014
Module: Mesa
Branch: master
Commit: bb19f2c3c4a47c25c2680ad2d94a10f8ee5e70d7
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=bb19f2c3c4a47c25c2680ad2d94a10f8ee5e70d7
Author: Rob Clark <robclark at freedesktop.org>
Date: Mon Dec 1 11:55:36 2014 -0500
freedreno/a4xx: invalidate cache when vbo's change
Otherwise vertex shader can see stale cache data. This in particular
happens when the same vbo is updated and reused. Not sure yet if vbo's
at differing addresses but bound to same vertex buffer slot could have
issues, but seems safest to flush whenever new vertex buffers are bound.
Signed-off-by: Rob Clark <robclark at freedesktop.org>
---
src/gallium/drivers/freedreno/a4xx/fd4_emit.c | 7 +++++++
1 file changed, 7 insertions(+)
diff --git a/src/gallium/drivers/freedreno/a4xx/fd4_emit.c b/src/gallium/drivers/freedreno/a4xx/fd4_emit.c
index 3f51e50..44a824a 100644
--- a/src/gallium/drivers/freedreno/a4xx/fd4_emit.c
+++ b/src/gallium/drivers/freedreno/a4xx/fd4_emit.c
@@ -328,6 +328,13 @@ fd4_emit_vertex_bufs(struct fd_ringbuffer *ring, struct fd4_emit *emit)
OUT_RING(ring, 0x00000000); /* XXX VFD_CONTROL_2 */
OUT_RING(ring, 0x0000fc00); /* XXX VFD_CONTROL_3 */
OUT_RING(ring, 0x00000000); /* XXX VFD_CONTROL_4 */
+
+ /* cache invalidate, otherwise vertex fetch could see
+ * stale vbo contents:
+ */
+ OUT_PKT0(ring, REG_A4XX_UCHE_INVALIDATE0, 2);
+ OUT_RING(ring, 0x00000000);
+ OUT_RING(ring, 0x00000012);
}
void
More information about the mesa-commit
mailing list