Vulkan: Move Streaming data to VertexArrayVk.
Instead of the ContextVk owning the translations for the various
attributes, make the VertexArrayVk own them. This way they can
handle the dirty bit state notifications directly instead of
needing their own Observers.
Bug: angleproject:2389
Change-Id: I5e571ba6c563e820a4c0d5f92db35031e6f2428a
Reviewed-on: https://chromium-review.googlesource.com/989258
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 e2e958b..a3a7c36 100644
--- a/src/libANGLE/renderer/vulkan/ProgramVk.cpp
+++ b/src/libANGLE/renderer/vulkan/ProgramVk.cpp
@@ -113,8 +113,8 @@
}
}
-vk::Error SyncDefaultUniformBlock(ContextVk *contextVk,
- DynamicBuffer &dynamicBuffer,
+vk::Error SyncDefaultUniformBlock(RendererVk *renderer,
+ DynamicBuffer *dynamicBuffer,
const angle::MemoryBuffer &bufferData,
uint32_t *outOffset,
bool *outBufferModified)
@@ -123,11 +123,11 @@
uint8_t *data = nullptr;
VkBuffer *outBuffer = nullptr;
uint32_t offset;
- ANGLE_TRY(dynamicBuffer.allocate(contextVk, bufferData.size(), &data, outBuffer, &offset,
- outBufferModified));
+ ANGLE_TRY(dynamicBuffer->allocate(renderer, bufferData.size(), &data, outBuffer, &offset,
+ outBufferModified));
*outOffset = offset;
memcpy(data, bufferData.data(), bufferData.size());
- ANGLE_TRY(dynamicBuffer.flush(contextVk));
+ ANGLE_TRY(dynamicBuffer->flush(renderer->getDevice()));
return vk::NoError();
}
@@ -754,7 +754,7 @@
if (uniformBlock.uniformsDirty)
{
bool bufferModified = false;
- ANGLE_TRY(SyncDefaultUniformBlock(contextVk, uniformBlock.storage,
+ ANGLE_TRY(SyncDefaultUniformBlock(contextVk->getRenderer(), &uniformBlock.storage,
uniformBlock.uniformData,
&mUniformBlocksOffsets[index], &bufferModified));
uniformBlock.uniformsDirty = false;