diff options
| author | srdusr <[email protected]> | 2025-08-08 23:28:00 +0200 |
|---|---|---|
| committer | srdusr <[email protected]> | 2025-08-08 23:28:00 +0200 |
| commit | 9e811d2f2f1037ba4ec08ab0e05b350e6cf69e66 (patch) | |
| tree | 2fa3f095b5f67769eca0eb9115faaf93fa37c0ae /docs/IMPLEMENTATION_STATUS.md | |
| parent | 5f26a48fbb772ccc9c9ffb1209ff00d3c11d88c7 (diff) | |
| download | srdwm-9e811d2f2f1037ba4ec08ab0e05b350e6cf69e66.tar.gz srdwm-9e811d2f2f1037ba4ec08ab0e05b350e6cf69e66.zip | |
Render real window content on the GPU render path
Past clear-color + cursor: a GPU-driven head now renders every
visible window's real content too, via surface_content_elements (the
same generic-over-renderer helper the Pixman path uses, unmodified
against gpu.renderer instead of udev.renderer). Content pushed after
the cursor (so the cursor stays on top), in the same front-to-back
`ids` order the Pixman path's own custom_elements already relies on
for correct occlusion between windows - plain painter's-algorithm
draw order, no separate clip needed since content is window-shaped.
Deliberately the *unrounded* path: no corner masking (that's built
against PixmanRenderer specifically on this backend) and no
decorations (border, titlebar) - a GPU-driven head now shows real
window content, square corners, no chrome. Decorations are the
remaining real gap before this path has parity with the software one.
Per-window geometry/position math (geom from window_anims or
w.geometry, band for a decorated window's titlebar reservation,
content_offset clamped non-negative) mirrors the Pixman path's own
content push exactly, including an earlier double-
subtraction and negative-margin fixes - so a CSD client with a real
shadow margin positions the same way on either render path.
Untested on real GPU-enabled hardware as of this writing: builds,
passes clippy, full test suite green, and matches the existing Pixman
path's geometry logic by inspection, but SRDWM_GPU/general.gpu were
both unset on the machine this was built on - noted honestly in
gpu.rs's own module doc comment, DEFAULTS.md, and
IMPLEMENTATION_STATUS.md.
Diffstat (limited to 'docs/IMPLEMENTATION_STATUS.md')
| -rw-r--r-- | docs/IMPLEMENTATION_STATUS.md | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/docs/IMPLEMENTATION_STATUS.md b/docs/IMPLEMENTATION_STATUS.md index 3365831..6fe207b 100644 --- a/docs/IMPLEMENTATION_STATUS.md +++ b/docs/IMPLEMENTATION_STATUS.md @@ -159,9 +159,12 @@ once, so splitting it across three files would have hidden it. otherwise), falling back to the software path unchanged on any failure at any step. Every connected head it successfully initializes gets driven through it, VT-switch pause/activate is wired, and the - real cursor renders on top of its own clear color - window content - and decorations are the remaining gap: a GPU-driven head shows no - windows yet, only its clear color and cursor. + real cursor and real window content (plain, square-cornered, no + border/titlebar yet) both render on top of its own clear color -- + decorations are the remaining gap. Untested on real GPU-enabled + hardware as of this writing - builds and passes the full test suite, + but `SRDWM_GPU`/`general.gpu` were both unset on the machine this was + built on. `WaylandPlatform::connect` (winit) picks this backend automatically when no `WAYLAND_DISPLAY`/`DISPLAY` is set, falling back to nested winit if udev init fails for any reason. |