Vulkan: Fix DynamicBuffer usages, need to use specific alignment

The alignment used to allocate VkBuffers in the VkBuffer needs to be at
least the size of the nonCoherentAtomSize defined in the limits of the
VkDevicePhysicalProperties. The latest roll of the
vulkan-validation-layers added that check and caused a bunch of errors.
This is fixing them.

Bug: angleproject:2565

Change-Id: Ia2ad506dce7966adb6220c52ea891903922c47d0
Reviewed-on: https://chromium-review.googlesource.com/1064950
Commit-Queue: Luc Ferron <lucferron@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
diff --git a/src/libANGLE/renderer/vulkan/TextureVk.cpp b/src/libANGLE/renderer/vulkan/TextureVk.cpp
index 8b59e69..28b614a 100644
--- a/src/libANGLE/renderer/vulkan/TextureVk.cpp
+++ b/src/libANGLE/renderer/vulkan/TextureVk.cpp
@@ -62,11 +62,12 @@
 }  // anonymous namespace
 
 // StagingStorage implementation.
-PixelBuffer::PixelBuffer() : mStagingBuffer(kStagingBufferFlags, kStagingBufferSize)
+PixelBuffer::PixelBuffer(RendererVk *renderer)
+    : mStagingBuffer(kStagingBufferFlags, kStagingBufferSize)
 {
     // vkCmdCopyBufferToImage must have an offset that is a multiple of 4.
     // https://www.khronos.org/registry/vulkan/specs/1.0/man/html/VkBufferImageCopy.html
-    mStagingBuffer.init(4);
+    mStagingBuffer.init(4, renderer);
 }
 
 PixelBuffer::~PixelBuffer()
@@ -287,7 +288,8 @@
 PixelBuffer::SubresourceUpdate::SubresourceUpdate(const SubresourceUpdate &other) = default;
 
 // TextureVk implementation.
-TextureVk::TextureVk(const gl::TextureState &state) : TextureImpl(state)
+TextureVk::TextureVk(const gl::TextureState &state, RendererVk *renderer)
+    : TextureImpl(state), mPixelBuffer(renderer)
 {
     mRenderTarget.image     = &mImage;
     mRenderTarget.imageView = &mBaseLevelImageView;