UI render backend: GPU-driven RmlUi render interface in the Vulkan renderer (glass, multi-window, VR panels) #703
Labels
No labels
amd
avatars
bug
builder
cannot-reproduce
crash
epic
feature
from-viewer
gl-removal
known-limitation
monitoring
parity
perf
platform
priority
critical
priority
high
priority
low
priority
medium
provenance
rendering
rt
status
in-progress
status
testing
status
up-next
triage
ui
upstream
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
sky_line/Slipstream#703
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Decisions (Sky, 2026-10-28) — supersede the original "backend under LLView" scope
The UI moves to RmlUi (C++, MIT): a whole rewrite of the viewer UI in one coordinated effort, with a temporary "UI: Classic / New (restart required)" switch on main while both exist; screens are rebuilt fresh (not mechanically converted from the old XUI); the old toolkit is removed when the new UI is complete. Glass UI (#1242) is built on top of this.
This ticket = the GPU-driven UI render backend, implemented as RmlUi's
RenderInterfaceinside our Vulkan renderer:backdrop-filterblur (frosted glass: blur of the scene behind panels, cheap, at reduced resolution), drop shadows, masks, gradients.Related: #1242 (glass UI), #1013 (pop-out windows: multi-window layer).
Original description:
Measured (2026-10-12, perf sample, light UI): UI costs ~1.3 ms CPU per frame: ~1.0 ms walking the
LLViewtree intogGL(retained floater replay ~0.4, live widgets ~0.4, mini-map ~0.15) and ~0.3 ms recording onevkCmdDraw+ descriptor bind per batch. Batches break on every texture / blend / scissor / matrix change, and even retained floaters are replayed vertex by vertex every frame.Proposal: keep the
LLViewtree and XUI; replace the drawing layer with the world renderer's pattern.Expected: ~1.3 ms -> ~0.2 ms CPU per frame in a light UI, more with heavy UI; sharper text and shapes at any scale. Needs a design pass before implementation.
UI drawing: GPU-driven backend under LLView (instance records, bindless, indirect draws)to UI render backend: GPU-driven RmlUi render interface in the Vulkan renderer (glass, multi-window, VR panels)