From 0e13f583c777f401f5fb9301ceabd8f1b8aaaa19 Mon Sep 17 00:00:00 2001 From: saschawillems Date: Sat, 4 Mar 2017 13:55:14 +0100 Subject: [PATCH] Flush memory if coherency flag is no set (Refs #273) --- base/VulkanDevice.hpp | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/base/VulkanDevice.hpp b/base/VulkanDevice.hpp index dc115790..52d1f27f 100644 --- a/base/VulkanDevice.hpp +++ b/base/VulkanDevice.hpp @@ -368,6 +368,15 @@ namespace vks void *mapped; VK_CHECK_RESULT(vkMapMemory(logicalDevice, *memory, 0, size, 0, &mapped)); memcpy(mapped, data, size); + // If host coherency hasn't been requested, do a manual flush to make writes visible + if ((memoryPropertyFlags & VK_MEMORY_PROPERTY_HOST_COHERENT_BIT) == 0) + { + VkMappedMemoryRange mappedRange = vks::initializers::mappedMemoryRange(); + mappedRange.memory = *memory; + mappedRange.offset = 0; + mappedRange.size = size; + vkFlushMappedMemoryRanges(logicalDevice, 1, &mappedRange); + } vkUnmapMemory(logicalDevice, *memory); }