Vulkan: Add helper for allocating image memory.
Also refactors some memory index searching code that was duplicated.
This will lead the way to having more code reuse for our Renderbuffers
implementation in Vulkan, and for other types of Texture.
Bug: angleproject:2347
Change-Id: I49cbd77328c01f945d66f92e6ec4ba7c552abeff
Reviewed-on: https://chromium-review.googlesource.com/904684
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
diff --git a/src/libANGLE/renderer/vulkan/ProgramVk.cpp b/src/libANGLE/renderer/vulkan/ProgramVk.cpp
index f23778c..341034f 100644
--- a/src/libANGLE/renderer/vulkan/ProgramVk.cpp
+++ b/src/libANGLE/renderer/vulkan/ProgramVk.cpp
@@ -62,7 +62,10 @@
ANGLE_TRY(storageOut->buffer.init(device, uniformBufferInfo));
- ANGLE_TRY(AllocateBufferMemory(vk::GetImpl(context), blockSize, &storageOut->buffer,
+ // Assume host vislble/coherent memory available.
+ VkMemoryPropertyFlags flags =
+ (VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT | VK_MEMORY_PROPERTY_HOST_COHERENT_BIT);
+ ANGLE_TRY(AllocateBufferMemory(vk::GetImpl(context), flags, &storageOut->buffer,
&storageOut->memory, requiredSizeOut));
return gl::NoError();
@@ -357,8 +360,11 @@
ANGLE_TRY(mEmptyUniformBlockStorage.buffer.init(device, uniformBufferInfo));
+ // Assume host vislble/coherent memory available.
+ VkMemoryPropertyFlags flags =
+ (VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT | VK_MEMORY_PROPERTY_HOST_COHERENT_BIT);
size_t requiredSize = 0;
- ANGLE_TRY(AllocateBufferMemory(contextVk, 1, &mEmptyUniformBlockStorage.buffer,
+ ANGLE_TRY(AllocateBufferMemory(contextVk, flags, &mEmptyUniformBlockStorage.buffer,
&mEmptyUniformBlockStorage.memory, &requiredSize));
}