Commit 326f128b by Lingfeng Yang Committed by Commit Bot

Vulkan: Prefer host cached memory for Buffers

This improves perf because vertex data upload uses host visible memory, and uncached memory can be slow. Test: Android on Windows with 1080Ti: glmark2 [build] vbo=false 265 -> 3900 fps Bug: angleproject:5515 Change-Id: Ib75582bbdb4ca4a22d3a121c7b477a23a8a809ef Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2615742 Commit-Queue: Lingfeng Yang <lfy@google.com> Reviewed-by: 's avatarJamie Madill <jmadill@chromium.org> Reviewed-by: 's avatarTim Van Patten <timvp@google.com>
parent 9325fd8b
...@@ -3139,10 +3139,16 @@ angle::Result BufferHelper::init(ContextVk *contextVk, ...@@ -3139,10 +3139,16 @@ angle::Result BufferHelper::init(ContextVk *contextVk,
createInfo = &modifiedCreateInfo; createInfo = &modifiedCreateInfo;
} }
VkMemoryPropertyFlags requiredFlags = const VkMemoryPropertyFlags requiredFlags =
(memoryPropertyFlags & VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT); memoryPropertyFlags & VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT;
VkMemoryPropertyFlags preferredFlags = VkMemoryPropertyFlags preferredFlags =
(memoryPropertyFlags & (~VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT)); (memoryPropertyFlags & (~VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT));
// If we want host visible memory, also ask for cached. This can make a big difference for data
// upload.
if (requiredFlags != 0)
{
preferredFlags |= VK_MEMORY_PROPERTY_HOST_CACHED_BIT;
}
const Allocator &allocator = renderer->getAllocator(); const Allocator &allocator = renderer->getAllocator();
bool persistentlyMapped = renderer->getFeatures().persistentlyMappedBuffers.enabled; bool persistentlyMapped = renderer->getFeatures().persistentlyMappedBuffers.enabled;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment