[Mesa-dev] [PATCH v2] anv: flush pipeline before query result copies
Jason Ekstrand
jason at jlekstrand.net
Thu Nov 29 16:58:30 UTC 2018
On Thu, Nov 29, 2018 at 10:45 AM Lionel Landwerlin <
lionel.g.landwerlin at intel.com> wrote:
> Pipeline barriers inserted through vkCmdPipelineBarrier() should be
> taken into account when copying results.
>
> In the particular bug below, the results of the
> vkCmdCopyQueryPoolResults() command was being overwritten by the
> preceding vkCmdCopyBuffer() with a same destination buffer. This is
> because we copy the buffers using the 3D pipeline whereas we copy the
> query results using the command streamer. Those work in parallel
> unless synchronized.
>
> v2: Unconditionally flush the pipeline before copying the results
> (Jason)
>
> Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin at intel.com>
> Suggested-by: Jason Ekstrand <jason at jlekstrand.net>
> Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=108894
> Cc: mesa-stable at lists.freedesktop.org
> ---
> src/intel/vulkan/genX_query.c | 9 ++++-----
> 1 file changed, 4 insertions(+), 5 deletions(-)
>
> diff --git a/src/intel/vulkan/genX_query.c b/src/intel/vulkan/genX_query.c
> index ce8757f2643..f1472c0d570 100644
> --- a/src/intel/vulkan/genX_query.c
> +++ b/src/intel/vulkan/genX_query.c
> @@ -729,11 +729,10 @@ void genX(CmdCopyQueryPoolResults)(
> ANV_FROM_HANDLE(anv_query_pool, pool, queryPool);
> ANV_FROM_HANDLE(anv_buffer, buffer, destBuffer);
>
> - if (flags & VK_QUERY_RESULT_WAIT_BIT) {
> - anv_batch_emit(&cmd_buffer->batch, GENX(PIPE_CONTROL), pc) {
> - pc.CommandStreamerStallEnable = true;
> - pc.StallAtPixelScoreboard = true;
> - }
> + if (flags & VK_QUERY_RESULT_WAIT_BIT ||
>
That bare & should have some parens. With that,
Reviewed-by: Jason Ekstrand <jason at jlekstrand.net>
> + (cmd_buffer->state.pending_pipe_bits & ANV_PIPE_FLUSH_BITS)) {
> + cmd_buffer->state.pending_pipe_bits |= ANV_PIPE_CS_STALL_BIT;
> + genX(cmd_buffer_apply_pipe_flushes)(cmd_buffer);
> }
>
> struct anv_address dest_addr = anv_address_add(buffer->address,
> destOffset);
> --
> 2.20.0.rc1
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/mesa-dev/attachments/20181129/70340fb2/attachment-0001.html>
More information about the mesa-dev
mailing list