| Index: src/gpu/gl/GrGLShaderBuilder.cpp
|
| diff --git a/src/gpu/gl/GrGLShaderBuilder.cpp b/src/gpu/gl/GrGLShaderBuilder.cpp
|
| index 4b7de027936df1debe1adc44f1b74fc6c24a26d1..7a57d8e32e609e3909a436b92bafb5755aaf239f 100644
|
| --- a/src/gpu/gl/GrGLShaderBuilder.cpp
|
| +++ b/src/gpu/gl/GrGLShaderBuilder.cpp
|
| @@ -194,15 +194,19 @@ bool GrGLShaderBuilder::genProgram(const GrEffectStage* colorStages[],
|
| ///////////////////////////////////////////////////////////////////////////
|
| // emit the per-effect code for both color and coverage effects
|
|
|
| + GrGLProgramDesc::EffectKeyProvider colorKeyProvider(
|
| + &this->desc(), GrGLProgramDesc::EffectKeyProvider::kColor_EffectType);
|
| fOutput.fColorEffects.reset(this->createAndEmitEffects(colorStages,
|
| - this->desc().getEffectKeys(),
|
| this->desc().numColorEffects(),
|
| + colorKeyProvider,
|
| &inputColor));
|
|
|
| + GrGLProgramDesc::EffectKeyProvider coverageKeyProvider(
|
| + &this->desc(), GrGLProgramDesc::EffectKeyProvider::kCoverage_EffectType);
|
| fOutput.fCoverageEffects.reset(this->createAndEmitEffects(coverageStages,
|
| - this->desc().getEffectKeys() + this->desc().numColorEffects(),
|
| - this->desc().numCoverageEffects(),
|
| - &inputCoverage));
|
| + this->desc().numCoverageEffects(),
|
| + coverageKeyProvider,
|
| + &inputCoverage));
|
|
|
| this->emitCodeAfterEffects();
|
|
|
| @@ -601,8 +605,8 @@ void GrGLShaderBuilder::appendUniformDecls(ShaderVisibility visibility,
|
|
|
| void GrGLShaderBuilder::createAndEmitEffects(GrGLProgramEffectsBuilder* programEffectsBuilder,
|
| const GrEffectStage* effectStages[],
|
| - const EffectKey effectKeys[],
|
| int effectCnt,
|
| + const GrGLProgramDesc::EffectKeyProvider& keyProvider,
|
| GrGLSLExpr4* fsInOutColor) {
|
| bool effectEmitted = false;
|
|
|
| @@ -632,7 +636,7 @@ void GrGLShaderBuilder::createAndEmitEffects(GrGLProgramEffectsBuilder* programE
|
|
|
|
|
| programEffectsBuilder->emitEffect(stage,
|
| - effectKeys[e],
|
| + keyProvider.get(e),
|
| outColor.c_str(),
|
| inColor.isOnes() ? NULL : inColor.c_str(),
|
| fCodeStage.stageIndex());
|
| @@ -976,15 +980,15 @@ const SkString* GrGLFullShaderBuilder::getEffectAttributeName(int attributeIndex
|
|
|
| GrGLProgramEffects* GrGLFullShaderBuilder::createAndEmitEffects(
|
| const GrEffectStage* effectStages[],
|
| - const EffectKey effectKeys[],
|
| int effectCnt,
|
| + const GrGLProgramDesc::EffectKeyProvider& keyProvider,
|
| GrGLSLExpr4* inOutFSColor) {
|
|
|
| GrGLVertexProgramEffectsBuilder programEffectsBuilder(this, effectCnt);
|
| this->INHERITED::createAndEmitEffects(&programEffectsBuilder,
|
| effectStages,
|
| - effectKeys,
|
| effectCnt,
|
| + keyProvider,
|
| inOutFSColor);
|
| return programEffectsBuilder.finish();
|
| }
|
| @@ -1093,16 +1097,16 @@ int GrGLFragmentOnlyShaderBuilder::addTexCoordSets(int count) {
|
|
|
| GrGLProgramEffects* GrGLFragmentOnlyShaderBuilder::createAndEmitEffects(
|
| const GrEffectStage* effectStages[],
|
| - const EffectKey effectKeys[],
|
| int effectCnt,
|
| + const GrGLProgramDesc::EffectKeyProvider& keyProvider,
|
| GrGLSLExpr4* inOutFSColor) {
|
|
|
| GrGLPathTexGenProgramEffectsBuilder pathTexGenEffectsBuilder(this,
|
| effectCnt);
|
| this->INHERITED::createAndEmitEffects(&pathTexGenEffectsBuilder,
|
| effectStages,
|
| - effectKeys,
|
| effectCnt,
|
| + keyProvider,
|
| inOutFSColor);
|
| return pathTexGenEffectsBuilder.finish();
|
| }
|
|
|