<div dir="ltr">Nope<br></div><div class="gmail_extra"><br><div class="gmail_quote">On Tue, Jan 9, 2018 at 9:22 AM, Alex Smith <span dir="ltr"><<a href="mailto:asmith@feralinteractive.com" target="_blank">asmith@feralinteractive.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">Thanks Jason. I take it you didn't find any other state that needed resetting then?<span class="HOEnZb"><font color="#888888"><div><br></div><div>Alex</div></font></span></div><div class="HOEnZb"><div class="h5"><div class="gmail_extra"><br><div class="gmail_quote">On 9 January 2018 at 16:49, Jason Ekstrand <span dir="ltr"><<a href="mailto:jason@jlekstrand.net" target="_blank">jason@jlekstrand.net</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">From: Alex Smith <<a href="mailto:asmith@feralinteractive.com" target="_blank">asmith@feralinteractive.com</a>><br>
<br>
After executing a secondary command buffer, we need to update certain<br>
state on the primary command buffer to reflect changes by the secondary.<br>
Otherwise subsequent commands may not have the correct state set.<br>
<br>
This fixes various issues (rendering errors, GPU hangs) seen after<br>
executing secondary command buffers in some cases.<br>
<br>
v2 (Jason Ekstrand):<br>
 - Reset to invalid values instead of pulling from the secondary<br>
 - Change the comment to be more descriptive<br>
<br>
Signed-off-by: Alex Smith <<a href="mailto:asmith@feralinteractive.com" target="_blank">asmith@feralinteractive.com</a>><br>
Reviewed-by: Jason Ekstrand <<a href="mailto:jason@jlekstrand.net" target="_blank">jason@jlekstrand.net</a>><br>
Cc: <a href="mailto:mesa-stable@lists.freedesktop.org" target="_blank">mesa-stable@lists.freedesktop.<wbr>org</a><br>
---<br>
 src/intel/vulkan/genX_cmd_buf<wbr>fer.c | 9 +++++++++<br>
 1 file changed, 9 insertions(+)<br>
<br>
diff --git a/src/intel/vulkan/genX_cmd_bu<wbr>ffer.c b/src/intel/vulkan/genX_cmd_bu<wbr>ffer.c<br>
index b7253d5..4b73ac8 100644<br>
--- a/src/intel/vulkan/genX_cmd_bu<wbr>ffer.c<br>
+++ b/src/intel/vulkan/genX_cmd_bu<wbr>ffer.c<br>
@@ -1078,6 +1078,15 @@ genX(CmdExecuteCommands)(<br>
       anv_cmd_buffer_add_secondary(<wbr>primary, secondary);<br>
    }<br>
<br>
+   /* The secondary may have selected a different pipeline (3D or compute) and<br>
+    * may have changed the current L3$ configuration.  Reset our tracking<br>
+    * variables to invalid values to ensure that we re-emit these in the case<br>
+    * where we do any draws or compute dispatches from the primary after the<br>
+    * secondary has returned.<br>
+    */<br>
+   primary->state.current_pipeli<wbr>ne = UINT32_MAX;<br>
+   primary->state.current_l3_con<wbr>fig = NULL;<br>
+<br>
    /* Each of the secondary command buffers will use its own state base<br>
     * address.  We need to re-emit state base address for the primary after<br>
     * all of the secondaries are done.<br>
<span class="m_3309405113255308823HOEnZb"><font color="#888888">--<br>
2.5.0.400.gff86faf<br>
<br>
</font></span></blockquote></div><br></div>
</div></div></blockquote></div><br></div>