pvr: Add a Vulkan driver for Imagination Technologies PowerVR Rogue GPUs
This merge request contains an early version of a Vulkan driver and a NIR based SPIR-V compiler we've been working on for Imagination Technologies PowerVR GPUs, starting with GX6250 (Series 6XT), AXE-1-16M (A-Series) and BXS-4-64 (B-Series). In parallel to this we've also been working on a new Linux kernel mode driver, which can be found here:
The driver is only currently capable of rendering the Sascha Willems triangle example on a GX6250 and a lot of functions are either only partially implemented or not implemented at all. However, we hope to fill out this missing functionality over the next few months before moving on to passing all the conformance tests.
Following the lead of other Vulkan drivers, we felt it would be a good idea to share our work earlier on in its development and thought now might be a good opportunity to open up the initial merge request.
There are a number of advantages to merging the code early:
- The driver and compiler will get patched when core changes are submitted, avoiding the need to rebase on a regular basis
- People can contribute more easily
- Less code to review initially
- New changes will get more scrutiny
- More opportunity to get early feedback so we don't head off in the wrong direction
Of course, we are mostly new to this and are very happy to listen to and learn from the community. Looking forward to hearing any feedback
EDIT: Just to note that a modification is needed to the triangle example for it to run. This can be found in this PR: https://github.com/SaschaWillems/Vulkan/pull/932