aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/gpu/gl/GrGLProgram.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/gpu/gl/GrGLProgram.cpp')
-rw-r--r--src/gpu/gl/GrGLProgram.cpp52
1 files changed, 1 insertions, 51 deletions
diff --git a/src/gpu/gl/GrGLProgram.cpp b/src/gpu/gl/GrGLProgram.cpp
index 88b1456dcf..27a0b12d3b 100644
--- a/src/gpu/gl/GrGLProgram.cpp
+++ b/src/gpu/gl/GrGLProgram.cpp
@@ -413,57 +413,7 @@ void GrGLProgram::genEdgeCoverage(const GrGLContextInfo& gl,
CachedData* programData,
GrStringBuilder* coverageVar,
ShaderCodeSegments* segments) const {
- if (fProgramDesc.fEdgeAANumEdges > 0) {
- segments->fFSUnis.push_back().set(kVec3f_GrSLType,
- GrGLShaderVar::kUniform_TypeModifier,
- EDGES_UNI_NAME,
- fProgramDesc.fEdgeAANumEdges);
- programData->fUniLocations.fEdgesUni = kUseUniform;
- int count = fProgramDesc.fEdgeAANumEdges;
- segments->fFSCode.append(
- "\tvec3 pos = vec3(gl_FragCoord.xy, 1);\n");
- for (int i = 0; i < count; i++) {
- segments->fFSCode.append("\tfloat a");
- segments->fFSCode.appendS32(i);
- segments->fFSCode.append(" = clamp(dot(" EDGES_UNI_NAME "[");
- segments->fFSCode.appendS32(i);
- segments->fFSCode.append("], pos), 0.0, 1.0);\n");
- }
- if (fProgramDesc.fEdgeAAConcave && (count & 0x01) == 0) {
- // For concave polys, we consider the edges in pairs.
- segments->fFSFunctions.append("float cross2(vec2 a, vec2 b) {\n");
- segments->fFSFunctions.append("\treturn dot(a, vec2(b.y, -b.x));\n");
- segments->fFSFunctions.append("}\n");
- for (int i = 0; i < count; i += 2) {
- segments->fFSCode.appendf("\tfloat eb%d;\n", i / 2);
- segments->fFSCode.appendf("\tif (cross2(" EDGES_UNI_NAME "[%d].xy, " EDGES_UNI_NAME "[%d].xy) < 0.0) {\n", i, i + 1);
- segments->fFSCode.appendf("\t\teb%d = a%d * a%d;\n", i / 2, i, i + 1);
- segments->fFSCode.append("\t} else {\n");
- segments->fFSCode.appendf("\t\teb%d = a%d + a%d - a%d * a%d;\n", i / 2, i, i + 1, i, i + 1);
- segments->fFSCode.append("\t}\n");
- }
- segments->fFSCode.append("\tfloat edgeAlpha = ");
- for (int i = 0; i < count / 2 - 1; i++) {
- segments->fFSCode.appendf("min(eb%d, ", i);
- }
- segments->fFSCode.appendf("eb%d", count / 2 - 1);
- for (int i = 0; i < count / 2 - 1; i++) {
- segments->fFSCode.append(")");
- }
- segments->fFSCode.append(";\n");
- } else {
- segments->fFSCode.append("\tfloat edgeAlpha = ");
- for (int i = 0; i < count - 1; i++) {
- segments->fFSCode.appendf("min(a%d * a%d, ", i, i + 1);
- }
- segments->fFSCode.appendf("a%d * a0", count - 1);
- for (int i = 0; i < count - 1; i++) {
- segments->fFSCode.append(")");
- }
- segments->fFSCode.append(";\n");
- }
- *coverageVar = "edgeAlpha";
- } else if (layout & GrDrawTarget::kEdge_VertexLayoutBit) {
+ if (layout & GrDrawTarget::kEdge_VertexLayoutBit) {
const char *vsName, *fsName;
append_varying(kVec4f_GrSLType, "Edge", segments,
&vsName, &fsName);