Refactor Context dependency for resolveCompile
The context parameter of Shader::resolveCompile method causes a bad
impact that many methods in Shader, Program etc. have to have a same
context parameter. By removing it, these methods can be decoupled
from Context.
BUG=chromium:849576
Change-Id: Ia5545ee9dce45794550f6086bc0e6c4707e1276e
Reviewed-on: https://chromium-review.googlesource.com/1172202
Commit-Queue: Jie A Chen <jie.a.chen@intel.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
diff --git a/src/libANGLE/renderer/d3d/ProgramD3D.cpp b/src/libANGLE/renderer/d3d/ProgramD3D.cpp
index ef3264d..0f179ae 100644
--- a/src/libANGLE/renderer/d3d/ProgramD3D.cpp
+++ b/src/libANGLE/renderer/d3d/ProgramD3D.cpp
@@ -36,13 +36,11 @@
namespace
{
-void GetDefaultInputLayoutFromShader(const gl::Context *context,
- gl::Shader *vertexShader,
- gl::InputLayout *inputLayoutOut)
+void GetDefaultInputLayoutFromShader(gl::Shader *vertexShader, gl::InputLayout *inputLayoutOut)
{
inputLayoutOut->clear();
- for (const sh::Attribute &shaderAttr : vertexShader->getActiveAttributes(context))
+ for (const sh::Attribute &shaderAttr : vertexShader->getActiveAttributes())
{
if (shaderAttr.type != GL_NONE)
{
@@ -119,29 +117,26 @@
return false;
}
-bool FindFlatInterpolationVaryingPerShader(const gl::Context *context, gl::Shader *shader)
+bool FindFlatInterpolationVaryingPerShader(gl::Shader *shader)
{
- ASSERT(context && shader);
+ ASSERT(shader);
switch (shader->getType())
{
case gl::ShaderType::Vertex:
- return HasFlatInterpolationVarying(shader->getOutputVaryings(context));
+ return HasFlatInterpolationVarying(shader->getOutputVaryings());
case gl::ShaderType::Fragment:
- return HasFlatInterpolationVarying(shader->getInputVaryings(context));
+ return HasFlatInterpolationVarying(shader->getInputVaryings());
case gl::ShaderType::Geometry:
- return HasFlatInterpolationVarying(shader->getInputVaryings(context)) ||
- HasFlatInterpolationVarying(shader->getOutputVaryings(context));
+ return HasFlatInterpolationVarying(shader->getInputVaryings()) ||
+ HasFlatInterpolationVarying(shader->getOutputVaryings());
default:
UNREACHABLE();
return false;
}
}
-bool FindFlatInterpolationVarying(const gl::Context *context,
- const gl::ShaderMap<gl::Shader *> &shaders)
+bool FindFlatInterpolationVarying(const gl::ShaderMap<gl::Shader *> &shaders)
{
- ASSERT(context);
-
for (gl::ShaderType shaderType : gl::kAllGraphicsShaderTypes)
{
gl::Shader *shader = shaders[shaderType];
@@ -150,7 +145,7 @@
continue;
}
- if (FindFlatInterpolationVaryingPerShader(context, shader))
+ if (FindFlatInterpolationVaryingPerShader(shader))
{
return true;
}
@@ -164,7 +159,7 @@
public:
UniformBlockInfo() {}
- void getShaderBlockInfo(const gl::Context *context, gl::Shader *shader);
+ void getShaderBlockInfo(gl::Shader *shader);
bool getBlockSize(const std::string &name, const std::string &mappedName, size_t *sizeOut);
bool getBlockMemberInfo(const std::string &name,
@@ -178,9 +173,9 @@
sh::BlockLayoutMap mBlockLayout;
};
-void UniformBlockInfo::getShaderBlockInfo(const gl::Context *context, gl::Shader *shader)
+void UniformBlockInfo::getShaderBlockInfo(gl::Shader *shader)
{
- for (const sh::InterfaceBlock &interfaceBlock : shader->getUniformBlocks(context))
+ for (const sh::InterfaceBlock &interfaceBlock : shader->getUniformBlocks())
{
if (!interfaceBlock.active && interfaceBlock.layout == sh::BLOCKLAYOUT_PACKED)
continue;
@@ -1306,7 +1301,7 @@
}
std::string geometryHLSL = mDynamicHLSL->generateGeometryShaderHLSL(
- context, geometryShaderType, mState, mRenderer->presentPathFastEnabled(),
+ context->getCaps(), geometryShaderType, mState, mRenderer->presentPathFastEnabled(),
mHasANGLEMultiviewEnabled, mRenderer->canSelectViewInVertexShader(),
usesGeometryShaderForPointSpriteEmulation(), mGeometryShaderPreamble);
@@ -1374,7 +1369,7 @@
}
angle::Result run() override
{
- mProgram->updateCachedInputLayoutFromShader(mContext);
+ mProgram->updateCachedInputLayoutFromShader();
ANGLE_TRY(
mProgram->getVertexExecutableForCachedInputLayout(mContext, &mExecutable, &mInfoLog));
@@ -1383,9 +1378,9 @@
}
};
-void ProgramD3D::updateCachedInputLayoutFromShader(const gl::Context *context)
+void ProgramD3D::updateCachedInputLayoutFromShader()
{
- GetDefaultInputLayoutFromShader(context, mState.getAttachedShader(gl::ShaderType::Vertex),
+ GetDefaultInputLayoutFromShader(mState.getAttachedShader(gl::ShaderType::Vertex),
&mCachedInputLayout);
VertexExecutable::getSignature(mRenderer, mCachedInputLayout, &mCachedVertexSignature);
updateCachedVertexExecutableIndex();
@@ -1586,7 +1581,7 @@
gl::Shader *computeShaderGL = mState.getAttachedShader(gl::ShaderType::Compute);
ASSERT(computeShaderGL);
- std::string computeShader = computeShaderGL->getTranslatedSource(context);
+ std::string computeShader = computeShaderGL->getTranslatedSource();
ShaderExecutableD3D *computeExecutable = nullptr;
ANGLE_TRY(mRenderer->compileToExecutable(
@@ -1626,9 +1621,9 @@
mReadonlyImagesCS.resize(data.getCaps().maxImageUnits);
mShaderUniformsDirty.set(gl::ShaderType::Compute);
- defineUniformsAndAssignRegisters(context);
+ defineUniformsAndAssignRegisters();
- linkResources(context, resources);
+ linkResources(resources);
gl::LinkResult result = compileComputeExecutable(context, infoLog);
if (result.isError())
@@ -1671,8 +1666,8 @@
ProgramD3DMetadata metadata(mRenderer, shadersD3D);
BuiltinVaryingsD3D builtins(metadata, resources.varyingPacking);
- mDynamicHLSL->generateShaderLinkHLSL(context, mState, metadata, resources.varyingPacking,
- builtins, &mShaderHLSL);
+ mDynamicHLSL->generateShaderLinkHLSL(context->getCaps(), mState, metadata,
+ resources.varyingPacking, builtins, &mShaderHLSL);
mUsesPointSize = shadersD3D[gl::ShaderType::Vertex]->usesPointSize();
mDynamicHLSL->getPixelShaderOutputKey(data, mState, metadata, &mPixelShaderKey);
@@ -1681,7 +1676,7 @@
mHasANGLEMultiviewEnabled = metadata.hasANGLEMultiviewEnabled();
// Cache if we use flat shading
- mUsesFlatInterpolation = FindFlatInterpolationVarying(context, mState.getAttachedShaders());
+ mUsesFlatInterpolation = FindFlatInterpolationVarying(mState.getAttachedShaders());
if (mRenderer->getMajorShaderModel() >= 4)
{
@@ -1690,13 +1685,13 @@
metadata.canSelectViewInVertexShader());
}
- initAttribLocationsToD3DSemantic(context);
+ initAttribLocationsToD3DSemantic();
- defineUniformsAndAssignRegisters(context);
+ defineUniformsAndAssignRegisters();
gatherTransformFeedbackVaryings(resources.varyingPacking, builtins[gl::ShaderType::Vertex]);
- linkResources(context, resources);
+ linkResources(resources);
return compileProgramExecutables(context, infoLog);
}
@@ -1994,7 +1989,7 @@
mRenderer->onDirtyUniformBlockBinding(uniformBlockIndex);
}
-void ProgramD3D::defineUniformsAndAssignRegisters(const gl::Context *context)
+void ProgramD3D::defineUniformsAndAssignRegisters()
{
D3DUniformMap uniformMap;
@@ -2004,7 +1999,7 @@
gl::Shader *shader = mState.getAttachedShader(shaderType);
if (shader)
{
- for (const sh::Uniform &uniform : shader->getUniforms(context))
+ for (const sh::Uniform &uniform : shader->getUniforms())
{
if (uniform.active)
{
@@ -2571,14 +2566,14 @@
return mCurrentSerial++;
}
-void ProgramD3D::initAttribLocationsToD3DSemantic(const gl::Context *context)
+void ProgramD3D::initAttribLocationsToD3DSemantic()
{
gl::Shader *vertexShader = mState.getAttachedShader(gl::ShaderType::Vertex);
ASSERT(vertexShader != nullptr);
// Init semantic index
int semanticIndex = 0;
- for (const sh::Attribute &attribute : vertexShader->getActiveAttributes(context))
+ for (const sh::Attribute &attribute : vertexShader->getActiveAttributes())
{
int regCount = gl::VariableRegisterCount(attribute.type);
GLuint location = mState.getAttributeLocation(attribute.name);
@@ -2811,8 +2806,7 @@
}
}
-void ProgramD3D::linkResources(const gl::Context *context,
- const gl::ProgramLinkedResources &resources)
+void ProgramD3D::linkResources(const gl::ProgramLinkedResources &resources)
{
UniformBlockInfo uniformBlockInfo;
for (gl::ShaderType shaderType : gl::AllShaderTypes())
@@ -2820,7 +2814,7 @@
gl::Shader *shader = mState.getAttachedShader(shaderType);
if (shader)
{
- uniformBlockInfo.getShaderBlockInfo(context, shader);
+ uniformBlockInfo.getShaderBlockInfo(shader);
}
}