Mesa (main): iris: Emit flushes for push constant source buffers

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Wed Apr 13 09:39:36 UTC 2022


Module: Mesa
Branch: main
Commit: 1c8b4940ebf795a2c41b901ef722a6182bc94eda
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=1c8b4940ebf795a2c41b901ef722a6182bc94eda

Author: Kenneth Graunke <kenneth at whitecape.org>
Date:   Fri Mar  4 03:47:06 2022 -0800

iris: Emit flushes for push constant source buffers

Push constant loading is not coherent with L3 according to the document
that describes the hardware change for the vertex buffer L3 Bypass
Disable field.

If we've updated a push constant buffer with say, a blorp_buffer_copy,
we may need to flush both the render cache and the tile cache.

Reviewed-by: Francisco Jerez <currojerez at riseup.net>
Reviewed-by: Rohan Garg <rohan.garg at intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/15275>

---

 src/gallium/drivers/iris/iris_state.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/src/gallium/drivers/iris/iris_state.c b/src/gallium/drivers/iris/iris_state.c
index 86266add319..c52f927976f 100644
--- a/src/gallium/drivers/iris/iris_state.c
+++ b/src/gallium/drivers/iris/iris_state.c
@@ -5617,6 +5617,9 @@ setup_constant_buffers(struct iris_context *ice,
 
       assert(cbuf->buffer_offset % 32 == 0);
 
+      if (res)
+         iris_emit_buffer_barrier_for(batch, res->bo, IRIS_DOMAIN_OTHER_READ);
+
       push_bos->buffers[n].length = range->length;
       push_bos->buffers[n].addr =
          res ? ro_bo(res->bo, range->start * 32 + cbuf->buffer_offset)



More information about the mesa-commit mailing list