| Index: src/gpu/gl/GrGLShaderBuilder.cpp
|
| diff --git a/src/gpu/gl/GrGLShaderBuilder.cpp b/src/gpu/gl/GrGLShaderBuilder.cpp
|
| index b72e23f9ba20b10879c70b6c48c52324ec288cf7..437f6147e4d148ba7b4268e14375b6549ad632de 100644
|
| --- a/src/gpu/gl/GrGLShaderBuilder.cpp
|
| +++ b/src/gpu/gl/GrGLShaderBuilder.cpp
|
| @@ -186,6 +186,15 @@ bool GrGLShaderBuilder::enableFeature(GLSLFeature feature) {
|
| "GL_OES_standard_derivatives");
|
| }
|
| return true;
|
| + case kTexCoordSupport_GLSLFeature:
|
| + if (!fGpu->glCaps().pathRenderingSupport()) {
|
| + return false;
|
| + }
|
| + if (kGLES_GrGLStandard == fGpu->glStandard()) {
|
| + this->addFSFeature(1 << kTexCoordSupport_GLSLFeature,
|
| + "GL_CHROMIUM_path_rendering");
|
| + }
|
| + return true;
|
| default:
|
| GrCrash("Unexpected GLSLFeature requested.");
|
| return false;
|
| @@ -976,6 +985,7 @@ GrGLFragmentOnlyShaderBuilder::GrGLFragmentOnlyShaderBuilder(GrGpuGL* gpu,
|
| }
|
|
|
| int GrGLFragmentOnlyShaderBuilder::addTexCoordSets(int count) {
|
| + SkAssertResult(this->enableFeature(kTexCoordSupport_GLSLFeature));
|
| int firstFreeCoordSet = fNumTexCoordSets;
|
| fNumTexCoordSets += count;
|
| SkASSERT(gpu()->glCaps().maxFixedFunctionTextureCoords() >= fNumTexCoordSets);
|
| @@ -997,3 +1007,21 @@ GrGLProgramEffects* GrGLFragmentOnlyShaderBuilder::createAndEmitEffects(
|
| inOutFSColor);
|
| return pathTexGenEffectsBuilder.finish();
|
| }
|
| +
|
| +bool GrGLFragmentOnlyShaderBuilder::compileAndAttachShaders(GrGLuint programId, SkTDArray<GrGLuint>* shaderIds) const {
|
| + // Command buffer does not support vertexshader-less programs.
|
| + // Use a dummy shader.
|
| + const GrGLContext& glCtx = this->gpu()->glContext();
|
| + SkString vertShaderSrc(GrGetGLSLVersionDecl(this->ctxInfo()));
|
| + vertShaderSrc.append("void main() {\n");
|
| + vertShaderSrc.append("gl_Position = vec4(1);");
|
| + vertShaderSrc.append("}\n");
|
| + GrGLuint vertShaderId = attach_shader(glCtx, programId, GR_GL_VERTEX_SHADER, vertShaderSrc);
|
| + if (!vertShaderId) {
|
| + return false;
|
| + }
|
| + *shaderIds->append() = vertShaderId;
|
| +
|
| + return this->INHERITED::compileAndAttachShaders(programId, shaderIds);
|
| +}
|
| +
|
|
|