diff options
Diffstat (limited to 'src/gpu/gl/builders/GrGLProgramBuilder.cpp')
-rw-r--r-- | src/gpu/gl/builders/GrGLProgramBuilder.cpp | 174 |
1 files changed, 0 insertions, 174 deletions
diff --git a/src/gpu/gl/builders/GrGLProgramBuilder.cpp b/src/gpu/gl/builders/GrGLProgramBuilder.cpp index 279f3a2d53..d306776441 100644 --- a/src/gpu/gl/builders/GrGLProgramBuilder.cpp +++ b/src/gpu/gl/builders/GrGLProgramBuilder.cpp @@ -326,177 +326,3 @@ void GrGLProgramBuilder::resolveProgramLocations(GrGLuint programId) { const GrGLContextInfo& GrGLProgramBuilder::ctxInfo() const { return fGpu->ctxInfo(); } - -//////////////////////////////////////////////////////////////////////////////// - -GrGLFullProgramBuilder::GrGLFullProgramBuilder(GrGpuGL* gpu, - const GrGLProgramDesc& desc) - : INHERITED(gpu, desc) - , fGS(this) - , fVS(this) { -} - -void GrGLFullProgramBuilder::emitCodeBeforeEffects(GrGLSLExpr4* color, - GrGLSLExpr4* coverage) { - fVS.emitCodeBeforeEffects(color, coverage); -} - -void GrGLFullProgramBuilder::emitGeometryProcessor(const GrEffectStage* geometryProcessor, - GrGLSLExpr4* coverage) { - if (geometryProcessor) { - GrGLProgramDesc::EffectKeyProvider geometryProcessorKeyProvider( - &this->desc(), GrGLProgramDesc::EffectKeyProvider::kGeometryProcessor_EffectType); - fGeometryProcessor.reset(this->createAndEmitEffect( - geometryProcessor, - geometryProcessorKeyProvider, - coverage)); - } -} - -void GrGLFullProgramBuilder::emitCodeAfterEffects() { - fVS.emitCodeAfterEffects(); -} - -void GrGLFullProgramBuilder::addVarying(GrSLType type, - const char* name, - const char** vsOutName, - const char** fsInName, - GrGLShaderVar::Precision fsPrecision) { - fVS.addVarying(type, name, vsOutName); - - SkString* fsInputName = fVS.fOutputs.back().accessName(); - -#if GR_GL_EXPERIMENTAL_GS - if (desc().getHeader().fExperimentalGS) { - // TODO let the caller use these names - fGS.addVarying(type, fsInputName->c_str(), NULL); - fsInputName = fGS.fOutputs.back().accessName(); - } -#endif - fFS.addVarying(type, fsInputName->c_str(), fsInName, fsPrecision); -} - -GrGLFullProgramBuilder::VaryingHandle -GrGLFullProgramBuilder::addSeparableVarying(GrSLType type, - const char* name, - const char** vsOutName, - const char** fsInName) { - addVarying(type, name, vsOutName, fsInName); - SeparableVaryingInfo& varying = fSeparableVaryingInfos.push_back(); - varying.fVariable = fFS.fInputs.back(); - return VaryingHandle::CreateFromSeparableVaryingIndex(fSeparableVaryingInfos.count() - 1); -} - - -GrGLProgramEffects* GrGLFullProgramBuilder::createAndEmitEffects( - const GrEffectStage* effectStages[], - int effectCnt, - const GrGLProgramDesc::EffectKeyProvider& keyProvider, - GrGLSLExpr4* inOutFSColor) { - - GrGLVertexProgramEffectsBuilder programEffectsBuilder(this, effectCnt); - this->INHERITED::createAndEmitEffects(&programEffectsBuilder, - effectStages, - effectCnt, - keyProvider, - inOutFSColor); - return programEffectsBuilder.finish(); -} - -void GrGLFullProgramBuilder::createAndEmitEffect(GrGLProgramEffectsBuilder* programEffectsBuilder, - const GrEffectStage* effectStages, - const GrGLProgramDesc::EffectKeyProvider& keyProvider, - GrGLSLExpr4* fsInOutColor) { - GrGLSLExpr4 inColor = *fsInOutColor; - GrGLSLExpr4 outColor; - - SkASSERT(effectStages && effectStages->getEffect()); - const GrEffectStage& stage = *effectStages; - - // Using scope to force ASR destructor to be triggered - { - CodeStage::AutoStageRestore csar(&fCodeStage, &stage); - - if (inColor.isZeros()) { - SkString inColorName; - - // Effects have no way to communicate zeros, they treat an empty string as ones. - this->nameVariable(&inColorName, '\0', "input"); - fFS.codeAppendf("vec4 %s = %s;", inColorName.c_str(), inColor.c_str()); - inColor = inColorName; - } - - // create var to hold stage result - SkString outColorName; - this->nameVariable(&outColorName, '\0', "output"); - fFS.codeAppendf("vec4 %s;", outColorName.c_str()); - outColor = outColorName; - - - programEffectsBuilder->emitEffect(stage, - keyProvider.get(0), - outColor.c_str(), - inColor.isOnes() ? NULL : inColor.c_str(), - fCodeStage.stageIndex()); - } - - *fsInOutColor = outColor; -} - -GrGLProgramEffects* GrGLFullProgramBuilder::createAndEmitEffect( - const GrEffectStage* geometryProcessor, - const GrGLProgramDesc::EffectKeyProvider& keyProvider, - GrGLSLExpr4* inOutFSColor) { - - GrGLVertexProgramEffectsBuilder programEffectsBuilder(this, 1); - this->createAndEmitEffect(&programEffectsBuilder, geometryProcessor, keyProvider, inOutFSColor); - return programEffectsBuilder.finish(); -} - -bool GrGLFullProgramBuilder::compileAndAttachShaders(GrGLuint programId, - SkTDArray<GrGLuint>* shaderIds) const { - return INHERITED::compileAndAttachShaders(programId, shaderIds) - && fVS.compileAndAttachShaders(programId, shaderIds) -#if GR_GL_EXPERIMENTAL_GS - && (!desc().getHeader().fExperimentalGS - || fGS.compileAndAttachShaders(programId, shaderIds)) -#endif - ; -} - -void GrGLFullProgramBuilder::bindProgramLocations(GrGLuint programId) { - fVS.bindProgramLocations(programId); - INHERITED::bindProgramLocations(programId); -} - -//////////////////////////////////////////////////////////////////////////////// - -GrGLFragmentOnlyProgramBuilder::GrGLFragmentOnlyProgramBuilder(GrGpuGL* gpu, - const GrGLProgramDesc& desc) - : INHERITED(gpu, desc) { - SkASSERT(!desc.getHeader().fRequiresVertexShader); - SkASSERT(gpu->glCaps().pathRenderingSupport()); - SkASSERT(GrGLProgramDesc::kAttribute_ColorInput != desc.getHeader().fColorInput); - SkASSERT(GrGLProgramDesc::kAttribute_ColorInput != desc.getHeader().fCoverageInput); -} - -int GrGLFragmentOnlyProgramBuilder::addTexCoordSets(int count) { - int firstFreeCoordSet = fTexCoordSetCnt; - fTexCoordSetCnt += count; - SkASSERT(gpu()->glCaps().maxFixedFunctionTextureCoords() >= fTexCoordSetCnt); - return firstFreeCoordSet; -} - -GrGLProgramEffects* GrGLFragmentOnlyProgramBuilder::createAndEmitEffects( - const GrEffectStage* effectStages[], int effectCnt, - const GrGLProgramDesc::EffectKeyProvider& keyProvider, GrGLSLExpr4* inOutFSColor) { - - GrGLPathTexGenProgramEffectsBuilder pathTexGenEffectsBuilder(this, - effectCnt); - this->INHERITED::createAndEmitEffects(&pathTexGenEffectsBuilder, - effectStages, - effectCnt, - keyProvider, - inOutFSColor); - return pathTexGenEffectsBuilder.finish(); -} |