1
0
mirror of https://github.com/Yours3lf/rpi-vk-driver.git synced 2024-11-29 11:24:14 +01:00
VK driver for the Raspberry Pi (Broadcom Videocore IV)
Go to file
2019-02-08 22:06:17 +00:00
brcm fixed some warnings 2018-08-25 11:03:29 +01:00
driver fixed infinite loop 2019-02-08 22:06:17 +00:00
external fixed dumping 2018-08-21 22:13:19 +01:00
test fixed shader state count 2018-10-14 11:12:17 +01:00
.gitignore added surface creator extension 2018-05-07 16:13:39 +01:00
CMakeLists.txt added control list dumping 2018-08-21 21:03:43 +01:00
LICENSE Create LICENSE 2018-11-17 16:31:44 +00:00
README.md Update README.md 2018-11-17 16:39:36 +00:00

rpi-vk-driver

(not conformant yet, can't use official name or logo)

Milestones

  • clear screen example working
  • triangle example working
    • shader from assembly, vertices from vertex buffer object, no uniforms, color hardcoded
    • uniforms for matrix multiplication and animation
    • texture coordinates and texture sampling
    • shader compiled from spirv

VK CTS progress

  • Passed: 261/3888 (6.7%)
  • Failed: 130/3888 (3.3%)
  • Not supported: 3497/3888 (89.9%)
  • Warnings: 0/3888 (0.0%)
    (dEQP-VK.api.object_management.multithreaded_per_thread_device.buffer_view_uniform_r8g8b8a8_unorm runs out of memory, I need to get a RPi 3)

FAQ

Will this ever be a fully functional VK driver?

As far as I know the PI is NOT fully VK capable on the hardware level. I can already see that some things will need to be emulated and others won't ever be emulated. The compiler is also a huge unknown at this point as I plan to write one from scratch.

What performance should you expect?

Performance wise, the Pi is quite capable. The specs and architecture is close to the GPU in the iPhone 4s. The only problem I see is bandwidth as you only have about 7GB/s compared to 12-25GB/s on typical mobile phones. So post processing is a huge no and you'd need to be very careful about the techniques that you use. Eg. you'd need to stay on chip at all times. CPU performance (eg. number of draw calls) should be enough on the quad-core PIs as you can easily utilise all cores using VK.

What will be emulated?

  • I already plan to emulate a couple of the basics such as copy commands using compute
  • Tessellation and geometry shaders won't be considered, it just doesn't make sense
  • Sparse resources might be implemented, but I don't think performance would be great
  • Compute shaders could also be implemented, though I think I would need to modify the kernel side for that, no LDS or any of the fancy stuff though...
  • As far as I know the PI doesn't support occlusion queries (https://github.com/anholt/mesa/wiki/VC4-OpenGL-support)
  • Indirect draws are probably out of scope
  • I already added support (to be polished) to load shader assembly. This will enable devs to optimise shaders to the last cycle.
  • I'll probably add something to indicate towards the developer that things are emulated or not supported at all.