Commit a914f7ff by Jiawei Shao Committed by Commit Bot

Use ShaderMap in Statemanager11 - Part II

This patch is the last patch of storing shader resources into ShaderMap in Statemanager11. This patch also splits several large functions into smaller one to make the code structure clearer. BUG=angleproject:2169 Change-Id: Id6d89976de0376b2479bd11d7551fc6f5b521c13 Reviewed-on: https://chromium-review.googlesource.com/1092511Reviewed-by: 's avatarJamie Madill <jmadill@chromium.org> Reviewed-by: 's avatarGeoff Lang <geofflang@chromium.org> Commit-Queue: Jiawei Shao <jiawei.shao@intel.com>
parent 4004ae0e
......@@ -299,6 +299,11 @@ class ProgramD3D : public ProgramImpl
const gl::ProgramState &getState() const { return mState; }
bool hasShaderStage(gl::ShaderType shaderType) const
{
return mState.getLinkedShaderStages()[shaderType];
}
private:
// These forward-declared tasks are used for multi-thread shader compiles.
class GetExecutableTask;
......
......@@ -316,9 +316,12 @@ class StateManager11 final : angle::NonCopyable
gl::Error generateSwizzles(const gl::Context *context);
gl::Error applyDriverUniforms();
gl::Error applyDriverUniformsForShader(gl::ShaderType shaderType);
gl::Error applyUniforms();
gl::Error applyUniformsForShader(gl::ShaderType shaderType);
gl::Error syncUniformBuffers(const gl::Context *context);
gl::Error syncUniformBuffersForShader(const gl::Context *context, gl::ShaderType shaderType);
gl::Error syncTransformFeedbackBuffers(const gl::Context *context);
// These are currently only called internally.
......@@ -513,9 +516,7 @@ class StateManager11 final : angle::NonCopyable
bool mIsMultiviewEnabled;
// Driver Constants.
d3d11::Buffer mDriverConstantBufferVS;
d3d11::Buffer mDriverConstantBufferPS;
d3d11::Buffer mDriverConstantBufferCS;
gl::ShaderMap<d3d11::Buffer> mShaderDriverConstantBuffers;
ResourceSerial mCurrentComputeConstantBuffer;
ResourceSerial mCurrentGeometryConstantBuffer;
......@@ -550,12 +551,10 @@ class StateManager11 final : angle::NonCopyable
angle::SubjectMessage message) override;
void reset();
void bindVS(size_t index, Buffer11 *buffer);
void bindPS(size_t index, Buffer11 *buffer);
void bindToShader(gl::ShaderType shaderType, size_t index, Buffer11 *buffer);
private:
std::vector<angle::ObserverBinding> mBindingsVS;
std::vector<angle::ObserverBinding> mBindingsPS;
gl::ShaderMap<std::vector<angle::ObserverBinding>> mShaderBindings;
};
ConstantBufferObserver mConstantBufferObserver;
......
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