diff options
author | Brian Salomon <bsalomon@google.com> | 2017-08-17 11:07:59 -0400 |
---|---|---|
committer | Skia Commit-Bot <skia-commit-bot@chromium.org> | 2017-08-17 15:08:17 +0000 |
commit | 1d816b92bb7cf2258007f3f74ffd143b89f25d01 (patch) | |
tree | 07fb1e8e2631208eb007a4abdfe130db91e6cfc2 /src/effects/SkHighContrastFilter.cpp | |
parent | 23f92277b916a4bdf11c320799ac9248af60a62e (diff) |
Revert "Switched highp float to highfloat and mediump float to half."
This reverts commit 88d99c63878c2d3d340120f0321676f72afcb4f0.
Reason for revert: Believed to be causing unit test failures in Chrome roll:
https://build.chromium.org/p/tryserver.chromium.android/builders/linux_android_rel_ng/builds/364433
https://luci-logdog.appspot.com/v/?s=chromium%2Fbb%2Ftryserver.chromium.android%2Flinux_android_rel_ng%2F364433%2F%2B%2Frecipes%2Fsteps%2Fcontent_browsertests__with_patch__on_Android%2F0%2Flogs%2FWebRtcCaptureFromElementBrowserTest.VerifyCanvasWebGLCaptureColor%2F0
Original change's description:
> 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>
TBR=bsalomon@google.com,csmartdalton@google.com,ethannicholas@google.com
Change-Id: I8bfa97547ac3920d433665f161d27df3f15c83aa
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: skia:
Reviewed-on: https://skia-review.googlesource.com/35705
Commit-Queue: Brian Salomon <bsalomon@google.com>
Reviewed-by: Brian Salomon <bsalomon@google.com>
Diffstat (limited to 'src/effects/SkHighContrastFilter.cpp')
-rw-r--r-- | src/effects/SkHighContrastFilter.cpp | 47 |
1 files changed, 24 insertions, 23 deletions
diff --git a/src/effects/SkHighContrastFilter.cpp b/src/effects/SkHighContrastFilter.cpp index 7618861c5f..3de7603c74 100644 --- a/src/effects/SkHighContrastFilter.cpp +++ b/src/effects/SkHighContrastFilter.cpp @@ -247,46 +247,47 @@ void GLHighContrastFilterEffect::GenKey( void GLHighContrastFilterEffect::emitCode(EmitArgs& args) { const char* contrast; - fContrastUni = args.fUniformHandler->addUniform(kFragment_GrShaderFlag, kHalf_GrSLType, + fContrastUni = args.fUniformHandler->addUniform(kFragment_GrShaderFlag, + kFloat_GrSLType, kDefault_GrSLPrecision, "contrast", &contrast); if (nullptr == args.fInputColor) { - args.fInputColor = "half4(1)"; + args.fInputColor = "float4(1)"; } GrGLSLFPFragmentBuilder* fragBuilder = args.fFragBuilder; - fragBuilder->codeAppendf("half4 color = %s;", args.fInputColor); + fragBuilder->codeAppendf("float4 color = %s;", args.fInputColor); // Unpremultiply. The max() is to guard against 0 / 0. - fragBuilder->codeAppendf("half nonZeroAlpha = max(color.a, 0.00001);"); - fragBuilder->codeAppendf("color = half4(color.rgb / nonZeroAlpha, nonZeroAlpha);"); + fragBuilder->codeAppendf("float nonZeroAlpha = max(color.a, 0.00001);"); + fragBuilder->codeAppendf("color = float4(color.rgb / nonZeroAlpha, nonZeroAlpha);"); // Grayscale. if (fConfig.fGrayscale) { - fragBuilder->codeAppendf("half luma = dot(color, half4(%f, %f, %f, 0));", + fragBuilder->codeAppendf("float luma = dot(color, float4(%f, %f, %f, 0));", SK_LUM_COEFF_R, SK_LUM_COEFF_G, SK_LUM_COEFF_B); - fragBuilder->codeAppendf("color = half4(luma, luma, luma, 0);"); + fragBuilder->codeAppendf("color = float4(luma, luma, luma, 0);"); } if (fConfig.fInvertStyle == InvertStyle::kInvertBrightness) { - fragBuilder->codeAppendf("color = half4(1, 1, 1, 1) - color;"); + fragBuilder->codeAppendf("color = float4(1, 1, 1, 1) - color;"); } if (fConfig.fInvertStyle == InvertStyle::kInvertLightness) { // Convert from RGB to HSL. - fragBuilder->codeAppendf("half fmax = max(color.r, max(color.g, color.b));"); - fragBuilder->codeAppendf("half fmin = min(color.r, min(color.g, color.b));"); - fragBuilder->codeAppendf("half l = (fmax + fmin) / 2;"); + fragBuilder->codeAppendf("float fmax = max(color.r, max(color.g, color.b));"); + fragBuilder->codeAppendf("float fmin = min(color.r, min(color.g, color.b));"); + fragBuilder->codeAppendf("float l = (fmax + fmin) / 2;"); - fragBuilder->codeAppendf("half h;"); - fragBuilder->codeAppendf("half s;"); + fragBuilder->codeAppendf("float h;"); + fragBuilder->codeAppendf("float s;"); fragBuilder->codeAppendf("if (fmax == fmin) {"); fragBuilder->codeAppendf(" h = 0;"); fragBuilder->codeAppendf(" s = 0;"); fragBuilder->codeAppendf("} else {"); - fragBuilder->codeAppendf(" half d = fmax - fmin;"); + fragBuilder->codeAppendf(" float d = fmax - fmin;"); fragBuilder->codeAppendf(" s = l > 0.5 ?"); fragBuilder->codeAppendf(" d / (2 - fmax - fmin) :"); fragBuilder->codeAppendf(" d / (fmax + fmin);"); @@ -304,11 +305,11 @@ void GLHighContrastFilterEffect::emitCode(EmitArgs& args) { // Convert back from HSL to RGB. SkString hue2rgbFuncName; static const GrShaderVar gHue2rgbArgs[] = { - GrShaderVar("p", kHalf_GrSLType), - GrShaderVar("q", kHalf_GrSLType), - GrShaderVar("t", kHalf_GrSLType), + GrShaderVar("p", kFloat_GrSLType), + GrShaderVar("q", kFloat_GrSLType), + GrShaderVar("t", kFloat_GrSLType), }; - fragBuilder->emitFunction(kHalf_GrSLType, + fragBuilder->emitFunction(kFloat_GrSLType, "hue2rgb", SK_ARRAY_COUNT(gHue2rgbArgs), gHue2rgbArgs, @@ -325,10 +326,10 @@ void GLHighContrastFilterEffect::emitCode(EmitArgs& args) { "return p;", &hue2rgbFuncName); fragBuilder->codeAppendf("if (s == 0) {"); - fragBuilder->codeAppendf(" color = half4(l, l, l, 0);"); + fragBuilder->codeAppendf(" color = float4(l, l, l, 0);"); fragBuilder->codeAppendf("} else {"); - fragBuilder->codeAppendf(" half q = l < 0.5 ? l * (1 + s) : l + s - l * s;"); - fragBuilder->codeAppendf(" half p = 2 * l - q;"); + fragBuilder->codeAppendf(" float q = l < 0.5 ? l * (1 + s) : l + s - l * s;"); + fragBuilder->codeAppendf(" float p = 2 * l - q;"); fragBuilder->codeAppendf(" color.r = %s(p, q, h + 1/3.);", hue2rgbFuncName.c_str()); fragBuilder->codeAppendf(" color.g = %s(p, q, h);", hue2rgbFuncName.c_str()); fragBuilder->codeAppendf(" color.b = %s(p, q, h - 1/3.);", hue2rgbFuncName.c_str()); @@ -337,8 +338,8 @@ void GLHighContrastFilterEffect::emitCode(EmitArgs& args) { // Contrast. fragBuilder->codeAppendf("if (%s != 0) {", contrast); - fragBuilder->codeAppendf(" half m = (1 + %s) / (1 - %s);", contrast, contrast); - fragBuilder->codeAppendf(" half off = (-0.5 * m + 0.5);"); + fragBuilder->codeAppendf(" float m = (1 + %s) / (1 - %s);", contrast, contrast); + fragBuilder->codeAppendf(" float off = (-0.5 * m + 0.5);"); fragBuilder->codeAppendf(" color = m * color + off;"); fragBuilder->codeAppendf("}"); |