/* * Copyright 2020 Google LLC * * Use of this source code is governed by a BSD-style license that can be * found in the LICENSE file. */ #include "src/sksl/SkSLCompiler.h" #include "src/sksl/SkSLStringStream.h" #include "tests/Test.h" static void test(skiatest::Reporter* r, const GrShaderCaps& caps, const char* src) { SkSL::Program::Settings settings; settings.fRemoveDeadFunctions = false; SkSL::Compiler compiler(&caps); SkSL::StringStream output; std::unique_ptr program = compiler.convertProgram( SkSL::ProgramKind::kFragmentProcessor, SkSL::String(src), settings); if (!program) { SkDebugf("Unexpected error compiling %s\n%s", src, compiler.errorText().c_str()); return; } REPORTER_ASSERT(r, program); bool success = compiler.toH(*program, "Test", output); if (!success) { SkDebugf("Unexpected error generating .h file for %s\n%s", src, compiler.errorText().c_str()); } REPORTER_ASSERT(r, success); output.reset(); success = compiler.toCPP(*program, "Test", output); if (!success) { SkDebugf("Unexpected error generating .cpp file for %s\n%s", src, compiler.errorText().c_str()); } REPORTER_ASSERT(r, success); } DEF_TEST(SkSLFPTestbed, r) { test(r, *SkSL::ShaderCapsFactory::Default(), R"__SkSL__( half4 main(float2 coord) { return half4(0); } )__SkSL__"); }