Vulkan: Flag uniforms as dirty when they are updated.
Currently changing uniform values will not always be seen.
Bug: angleproject:2392
Bug: angleproject:2403
Change-Id: Ie315a64ad6094f2c23e48e901de2e03e4d98516a
Reviewed-on: https://chromium-review.googlesource.com/963296
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Luc Ferron <lucferron@chromium.org>
diff --git a/src/libANGLE/renderer/vulkan/ProgramVk.cpp b/src/libANGLE/renderer/vulkan/ProgramVk.cpp
index 7130d39..e8e1cb9 100644
--- a/src/libANGLE/renderer/vulkan/ProgramVk.cpp
+++ b/src/libANGLE/renderer/vulkan/ProgramVk.cpp
@@ -81,12 +81,6 @@
const sh::BlockMemberInfo &layoutInfo,
angle::MemoryBuffer *uniformData)
{
- // Assume an offset of -1 means the block is unused.
- if (layoutInfo.offset == -1)
- {
- return;
- }
-
int elementSize = sizeof(T) * componentCount;
if (layoutInfo.arrayStride == 0 || layoutInfo.arrayStride == elementSize)
{
@@ -436,8 +430,17 @@
for (auto &uniformBlock : mDefaultUniformBlocks)
{
const sh::BlockMemberInfo &layoutInfo = uniformBlock.uniformLayout[location];
+
+ // Assume an offset of -1 means the block is unused.
+ if (layoutInfo.offset == -1)
+ {
+ continue;
+ }
+
UpdateDefaultUniformBlock(count, linkedUniform.typeInfo->componentCount, v, layoutInfo,
&uniformBlock.uniformData);
+
+ uniformBlock.uniformsDirty = true;
}
}
else