Enhancing Metamorphic Testing Tools For Graphics Drivers
- Mentors
- Hugues Evrard, Alastair Donaldson
- Organization
- Android Graphics Tools Team
The Android Graphics Tools Team's GraphicsFuzz is a metamorphic testing framework for OpenGL and Vulkan graphics drivers. Among its tools are a shader generator, which mutates a shader program into variants that differ in machine code, but render a similar image to the original - and a shader reducer, which reduces shader code to focus on specific logic that a user is interested in. Used in tandem, these tools allow one to fuzz test shader compilers for flaws and easily reproduce them.
The generator mutates a shader by performing "transformations" on the original code which complicate control/data flow. These transformations often make use of OpenGL's built-in functions and features to mutate expressions into equivalent forms.
However, the generator and reducer are only aware of a subset of the OpenGL shader language, and do not support all of OpenGL's built-in math and transformation functions. This reduces the number of potential mutations and ultimately hampers GraphicsFuzz's capability of finding edge cases.
This project aims to enhance GraphicsFuzz's support for OpenGL semantics and extend its capabilities with new transformations, then apply them to open-source drivers.