diff options
author | Jason Ekstrand <[email protected]> | 2017-11-16 09:18:48 -0800 |
---|---|---|
committer | Jason Ekstrand <[email protected]> | 2017-12-04 10:04:19 -0800 |
commit | d25a0f21e17c52633d3190273f8f7135e715f807 (patch) | |
tree | dd3f6d47ef8be05a7cde97338b241805fc7ad5f7 /src | |
parent | 59e58c348e6af16a5f2ddb3dd2dcfcef116471a4 (diff) |
vulkan/wsi: Set a proper pWaitDstStageMask on the dummy submit
Neither mesa driver really cares, but we should set it none the less for
the sake of correctness.
Reviewed-by: Dave Airlie <[email protected]>
Reviewed-by: Chad Versace <[email protected]>
Diffstat (limited to 'src')
-rw-r--r-- | src/vulkan/wsi/wsi_common.c | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/src/vulkan/wsi/wsi_common.c b/src/vulkan/wsi/wsi_common.c index 4f6648f988f..e5a9a28d347 100644 --- a/src/vulkan/wsi/wsi_common.c +++ b/src/vulkan/wsi/wsi_common.c @@ -542,14 +542,31 @@ wsi_common_queue_present(const struct wsi_device *wsi, .sType = VK_STRUCTURE_TYPE_SUBMIT_INFO, .pNext = NULL, }; + VkPipelineStageFlags *stage_flags = NULL; if (i == 0) { /* We only need/want to wait on semaphores once. After that, we're * guaranteed ordering since it all happens on the same queue. */ submit_info.waitSemaphoreCount = pPresentInfo->waitSemaphoreCount, submit_info.pWaitSemaphores = pPresentInfo->pWaitSemaphores, + + /* Set up the pWaitDstStageMasks */ + stage_flags = vk_alloc(&swapchain->alloc, + sizeof(VkPipelineStageFlags) * + pPresentInfo->waitSemaphoreCount, + 8, + VK_SYSTEM_ALLOCATION_SCOPE_COMMAND); + if (!stage_flags) { + result = VK_ERROR_OUT_OF_HOST_MEMORY; + goto fail_present; + } + for (uint32_t s = 0; s < pPresentInfo->waitSemaphoreCount; s++) + stage_flags[s] = VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT; + + submit_info.pWaitDstStageMask = stage_flags; } result = wsi->QueueSubmit(queue, 1, &submit_info, swapchain->fences[0]); + vk_free(&swapchain->alloc, stage_flags); if (result != VK_SUCCESS) goto fail_present; |