blob: 9beca53da3601908753ba570ddb40b7e7db59dfa [file] [log] [blame]
Kevin Lubicke9c1ce82019-03-11 11:09:40 -04001/*
2 * Copyright 2019 Google, LLC
3 *
4 * Use of this source code is governed by a BSD-style license that can be
5 * found in the LICENSE file.
6 */
7
8#include "GrShaderCaps.h"
9#include "SkSLCompiler.h"
10
11#include "../Fuzz.h"
12
13bool FuzzSKSL2GLSL(sk_sp<SkData> bytes) {
14 SkSL::Compiler compiler;
15 SkSL::String output;
16 SkSL::Program::Settings settings;
17 sk_sp<GrShaderCaps> caps = SkSL::ShaderCapsFactory::Default();
18 settings.fCaps = caps.get();
19 std::unique_ptr<SkSL::Program> program = compiler.convertProgram(
20 SkSL::Program::kFragment_Kind,
Kevin Lubick39cbe462019-03-11 15:38:00 -040021 SkSL::String((const char*) bytes->data(),
22 bytes->size()),
Kevin Lubicke9c1ce82019-03-11 11:09:40 -040023 settings);
24 if (!program || !compiler.toGLSL(*program, &output)) {
25 return false;
26 }
27 return true;
28}
29
30#if defined(IS_FUZZING_WITH_LIBFUZZER)
31extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
32 auto bytes = SkData::MakeWithoutCopy(data, size);
33 FuzzSKSL2GLSL(bytes);
34 return 0;
35}
36#endif