Graphicsfuzz
A testing framework for automatically finding and simplifying bugs in graphics shader compilers.
Install / Use
/learn @google/GraphicsfuzzREADME
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.
Related Skills
node-connect
345.9kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
frontend-design
106.4kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
openai-whisper-api
345.9kTranscribe audio via OpenAI Audio Transcriptions API (Whisper).
qqbot-media
345.9kQQBot 富媒体收发能力。使用 <qqmedia> 标签,系统根据文件扩展名自动识别类型(图片/语音/视频/文件)。
