Flush/invalidate host and device memory writes

This commit is contained in:
saschawillems 2017-09-15 20:41:43 +02:00
parent 282eccd54c
commit 66a87bbf21

View file

@ -210,11 +210,14 @@ public:
computeInput.data()); computeInput.data());
// Flush writes to host visible buffer // Flush writes to host visible buffer
void* mapped;
vkMapMemory(device, hostMemory, 0, VK_WHOLE_SIZE, 0, &mapped);
VkMappedMemoryRange mappedRange = vks::initializers::mappedMemoryRange(); VkMappedMemoryRange mappedRange = vks::initializers::mappedMemoryRange();
mappedRange.memory = hostMemory; mappedRange.memory = hostMemory;
mappedRange.offset = 0; mappedRange.offset = 0;
mappedRange.size = VK_WHOLE_SIZE; mappedRange.size = VK_WHOLE_SIZE;
vkFlushMappedMemoryRanges(device, 1, &mappedRange); vkFlushMappedMemoryRanges(device, 1, &mappedRange);
vkUnmapMemory(device, hostMemory);
createBuffer( createBuffer(
VK_BUFFER_USAGE_STORAGE_BUFFER_BIT | VK_BUFFER_USAGE_TRANSFER_SRC_BIT | VK_BUFFER_USAGE_TRANSFER_DST_BIT, 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 // Wait for fence
vkWaitForFences(device, 1, &fence, VK_TRUE, UINT64_MAX); 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(); VkMappedMemoryRange mappedRange = vks::initializers::mappedMemoryRange();
mappedRange.memory = hostMemory; mappedRange.memory = hostMemory;
mappedRange.offset = 0; mappedRange.offset = 0;
mappedRange.size = VK_WHOLE_SIZE; mappedRange.size = VK_WHOLE_SIZE;
vkFlushMappedMemoryRanges(device, 1, &mappedRange); vkInvalidateMappedMemoryRanges(device, 1, &mappedRange);
void* mapped; void* mapped;
vkMapMemory(device, hostMemory, 0, VK_WHOLE_SIZE, 0, &mapped); vkMapMemory(device, hostMemory, 0, VK_WHOLE_SIZE, 0, &mapped);