Add fuzzing for transform::BindingRemapper

BUG=tint:722

Change-Id: I742f1e536ef0429c2e7b8c9ea6c13b836a2ec0c2
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/49360
Auto-Submit: Ryan Harrison <rharrison@chromium.org>
Commit-Queue: Ben Clayton <bclayton@google.com>
Kokoro: Kokoro <noreply+kokoro@google.com>
Reviewed-by: Ben Clayton <bclayton@google.com>
This commit is contained in:
Ryan Harrison
2021-04-28 15:35:43 +00:00
committed by Commit Bot service account
parent 0949bdf68f
commit b5c908f700
7 changed files with 133 additions and 25 deletions

View File

@@ -18,25 +18,22 @@ namespace tint {
namespace fuzzers {
extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) {
struct Config {
uint32_t group;
uint32_t binding;
};
if (size < sizeof(Config)) {
return 0;
}
auto* config = reinterpret_cast<const Config*>(data);
data += sizeof(Config);
size -= sizeof(Config);
tint::transform::Manager transform_manager;
tint::transform::DataMap transform_inputs;
transform_inputs.Add<tint::transform::FirstIndexOffset::BindingPoint>(
config->binding, config->group);
if (!ExtractFirstIndexOffsetInputs(&data, &size, &transform_inputs)) {
return 0;
}
if (!ExtractBindingRemapperInputs(&data, &size, &transform_inputs)) {
return 0;
}
transform_manager.Add<tint::transform::BoundArrayAccessors>();
transform_manager.Add<tint::transform::EmitVertexPointSize>();
transform_manager.Add<tint::transform::FirstIndexOffset>();
transform_manager.Add<tint::transform::BindingRemapper>();
tint::fuzzers::CommonFuzzer fuzzer(InputFormat::kWGSL, OutputFormat::kSpv);
fuzzer.SetTransformManager(&transform_manager, std::move(transform_inputs));