From 941e7e2c9567ab1d8a3b2d1b0e3db71ee5eb75c9 Mon Sep 17 00:00:00 2001 From: Ethan Nicholas Date: Mon, 12 Dec 2016 15:33:30 -0500 Subject: re-land of added sk_FragCoord support to skslc BUG=skia: Change-Id: Ifac1aa39839058787ad1794200c3dbb93c147a69 Reviewed-on: https://skia-review.googlesource.com/5850 Reviewed-by: Ethan Nicholas Commit-Queue: Ethan Nicholas --- src/gpu/glsl/GrGLSLFragmentShaderBuilder.cpp | 44 +--------------------------- 1 file changed, 1 insertion(+), 43 deletions(-) (limited to 'src/gpu/glsl/GrGLSLFragmentShaderBuilder.cpp') diff --git a/src/gpu/glsl/GrGLSLFragmentShaderBuilder.cpp b/src/gpu/glsl/GrGLSLFragmentShaderBuilder.cpp index 8355f1de7d..7ef734876c 100644 --- a/src/gpu/glsl/GrGLSLFragmentShaderBuilder.cpp +++ b/src/gpu/glsl/GrGLSLFragmentShaderBuilder.cpp @@ -132,49 +132,7 @@ SkString GrGLSLFragmentShaderBuilder::ensureCoords2D(const GrShaderVar& coords) const char* GrGLSLFragmentShaderBuilder::fragmentPosition() { SkDEBUGCODE(fUsedProcessorFeatures |= GrProcessor::kFragmentPosition_RequiredFeature;) - - const GrShaderCaps* shaderCaps = fProgramBuilder->shaderCaps(); - // We only declare "gl_FragCoord" when we're in the case where we want to use layout qualifiers - // to reverse y. Otherwise it isn't necessary and whether the "in" qualifier appears in the - // declaration varies in earlier GLSL specs. So it is simpler to omit it. - if (kTopLeft_GrSurfaceOrigin == this->getSurfaceOrigin()) { - fSetupFragPosition = true; - return "gl_FragCoord"; - } else if (const char* extension = shaderCaps->fragCoordConventionsExtensionString()) { - if (!fSetupFragPosition) { - if (shaderCaps->generation() < k150_GrGLSLGeneration) { - this->addFeature(1 << kFragCoordConventions_GLSLPrivateFeature, - extension); - } - fInputs.push_back().set(kVec4f_GrSLType, - "gl_FragCoord", - GrShaderVar::kIn_TypeModifier, - kDefault_GrSLPrecision, - "origin_upper_left"); - fSetupFragPosition = true; - } - return "gl_FragCoord"; - } else { - static const char* kTempName = "tmpXYFragCoord"; - static const char* kCoordName = "fragCoordYDown"; - if (!fSetupFragPosition) { - const char* rtHeightName; - - fProgramBuilder->addRTHeightUniform("RTHeight", &rtHeightName); - - // The Adreno compiler seems to be very touchy about access to "gl_FragCoord". - // Accessing glFragCoord.zw can cause a program to fail to link. Additionally, - // depending on the surrounding code, accessing .xy with a uniform involved can - // do the same thing. Copying gl_FragCoord.xy into a temp vec2 beforehand - // (and only accessing .xy) seems to "fix" things. - this->codePrependf("\thighp vec4 %s = vec4(%s.x, %s - %s.y, 1.0, 1.0);\n", kCoordName, - kTempName, rtHeightName, kTempName); - this->codePrependf("highp vec2 %s = gl_FragCoord.xy;", kTempName); - fSetupFragPosition = true; - } - SkASSERT(fProgramBuilder->fUniformHandles.fRTHeightUni.isValid()); - return kCoordName; - } + return "sk_FragCoord"; } const char* GrGLSLFragmentShaderBuilder::distanceVectorName() const { -- cgit v1.2.3