When ignoring color input don't use vertex attribs on gpu
Also rename SolidWhite_ColorInput enum to be AllOnes_ColorInput to better reflect what it's use is
BUG=skia:
R=bsalomon@google.com
Author: egdaniel@google.com
Review URL: https://codereview.chromium.org/525433002
diff --git a/src/gpu/gl/GrGLProgram.cpp b/src/gpu/gl/GrGLProgram.cpp
index 11efda9..534e3c3 100644
--- a/src/gpu/gl/GrGLProgram.cpp
+++ b/src/gpu/gl/GrGLProgram.cpp
@@ -188,6 +188,9 @@
}
sharedState->fConstAttribColorIndex = -1;
break;
+ case GrGLProgramDesc::kAllOnes_ColorInput:
+ sharedState->fConstAttribColorIndex = -1;
+ break;
default:
SkFAIL("Unexpected color type.");
}
@@ -223,7 +226,7 @@
}
sharedState->fConstAttribCoverageIndex = -1;
break;
- case GrGLProgramDesc::kSolidWhite_ColorInput:
+ case GrGLProgramDesc::kAllOnes_ColorInput:
sharedState->fConstAttribCoverageIndex = -1;
break;
default:
diff --git a/src/gpu/gl/GrGLProgramDesc.cpp b/src/gpu/gl/GrGLProgramDesc.cpp
index 286924e..545ed21 100644
--- a/src/gpu/gl/GrGLProgramDesc.cpp
+++ b/src/gpu/gl/GrGLProgramDesc.cpp
@@ -188,7 +188,9 @@
#endif
bool defaultToUniformInputs = GR_GL_NO_CONSTANT_ATTRIBUTES || gpu->caps()->pathRenderingSupport();
- if (defaultToUniformInputs && !requiresColorAttrib && inputColorIsUsed) {
+ if (!inputColorIsUsed && !skipColor) {
+ header->fColorInput = kAllOnes_ColorInput;
+ } else if (defaultToUniformInputs && !requiresColorAttrib && inputColorIsUsed) {
header->fColorInput = kUniform_ColorInput;
} else {
header->fColorInput = kAttribute_ColorInput;
@@ -198,7 +200,7 @@
bool covIsSolidWhite = !requiresCoverageAttrib && 0xffffffff == drawState.getCoverageColor();
if ((covIsSolidWhite || !inputCoverageIsUsed) && !skipCoverage) {
- header->fCoverageInput = kSolidWhite_ColorInput;
+ header->fCoverageInput = kAllOnes_ColorInput;
} else if (defaultToUniformInputs && !requiresCoverageAttrib && inputCoverageIsUsed) {
header->fCoverageInput = kUniform_ColorInput;
} else {
diff --git a/src/gpu/gl/GrGLProgramDesc.h b/src/gpu/gl/GrGLProgramDesc.h
index 4796d5a..aefcb50 100644
--- a/src/gpu/gl/GrGLProgramDesc.h
+++ b/src/gpu/gl/GrGLProgramDesc.h
@@ -99,7 +99,7 @@
private:
// Specifies where the initial color comes from before the stages are applied.
enum ColorInput {
- kSolidWhite_ColorInput,
+ kAllOnes_ColorInput,
kAttribute_ColorInput,
kUniform_ColorInput,
diff --git a/src/gpu/gl/builders/GrGLProgramBuilder.cpp b/src/gpu/gl/builders/GrGLProgramBuilder.cpp
index 141442d..7664bab 100644
--- a/src/gpu/gl/builders/GrGLProgramBuilder.cpp
+++ b/src/gpu/gl/builders/GrGLProgramBuilder.cpp
@@ -51,6 +51,8 @@
"Color",
&name);
inputColor = GrGLSLExpr4(name);
+ } else if (GrGLProgramDesc::kAllOnes_ColorInput == header.fColorInput) {
+ inputColor = GrGLSLExpr4(1);
}
if (GrGLProgramDesc::kUniform_ColorInput == header.fCoverageInput) {
@@ -61,7 +63,7 @@
"Coverage",
&name);
inputCoverage = GrGLSLExpr4(name);
- } else if (GrGLProgramDesc::kSolidWhite_ColorInput == header.fCoverageInput) {
+ } else if (GrGLProgramDesc::kAllOnes_ColorInput == header.fCoverageInput) {
inputCoverage = GrGLSLExpr4(1);
}