Fetching the latest programs, projects, and workspace data.
Providing excellent tools for graphics developers and driver makers
Showing 5 of 8 projects. Click any project card for scope, mentors, and proposal studio.
Mentors: Student: Mostafa Ashraf Mohamed
<p>project involve adding new transformations to spirv-fuzz tools to improve their support for compute shaders</p>
Mentors: Student: Shiyu Liu
<p>Spir-fuzz is a C++-based tool that automatically finds bugs in Vulkan drivers. It works by transform the original shader into a new one that is semantically the same. Differences in the output of the new shader and the original one can be caused by bugs in the driver. Thus, our task involves expanding the set of transformations by building sets of transformation classes and writing their corresponding tests and fuzzer passes.</p> <p>Our main task involves the WebGPU Shading Language, a new shading language featured by WebGPU. Since web browsers will have WebGPU, a secure implementation is crucial. To achieve a high test coverage, we use coverage-guided fuzzing. It uses program instrumentation to trace the code coverage reached by each input fed to a fuzz target. The information is then used to make informed decisions that maximize coverage, and thus increase the effectiveness of finding software bugs and security vulnerabilities. This project involves automatic fuzzing using LibFuzzer. Since LibFuzzer-based custom mutators mutate test cases in a domain-specific way, effective designing and implementing Tint-specific custom mutators are essential for this project to succeed.</p>
Mentors: Student: Emiljano Gjiriti
<p>In this project, I will study WebGPU, the upcoming standard for exposing the capabilities of the GPU hardware in web browsers, and its shading language WGSL. I will then try to test WGSL, by using a mutation based approach. Designing custom mutators can be done by either using the bijection between SPIR-V and WGSL and the existing spirv-fuzz tools, or by studying WGSL in isolation and generating new LibFuzzer custom mutators that operate on WGSL directly or in the output generated by Tint, which is a compiler for WGSL.</p>
Mentors: Student: Nipun Garg
<p>The objective of this project would be to write Vulkan Apps that demonstrate some part/combination of the Vulkan API that is not already covered by the Sascha-Willems Demos, the Khronos Samples, the Google Test Apps or the Imagination demos.</p>
Mentors: Student: André Perez Maselco
<p><a href="https://github.com/KhronosGroup/SPIRV-Tools" target="_blank">SPIRV-Tools</a> is a collection of tools to work on <em>SPIR-V</em> modules. One of these tools is <em>spirv-fuzz</em>. It applies <em>semantics-preserving transformations</em> to a <em>SPIR-V</em> module, that we call the <em>reference</em> module, to obtain a modified <em>variant</em> module. Theoretically, a <em>semantics-preserving transformation</em> should not change the behaviour of the code. In this way, the <em>reference</em> and <em>variant</em> modules can be run, and the outputs compared. The output is usually an image. If the images differ, this probably indicates a shader compiler bug. This is a specialised form of <em>fuzzing</em> that uses a technique called <em>metamorphic testing</em>.</p> <p>This project involved using the metamorphic testing approach to extend <em>spirv-fuzz</em> by adding new transformations to cover instructions and patterns of <em>SPIR-V</em> that were not previously covered by existing <em>spirv-fuzz</em> transformations. Also, the project used tools such as <a href="https://github.com/ChrisLidbury/CLSmith" target="_blank">CLSmith</a> and <a href="https://github.com/google/clspv" target="_blank">clspv</a> to improve <em>spirv-fuzz</em>.</p>