From 66a87bbf2138033a90b9cdf37bf341bbf4ba8315 Mon Sep 17 00:00:00 2001 From: saschawillems Date: Fri, 15 Sep 2017 20:41:43 +0200 Subject: [PATCH] Flush/invalidate host and device memory writes --- computeheadless/computeheadless.cpp | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/computeheadless/computeheadless.cpp b/computeheadless/computeheadless.cpp index 990f3031..bd3f8ddb 100644 --- a/computeheadless/computeheadless.cpp +++ b/computeheadless/computeheadless.cpp @@ -210,11 +210,14 @@ public: computeInput.data()); // Flush writes to host visible buffer + void* mapped; + vkMapMemory(device, hostMemory, 0, VK_WHOLE_SIZE, 0, &mapped); VkMappedMemoryRange mappedRange = vks::initializers::mappedMemoryRange(); mappedRange.memory = hostMemory; mappedRange.offset = 0; mappedRange.size = VK_WHOLE_SIZE; vkFlushMappedMemoryRanges(device, 1, &mappedRange); + vkUnmapMemory(device, hostMemory); createBuffer( VK_BUFFER_USAGE_STORAGE_BUFFER_BIT | VK_BUFFER_USAGE_TRANSFER_SRC_BIT | VK_BUFFER_USAGE_TRANSFER_DST_BIT, @@ -381,12 +384,14 @@ public: // Wait for fence vkWaitForFences(device, 1, &fence, VK_TRUE, UINT64_MAX); - // Flush writes to host visible buffer + // Make device writes visible to the host + void *mapped; + vkMapMemory(device, hostMemory, 0, VK_WHOLE_SIZE, 0, &mapped); VkMappedMemoryRange mappedRange = vks::initializers::mappedMemoryRange(); mappedRange.memory = hostMemory; mappedRange.offset = 0; mappedRange.size = VK_WHOLE_SIZE; - vkFlushMappedMemoryRanges(device, 1, &mappedRange); + vkInvalidateMappedMemoryRanges(device, 1, &mappedRange); void* mapped; vkMapMemory(device, hostMemory, 0, VK_WHOLE_SIZE, 0, &mapped);