aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/gpu/effects/GrOverdrawFragmentProcessor.cpp
diff options
context:
space:
mode:
authorGravatar Ethan Nicholas <ethannicholas@google.com>2017-10-25 15:55:58 -0400
committerGravatar Skia Commit-Bot <skia-commit-bot@chromium.org>2017-10-25 20:19:18 +0000
commit8aa4dc9052a64d84cfd0a4330910057bd37b6bf7 (patch)
tree5b8c084ed43b6f10e6014a2fc2959e84c4be3c5b /src/gpu/effects/GrOverdrawFragmentProcessor.cpp
parent4cbb6e6d551e8bea2c040b1aa9dce253cffb9af0 (diff)
converted OverdrawColorFilter to SkSL
Bug: skia: Change-Id: Idcc0502758df1e60ed131a168b5c9a65a4d834a1 Reviewed-on: https://skia-review.googlesource.com/63840 Commit-Queue: Ethan Nicholas <ethannicholas@google.com> Reviewed-by: Brian Salomon <bsalomon@google.com>
Diffstat (limited to 'src/gpu/effects/GrOverdrawFragmentProcessor.cpp')
-rw-r--r--src/gpu/effects/GrOverdrawFragmentProcessor.cpp93
1 files changed, 93 insertions, 0 deletions
diff --git a/src/gpu/effects/GrOverdrawFragmentProcessor.cpp b/src/gpu/effects/GrOverdrawFragmentProcessor.cpp
new file mode 100644
index 0000000000..31ab53d397
--- /dev/null
+++ b/src/gpu/effects/GrOverdrawFragmentProcessor.cpp
@@ -0,0 +1,93 @@
+/*
+ * Copyright 2017 Google Inc.
+ *
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+/*
+ * This file was autogenerated from GrOverdrawFragmentProcessor.fp; do not modify.
+ */
+#include "GrOverdrawFragmentProcessor.h"
+#if SK_SUPPORT_GPU
+#include "glsl/GrGLSLFragmentProcessor.h"
+#include "glsl/GrGLSLFragmentShaderBuilder.h"
+#include "glsl/GrGLSLProgramBuilder.h"
+#include "SkSLCPP.h"
+#include "SkSLUtil.h"
+class GrGLSLOverdrawFragmentProcessor : public GrGLSLFragmentProcessor {
+public:
+ GrGLSLOverdrawFragmentProcessor() {}
+ void emitCode(EmitArgs& args) override {
+ GrGLSLFPFragmentBuilder* fragBuilder = args.fFragBuilder;
+ const GrOverdrawFragmentProcessor& _outer = args.fFp.cast<GrOverdrawFragmentProcessor>();
+ (void)_outer;
+ auto color0 = _outer.color0();
+ (void)color0;
+ auto color1 = _outer.color1();
+ (void)color1;
+ auto color2 = _outer.color2();
+ (void)color2;
+ auto color3 = _outer.color3();
+ (void)color3;
+ auto color4 = _outer.color4();
+ (void)color4;
+ auto color5 = _outer.color5();
+ (void)color5;
+ fragBuilder->codeAppendf(
+ "half alpha = half(255.0 * float(%s.w));\nif (float(alpha) < 0.5) {\n %s = "
+ "half4(%f, %f, %f, %f);\n} else if (float(alpha) < 1.5) {\n %s = half4(%f, %f, "
+ "%f, %f);\n} else if (float(alpha) < 2.5) {\n %s = half4(%f, %f, %f, %f);\n} "
+ "else if (float(alpha) < 3.5) {\n %s = half4(%f, %f, %f, %f);\n} else if "
+ "(float(alpha) < 4.5) {\n %s = half4(%f, %f, %f, %f);\n} else {\n %s = "
+ "half4(%f, %f, %f, %f);\n}\n",
+ args.fInputColor ? args.fInputColor : "half4(1)", args.fOutputColor,
+ SkGetPackedR32(_outer.color0()) / 255.0, SkGetPackedG32(_outer.color0()) / 255.0,
+ SkGetPackedB32(_outer.color0()) / 255.0, SkGetPackedA32(_outer.color0()) / 255.0,
+ args.fOutputColor, SkGetPackedR32(_outer.color1()) / 255.0,
+ SkGetPackedG32(_outer.color1()) / 255.0, SkGetPackedB32(_outer.color1()) / 255.0,
+ SkGetPackedA32(_outer.color1()) / 255.0, args.fOutputColor,
+ SkGetPackedR32(_outer.color2()) / 255.0, SkGetPackedG32(_outer.color2()) / 255.0,
+ SkGetPackedB32(_outer.color2()) / 255.0, SkGetPackedA32(_outer.color2()) / 255.0,
+ args.fOutputColor, SkGetPackedR32(_outer.color3()) / 255.0,
+ SkGetPackedG32(_outer.color3()) / 255.0, SkGetPackedB32(_outer.color3()) / 255.0,
+ SkGetPackedA32(_outer.color3()) / 255.0, args.fOutputColor,
+ SkGetPackedR32(_outer.color4()) / 255.0, SkGetPackedG32(_outer.color4()) / 255.0,
+ SkGetPackedB32(_outer.color4()) / 255.0, SkGetPackedA32(_outer.color4()) / 255.0,
+ args.fOutputColor, SkGetPackedR32(_outer.color5()) / 255.0,
+ SkGetPackedG32(_outer.color5()) / 255.0, SkGetPackedB32(_outer.color5()) / 255.0,
+ SkGetPackedA32(_outer.color5()) / 255.0);
+ }
+
+private:
+ void onSetData(const GrGLSLProgramDataManager& pdman,
+ const GrFragmentProcessor& _proc) override {}
+};
+GrGLSLFragmentProcessor* GrOverdrawFragmentProcessor::onCreateGLSLInstance() const {
+ return new GrGLSLOverdrawFragmentProcessor();
+}
+void GrOverdrawFragmentProcessor::onGetGLSLProcessorKey(const GrShaderCaps& caps,
+ GrProcessorKeyBuilder* b) const {}
+bool GrOverdrawFragmentProcessor::onIsEqual(const GrFragmentProcessor& other) const {
+ const GrOverdrawFragmentProcessor& that = other.cast<GrOverdrawFragmentProcessor>();
+ (void)that;
+ if (fColor0 != that.fColor0) return false;
+ if (fColor1 != that.fColor1) return false;
+ if (fColor2 != that.fColor2) return false;
+ if (fColor3 != that.fColor3) return false;
+ if (fColor4 != that.fColor4) return false;
+ if (fColor5 != that.fColor5) return false;
+ return true;
+}
+GrOverdrawFragmentProcessor::GrOverdrawFragmentProcessor(const GrOverdrawFragmentProcessor& src)
+ : INHERITED(kGrOverdrawFragmentProcessor_ClassID, src.optimizationFlags())
+ , fColor0(src.fColor0)
+ , fColor1(src.fColor1)
+ , fColor2(src.fColor2)
+ , fColor3(src.fColor3)
+ , fColor4(src.fColor4)
+ , fColor5(src.fColor5) {}
+std::unique_ptr<GrFragmentProcessor> GrOverdrawFragmentProcessor::clone() const {
+ return std::unique_ptr<GrFragmentProcessor>(new GrOverdrawFragmentProcessor(*this));
+}
+#endif