/************************************************************************************************** *** This file was autogenerated from GrDSLFPTest_Ternary.fp; do not modify. **************************************************************************************************/ /* TODO(skia:11854): DSLCPPCodeGenerator is currently a work in progress. */ #include "GrDSLFPTest_Ternary.h" #include "src/core/SkUtils.h" #include "src/gpu/GrTexture.h" #include "src/gpu/glsl/GrGLSLFragmentProcessor.h" #include "src/gpu/glsl/GrGLSLFragmentShaderBuilder.h" #include "src/gpu/glsl/GrGLSLProgramBuilder.h" #include "src/sksl/SkSLCPP.h" #include "src/sksl/SkSLUtil.h" #include "src/sksl/dsl/priv/DSLFPs.h" #include "src/sksl/dsl/priv/DSLWriter.h" class GrGLSLDSLFPTest_Ternary : public GrGLSLFragmentProcessor { public: GrGLSLDSLFPTest_Ternary() {} void emitCode(EmitArgs& args) override { [[maybe_unused]] const GrDSLFPTest_Ternary& _outer = args.fFp.cast(); using namespace SkSL::dsl; StartFragmentProcessor(this, &args); [[maybe_unused]] const auto& primaryColors = _outer.primaryColors; Var _primaryColors(kConst_Modifier, DSLType(kBool_Type), "primaryColors", Bool(!!(primaryColors))); Declare(_primaryColors); Var _colorGreen; if (primaryColors) { Var(kUniform_Modifier, DSLType(kHalf4_Type), "colorGreen").swap(_colorGreen); colorGreenVar = VarUniformHandle(_colorGreen); DeclareGlobal(_colorGreen); } else { Var(kConst_Modifier, DSLType(kHalf4_Type), "colorGreen", Half4(0)).swap(_colorGreen); Declare(_colorGreen); } Var _colorRed; if (primaryColors) { Var(kUniform_Modifier, DSLType(kHalf4_Type), "colorRed").swap(_colorRed); colorRedVar = VarUniformHandle(_colorRed); DeclareGlobal(_colorRed); } else { Var(kConst_Modifier, DSLType(kHalf4_Type), "colorRed", Half4(0)).swap(_colorRed); Declare(_colorRed); } Var _colorOrange; if (!primaryColors) { Var(kUniform_Modifier, DSLType(kHalf4_Type), "colorOrange").swap(_colorOrange); colorOrangeVar = VarUniformHandle(_colorOrange); DeclareGlobal(_colorOrange); } else { Var(kConst_Modifier, DSLType(kHalf4_Type), "colorOrange", Half4(0)).swap(_colorOrange); Declare(_colorOrange); } Var _colorPurple; if (!primaryColors) { Var(kUniform_Modifier, DSLType(kHalf4_Type), "colorPurple").swap(_colorPurple); colorPurpleVar = VarUniformHandle(_colorPurple); DeclareGlobal(_colorPurple); } else { Var(kConst_Modifier, DSLType(kHalf4_Type), "colorPurple", Half4(0)).swap(_colorPurple); Declare(_colorPurple); } Var _green(kNo_Modifier, DSLType(kHalf4_Type), "green", Select(_primaryColors, /*If True:*/ _colorGreen, /*If False:*/ _colorOrange)); Var _red(kNo_Modifier, DSLType(kHalf4_Type), "red", Select(_primaryColors, /*If True:*/ _colorRed, /*If False:*/ _colorPurple)); Var _t(kNo_Modifier, DSLType(kBool_Type), "t", true); Var _f(kNo_Modifier, DSLType(kBool_Type), "f", false); Declare(_green); Declare(_red); Declare(_t); Declare(_f); Return(Half4(Select(_t, /*If True:*/ _green.x(), /*If False:*/ _red.x()), Select(_f, /*If True:*/ _red.y(), /*If False:*/ _green.y()), Select(_green.y() == _red.x(), /*If True:*/ _green.z(), /*If False:*/ _red.x()), Select(_green.w() != _red.w(), /*If True:*/ _red.y(), /*If False:*/ _green.w()))); EndFragmentProcessor(); } private: void onSetData(const GrGLSLProgramDataManager& pdman, const GrFragmentProcessor& _proc) override { const GrDSLFPTest_Ternary& _outer = _proc.cast(); { if (colorGreenVar.isValid()) { pdman.set4fv(colorGreenVar, 1, (_outer.colorGreen).vec()); } if (colorRedVar.isValid()) { pdman.set4fv(colorRedVar, 1, (_outer.colorRed).vec()); } if (colorOrangeVar.isValid()) { pdman.set4fv(colorOrangeVar, 1, (_outer.colorOrange).vec()); } if (colorPurpleVar.isValid()) { pdman.set4fv(colorPurpleVar, 1, (_outer.colorPurple).vec()); } } } UniformHandle colorGreenVar; UniformHandle colorRedVar; UniformHandle colorOrangeVar; UniformHandle colorPurpleVar; }; std::unique_ptr GrDSLFPTest_Ternary::onMakeProgramImpl() const { return std::make_unique(); } void GrDSLFPTest_Ternary::onGetGLSLProcessorKey(const GrShaderCaps& caps, GrProcessorKeyBuilder* b) const { b->addBool(primaryColors, "primaryColors"); } bool GrDSLFPTest_Ternary::onIsEqual(const GrFragmentProcessor& other) const { const GrDSLFPTest_Ternary& that = other.cast(); (void) that; if (primaryColors != that.primaryColors) return false; if (colorGreen != that.colorGreen) return false; if (colorRed != that.colorRed) return false; if (colorOrange != that.colorOrange) return false; if (colorPurple != that.colorPurple) return false; return true; } GrDSLFPTest_Ternary::GrDSLFPTest_Ternary(const GrDSLFPTest_Ternary& src) : INHERITED(kGrDSLFPTest_Ternary_ClassID, src.optimizationFlags()) , primaryColors(src.primaryColors) , colorGreen(src.colorGreen) , colorRed(src.colorRed) , colorOrange(src.colorOrange) , colorPurple(src.colorPurple) { this->cloneAndRegisterAllChildProcessors(src); } std::unique_ptr GrDSLFPTest_Ternary::clone() const { return std::make_unique(*this); } #if GR_TEST_UTILS SkString GrDSLFPTest_Ternary::onDumpInfo() const { return SkStringPrintf("(primaryColors=%d, colorGreen=half4(%f, %f, %f, %f), colorRed=half4(%f, %f, %f, %f), colorOrange=half4(%f, %f, %f, %f), colorPurple=half4(%f, %f, %f, %f))", !!(primaryColors), colorGreen.fR, colorGreen.fG, colorGreen.fB, colorGreen.fA, colorRed.fR, colorRed.fG, colorRed.fB, colorRed.fA, colorOrange.fR, colorOrange.fG, colorOrange.fB, colorOrange.fA, colorPurple.fR, colorPurple.fG, colorPurple.fB, colorPurple.fA); } #endif