Awesome
GraphicsFuzz
GraphicsFuzz is a set of tools for testing shader compilers
GraphicsFuzz provides tools for automatically finding and simplifying bugs in graphics drivers, specifically graphics shader compilers. The glsl-fuzz and glsl-reduce tools manipulate GLSL shaders, targeting SPIR-V compilers via translation. The spirv-fuzz and spirv-reduce tools directly manipulate SPIR-V shaders.
Download and run
Follow the gfauto README. The gfauto command line tool is the recommended way of automatically downloading and running our fuzzers to test Vulkan drivers in a "push-button" fashion with minimal interaction. See below if you want to read about individual tools and/or use them as standalone command line tools.
Tool documentation
- gfauto: the recommended way of automatically downloading and running our fuzzers to test Vulkan drivers in a "push-button" fashion with minimal interaction
- glsl-fuzz: a family of tools for testing GLSL shader compilers using randomized metamorphic testing
- glsl-reduce: a stand-alone GLSL shader reducer
- spirv-fuzz: a stand-alone SPIR-V shader fuzzer and shrinker that uses randomized metamorphic testing
- spirv-reduce: a stand-alone SPIR-V shader reducer
glsl-fuzz
- The glsl-fuzz tools are developed in this repo
- How it works (high-level): metamorphic testing using glsl-fuzz
- glsl-fuzz walkthrough
- glsl-generate manual
- glsl-reduce manual (for reducing fuzzed shaders)
- Pre-built binaries are available on the GitHub releases page of this repo
- Developer documentation with build instructions
glsl-reduce
- glsl-reduce is developed in this repo
- Introduction: my shader is being weird, now what?
- glsl-reduce walkthrough
- glsl-reduce manual
- Pre-built binaries are available with glsl-fuzz on the GitHub releases page of this repo
spirv-fuzz
- spirv-fuzz is developed in the SPIRV-Tools repo
- Nightly builds of SPIRV-Tools
- Try our spirv-fuzz walkthrough that can be run from your browser
spirv-reduce
- spirv-reduce is developed in the SPIRV-Tools repo
- Nightly builds of SPIRV-Tools
- Try our spirv-fuzz walkthrough (includes use of spirv-reduce) that can be run from your browser
Contribute
Further reading
GraphicsFuzz blog posts:
- 17 January 2018: Samsung Galaxy S8 (ARM, Qualcomm)
- 22 January 2018: Nvidia Shield TV, Tablet (Nvidia)
- 25 January 2018: Google Pixel Phone 1, 2 (Qualcomm)
- 5 February 2018: Google Nexus Player (Imagination Technologies)
- 15 February 2018: Huawei Honor 9, 9 lite, 10 (ARM)
- 22 February 2018: Apple iPhone 6, 7, 8, X (Apple, Imagination Technologies)
- 12 March 2018: Samsung Galaxy S6, S7 (ARM, Qualcomm)
- 22 May 2018: Samsung Galaxy S9 (ARM, Qualcomm)
Academic research project blog posts:
- 30 November 2016: Intro
- 1 December 2016: AMD
- 7 December 2016: Apple
- 12 December 2016: ARM
- 15 December 2016: Imagination Technologies
- 20 December 2016: Intel
- 25 January 2017: Nvidia
- 1 February 2017: Qualcomm
Academic publications:
- OOPSLA 2017: Automated Testing of Graphics Shader Compilers
- Metamorphic Testing Workshop at ICSE 2016: Metamorphic Testing for (Graphics) Compilers
This is not an officially supported Google product.