D3D11: Move Constant Buffer state to StateManager11.
Also moves the logic of the constant buffer sync to
StateManager11. Removes a few of the remaining virtual methods in
RendererD3D.
BUG=angleproject:1390
BUG=angleproject:2052
Change-Id: Ia6c1c3949fff84323331510d80bbfb6e1665d294
Reviewed-on: https://chromium-review.googlesource.com/659226
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
diff --git a/src/libANGLE/renderer/d3d/ProgramD3D.cpp b/src/libANGLE/renderer/d3d/ProgramD3D.cpp
index b817f41..07efd29 100644
--- a/src/libANGLE/renderer/d3d/ProgramD3D.cpp
+++ b/src/libANGLE/renderer/d3d/ProgramD3D.cpp
@@ -1765,11 +1765,13 @@
}
}
-gl::Error ProgramD3D::applyUniformBuffers(const gl::ContextState &data)
+void ProgramD3D::updateUniformBufferCache(const gl::Caps &caps,
+ unsigned int reservedVertex,
+ unsigned int reservedFragment)
{
if (mState.getUniformBlocks().empty())
{
- return gl::NoError();
+ return;
}
ensureUniformBlocksInitialized();
@@ -1777,9 +1779,6 @@
mVertexUBOCache.clear();
mFragmentUBOCache.clear();
- const unsigned int reservedBuffersInVS = mRenderer->getReservedVertexUniformBuffers();
- const unsigned int reservedBuffersInFS = mRenderer->getReservedFragmentUniformBuffers();
-
for (unsigned int uniformBlockIndex = 0; uniformBlockIndex < mD3DUniformBlocks.size();
uniformBlockIndex++)
{
@@ -1794,8 +1793,8 @@
if (uniformBlock.vertexStaticUse())
{
- unsigned int registerIndex = uniformBlock.vsRegisterIndex - reservedBuffersInVS;
- ASSERT(registerIndex < data.getCaps().maxVertexUniformBlocks);
+ unsigned int registerIndex = uniformBlock.vsRegisterIndex - reservedVertex;
+ ASSERT(registerIndex < caps.maxVertexUniformBlocks);
if (mVertexUBOCache.size() <= registerIndex)
{
@@ -1808,8 +1807,8 @@
if (uniformBlock.fragmentStaticUse())
{
- unsigned int registerIndex = uniformBlock.psRegisterIndex - reservedBuffersInFS;
- ASSERT(registerIndex < data.getCaps().maxFragmentUniformBlocks);
+ unsigned int registerIndex = uniformBlock.psRegisterIndex - reservedFragment;
+ ASSERT(registerIndex < caps.maxFragmentUniformBlocks);
if (mFragmentUBOCache.size() <= registerIndex)
{
@@ -1820,8 +1819,16 @@
mFragmentUBOCache[registerIndex] = blockBinding;
}
}
+}
- return mRenderer->setUniformBuffers(data, mVertexUBOCache, mFragmentUBOCache);
+const std::vector<GLint> &ProgramD3D::getVertexUniformBufferCache() const
+{
+ return mVertexUBOCache;
+}
+
+const std::vector<GLint> &ProgramD3D::getFragmentUniformBufferCache() const
+{
+ return mFragmentUBOCache;
}
void ProgramD3D::dirtyAllUniforms()