Lines Matching refs:GrFragmentProcessor

34 class GrFragmentProcessor;
35 using GrFPResult = std::tuple<bool /*success*/, std::unique_ptr<GrFragmentProcessor>>;
41 class GrFragmentProcessor : public GrProcessor {
44 * Every GrFragmentProcessor must be capable of creating a subclass of ProgramImpl. The
45 * ProgramImpl emits the fragment shader code that implements the GrFragmentProcessor, is
47 * GrFragmentProcessor instances.
62 static std::unique_ptr<GrFragmentProcessor> MakeColor(SkPMColor4f color);
69 static std::unique_ptr<GrFragmentProcessor> MulInputByChildAlpha(
70 std::unique_ptr<GrFragmentProcessor> child);
76 static std::unique_ptr<GrFragmentProcessor> ApplyPaintAlpha(
77 std::unique_ptr<GrFragmentProcessor> child);
84 static std::unique_ptr<GrFragmentProcessor> ModulateRGBA(
85 std::unique_ptr<GrFragmentProcessor> child, const SkPMColor4f& color);
92 static std::unique_ptr<GrFragmentProcessor> OverrideInput(std::unique_ptr<GrFragmentProcessor>,
100 static std::unique_ptr<GrFragmentProcessor> DisableCoverageAsAlpha(
101 std::unique_ptr<GrFragmentProcessor>);
108 static std::unique_ptr<GrFragmentProcessor> UseDestColorAsInput(
109 std::unique_ptr<GrFragmentProcessor>);
115 static std::unique_ptr<GrFragmentProcessor> SwizzleOutput(std::unique_ptr<GrFragmentProcessor>,
122 static std::unique_ptr<GrFragmentProcessor> ClampOutput(std::unique_ptr<GrFragmentProcessor>);
129 static std::unique_ptr<GrFragmentProcessor> Compose(std::unique_ptr<GrFragmentProcessor> f,
130 std::unique_ptr<GrFragmentProcessor> g);
136 static std::unique_ptr<GrFragmentProcessor> ColorMatrix(
137 std::unique_ptr<GrFragmentProcessor> child,
147 static std::unique_ptr<GrFragmentProcessor> SurfaceColor();
153 static std::unique_ptr<GrFragmentProcessor> DeviceSpace(std::unique_ptr<GrFragmentProcessor>);
160 static std::unique_ptr<GrFragmentProcessor> Rect(std::unique_ptr<GrFragmentProcessor>,
164 static GrFPResult Circle(std::unique_ptr<GrFragmentProcessor>,
170 static GrFPResult CircleSDF(std::unique_ptr<GrFragmentProcessor>,
174 static GrFPResult Ellipse(std::unique_ptr<GrFragmentProcessor>,
184 static std::unique_ptr<GrFragmentProcessor> HighPrecision(std::unique_ptr<GrFragmentProcessor>);
190 virtual std::unique_ptr<GrFragmentProcessor> clone() const = 0;
193 const GrFragmentProcessor* parent() const { return fParent; }
209 GrFragmentProcessor* childProcessor(int index) { return fChildProcessors[index].get(); }
210 const GrFragmentProcessor* childProcessor(int index) const {
297 bool isEqual(const GrFragmentProcessor& that) const;
303 void visitWithImpls(const std::function<void(const GrFragmentProcessor&, ProgramImpl&)>&,
355 GrFragmentProcessor(ClassID classID, OptimizationFlags optimizationFlags)
360 explicit GrFragmentProcessor(const GrFragmentProcessor& src)
370 static OptimizationFlags ProcessorOptimizationFlags(const GrFragmentProcessor* fp) {
379 static SkPMColor4f ConstantOutputForConstantInput(const GrFragmentProcessor* fp,
400 void registerChild(std::unique_ptr<GrFragmentProcessor> child,
407 void cloneAndRegisterAllChildProcessors(const GrFragmentProcessor& src);
439 * GrFragmentProcessor. It will emit the appropriate code and live with the cached program
450 virtual bool onIsEqual(const GrFragmentProcessor&) const = 0;
471 SkSTArray<1, std::unique_ptr<GrFragmentProcessor>, true> fChildProcessors;
472 const GrFragmentProcessor* fParent = nullptr;
481 class GrFragmentProcessor::ProgramImpl {
514 const GrFragmentProcessor& fp,
528 const GrFragmentProcessor& fFp;
538 void setData(const GrGLSLProgramDataManager& pdman, const GrFragmentProcessor& processor);
623 * program thenthe iteration order will agree with a GrFragmentProcessor::Iter initialized with
646 * A ProgramImpl instance can be reused with any GrFragmentProcessor that produces the same
647 * the same key; this function reads data from a GrFragmentProcessor and uploads any
648 * uniform variables required by the shaders created in emitCode(). The GrFragmentProcessor
652 virtual void onSetData(const GrGLSLProgramDataManager&, const GrFragmentProcessor&) {}
659 friend class GrFragmentProcessor;
664 SK_MAKE_BITFIELD_OPS(GrFragmentProcessor::OptimizationFlags)
666 static inline GrFPResult GrFPFailure(std::unique_ptr<GrFragmentProcessor> fp) {
669 static inline GrFPResult GrFPSuccess(std::unique_ptr<GrFragmentProcessor> fp) {