diff options
Diffstat (limited to 'src/gpu/gl/GrGLProgramDesc.cpp')
-rw-r--r-- | src/gpu/gl/GrGLProgramDesc.cpp | 24 |
1 files changed, 11 insertions, 13 deletions
diff --git a/src/gpu/gl/GrGLProgramDesc.cpp b/src/gpu/gl/GrGLProgramDesc.cpp index 4a274c6bb1..79088137ca 100644 --- a/src/gpu/gl/GrGLProgramDesc.cpp +++ b/src/gpu/gl/GrGLProgramDesc.cpp @@ -257,27 +257,25 @@ bool GrGLProgramDesc::Build(const GrOptDrawState& optState, header->fEmitsPointSize = GrGpu::kDrawPoints_DrawType == drawType; - bool isPathRendering = GrGpu::IsPathRenderingDrawType(drawType); - if (gpu->caps()->pathRenderingSupport() && isPathRendering) { - header->fUseNvpr = true; + if (gpu->caps()->pathRenderingSupport() && + GrGpu::IsPathRenderingDrawType(drawType) && + gpu->glPathRendering()->texturingMode() == GrGLPathRendering::FixedFunction_TexturingMode) { + header->fUseFragShaderOnly = true; SkASSERT(!optState.hasGeometryProcessor()); } else { - header->fUseNvpr = false; + header->fUseFragShaderOnly = false; } - bool hasUniformColor = inputColorIsUsed && - (isPathRendering || !optState.hasColorVertexAttribute()); - - bool hasUniformCoverage = inputCoverageIsUsed && - (isPathRendering || !optState.hasCoverageVertexAttribute()); + bool defaultToUniformInputs = GrGpu::IsPathRenderingDrawType(drawType) || + GR_GL_NO_CONSTANT_ATTRIBUTES; if (!inputColorIsUsed) { header->fColorInput = kAllOnes_ColorInput; - } else if (hasUniformColor) { + } else if (defaultToUniformInputs && !optState.hasColorVertexAttribute()) { header->fColorInput = kUniform_ColorInput; } else { header->fColorInput = kAttribute_ColorInput; - SkASSERT(!header->fUseNvpr); + SkASSERT(!header->fUseFragShaderOnly); } bool covIsSolidWhite = !optState.hasCoverageVertexAttribute() && @@ -285,11 +283,11 @@ bool GrGLProgramDesc::Build(const GrOptDrawState& optState, if (covIsSolidWhite || !inputCoverageIsUsed) { header->fCoverageInput = kAllOnes_ColorInput; - } else if (hasUniformCoverage) { + } else if (defaultToUniformInputs && !optState.hasCoverageVertexAttribute()) { header->fCoverageInput = kUniform_ColorInput; } else { header->fCoverageInput = kAttribute_ColorInput; - SkASSERT(!header->fUseNvpr); + SkASSERT(!header->fUseFragShaderOnly); } if (optState.readsDst()) { |