Last week a big milestone has been reached. The vulkan backend has been enabled
as an experimental option. It will be available in alpha builds on Linux and Windows.
This option is highly experimental and enabled to get some insight
on platform support. Don’t expect a fully working Blender
yet. Also don’t expect it to have usable performance.
What is known to not work?
- OCIO textures are not supported on Intel and AMD GPUs. sRGB/Standard is supported
on those platforms. - AMD Polaris based GPUs on Linux will generate a crash when drawing the 3d cursor as it
doesn’t support the needed vertex format. Comment outDRW_draw_cursor
inDRW_draw_region_info
. - The colors in the node editor and sequencer are of as sRGB viewports aren’t detected correctly.
- The image / UV editor isn’t working as many texture formats haven’t been tested yet. Some
tweaks are also needed to do correct depth testing. - 3D Viewport is known to be flickering. Sometimes workbench doesn’t display anything.
- 3D Viewport wireframe will crash as it uses a framebuffer with gaps between color attachments,
which isn’t supported yet. (#113141 - Vulkan: Support for Framebuffer with Missing Attachments - blender - Blender Projects) - Rotate the view widget is partially drawn due to incompatible depth clipping.
- GPU Selection isn’t working. It is expected to be solved when Overlay-Next will become the
default engine. For now disable GPU depth picking in the preferences. - Cycles/EEVEE are known to not work with Vulkan yet. Cycles requires Vulkan Pixel Buffer.
Cuda ↔ Vulkan interop might require a different approach than OpenGL as Vulkan doesn’t allow
importing memory from a Cuda context. EEVEE uses features that aren’t available yet in the backend - Workbench is working, except Workbench shadows.
- EEVEE-Next basics are working. Shadows, lights are known to be not working. Materials/Shading
works on a single object. Changes are expected in EEVEE-Next that will break Vulkan compatibility
in the near future. - Systems with multiple GPUs is not working.
- Wayland support is in review and should land before this PR (#113007 - Vulkan: Wayland Windowing - blender - Blender Projects)
- OpenXR hasn’t been modified and is expected to fail.
- The backend is very strict when mis-using the GPU module. In debug builds it may crash
on asserts. - Older drivers/GPUs might not have all the features that we require. The workarounds
for the missing features still need to be implemented.
A word about performance
In the project planning we focus first on stability and platform support. The performance of Vulkan is
around 20% of what we want to achieve. The reason is that each command sent to the
GPU is done one at a time. The implementation even waits until we have feedback that the GPU
is idle again.
Geometry is currently stored in System RAM. The GPU will read and cache the data when
accessing geometry. This slows down when using objects with much geometry.
Some performance features like MDI (Multi-Draw-Indirect) hasn’t been implemented and
falls back to Single Draw Indirect.
Why enable it is an experimental option?
- Ensures that new features are being tested with Vulkan
- Ensure that building with Vulkan is possible on supported platforms
- Give feedback from developers if Vulkan can run on their system or that
there are special cases that we are not aware of. Main development
environment has been Linux/X11 with occasionally testing using Windows. - Validate Add-ons that use the
gpu
module. - Possible to enable GLSL validation on the buildbot. (Needs more work).
- Does it compile on all machines or does it require more changes to cmake
config.
How can the backend be enabled?
Currently the Vulkan backend can be enabled per Blender session by starting
with the command line argument --gpu-backend vulkan
. In the future, after
the backend is proven to work, we will add a user preference to switch between
OpenGL and Vulkan.
How can you help?
- Download the latest alpha build or compile it your self. The windows build seems to be not available at this time on the buildbot.
- Start blender with
blender --factory-startup --gpu-backend vulkan
. - Does it start? Great! You can click around but expect missing features and drawing artifacts.
- It crashes on startup? No so great report a bug! I am open to fix crashes on startup.
- It shows a message that the GPU isn’t capable of running Blender, but I have a Vulkan 1.2 capable system? get in contact with me at Blender Chat We will keep track of platforms that should be supported and find out if more workarounds are needed.