<div dir="ltr">This seems very much over-the-top.  It would be better to either find the specific bug or else just allocate the BOs we use for states as snooped.  See also the anv_gem_set_caching call in genX_query.c.<br></div><br><div class="gmail_quote"><div dir="ltr">On Fri, Dec 7, 2018 at 6:06 PM Rafael Antognolli <<a href="mailto:rafael.antognolli@intel.com">rafael.antognolli@intel.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">TODO: This is just flushing the entire dynamic states on every execbuf.<br>
Maybe it's too much. However, in theory we should be already flushing<br>
the states as needed, but I think we didn't hit any bug due to the<br>
coherence implied by userptr.<br>
---<br>
 src/intel/vulkan/anv_batch_chain.c | 4 ++++<br>
 1 file changed, 4 insertions(+)<br>
<br>
diff --git a/src/intel/vulkan/anv_batch_chain.c b/src/intel/vulkan/anv_batch_chain.c<br>
index 65df28ccb91..99009679435 100644<br>
--- a/src/intel/vulkan/anv_batch_chain.c<br>
+++ b/src/intel/vulkan/anv_batch_chain.c<br>
@@ -1366,6 +1366,10 @@ anv_reloc_list_add_dep(struct anv_cmd_buffer *cmd_buffer,<br>
<br>
    anv_block_pool_foreach_bo(bo_list, iter, bo) {<br>
       _mesa_set_add(relocs->deps, bo);<br>
+      if (!cmd_buffer->device->info.has_llc) {<br>
+         for (uint32_t i = 0; i < bo->size; i += CACHELINE_SIZE)<br>
+            __builtin_ia32_clflush(bo->map + i);<br>
+      }<br>
    }<br>
 }<br>
<br>
-- <br>
2.17.1<br>
<br>
_______________________________________________<br>
mesa-dev mailing list<br>
<a href="mailto:mesa-dev@lists.freedesktop.org" target="_blank">mesa-dev@lists.freedesktop.org</a><br>
<a href="https://lists.freedesktop.org/mailman/listinfo/mesa-dev" rel="noreferrer" target="_blank">https://lists.freedesktop.org/mailman/listinfo/mesa-dev</a><br>
</blockquote></div>