GNOME's GTK Vulkan Renderer Faster Than OpenGL, Now Working On Windows
GNOME's GTK Vulkan renderer continues advancing in Git for GTK+ 4.0. This Vulkan renderer for the GTK Scene Kit is forming into a nice alternative to its OpenGL renderer.
With the latest Git, there is now support for Vulkan context creation under Windows. So now their Vulkan code should work for GTK Windows users too and just not Linux.
Benjamin Otte of Red Hat who has been doing a lot of work on the GTK Vulkan code also landed this commit: vulkan: Only render minimal region. In there he explained it's a big performance win, "It's faster to render once for every rectangle in the clip region than rendering the outline of the clip region. Especially because this reduces the time necessary to build up the frame data. In widget-factory (where we have 3 rectangles), this leads to a 5x speedup in the rendering time rendering alone. Snapshotting time goes from 10ms to ~1ms, which is another huge improvement."
Within this commit adding a GSK_RENDERING_MODE=full-redraw environment variable option to force a full re-draw for each and every frame, Ben Otte provided some performance comparisons: With current GTK Git and using the widget-factory for testing, a full redraw with OpenGL rendering takes from 55 to 62 ms. But with using the Vulkan rendering it's only 18 to 20 ms or when using Cairo rendering it's at 10 to 15 ms. When testing Vulkan but disabling rendering of unsupported nodes, it drops to 1 to 2 ms but not realistic due to the loss of some important rendering of like borders and box shadows. Great to see the stock Vulkan performance being 5~6x faster than the OpenGL drawing already, even accounting for fallbacks for currently unsupported operations.
With the latest Git, there is now support for Vulkan context creation under Windows. So now their Vulkan code should work for GTK Windows users too and just not Linux.
Benjamin Otte of Red Hat who has been doing a lot of work on the GTK Vulkan code also landed this commit: vulkan: Only render minimal region. In there he explained it's a big performance win, "It's faster to render once for every rectangle in the clip region than rendering the outline of the clip region. Especially because this reduces the time necessary to build up the frame data. In widget-factory (where we have 3 rectangles), this leads to a 5x speedup in the rendering time rendering alone. Snapshotting time goes from 10ms to ~1ms, which is another huge improvement."
Within this commit adding a GSK_RENDERING_MODE=full-redraw environment variable option to force a full re-draw for each and every frame, Ben Otte provided some performance comparisons: With current GTK Git and using the widget-factory for testing, a full redraw with OpenGL rendering takes from 55 to 62 ms. But with using the Vulkan rendering it's only 18 to 20 ms or when using Cairo rendering it's at 10 to 15 ms. When testing Vulkan but disabling rendering of unsupported nodes, it drops to 1 to 2 ms but not realistic due to the loss of some important rendering of like borders and box shadows. Great to see the stock Vulkan performance being 5~6x faster than the OpenGL drawing already, even accounting for fallbacks for currently unsupported operations.
21 Comments