With the addition, Flax now supports DirectX 11, DirectX 12, and Vulkan. Over DirectX 11, the Vulkan renderer reduces CPU utilization up to 10%, is faster than the DirectX 12 renderer, and they have future performance improvements planned. Flax also plans to remove their OpenGL backend in favor of Vulkan, which they view as particularly important for mobile platforms where Vulkan is much faster than OpenGL ES.
From the announcement:
Having stable Vulkan graphics backend is a notable milestone that moves us closer towards adding support for more platforms (who wants Flax Editor for Linux?).
Under the hood, we use volk for loading entrypoints, Vulkan Memory Allocator from AMD to improve GPU resources allocation and glslang to compile our HLSL shaders into SPIR-V.
The current implementation supports full graphics pipeline and compute shaders (only stream-output and counter buffers are missing). We use descriptors pool manager to reuse descriptor set layouts and optimized pipeline binding to reduce API calls. The pipeline state objects are cached on request and reused later which reduces memory usage. Also using ring-buffer for uniforms data reduces descriptors changes due to dynamic offset assignment that is more efficient.
Learn more here.