• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright 2019 Google Inc.
3  *
4  * Use of this source code is governed by a BSD-style license that can be
5  * found in the LICENSE file.
6  */
7 
8 /**************************************************************************************************
9  *** This file was autogenerated from GrOverrideInputFragmentProcessor.fp; do not modify.
10  **************************************************************************************************/
11 #ifndef GrOverrideInputFragmentProcessor_DEFINED
12 #define GrOverrideInputFragmentProcessor_DEFINED
13 
14 #include "include/core/SkM44.h"
15 #include "include/core/SkTypes.h"
16 
17 #include "src/gpu/GrFragmentProcessor.h"
18 
19 class GrOverrideInputFragmentProcessor : public GrFragmentProcessor {
20 public:
OptFlags(const std::unique_ptr<GrFragmentProcessor> & fp,const SkPMColor4f & color)21     static OptimizationFlags OptFlags(const std::unique_ptr<GrFragmentProcessor>& fp,
22                                       const SkPMColor4f& color) {
23         auto childFlags = ProcessorOptimizationFlags(fp.get());
24         auto flags = kNone_OptimizationFlags;
25         if (childFlags & kConstantOutputForConstantInput_OptimizationFlag) {
26             flags |= kConstantOutputForConstantInput_OptimizationFlag;
27         }
28         if ((childFlags & kPreservesOpaqueInput_OptimizationFlag) && color.isOpaque()) {
29             flags |= kPreservesOpaqueInput_OptimizationFlag;
30         }
31         return flags;
32     }
33 
constantOutputForConstantInput(const SkPMColor4f & input)34     SkPMColor4f constantOutputForConstantInput(const SkPMColor4f& input) const override {
35         return ConstantOutputForConstantInput(this->childProcessor(0), uniformColor);
36     }
37 
38     static std::unique_ptr<GrFragmentProcessor> Make(std::unique_ptr<GrFragmentProcessor> fp,
39                                                      const SkPMColor4f& color,
40                                                      bool useUniform = true) {
41         return std::unique_ptr<GrFragmentProcessor>(
42                 new GrOverrideInputFragmentProcessor(std::move(fp), useUniform, color, color));
43     }
44     GrOverrideInputFragmentProcessor(const GrOverrideInputFragmentProcessor& src);
45     std::unique_ptr<GrFragmentProcessor> clone() const override;
name()46     const char* name() const override { return "OverrideInputFragmentProcessor"; }
47     bool useUniform;
48     SkPMColor4f uniformColor;
49     SkPMColor4f literalColor;
50 
51 private:
GrOverrideInputFragmentProcessor(std::unique_ptr<GrFragmentProcessor> fp,bool useUniform,SkPMColor4f uniformColor,SkPMColor4f literalColor)52     GrOverrideInputFragmentProcessor(std::unique_ptr<GrFragmentProcessor> fp,
53                                      bool useUniform,
54                                      SkPMColor4f uniformColor,
55                                      SkPMColor4f literalColor)
56             : INHERITED(kGrOverrideInputFragmentProcessor_ClassID,
57                         (OptimizationFlags)OptFlags(fp, useUniform ? uniformColor : literalColor))
58             , useUniform(useUniform)
59             , uniformColor(uniformColor)
60             , literalColor(literalColor) {
61         this->registerChild(std::move(fp), SkSL::SampleUsage::PassThrough());
62     }
63     std::unique_ptr<GrGLSLFragmentProcessor> onMakeProgramImpl() const override;
64     void onGetGLSLProcessorKey(const GrShaderCaps&, GrProcessorKeyBuilder*) const override;
65     bool onIsEqual(const GrFragmentProcessor&) const override;
66 #if GR_TEST_UTILS
67     SkString onDumpInfo() const override;
68 #endif
69     GR_DECLARE_FRAGMENT_PROCESSOR_TEST
70     using INHERITED = GrFragmentProcessor;
71 };
72 #endif
73