| /* |
| * 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<SkSL::Program> 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__"); |
| } |