Index: src/gpu/gl/GrGLProgramDesc.cpp |
diff --git a/src/gpu/gl/GrGLProgramDesc.cpp b/src/gpu/gl/GrGLProgramDesc.cpp |
index 7cdbcd0efc173917652f533c695b208ca910104b..286924e1ef320ef5ba4bc76f23cd4ab08f74c5d1 100644 |
--- a/src/gpu/gl/GrGLProgramDesc.cpp |
+++ b/src/gpu/gl/GrGLProgramDesc.cpp |
@@ -21,7 +21,7 @@ bool GrGLProgramDesc::GetEffectKeyAndUpdateStats(const GrEffectStage& stage, |
uint16_t* effectKeySize, |
bool* setTrueIfReadsDst, |
bool* setTrueIfReadsPos, |
- bool* setTrueIfHasVertexCode) { |
+ bool* setTrueIfRequiresVertexShader) { |
const GrBackendEffectFactory& factory = stage.getEffect()->getFactory(); |
GrDrawEffect drawEffect(stage, useExplicitLocalCoords); |
if (stage.getEffect()->willReadDstColor()) { |
@@ -30,8 +30,8 @@ bool GrGLProgramDesc::GetEffectKeyAndUpdateStats(const GrEffectStage& stage, |
if (stage.getEffect()->willReadFragmentPosition()) { |
*setTrueIfReadsPos = true; |
} |
- if (stage.getEffect()->hasVertexCode()) { |
- *setTrueIfHasVertexCode = true; |
+ if (stage.getEffect()->requiresVertexShader()) { |
+ *setTrueIfRequiresVertexShader = true; |
} |
factory.getGLEffectKey(drawEffect, caps, b); |
size_t size = b->size(); |
@@ -102,9 +102,10 @@ bool GrGLProgramDesc::Build(const GrDrawState& drawState, |
bool readsDst = false; |
bool readFragPosition = false; |
- // We use vertexshader-less shader programs only when drawing paths. |
- bool hasVertexCode = !(GrGpu::kDrawPath_DrawType == drawType || |
- GrGpu::kDrawPaths_DrawType == drawType); |
+ |
+ // Provide option for shader programs without vertex shader only when drawing paths. |
+ bool requiresVertexShader = !GrGpu::IsPathRenderingDrawType(drawType); |
+ |
int numStages = 0; |
if (!skipColor) { |
numStages += drawState.numColorStages() - firstEffectiveColorStage; |
@@ -118,7 +119,6 @@ bool GrGLProgramDesc::Build(const GrDrawState& drawState, |
desc->fKey.push_back_n(kEffectKeyOffsetsAndLengthOffset + 2 * sizeof(uint16_t) * numStages); |
int offsetAndSizeIndex = 0; |
- |
bool effectKeySuccess = true; |
if (!skipColor) { |
for (int s = firstEffectiveColorStage; s < drawState.numColorStages(); ++s) { |
@@ -133,7 +133,7 @@ bool GrGLProgramDesc::Build(const GrDrawState& drawState, |
drawState.getColorStage(s), gpu->glCaps(), |
requiresLocalCoordAttrib, &b, |
&effectKeySize, &readsDst, |
- &readFragPosition, &hasVertexCode); |
+ &readFragPosition, &requiresVertexShader); |
effectKeySuccess |= (effectOffset <= SK_MaxU16); |
offsetAndSize[0] = SkToU16(effectOffset); |
@@ -154,7 +154,7 @@ bool GrGLProgramDesc::Build(const GrDrawState& drawState, |
drawState.getCoverageStage(s), gpu->glCaps(), |
requiresLocalCoordAttrib, &b, |
&effectKeySize, &readsDst, |
- &readFragPosition, &hasVertexCode); |
+ &readFragPosition, &requiresVertexShader); |
effectKeySuccess |= (effectOffset <= SK_MaxU16); |
offsetAndSize[0] = SkToU16(effectOffset); |
@@ -174,7 +174,7 @@ bool GrGLProgramDesc::Build(const GrDrawState& drawState, |
// Because header is a pointer into the dynamic array, we can't push any new data into the key |
// below here. |
- header->fHasVertexCode = hasVertexCode || requiresLocalCoordAttrib; |
+ header->fRequiresVertexShader = requiresVertexShader || requiresLocalCoordAttrib; |
header->fEmitsPointSize = GrGpu::kDrawPoints_DrawType == drawType; |
// Currently the experimental GS will only work with triangle prims (and it doesn't do anything |
@@ -192,7 +192,7 @@ bool GrGLProgramDesc::Build(const GrDrawState& drawState, |
header->fColorInput = kUniform_ColorInput; |
} else { |
header->fColorInput = kAttribute_ColorInput; |
- header->fHasVertexCode = true; |
+ header->fRequiresVertexShader = true; |
} |
bool covIsSolidWhite = !requiresCoverageAttrib && 0xffffffff == drawState.getCoverageColor(); |
@@ -203,7 +203,7 @@ bool GrGLProgramDesc::Build(const GrDrawState& drawState, |
header->fCoverageInput = kUniform_ColorInput; |
} else { |
header->fCoverageInput = kAttribute_ColorInput; |
- header->fHasVertexCode = true; |
+ header->fRequiresVertexShader = true; |
} |
if (readsDst) { |