| Index: src/gpu/gl/GrGLProgramDesc.cpp
|
| diff --git a/src/gpu/gl/GrGLProgramDesc.cpp b/src/gpu/gl/GrGLProgramDesc.cpp
|
| index 4a274c6bb1e8806b98043328031b18d12df8ac16..79088137caa004519ddcd91d2ad13ad000f5ab40 100644
|
| --- a/src/gpu/gl/GrGLProgramDesc.cpp
|
| +++ b/src/gpu/gl/GrGLProgramDesc.cpp
|
| @@ -257,27 +257,25 @@
|
|
|
| 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;
|
| - }
|
| -
|
| - bool hasUniformColor = inputColorIsUsed &&
|
| - (isPathRendering || !optState.hasColorVertexAttribute());
|
| -
|
| - bool hasUniformCoverage = inputCoverageIsUsed &&
|
| - (isPathRendering || !optState.hasCoverageVertexAttribute());
|
| + header->fUseFragShaderOnly = false;
|
| + }
|
| +
|
| + 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 @@
|
|
|
| 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()) {
|
|
|