1cb93a386Sopenharmony_ci/* 2cb93a386Sopenharmony_ci * Copyright 2020 Google LLC 3cb93a386Sopenharmony_ci * 4cb93a386Sopenharmony_ci * Use of this source code is governed by a BSD-style license that can be 5cb93a386Sopenharmony_ci * found in the LICENSE file. 6cb93a386Sopenharmony_ci */ 7cb93a386Sopenharmony_ci 8cb93a386Sopenharmony_ci#include "src/sksl/SkSLCompiler.h" 9cb93a386Sopenharmony_ci 10cb93a386Sopenharmony_ci#include "tests/Test.h" 11cb93a386Sopenharmony_ci 12cb93a386Sopenharmony_cistatic void test(skiatest::Reporter* r, 13cb93a386Sopenharmony_ci const GrShaderCaps& caps, 14cb93a386Sopenharmony_ci const char* src, 15cb93a386Sopenharmony_ci SkSL::ProgramKind kind = SkSL::ProgramKind::kFragment) { 16cb93a386Sopenharmony_ci SkSL::Compiler compiler(&caps); 17cb93a386Sopenharmony_ci SkSL::Program::Settings settings; 18cb93a386Sopenharmony_ci SkSL::String output; 19cb93a386Sopenharmony_ci std::unique_ptr<SkSL::Program> program = compiler.convertProgram(kind, SkSL::String(src), 20cb93a386Sopenharmony_ci settings); 21cb93a386Sopenharmony_ci if (!program) { 22cb93a386Sopenharmony_ci SkDebugf("Unexpected error compiling %s\n%s", src, compiler.errorText().c_str()); 23cb93a386Sopenharmony_ci REPORTER_ASSERT(r, program); 24cb93a386Sopenharmony_ci } else { 25cb93a386Sopenharmony_ci REPORTER_ASSERT(r, compiler.toGLSL(*program, &output)); 26cb93a386Sopenharmony_ci REPORTER_ASSERT(r, output != ""); 27cb93a386Sopenharmony_ci //SkDebugf("GLSL output:\n\n%s", output.c_str()); 28cb93a386Sopenharmony_ci } 29cb93a386Sopenharmony_ci} 30cb93a386Sopenharmony_ci 31cb93a386Sopenharmony_ciDEF_TEST(SkSLGLSLTestbed, r) { 32cb93a386Sopenharmony_ci // Add in your SkSL here. 33cb93a386Sopenharmony_ci test(r, 34cb93a386Sopenharmony_ci *SkSL::ShaderCapsFactory::Default(), 35cb93a386Sopenharmony_ci R"__SkSL__( 36cb93a386Sopenharmony_ci void main() { 37cb93a386Sopenharmony_ci sk_FragColor = half4(0); 38cb93a386Sopenharmony_ci } 39cb93a386Sopenharmony_ci )__SkSL__"); 40cb93a386Sopenharmony_ci} 41