Commit cd8e9729 by Jamie Madill Committed by Commit Bot

StateManager11: Add internal dirty bits for uniforms.

This eliminates some of the redundant work we do in uniform state updates. Driver uniforms and constant buffers are no longer synched with every draw call, but only when the StateManager11 thinks they might be dirty. Should improve overall draw call throughput. BUG=angleproject:1155 BUG=angleproject:1390 Change-Id: I351c23fb18dcb3ef2f79e3b4f411e1e09c6300dc Reviewed-on: https://chromium-review.googlesource.com/659228 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: 's avatarGeoff Lang <geofflang@chromium.org>
parent 2dc027da
......@@ -172,6 +172,9 @@ class StateManager11 final : angle::NonCopyable
void invalidateTexturesAndSamplers();
void invalidateSwizzles();
void invalidateDriverUniforms();
void invalidateProgramUniforms();
void invalidateProgramUniformBuffers();
void invalidateConstantBuffer(unsigned int slot);
// Called from VertexArray11::updateVertexAttribStorage.
void invalidateCurrentValueAttrib(size_t attribIndex);
......@@ -294,7 +297,7 @@ class StateManager11 final : angle::NonCopyable
gl::Error generateSwizzlesForShader(const gl::Context *context, gl::SamplerType type);
gl::Error generateSwizzles(const gl::Context *context);
gl::Error applyDriverUniforms(const ProgramD3D &programD3D, GLenum drawMode);
gl::Error applyDriverUniforms(const ProgramD3D &programD3D);
gl::Error applyUniforms(ProgramD3D *programD3D);
gl::Error syncUniformBuffers(const gl::Context *context, ProgramD3D *programD3D);
......@@ -308,6 +311,9 @@ class StateManager11 final : angle::NonCopyable
DIRTY_BIT_BLEND_STATE,
DIRTY_BIT_DEPTH_STENCIL_STATE,
DIRTY_BIT_TEXTURE_AND_SAMPLER_STATE,
DIRTY_BIT_PROGRAM_UNIFORMS,
DIRTY_BIT_DRIVER_UNIFORMS,
DIRTY_BIT_PROGRAM_UNIFORM_BUFFERS,
DIRTY_BIT_INVALID,
DIRTY_BIT_MAX = DIRTY_BIT_INVALID,
};
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment