Skip to main content

GraphicsFuzz: Metamorphic Testing for Graphics Shader Compilers

Conference: Verification Futures 2019 (click here to see full programme)
Speaker: Alastair Donaldson, Google
Presentation Title: GraphicsFuzz: Metamorphic Testing for Graphics Shader Compilers
Abstract: Graphics drivers are hard to build and hard to test, yet their correct operation is critical: a mobile device that is functioning perfectly well with the exception of its display is not very useful! In this talk I will describe our experience building and using GraphicsFuzz, an automated testing tool for graphics drivers based on metamorphic testing. GraphicsFuzz originated as a research project at Imperial College London, which led to the GraphicsFuzz spin-out company that was acquired by Google in 2018.

GraphicsFuzz is now a central line of defence in ensuring the quality of graphics drivers for the Android platform. In this presentation I will give an overview of GraphicsFuzz, which focuses on finding bugs in shader compilers. GraphicsFuzz automatically finds cases where a shader compiler has generated wrong code by: (1) starting with an original, high-value shader (e.g. captured from a game); (2) applying semantics-preserving transformations to this original shader to produce a family of equivalent shaders that should render identical or very similar images to the original shader when executed on the same GPU; (3) calling out compiler bugs by identifying significant mismatch between images; (4) homing in on the root causes of bugs by automatically reducing a transformed shader for which a mismatch occurs until the difference between the original and transformed shaders is as small as possible whilst still preserving the mismatch.

Speaker Bio: Alastair Donaldson is a Senior Software Engineer at Google, and a Reader at Imperial College London.  GraphicsFuzz was a start-up company spun out from Imperial, and acquired by Google in 2018.  Alastair now leads a team at Google developing tools for automated testing of graphics drivers.
Close Menu