1 
2 
3 /**************************************************************************************************
4  *** This file was autogenerated from GrDSLFPTest_DoStatement.fp; do not modify.
5  **************************************************************************************************/
6 /* TODO(skia:11854): DSLCPPCodeGenerator is currently a work in progress. */
7 #include "GrDSLFPTest_DoStatement.h"
8 
9 #include "src/core/SkUtils.h"
10 #include "src/gpu/GrTexture.h"
11 #include "src/gpu/glsl/GrGLSLFragmentProcessor.h"
12 #include "src/gpu/glsl/GrGLSLFragmentShaderBuilder.h"
13 #include "src/gpu/glsl/GrGLSLProgramBuilder.h"
14 #include "src/sksl/SkSLCPP.h"
15 #include "src/sksl/SkSLUtil.h"
16 #include "src/sksl/dsl/priv/DSLFPs.h"
17 #include "src/sksl/dsl/priv/DSLWriter.h"
18 
19 class GrGLSLDSLFPTest_DoStatement : public GrGLSLFragmentProcessor {
20 public:
GrGLSLDSLFPTest_DoStatement()21     GrGLSLDSLFPTest_DoStatement() {}
emitCode(EmitArgs & args)22     void emitCode(EmitArgs& args) override {
23         [[maybe_unused]] const GrDSLFPTest_DoStatement& _outer = args.fFp.cast<GrDSLFPTest_DoStatement>();
24 
25         using namespace SkSL::dsl;
26         StartFragmentProcessor(this, &args);
27 [[maybe_unused]] const auto& shouldLoop = _outer.shouldLoop;
28 Var _shouldLoop(kConst_Modifier, DSLType(kBool_Type), "shouldLoop", Bool(!!(shouldLoop)));
29 Declare(_shouldLoop);
30 Var _color(kNo_Modifier, DSLType(kHalf4_Type), "color", Half4(1.0f, 1.0f, 1.0f, 1.0f));
31 Declare(_color);
32 Do(_color.x() -= 0.25f, /*While:*/ _shouldLoop);
33 Do(Block(_color.x() -= 0.25f, If(_color.x() <= 0.0f, /*Then:*/ Break())), /*While:*/ _color.w() == 1.0f);
34 Do(Block(_color.z() -= 0.25f, If(_color.w() == 1.0f || sk_Caps.builtinFMASupport, /*Then:*/ Continue()), _color.y() = 0.0f), /*While:*/ _color.z() > 0.0f);
35 Return(_color);
36         EndFragmentProcessor();
37     }
38 private:
onSetData(const GrGLSLProgramDataManager & pdman,const GrFragmentProcessor & _proc)39     void onSetData(const GrGLSLProgramDataManager& pdman, const GrFragmentProcessor& _proc) override {
40     }
41 };
onMakeProgramImpl() const42 std::unique_ptr<GrGLSLFragmentProcessor> GrDSLFPTest_DoStatement::onMakeProgramImpl() const {
43     return std::make_unique<GrGLSLDSLFPTest_DoStatement>();
44 }
onGetGLSLProcessorKey(const GrShaderCaps & caps,GrProcessorKeyBuilder * b) const45 void GrDSLFPTest_DoStatement::onGetGLSLProcessorKey(const GrShaderCaps& caps, GrProcessorKeyBuilder* b) const {
46     b->addBool(shouldLoop, "shouldLoop");
47 }
onIsEqual(const GrFragmentProcessor & other) const48 bool GrDSLFPTest_DoStatement::onIsEqual(const GrFragmentProcessor& other) const {
49     const GrDSLFPTest_DoStatement& that = other.cast<GrDSLFPTest_DoStatement>();
50     (void) that;
51     if (shouldLoop != that.shouldLoop) return false;
52     return true;
53 }
GrDSLFPTest_DoStatement(const GrDSLFPTest_DoStatement & src)54 GrDSLFPTest_DoStatement::GrDSLFPTest_DoStatement(const GrDSLFPTest_DoStatement& src)
55 : INHERITED(kGrDSLFPTest_DoStatement_ClassID, src.optimizationFlags())
56 , shouldLoop(src.shouldLoop) {
57         this->cloneAndRegisterAllChildProcessors(src);
58 }
clone() const59 std::unique_ptr<GrFragmentProcessor> GrDSLFPTest_DoStatement::clone() const {
60     return std::make_unique<GrDSLFPTest_DoStatement>(*this);
61 }
62 #if GR_TEST_UTILS
onDumpInfo() const63 SkString GrDSLFPTest_DoStatement::onDumpInfo() const {
64     return SkStringPrintf("(shouldLoop=%d)", !!(shouldLoop));
65 }
66 #endif
67