google/graphicsfuzz

A testing framework for automatically finding and simplifying bugs in graphics shader compilers.

Java

600

712 commits

updated Oct 3, 2024

See the code

README

GraphicsFuzz

License Build Status

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

glsl-reduce

spirv-fuzz

spirv-reduce

Contribute

Further reading

GraphicsFuzz blog posts:

Academic research project blog posts:

Academic publications:

This is not an officially supported Google product.

fuzzing
glsl
opengl
spirv
vulkan

google/graphicsfuzz

A testing framework for automatically finding and simplifying bugs in graphics shader compilers.

Java

600

712 commits

updated Oct 3, 2024

See the code

README

GraphicsFuzz

License Build Status

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

glsl-reduce

spirv-fuzz

spirv-reduce

Contribute

Further reading

GraphicsFuzz blog posts:

Academic research project blog posts:

Academic publications:

This is not an officially supported Google product.

fuzzing
glsl
opengl
spirv
vulkan

Project health

Overall

4.9/10

Maintained

0/10

Code review

9/10
OpenSSF Scorecard

Significant stargazers

Yusuke Suzuki

1,112 followers · starred Sep 2018

Zheyuan Chen

46 followers · starred Jan 2025

Józef Kucia

50 followers · starred Oct 2018

Bishwajeet Parhi

135 followers · starred Jan 2022