GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • Sign in
  • ActionsCI/CD and automation
  • CodespacesCloud development environments
  • All Features
  • Documentation
  • Training
  • Certifications
  • Build with Copilot
  • Customize Copilot
  • Integrations
  • Trending repos
  • GitHub Sponsors
  • Developer articles
  • Enterprises

This view

  • Original page
  • New address

GeezerVison is showing github.com — GitHub - google/graphicsfuzz: A testing framework for automatically finding and simplifying bugs in graphics shader compilers.

This repository was archived by the owner on Dec 8, 2025. It is now read-only.
BranchesTags
Open more actions menu

Latest commit

 

History

720 Commits
720 Commits

Folders and files

NameName
Last commit message
Last commit date
.github/workflows
.github/workflows
 
 
.idea
.idea
 
 
assembly-binaries
assembly-binaries
 
 
ast
ast
 
 
binder
binder
 
 
build/travis
build/travis
 
 
checkstyle-config
checkstyle-config
 
 
client-tests
client-tests
 
 
common
common
 
 
compare-asts
compare-asts
 
 
docs
docs
 
 
experiments
experiments
 
 
fuzzerserver
fuzzerserver
 
 
generator
generator
 
 
gfauto
gfauto
 
 
gles-worker-dependencies
gles-worker-dependencies
 
 
gles-worker
gles-worker
 
 
graphicsfuzz
graphicsfuzz
 
 
parent-all
parent-all
 
 
parent-checkstyle
parent-checkstyle
 
 
python
python
 
 
reducer
reducer
 
 
server-public
server-public
 
 
server-static-public
server-static-public
 
 
server-thrift-gen
server-thrift-gen
 
 
server
server
 
 
shaders
shaders
 
 
shadersets-util
shadersets-util
 
 
temp
temp
 
 
test-util
test-util
 
 
tester
tester
 
 
third_party
third_party
 
 
thrift
thrift
 
 
tool
tool
 
 
util
util
 
 
vulkan-worker
vulkan-worker
 
 
zip-helper
zip-helper
 
 
.editorconfig
.editorconfig
 
 
.gitattributes
.gitattributes
 
 
.gitignore
.gitignore
 
 
.gitmodules
.gitmodules
 
 
AUTHORS
AUTHORS
 
 
CODEOWNERS
CODEOWNERS
 
 
CONTRIBUTING.md
CONTRIBUTING.md
 
 
CONTRIBUTORS
CONTRIBUTORS
 
 
LICENSE
LICENSE
 
 
README.md
README.md
 
 
pom.xml
pom.xml
 
 
presubmit.sh
presubmit.sh
 
 

Repository files navigation

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

  • 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

  • Contributing (requires Google CLA)
  • License (Apache 2.0)
  • Developer documentation for glsl-fuzz

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.

About

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

Topics

fuzzingglslopenglspirvvulkan

Resources

Readme
Apache-2.0 license

Code of conduct

Code of conduct

Contributing

Contributing

Security policy

Security policy
Activity
Custom properties

Stars

601 stars

Watchers

2 watching

Forks

114 forks
Report repository

Releases

Contributors

Languages

You are visitor 01402503 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.