D3D11: Fix program uniform buffer dity bits.
There were actually three missing state synchronization points:
1. When re-binding a uniform buffer, we had no dirty bits.
2. When modifying the Program bindings, we also had no update.
3. When triggering a dependent state update via BufferData.
This fixes all the missing syncs and adds tests for the cases.
Bug: angleproject:1390
Change-Id: I2f05766545784248bcca8308ae34ac5720237ab1
Reviewed-on: https://chromium-review.googlesource.com/823150
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Reviewed-by: Kai Ninomiya <kainino@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
diff --git a/src/libANGLE/State.cpp b/src/libANGLE/State.cpp
index 7ee0179..876b943 100644
--- a/src/libANGLE/State.cpp
+++ b/src/libANGLE/State.cpp
@@ -1295,6 +1295,7 @@
break;
case BufferBinding::Uniform:
mUniformBuffers[index].set(context, buffer, offset, size);
+ mDirtyBits.set(DIRTY_BIT_UNIFORM_BUFFER_BINDINGS);
break;
case BufferBinding::AtomicCounter:
mAtomicCounterBuffers[index].set(context, buffer, offset, size);