diff options
author | 2017-08-16 16:41:30 -0400 | |
---|---|---|
committer | 2017-08-16 23:05:15 +0000 | |
commit | 88d99c63878c2d3d340120f0321676f72afcb4f0 (patch) | |
tree | 5b957dbf2f78ef7a15aa3810f8922c915508683f /src/shaders/gradients/SkGradientShader.cpp | |
parent | a26d219a929f4e70f8597dfd57a53348c4bba905 (diff) |
Switched highp float to highfloat and mediump float to half.
The ultimate goal is to end up with "float" and "half", but this
intermediate step uses "highfloat" so that it is clear if I missed a
"float" somewhere. Once this lands, a subsequent CL will switch all
"highfloats" back to "floats".
Bug: skia:
Change-Id: Ia13225c7a0a0a2901e07665891c473d2500ddcca
Reviewed-on: https://skia-review.googlesource.com/31000
Commit-Queue: Ethan Nicholas <ethannicholas@google.com>
Reviewed-by: Brian Salomon <bsalomon@google.com>
Diffstat (limited to 'src/shaders/gradients/SkGradientShader.cpp')
-rw-r--r-- | src/shaders/gradients/SkGradientShader.cpp | 38 |
1 files changed, 18 insertions, 20 deletions
diff --git a/src/shaders/gradients/SkGradientShader.cpp b/src/shaders/gradients/SkGradientShader.cpp index 1b24ef9ba3..ea3affb0d8 100644 --- a/src/shaders/gradients/SkGradientShader.cpp +++ b/src/shaders/gradients/SkGradientShader.cpp @@ -1361,17 +1361,15 @@ void GrGradientEffect::GLSLProcessor::emitUniforms(GrGLSLUniformHandler* uniform const GrGradientEffect& ge) { if (int colorCount = color_type_to_color_count(ge.getColorType())) { fColorsUni = uniformHandler->addUniformArray(kFragment_GrShaderFlag, - kVec4f_GrSLType, - kDefault_GrSLPrecision, + kHalf4_GrSLType, "Colors", colorCount); if (ge.fColorType == kSingleHardStop_ColorType) { - fHardStopT = uniformHandler->addUniform(kFragment_GrShaderFlag, kFloat_GrSLType, - kDefault_GrSLPrecision, "HardStopT"); + fHardStopT = uniformHandler->addUniform(kFragment_GrShaderFlag, kHalf_GrSLType, + "HardStopT"); } } else { - fFSYUni = uniformHandler->addUniform(kFragment_GrShaderFlag, - kFloat_GrSLType, kDefault_GrSLPrecision, + fFSYUni = uniformHandler->addUniform(kFragment_GrShaderFlag, kHalf_GrSLType, "GradientYCoordFS"); } } @@ -1554,14 +1552,14 @@ void GrGradientEffect::GLSLProcessor::emitAnalyticalColor(GrGLSLFPFragmentBuilde // First, apply tiling rules. switch (ge.fTileMode) { case SkShader::kClamp_TileMode: - fragBuilder->codeAppendf("float clamp_t = clamp(%s, 0.0, 1.0);", t); + fragBuilder->codeAppendf("half clamp_t = clamp(%s, 0.0, 1.0);", t); break; case SkShader::kRepeat_TileMode: - fragBuilder->codeAppendf("float clamp_t = fract(%s);", t); + fragBuilder->codeAppendf("half clamp_t = fract(%s);", t); break; case SkShader::kMirror_TileMode: - fragBuilder->codeAppendf("float t_1 = %s - 1.0;", t); - fragBuilder->codeAppendf("float clamp_t = abs(t_1 - 2.0 * floor(t_1 * 0.5) - 1.0);"); + fragBuilder->codeAppendf("half t_1 = %s - 1.0;", t); + fragBuilder->codeAppendf("half clamp_t = abs(t_1 - 2.0 * floor(t_1 * 0.5) - 1.0);"); break; } @@ -1571,8 +1569,8 @@ void GrGradientEffect::GLSLProcessor::emitAnalyticalColor(GrGLSLFPFragmentBuilde case kSingleHardStop_ColorType: { const char* stopT = uniformHandler->getUniformCStr(fHardStopT); - fragBuilder->codeAppend ("float4 start, end;"); - fragBuilder->codeAppend ("float relative_t;"); + fragBuilder->codeAppend ("half4 start, end;"); + fragBuilder->codeAppend ("half relative_t;"); fragBuilder->codeAppendf("if (clamp_t < %s) {", stopT); fragBuilder->codeAppendf(" start = %s[0];", colors); fragBuilder->codeAppendf(" end = %s[1];", colors); @@ -1582,13 +1580,13 @@ void GrGradientEffect::GLSLProcessor::emitAnalyticalColor(GrGLSLFPFragmentBuilde fragBuilder->codeAppendf(" end = %s[3];", colors); fragBuilder->codeAppendf(" relative_t = (clamp_t - %s) / (1 - %s);", stopT, stopT); fragBuilder->codeAppend ("}"); - fragBuilder->codeAppend ("float4 colorTemp = mix(start, end, relative_t);"); + fragBuilder->codeAppend ("half4 colorTemp = mix(start, end, relative_t);"); break; } case kHardStopLeftEdged_ColorType: { - fragBuilder->codeAppendf("float4 colorTemp = mix(%s[1], %s[2], clamp_t);", colors, + fragBuilder->codeAppendf("half4 colorTemp = mix(%s[1], %s[2], clamp_t);", colors, colors); if (SkShader::kClamp_TileMode == ge.fTileMode) { fragBuilder->codeAppendf("if (%s < 0.0) {", t); @@ -1600,7 +1598,7 @@ void GrGradientEffect::GLSLProcessor::emitAnalyticalColor(GrGLSLFPFragmentBuilde } case kHardStopRightEdged_ColorType: { - fragBuilder->codeAppendf("float4 colorTemp = mix(%s[0], %s[1], clamp_t);", colors, + fragBuilder->codeAppendf("half4 colorTemp = mix(%s[0], %s[1], clamp_t);", colors, colors); if (SkShader::kClamp_TileMode == ge.fTileMode) { fragBuilder->codeAppendf("if (%s > 1.0) {", t); @@ -1612,15 +1610,15 @@ void GrGradientEffect::GLSLProcessor::emitAnalyticalColor(GrGLSLFPFragmentBuilde } case kTwo_ColorType: { - fragBuilder->codeAppendf("float4 colorTemp = mix(%s[0], %s[1], clamp_t);", + fragBuilder->codeAppendf("half4 colorTemp = mix(%s[0], %s[1], clamp_t);", colors, colors); break; } case kThree_ColorType: { - fragBuilder->codeAppendf("float oneMinus2t = 1.0 - (2.0 * clamp_t);"); - fragBuilder->codeAppendf("float4 colorTemp = clamp(oneMinus2t, 0.0, 1.0) * %s[0];", + fragBuilder->codeAppendf("half oneMinus2t = 1.0 - (2.0 * clamp_t);"); + fragBuilder->codeAppendf("half4 colorTemp = clamp(oneMinus2t, 0.0, 1.0) * %s[0];", colors); fragBuilder->codeAppendf("colorTemp += (1.0 - min(abs(oneMinus2t), 1.0)) * %s[1];", colors); @@ -1668,10 +1666,10 @@ void GrGradientEffect::GLSLProcessor::emitColor(GrGLSLFPFragmentBuilder* fragBui const char* fsyuni = uniformHandler->getUniformCStr(fFSYUni); - fragBuilder->codeAppendf("float2 coord = float2(%s, %s);", gradientTValue, fsyuni); + fragBuilder->codeAppendf("half2 coord = half2(%s, %s);", gradientTValue, fsyuni); fragBuilder->codeAppendf("%s = ", outputColor); fragBuilder->appendTextureLookupAndModulate(inputColor, texSamplers[0], "coord", - kVec2f_GrSLType, &fColorSpaceHelper); + kHighFloat2_GrSLType, &fColorSpaceHelper); fragBuilder->codeAppend(";"); } |