| |
| |
| /************************************************************************************************** |
| *** 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<GrDSLFPTest_Ternary>(); |
| |
| 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<GrDSLFPTest_Ternary>(); |
| { |
| 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<GrGLSLFragmentProcessor> GrDSLFPTest_Ternary::onMakeProgramImpl() const { |
| return std::make_unique<GrGLSLDSLFPTest_Ternary>(); |
| } |
| 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<GrDSLFPTest_Ternary>(); |
| (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<GrFragmentProcessor> GrDSLFPTest_Ternary::clone() const { |
| return std::make_unique<GrDSLFPTest_Ternary>(*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 |