summaryrefslogtreecommitdiffstats
path: root/src/vulkan/wsi
diff options
context:
space:
mode:
authorJason Ekstrand <[email protected]>2017-11-16 09:18:48 -0800
committerJason Ekstrand <[email protected]>2017-12-04 10:04:19 -0800
commitd25a0f21e17c52633d3190273f8f7135e715f807 (patch)
treedd3f6d47ef8be05a7cde97338b241805fc7ad5f7 /src/vulkan/wsi
parent59e58c348e6af16a5f2ddb3dd2dcfcef116471a4 (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/vulkan/wsi')
-rw-r--r--src/vulkan/wsi/wsi_common.c17
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;