| Index: src/gpu/gl/GrGLShaderBuilder.cpp
|
| diff --git a/src/gpu/gl/GrGLShaderBuilder.cpp b/src/gpu/gl/GrGLShaderBuilder.cpp
|
| index fe9a66ae42ff328871c5de08ad38ca92c3e0bb4b..a4ad8fe38b335dc1482b77fe540cb00d35d39098 100644
|
| --- a/src/gpu/gl/GrGLShaderBuilder.cpp
|
| +++ b/src/gpu/gl/GrGLShaderBuilder.cpp
|
| @@ -232,10 +232,11 @@ GrGLShaderBuilder::GrGLShaderBuilder(GrGpuGL* gpu,
|
| : fHasVertexShader(false)
|
| , fTexCoordSetCnt(0)
|
| , fProgramID(0)
|
| + , fFSInputs(kVarsPerBlock)
|
| + , fSeparableVaryingInfos(kVarsPerBlock)
|
| , fDesc(desc)
|
| , fGpu(gpu)
|
| , fFSFeaturesAddedMask(0)
|
| - , fFSInputs(kVarsPerBlock)
|
| , fFSOutputs(kMaxFSOutputs)
|
| , fUniforms(kVarsPerBlock)
|
| , fSetupFragPosition(false)
|
| @@ -775,6 +776,16 @@ void GrGLShaderBuilder::resolveProgramLocations(GrGLuint programId) {
|
| fUniforms[i].fLocation = location;
|
| }
|
| }
|
| +
|
| + int count = fSeparableVaryingInfos.count();
|
| + for (int i = 0; i < count; ++i) {
|
| + GrGLint location;
|
| + GL_CALL_RET(location,
|
| + GetProgramResourceLocation(programId,
|
| + GR_GL_FRAGMENT_INPUT,
|
| + fSeparableVaryingInfos[i].fVariable.c_str()));
|
| + fSeparableVaryingInfos[i].fLocation = location;
|
| + }
|
| }
|
|
|
| const GrGLContextInfo& GrGLShaderBuilder::ctxInfo() const {
|
| @@ -914,12 +925,23 @@ void GrGLFullShaderBuilder::addVarying(GrSLType type,
|
| {
|
| fsName = fVSOutputs.back().accessName();
|
| }
|
| - this->fsInputAppend().set(type, GrGLShaderVar::kVaryingIn_TypeModifier, *fsName);
|
| + this->fFSInputs.push_back().set(type, GrGLShaderVar::kVaryingIn_TypeModifier, *fsName);
|
| if (fsInName) {
|
| *fsInName = fsName->c_str();
|
| }
|
| }
|
|
|
| +GrGLFullShaderBuilder::VaryingHandle
|
| +GrGLFullShaderBuilder::addSeparableVarying(GrSLType type,
|
| + const char* name,
|
| + const char** vsOutName,
|
| + const char** fsInName) {
|
| + addVarying(type, name, vsOutName, fsInName);
|
| + SeparableVaryingInfo& varying = fSeparableVaryingInfos.push_back();
|
| + varying.fVariable = fFSInputs.back();
|
| + return VaryingHandle::CreateFromSeparableVaryingIndex(fSeparableVaryingInfos.count() - 1);
|
| +}
|
| +
|
| const SkString* GrGLFullShaderBuilder::getEffectAttributeName(int attributeIndex) const {
|
| const AttributePair* attribEnd = fEffectAttributes.end();
|
| for (const AttributePair* attrib = fEffectAttributes.begin(); attrib != attribEnd; ++attrib) {
|
| @@ -1034,7 +1056,7 @@ void GrGLFullShaderBuilder::bindProgramLocations(GrGLuint programId) {
|
| GrGLFragmentOnlyShaderBuilder::GrGLFragmentOnlyShaderBuilder(GrGpuGL* gpu,
|
| const GrGLProgramDesc& desc)
|
| : INHERITED(gpu, desc) {
|
| - SkASSERT(!desc.getHeader().fHasVertexCode);
|
| + SkASSERT(!desc.getHeader().fRequiresVertexShader);
|
| SkASSERT(gpu->glCaps().pathRenderingSupport());
|
| SkASSERT(GrGLProgramDesc::kAttribute_ColorInput != desc.getHeader().fColorInput);
|
| SkASSERT(GrGLProgramDesc::kAttribute_ColorInput != desc.getHeader().fCoverageInput);
|
|
|