Graphicsfuzz Versions Save

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

v1.3

4 years ago

This release includes many improvements to the fuzzer and reducer, as well as additional and improved sample shaders.

v1.2.1

5 years ago

This is a bug-fix release that fixes a problem in the test case reduction component of GraphicsFuzz whereby a semantics-preserving reduction could in fact change the semantics of a shader.

In addition, the release incorporates:

  • optimizations to the reducer to make it produce a smaller final result;
  • additional ways to represent the constants 0 and 1 in an opaque manner during test generation;
  • a fix to the GLSL worker for MacOS.

v1.2

5 years ago

Noteworthy features in this release:

  • Cross-platform, headless worker for Vulkan. We now use Amber to render shader jobs on Vulkan. Amber can be compiled for Windows, Linux and Android.

  • Support for compute shaders. The generator, worker and reducer now support compute shader jobs, our samples include compute shaders suitable for use with GraphicsFuzz, and our walkthrough explains how to generate, run and reduce compute shader jobs.

  • Faster test case reduction. We have worked on optimizing the test case reduction algorithm, and have found it to be generally quite a bit faster.

  • More robust image diffing. The histogram-based image comparison has been improved to take the alpha channel into account, and we have included an additional “fuzzy diff” image comparator inspired by the way images are compared in dEQP. Having results from both comparators is useful in deciding how clear-cut image differences are.

In addition, the release includes a number of bug fixes, improvements to test generation, and more robust support for Windows.

Caveats and limitations:

  • Amber needs to be built from source. In our previous release we bundled as many third-party dependencies as possible. We do not currently do this for Amber. It should be straightforward to build it from source for Windows, Linux and Android.

  • The Amber Vulkan worker is missing a few features that our legacy worker has. We intend to address these shortcomings in due course. In the meantime, our legacy Vulkan worker for Android, which does not have these shortcomings, is still available. The shortcomings are:

    • When a shader job fails, we cannot yet ask Amber at what stage the failure occurred (compiling, linking or rendering), though it is often obvious from the output that we capture.
    • We cannot yet use Amber to efficiently detect non-deterministic rendering.
    • The --skip-render option, which is useful to avoid conducting needless rendering when reducing compile-time failure bugs, does not always work reliably: we have found a few shader compiler failures where, unless we instruct Amber to proceed all the way to rendering, the compilation error is not reported.
  • Compute shaders are not supported in the Web UI. You can launch compute shaders via the Web UI, but right now must inspect their results using command line tools (described in the walkthrough).

  • Reduction can still be slow. Test-case reduction is a hard problem and our improvements will not change its speed by an order of magnitude. Some notes on this:

    • If you find a very large shader that triggers a particular issue (e.g. a crash) and find that reduction is slow, it could be worth doing more fuzzing in case the fuzzer can find a significantly smaller shader that exposes the same problem - reducing that smaller shader might be a lot faster.
    • Another option in the case of a slow reduction is to use a smaller step limit than the default and see whether the final, incompletely-reduced shader is small enough to be useful for debugging purposes.
  • shader_translator can exhaust memory under Windows. Glsl-generate uses glslangValidator and shader_translator to validate shaders. An issue where shader_translator can consume a lot of memory remains open. As a work-around, glsl-generate tool has a --disable-shader-translator option that can be used to disable the use of shader_translator (which is only used to sanity-check generated shaders for validity in any case, and glslangValidator will still be used for that purpose).

v1.1

5 years ago

Automated build.

  • f2d5618 - Remove version from build outputs, and all references (#183) <Paul Thomson>
  • f0383de - Script and doc changes based on Windows testing (#181) <Paul Thomson>
  • 699e819 - Docs: update docs; doc --skip-render (#178) <Paul Thomson>

v1.0

5 years ago

Automated build.

  • 7c2c3fb - Don't skip release based on branch (#153) <Paul Thomson>
  • b360f2e - CI: don't release non-tag builds. (#152) <Paul Thomson>
  • 07e1754 - Final changes for release based on feedback (#151) <Paul Thomson>

v-bb8a863508ae342e499614458e1f6e39cc3feabd

5 years ago

Automated build.

  • bb8a863 - Fix Reduce Everywhere label -> Preserve Semantics. (#145) <Paul Thomson>
  • 279ad9d - Fix argument passing for android in vkrun (#144) <Hugues Evrard>
  • 622e908 - Do not assume all images are actually produced/retrieved (#143) <Hugues Evrard>

v-279ad9d1710adc9e5a2e81a0f14c9b1e816e631c

5 years ago

Automated build.

  • 279ad9d - Fix argument passing for android in vkrun (#144) <Hugues Evrard>
  • 622e908 - Do not assume all images are actually produced/retrieved (#143) <Hugues Evrard>
  • 1e794e1 - Diff result files on host, do not rely on diff being available on device (#142) <Hugues Evrard>

v-622e90875910cca608c977d86dd0e3fe05c498fa

5 years ago

Automated build.

  • 622e908 - Do not assume all images are actually produced/retrieved (#143) <Hugues Evrard>
  • 1e794e1 - Diff result files on host, do not rely on diff being available on device (#142) <Hugues Evrard>
  • 43a0dac - Fix the cheapy-cheapo perf logging (#141) <Hugues Evrard>

v-1e794e1b6dbfdf4ec68cf65dc5abadab73d87dd4

5 years ago

Automated build.

  • 1e794e1 - Diff result files on host, do not rely on diff being available on device (#142) <Hugues Evrard>
  • 43a0dac - Fix the cheapy-cheapo perf logging (#141) <Hugues Evrard>
  • 3ccb052 - Documentation effort and various polishing fixes (#140) <Paul Thomson>

v-43a0dac192101688dba4e6ceacdf4c51f25ae2fe

5 years ago

Automated build.

  • 43a0dac - Fix the cheapy-cheapo perf logging (#141) <Hugues Evrard>
  • 3ccb052 - Documentation effort and various polishing fixes (#140) <Paul Thomson>
  • a5b4356 - WebUI: force cell height when no results (#139) <Hugues Evrard>