<div dir="ltr">Haven't noticed any difference in DOOM graphs, but that's not a bad thing I guess.<br>Tested-by: Grazvydas Ignotas <<a href="mailto:notasas@gmail.com">notasas@gmail.com</a>><br><br><div><div class="gmail_extra"><div class="gmail_quote">On Sun, Apr 30, 2017 at 7:40 PM, Bas Nieuwenhuizen <span dir="ltr"><<a href="mailto:bas@basnieuwenhuizen.nl" target="_blank">bas@basnieuwenhuizen.nl</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Set the bit in the same stage as the timestamp, instead always at top of pipe.<br>
<br>
Signed-off-by: Bas Nieuwenhuizen <<a href="mailto:basni@google.com">basni@google.com</a>><br>
---<br>
 src/amd/vulkan/radv_query.c | 33 ++++++++++++++++++++++++------<wbr>---<br>
 1 file changed, 24 insertions(+), 9 deletions(-)<br>
<br>
diff --git a/src/amd/vulkan/radv_query.c b/src/amd/vulkan/radv_query.c<br>
index 0991c267000..6d2325da47b 100644<br>
--- a/src/amd/vulkan/radv_query.c<br>
+++ b/src/amd/vulkan/radv_query.c<br>
@@ -1194,7 +1194,7 @@ void radv_CmdWriteTimestamp(<br>
<br>
        cmd_buffer->device->ws->cs_<wbr>add_buffer(cs, pool->bo, 5);<br>
<br>
-       MAYBE_UNUSED unsigned cdw_max = radeon_check_space(cmd_buffer-<wbr>>device->ws, cs, 12);<br>
+       MAYBE_UNUSED unsigned cdw_max = radeon_check_space(cmd_buffer-<wbr>>device->ws, cs, 14);<br>
<br>
        switch(pipelineStage) {<br>
        case VK_PIPELINE_STAGE_TOP_OF_PIPE_<wbr>BIT:<br>
@@ -1206,6 +1206,14 @@ void radv_CmdWriteTimestamp(<br>
                radeon_emit(cs, 0);<br>
                radeon_emit(cs, query_va);<br>
                radeon_emit(cs, query_va >> 32);<br>
+<br>
+               radeon_emit(cs, PKT3(PKT3_WRITE_DATA, 3, 0));<br>
+               radeon_emit(cs, S_370_DST_SEL(V_370_MEM_ASYNC) |<br>
+                               S_370_WR_CONFIRM(1) |<br>
+                               S_370_ENGINE_SEL(V_370_ME));<br>
+               radeon_emit(cs, avail_va);<br>
+               radeon_emit(cs, avail_va >> 32);<br>
+               radeon_emit(cs, 1);<br>
                break;<br>
        default:<br>
                if (mec) {<br>
@@ -1216,6 +1224,14 @@ void radv_CmdWriteTimestamp(<br>
                        radeon_emit(cs, query_va >> 32);<br>
                        radeon_emit(cs, 0);<br>
                        radeon_emit(cs, 0);<br>
+<br>
+                       radeon_emit(cs, PKT3(PKT3_RELEASE_MEM, 5, 0));<br>
+                       radeon_emit(cs, EVENT_TYPE(V_028A90_BOTTOM_OF_<wbr>PIPE_TS) | EVENT_INDEX(5));<br>
+                       radeon_emit(cs, 1 << 29);<br>
+                       radeon_emit(cs, avail_va);<br>
+                       radeon_emit(cs, avail_va >> 32);<br>
+                       radeon_emit(cs, 1);<br>
+                       radeon_emit(cs, 0);<br>
                } else {<br>
                        radeon_emit(cs, PKT3(PKT3_EVENT_WRITE_EOP, 4, 0));<br>
                        radeon_emit(cs, EVENT_TYPE(V_028A90_BOTTOM_OF_<wbr>PIPE_TS) | EVENT_INDEX(5));<br>
@@ -1223,17 +1239,16 @@ void radv_CmdWriteTimestamp(<br>
                        radeon_emit(cs, (3 << 29) | ((query_va >> 32) & 0xFFFF));<br>
                        radeon_emit(cs, 0);<br>
                        radeon_emit(cs, 0);<br>
+<br>
+                       radeon_emit(cs, PKT3(PKT3_EVENT_WRITE_EOP, 4, 0));<br>
+                       radeon_emit(cs, EVENT_TYPE(V_028A90_BOTTOM_OF_<wbr>PIPE_TS) | EVENT_INDEX(5));<br>
+                       radeon_emit(cs, avail_va);<br>
+                       radeon_emit(cs, (1 << 29) | ((avail_va >> 32) & 0xFFFF));<br>
+                       radeon_emit(cs, 1);<br>
+                       radeon_emit(cs, 0);<br>
                }<br>
                break;<br>
        }<br>
<br>
-       radeon_emit(cs, PKT3(PKT3_WRITE_DATA, 3, 0));<br>
-       radeon_emit(cs, S_370_DST_SEL(mec ? V_370_MEM_ASYNC : V_370_MEMORY_SYNC) |<br>
-                   S_370_WR_CONFIRM(1) |<br>
-                   S_370_ENGINE_SEL(V_370_ME));<br>
-       radeon_emit(cs, avail_va);<br>
-       radeon_emit(cs, avail_va >> 32);<br>
-       radeon_emit(cs, 1);<br>
-<br>
        assert(cmd_buffer->cs->cdw <= cdw_max);<br>
 }<br>
<span class="gmail-HOEnZb"><font color="#888888">--<br>
2.12.2<br>
<br>
______________________________<wbr>_________________<br>
mesa-dev mailing list<br>
<a href="mailto:mesa-dev@lists.freedesktop.org">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/<wbr>mailman/listinfo/mesa-dev</a><br>
</font></span></blockquote></div><br></div></div></div>