Index: src/gpu/gl/GrGLGeometryProcessor.cpp |
diff --git a/src/gpu/gl/GrGLGeometryProcessor.cpp b/src/gpu/gl/GrGLGeometryProcessor.cpp |
deleted file mode 100644 |
index de4a5a3263619a8e11fe7734e75a36b7ea632bf1..0000000000000000000000000000000000000000 |
--- a/src/gpu/gl/GrGLGeometryProcessor.cpp |
+++ /dev/null |
@@ -1,157 +0,0 @@ |
-/* |
- * Copyright 2014 Google Inc. |
- * |
- * Use of this source code is governed by a BSD-style license that can be |
- * found in the LICENSE file. |
- */ |
- |
-#include "GrGLGeometryProcessor.h" |
- |
-#include "glsl/GrGLSLFragmentShaderBuilder.h" |
-#include "glsl/GrGLSLProcessorTypes.h" |
-#include "glsl/GrGLSLProgramBuilder.h" |
-#include "glsl/GrGLSLVertexShaderBuilder.h" |
- |
-void GrGLGeometryProcessor::emitCode(EmitArgs& args) { |
- GrGLSLVertexBuilder* vsBuilder = args.fPB->getVertexShaderBuilder(); |
- GrGPArgs gpArgs; |
- this->onEmitCode(args, &gpArgs); |
- vsBuilder->transformToNormalizedDeviceSpace(gpArgs.fPositionVar); |
-} |
- |
-void GrGLGeometryProcessor::emitTransforms(GrGLSLGPBuilder* pb, |
- const GrShaderVar& posVar, |
- const char* localCoords, |
- const SkMatrix& localMatrix, |
- const TransformsIn& tin, |
- TransformsOut* tout) { |
- GrGLSLVertexBuilder* vb = pb->getVertexShaderBuilder(); |
- tout->push_back_n(tin.count()); |
- fInstalledTransforms.push_back_n(tin.count()); |
- for (int i = 0; i < tin.count(); i++) { |
- const ProcCoords& coordTransforms = tin[i]; |
- fInstalledTransforms[i].push_back_n(coordTransforms.count()); |
- for (int t = 0; t < coordTransforms.count(); t++) { |
- SkString strUniName("StageMatrix"); |
- strUniName.appendf("_%i_%i", i, t); |
- GrSLType varyingType; |
- |
- GrCoordSet coordType = coordTransforms[t]->sourceCoords(); |
- uint32_t type = coordTransforms[t]->getMatrix().getType(); |
- if (kLocal_GrCoordSet == coordType) { |
- type |= localMatrix.getType(); |
- } |
- varyingType = SkToBool(SkMatrix::kPerspective_Mask & type) ? kVec3f_GrSLType : |
- kVec2f_GrSLType; |
- GrSLPrecision precision = coordTransforms[t]->precision(); |
- |
- const char* uniName; |
- fInstalledTransforms[i][t].fHandle = |
- pb->addUniform(GrGLSLProgramBuilder::kVertex_Visibility, |
- kMat33f_GrSLType, precision, |
- strUniName.c_str(), |
- &uniName).toIndex(); |
- |
- SkString strVaryingName("MatrixCoord"); |
- strVaryingName.appendf("_%i_%i", i, t); |
- |
- GrGLSLVertToFrag v(varyingType); |
- pb->addVarying(strVaryingName.c_str(), &v, precision); |
- |
- SkASSERT(kVec2f_GrSLType == varyingType || kVec3f_GrSLType == varyingType); |
- SkNEW_APPEND_TO_TARRAY(&(*tout)[i], GrGLSLTransformedCoords, |
- (SkString(v.fsIn()), varyingType)); |
- |
- // varying = matrix * coords (logically) |
- if (kDevice_GrCoordSet == coordType) { |
- if (kVec2f_GrSLType == varyingType) { |
- if (kVec2f_GrSLType == posVar.getType()) { |
- vb->codeAppendf("%s = (%s * vec3(%s, 1)).xy;", |
- v.vsOut(), uniName, posVar.c_str()); |
- } else { |
- // The brackets here are just to scope the temp variable |
- vb->codeAppendf("{ vec3 temp = %s * %s;", uniName, posVar.c_str()); |
- vb->codeAppendf("%s = vec2(temp.x/temp.z, temp.y/temp.z); }", v.vsOut()); |
- } |
- } else { |
- if (kVec2f_GrSLType == posVar.getType()) { |
- vb->codeAppendf("%s = %s * vec3(%s, 1);", |
- v.vsOut(), uniName, posVar.c_str()); |
- } else { |
- vb->codeAppendf("%s = %s * %s;", v.vsOut(), uniName, posVar.c_str()); |
- } |
- } |
- } else { |
- if (kVec2f_GrSLType == varyingType) { |
- vb->codeAppendf("%s = (%s * vec3(%s, 1)).xy;", v.vsOut(), uniName, localCoords); |
- } else { |
- vb->codeAppendf("%s = %s * vec3(%s, 1);", v.vsOut(), uniName, localCoords); |
- } |
- } |
- } |
- } |
-} |
- |
-void GrGLGeometryProcessor::emitTransforms(GrGLSLGPBuilder* pb, |
- const char* localCoords, |
- const TransformsIn& tin, |
- TransformsOut* tout) { |
- GrGLSLVertexBuilder* vb = pb->getVertexShaderBuilder(); |
- tout->push_back_n(tin.count()); |
- for (int i = 0; i < tin.count(); i++) { |
- const ProcCoords& coordTransforms = tin[i]; |
- for (int t = 0; t < coordTransforms.count(); t++) { |
- GrSLType varyingType = kVec2f_GrSLType; |
- |
- // Device coords aren't supported |
- SkASSERT(kDevice_GrCoordSet != coordTransforms[t]->sourceCoords()); |
- GrSLPrecision precision = coordTransforms[t]->precision(); |
- |
- SkString strVaryingName("MatrixCoord"); |
- strVaryingName.appendf("_%i_%i", i, t); |
- |
- GrGLSLVertToFrag v(varyingType); |
- pb->addVarying(strVaryingName.c_str(), &v, precision); |
- vb->codeAppendf("%s = %s;", v.vsOut(), localCoords); |
- |
- SkNEW_APPEND_TO_TARRAY(&(*tout)[i], |
- GrGLSLTransformedCoords, |
- (SkString(v.fsIn()), varyingType)); |
- } |
- } |
-} |
- |
-void GrGLGeometryProcessor::setupPosition(GrGLSLGPBuilder* pb, |
- GrGPArgs* gpArgs, |
- const char* posName) { |
- GrGLSLVertexBuilder* vsBuilder = pb->getVertexShaderBuilder(); |
- gpArgs->fPositionVar.set(kVec2f_GrSLType, "pos2"); |
- vsBuilder->codeAppendf("vec2 %s = %s;", gpArgs->fPositionVar.c_str(), posName); |
-} |
- |
-void GrGLGeometryProcessor::setupPosition(GrGLSLGPBuilder* pb, |
- GrGPArgs* gpArgs, |
- const char* posName, |
- const SkMatrix& mat, |
- UniformHandle* viewMatrixUniform) { |
- GrGLSLVertexBuilder* vsBuilder = pb->getVertexShaderBuilder(); |
- if (mat.isIdentity()) { |
- gpArgs->fPositionVar.set(kVec2f_GrSLType, "pos2"); |
- vsBuilder->codeAppendf("vec2 %s = %s;", gpArgs->fPositionVar.c_str(), posName); |
- } else { |
- const char* viewMatrixName; |
- *viewMatrixUniform = pb->addUniform(GrGLSLProgramBuilder::kVertex_Visibility, |
- kMat33f_GrSLType, kHigh_GrSLPrecision, |
- "uViewM", |
- &viewMatrixName); |
- if (!mat.hasPerspective()) { |
- gpArgs->fPositionVar.set(kVec2f_GrSLType, "pos2"); |
- vsBuilder->codeAppendf("vec2 %s = vec2(%s * vec3(%s, 1));", |
- gpArgs->fPositionVar.c_str(), viewMatrixName, posName); |
- } else { |
- gpArgs->fPositionVar.set(kVec3f_GrSLType, "pos3"); |
- vsBuilder->codeAppendf("vec3 %s = %s * vec3(%s, 1);", |
- gpArgs->fPositionVar.c_str(), viewMatrixName, posName); |
- } |
- } |
-} |