This PR enables vulkan backend as experimental option. It will only be available in alpha builds on Linux and Windows. This option is highly experimental and enabled to get some insight on supported platforms. 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 out `DRW_draw_cursor` in `DRW_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) * 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 in simple scenes. Changes are expected in EEVEE-Next that will break Vulkan compatibility in the near future. * Systems with multiple GPUs is not expected to work. * Wayland support is in development and requires some iterations. You can start Blender, but the protocols are not aligned yet. * 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 * Get 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. We expect it to be able to compile without installing the Vulkan SDK. The Vulkan SDK is a very powerful tool, but only when actually doing GPU development. Otherwise it is an overhead which slows down other activities. **How can the backend be enabled?** Currently the Vulkan backend can be enabled per Blender session by starting using the command line argument `--gpu-backend vulkan`. In the future, when the backend is more mature, we will add a user preference to switch between OpenGL and Vulkan. Pull Request: https://projects.blender.org/blender/blender/pulls/113057 |
||
---|---|---|
.. | ||
build_environment | ||
buildbot | ||
cmake | ||
config | ||
package_spec | ||
utils | ||
windows |