Proto commits in google/graphicsfuzz

These 26 commits are when the Protocol Buffers files have changed:

Commit:e5b55e9
Author:Alastair F. Donaldson

Checkpoint.

Commit:1e5af7a
Author:Paul Thomson
Committer:GitHub

gfauto: add keep_reduction_work (#1095)

The documentation is generated from this commit.

Commit:e83e46b
Author:Paul Thomson

gfauto: add keep_reduction_work Add the "keep_reduction_work" setting. If true, then preserve the temporary reduction work directories used when performing a reduction. These directories are useful for debugging reduction issues, but are otherwise not very useful and take up a lot of space.

The documentation is generated from this commit.

Commit:9ad45cb
Author:Paul Thomson
Committer:GitHub

gfauto: add spirv_opt_just_o (#1088) Add "spirv_opt_just_o" setting. This causes us to just generate one additional test from a fuzzed test using `spirv-opt -O ...` rather than generating five additional tests.

Commit:18d3844
Author:Paul Thomson
Committer:GitHub

gfauto: change reduction output (#1035) Renamed the setting `skip_spirv_reduce` -> `skip_semantics_changing_reduction` and made it apply to GLSL reductions as well. Changed the summary output directory for a test so that we get `unreduced`, `reduced_1`, `reduced_2` (if semantics changing reduction was done), and their corresponding result directories with the suffix `_result`. For the `reduced_1` directory, if the `reference` shader directory was renamed to `_reference` (because this is a crash bug so the reference is no longer needed) AND the shader was derived from a `stable_` shader then we now rename `_reference` back to `reference`; this allows generating a "wrong image" test from this directory, even though the bug was a crash bug. The reduction result directory for spirv-fuzz now gets symlinks `1/` and `2/` that point to the semantics-preserving and semantics-changing reduction result directories, respectively, mirroring the GLSL reduction result directory. Fixed tests due to the renamed summary directories.

Commit:a4ab128
Author:Paul Thomson
Committer:GitHub

gfauto: add setting skip_spirv_reduce (#1025) Add a skip_spirv_reduce setting to skip running spirv-reduce. The spirv-fuzz shrinker will still be run. Proto Python was also re-generated. It should have been re-generated previously when our dependencies (protoc) were updated.

Commit:8ffd321
Author:Paul Thomson
Committer:GitHub

gfauto: allow binary path override (#1021) Allow specifying the path of a binary (e.g. in settings.json and test.json) for testing purposes.

Commit:810e61e
Author:Paul Thomson
Committer:GitHub

gfauto: add legacy_graphics_fuzz_vulkan_arg (#1010) Add legacy_graphics_fuzz_vulkan_arg for using older versions of GraphicsFuzz. If true, pass "--generate-uniform-bindings" to the GraphicsFuzz PrepareReference and Generate tools. Otherwise, pass the newer "--vulkan" arg.

Commit:c8e4b9b
Author:Paul Thomson
Committer:GitHub

gfauto: `common_spirv_args` field (#969) Add common_spirv_args field to settings.proto and test.proto. This allows common SPIR-V tools arguments, such as --scalar-block-layout, to be passed to various tools. Useful for relaxing SPIR-V validation across all tools.

Commit:353b567
Author:Paul Thomson
Committer:GitHub

gfauto: spirv-fuzz: support extra args (#939) Add new fields to settings.json: extra_spirv_fuzz_generate_args, extra_spirv_fuzz_shrink_args, extra_spirv_reduce_args. These allow passing extra args to spirv-fuzz and spirv-reduce.

Commit:9513eec
Author:Paul Thomson
Committer:GitHub

gfauto: support stable shaders (#899) With this change, only reference shader jobs that start with "stable_" will lead to wrong image tests. Other tests will just render the variant shader to see if it crashes. This relies on there being shader jobs that are prefixed with "stable_". This change does not bias the random choice of reference towards "stable_" shaders.

Commit:7ffae0d
Author:Paul Thomson
Committer:GitHub

gfauto: add skip_validation (#846) Add skip_validation field to test.proto. If true, skips running spirv-val to validate SPIR-V at every stage. Useful if the validator is buggy or you know the SPIR-V can be handled.

Commit:8cbea06
Author:Paul Thomson
Committer:GitHub

gfauto: reduce_source_dir & crash_regex_override (#845) `gfauto_reduce_source_dir` is a tool that allows you to reduce a source_dir. This can be useful if a reduction failed, or you want to reduce again with a different signature. `crash_regex_override` will override a crash signature so that nondeterministic bugs can be reduced easily (most likely using `gfauto_reduce_source_dir`). E.g. set `crash_regex_override` to `.*error.*` and the reduction will proceed as long as "error" appears in the log.

Commit:2612371
Author:Paul Thomson
Committer:GitHub

gfauto: Add gfauto_settings_update (#840) * settings_update: This tool updates the binary versions and the device details in a settings.json file. * Added code for updating a device (i.e. set the device_properties field, update the relevant binaries, and other things), and refactored existing device creation code to use this. * Fixed Android get_device_driver_details; it did not work with the Amber APK. * Added "custom_launcher" field to the host device type; this allows adding a host device that invokes a script to e.g. set some environment variables and then run Amber. We could have instead had a way to specify some environment variables, but there many options (append or prepend a path to an environment variable using some separator, set some environment variable, add to PATH, etc.) and this will all be fairly platform-specific anyway, so we may as well just rely on invoking a script for maximum flexibility.

Commit:f329810
Author:Paul Thomson
Committer:GitHub

gfauto: add _comment field to settings.proto (#836) The _comment field will contain a URL that links to documentation for the proto. Also change .gitattributes in the root to mark protobuf generated files.

Commit:3f36816
Author:Paul Thomson
Committer:GitHub

Add ignored signatures; improve run_cts_gf_tests (#829) * Add device.ignored_crash_signatures. * Improve run_cts_gf_tests.py to consistently produce a result log and status. Optionally get crash signatures and update the ignored_crash_signatures for each device. * Add a signature recognizer. * Fix download_cts_gf_tests to exclude the index.txt file when applying patches.

Commit:db2e759
Author:Paul Thomson
Committer:GitHub

gfauto: add "only_reduce_signature_regex" (#827) If "only_reduce_signature_regex" is non-empty, gfauto will only launch reductions on reports with a crash signature matching the "only_reduce_signature_regex" regex.

Commit:480185d
Author:Paul Thomson
Committer:GitHub

gfauto: add end to end tests (#822) The end to end tests only run on Linux. Also, use GitHub Actions for gfauto CI, including Windows; only trigger when gfauto files are changed. Update gfauto dependencies. Update Amber version to one that includes the Vulkan Loader. Add `use_amber_vulkan_loader` parameter (to `fuzz.main_helper`) so that we can use the Vulkan loader included with Amber, instead of the system Vulkan loader (which does not exist by default on GitHub Actions VMs).

Commit:726e202
Author:Paul Thomson
Committer:GitHub

gfauto: get device details and other changes (#800) * gfauto: device fingerprint and driver details * gfauto: fix for driver details on host * gfauto: add tool to run arbitrary binary * gfauto: fix add_amber_tests_to_cts.py for new format

Commit:8b1443c
Author:Paul Thomson
Committer:GitHub

gfauto: latest downloaded binaries and other fixes (#799) * gfauto: fix typo that prevented skipping reductions * gfauto: small fix to README * Add more downloaded binaries, use downloaded amber * Use downloaded graphicsfuzz and other fixes * Use downloaded llpc * Support downloading latest binary versions * Continue if downloading versions fails * Use downloaded spirv-fuzz/reduce * run_cts_...: Output shader tests for llpc

Commit:f661316
Author:Paul Thomson
Committer:GitHub

gfauto: various fixes (#785) * gfauto: stop if we cannot get stack traces * gfauto: add instructions for Python issue * Add log file to spirv fuzz failures * Handle glsl-fuzz failures * gfauto: update whitelist.dic * gfauto: clearer error for missing directories * gfauto: better no settings file error message * gfauto: use address as signature as last resort * gfauto: use histogram comparison * gfauto: dump all buffers via Amber * gfauto: allow disabling reductions in settings * gfauto: tool.py: don't require spirv-opt

Commit:042b713
Author:Paul Thomson
Committer:GitHub

gfauto: add spirv-fuzz reduction and other fixes (#763) * Add support for spirv-fuzz shrinking. * Add flag for spirv-fuzz fuzzing. * spirv-fuzz: support spirv-opt. * Fix CTS test generation.

Commit:4bde681
Author:Paul Thomson
Committer:GitHub

gfauto: handle reboots (#747) Add a new status UNRESPONSIVE. Also, check and record the status in the test.json and use this in gfauto_interestingness_test (i.e. use it during reductions). Fix #696 Fix #748

Commit:938b892
Author:Paul Thomson
Committer:GitHub

gfauto: save spirv-fuzz failures (#742)

Commit:ff52614
Author:Paul Thomson
Committer:GitHub

gfauto: add offline compiler support (#725) * gfauto: Add support for offline shader compilers * gfauto: improve tool.py and generate_cts_test_template.py for more concise scripts. * gfauto: Fix shader_compiler_util.py * gfauto: improve signature_util.py

Commit:f0e9120
Author:Paul Thomson
Committer:GitHub

Add gfauto (#684) GraphicsFuzz auto (gfauto) provides scripts for fuzzing using GraphicsFuzz (glsl-fuzz) and spirv-fuzz with minimal interaction.