Flutter Engine
The Flutter Engine
Loading...
Searching...
No Matches
third_party
skia
fuzz
oss_fuzz
FuzzSKSL2SPIRV.cpp
Go to the documentation of this file.
1
/*
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 "
src/gpu/ganesh/GrShaderCaps.h
"
9
#include "
src/sksl/SkSLCompiler.h
"
10
#include "
src/sksl/SkSLProgramKind.h
"
11
#include "
src/sksl/SkSLProgramSettings.h
"
12
#include "
src/sksl/codegen/SkSLSPIRVCodeGenerator.h
"
13
#include "
src/sksl/ir/SkSLProgram.h
"
14
15
#include "
fuzz/Fuzz.h
"
16
17
bool
FuzzSKSL2SPIRV
(
const
uint8_t *data,
size_t
size) {
18
SkSL::Compiler
compiler
;
19
SkSL::ProgramSettings
settings;
20
21
// This tells the compiler where the rt-flip uniform will live should it be required. For
22
// fuzzing purposes we don't care where that is, but the compiler will report an error if we
23
// leave them at their default invalid values, or if the offset overlaps another uniform.
24
settings.fRTFlipOffset = 16384;
25
settings.fRTFlipSet = 0;
26
settings.fRTFlipBinding = 0;
27
28
std::unique_ptr<SkSL::Program> program =
29
compiler
.convertProgram(
SkSL::ProgramKind::kFragment
,
30
std::string(
reinterpret_cast<
const
char
*
>
(data), size),
31
settings);
32
std::string output;
33
if
(!program || !
SkSL::ToSPIRV
(*program,
SkSL::ShaderCapsFactory::Default
(), &output)) {
34
return
false
;
35
}
36
return
true
;
37
}
38
39
#if defined(SK_BUILD_FOR_LIBFUZZER)
40
extern
"C"
int
LLVMFuzzerTestOneInput
(
const
uint8_t *data,
size_t
size) {
41
if
(size > 3000) {
42
return
0;
43
}
44
FuzzSKSL2SPIRV
(data, size);
45
return
0;
46
}
47
#endif
FuzzSKSL2SPIRV
bool FuzzSKSL2SPIRV(const uint8_t *data, size_t size)
Definition
FuzzSKSL2SPIRV.cpp:17
Fuzz.h
GrShaderCaps.h
SkSLCompiler.h
SkSLProgramKind.h
SkSLProgramSettings.h
SkSLProgram.h
SkSLSPIRVCodeGenerator.h
SkSL::Compiler
Definition
SkSLCompiler.h:69
SkSL::ShaderCapsFactory::Default
static const ShaderCaps * Default()
Definition
SkSLUtil.h:166
LLVMFuzzerTestOneInput
int LLVMFuzzerTestOneInput(const uint8_t *Data, size_t Size)
Definition
dart_libfuzzer.cc:85
SkSL::ToSPIRV
bool ToSPIRV(Program &program, const ShaderCaps *caps, OutputStream &out)
Definition
SkSLSPIRVCodeGenerator.cpp:5346
SkSL::ProgramKind::kFragment
@ kFragment
compiler
Definition
compiler.py:1
SkSL::ProgramSettings
Definition
SkSLProgramSettings.h:22
Generated on Fri Apr 26 2024 06:15:59 for Flutter Engine by
1.9.8