Barrier between vkcmdfillbuffer and vkcmdcopyquerypoolresults

I have problem with vkcmdfillbuffer and vkcmdcopyquerypoolresults. The first runs after vkcmdcopyquerypoolresults. I made barrier but still doesnt works.

vkCmdFillBuffer(info.cmd, query_result_buf, 0, 2 * sizeof(uint64_t), 1u);

VkBufferMemoryBarrier barrier = {};
barrier.sType = VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER;
barrier.pNext = NULL;
barrier.srcAccessMask = VK_ACCESS_TRANSFER_WRITE_BIT;
barrier.dstAccessMask = VK_ACCESS_TRANSFER_WRITE_BIT;
barrier.srcQueueFamilyIndex = 0;
barrier.dstQueueFamilyIndex = 0;
barrier.buffer = query_result_buf;
barrier.offset = 0;
barrier.size = 2 * sizeof(uint64_t);

vkCmdPipelineBarrier(info.cmd, VK_PIPELINE_STAGE_TRANSFER_BIT, VK_PIPELINE_STAGE_TRANSFER_BIT, 0, 0, NULL, 1, &barrier, 0, NULL);

vkCmdCopyQueryPoolResults(info.cmd, query_pool, 0 /*firstQuery*/, 1 /*queryCount*/, query_result_buf, 0 /*dstOffset*/,
    sizeof(uint64_t) /*stride*/, VK_QUERY_RESULT_64_BIT | VK_QUERY_RESULT_WAIT_BIT);

Define “doesnt works”. What behavior do you expect, and what behavior do you get.

How is the vkCmdFillBuffer relevant, if you overwrite it anyway?

This topic was automatically closed 183 days after the last reply. New replies are no longer allowed.