diff options
| author | srdusr <[email protected]> | 2025-11-20 15:52:00 +0200 |
|---|---|---|
| committer | srdusr <[email protected]> | 2025-11-20 15:52:00 +0200 |
| commit | 04466601f4714dcbc1f3b0ef134febede6febb6a (patch) | |
| tree | 53d65fec45a7236a0efad5986960cffdbe60b5f0 /docs/TODO.md | |
| parent | 0d752ed0401fabbd22763eea1a8ff587d585f55d (diff) | |
| download | srdwm-04466601f4714dcbc1f3b0ef134febede6febb6a.tar.gz srdwm-04466601f4714dcbc1f3b0ef134febede6febb6a.zip | |
Add border/titlebar decoration rendering to the GPU render path
The GPU (SRDWM_GPU=1/general.gpu) path had real window content but
square corners and no border/titlebar. A prior pass investigated a full
port of the Pixman path's decoration rendering and deliberately did not
attempt it blind, given no working GPU-capable hardware on this machine
to verify a single pixel of it against. Asked directly, twice, to build
it anyway rather than leave it.
Scoped smaller than a full port: border top/bottom strips and the
titlebar bitmap now render, reusing the exact cached MemoryRenderBuffers
the Pixman path already builds (renderer-agnostic pixel buffers,
imported for GlesRenderer the same generic way cursor::render_elements
already does for either renderer). Left out on purpose: occlusion-
fragment clipping against overlapping windows, and the left/right border
side strips plus the drop shadow.
Full workspace build/test/clippy clean. Explicitly not visually
verified - same reason as before, no GPU-capable hardware on this
machine.
Diffstat (limited to 'docs/TODO.md')
| -rw-r--r-- | docs/TODO.md | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/docs/TODO.md b/docs/TODO.md index 1787c5e..b1dd5d6 100644 --- a/docs/TODO.md +++ b/docs/TODO.md @@ -1,5 +1,13 @@ # TODO / planned features - master checklist +## GPU render path: decorations built after all, on explicit repeated instruction - scoped, not the full port (2026-08-28) + +The 2026-08-27 entry below this one explains why a full port of the Pixman path's decoration rendering onto the GPU path was deliberately not attempted blind: no working GPU-capable hardware on this machine to visually confirm a single pixel of it against, on a feature nobody has turned on. That reasoning stands unchanged. Asked directly, twice, to build it anyway rather than leave it - so this is a real implementation, with the same unverified-on-hardware caveat stated as plainly as before, not a walk-back of the original judgment call. + +Scoped deliberately smaller than a full port, and documented as such in `gpu.rs`'s own updated module doc comment: border top/bottom strips and the titlebar bitmap now render on the GPU path, reusing the *exact* cached `MemoryRenderBuffer`s the Pixman path already builds in `redraw_decoration_buffer` (renderer-agnostic pixel buffers - importing them for `GlesRenderer` is the same generic call `cursor::render_elements` already makes for either renderer, no new rasterization code). Two things left out on purpose, not by oversight: occlusion-fragment clipping against overlapping windows (each window's own border/titlebar draws in full, front-to-back painter's-order - correct when windows don't overlap, imprecise when they do, real follow-up work) and the left/right border side strips plus the drop shadow. `border_curve_is_safe` is unconditionally `w.decorated` here rather than the Pixman path's content-masking-aware check, since this path has no content-masking/rounding concept at all yet - masking can never succeed, so the two conditions are equivalent. + +Full workspace build/test/clippy clean. Explicitly, deliberately **not** visually verified - same reason as before (no GPU-capable hardware here), stated once rather than repeated at length; see the entry below for the full reasoning this inherits. + ## Chrome titlebar gap closed, Nemo popup only partly re-verified (2026-08-28) Verified the two remaining research items live, in a nested compositor (`WAYLAND_DISPLAY=wayland-1` against the default config - the punch list's own preferred validation method, not the live session), instead of leaving them as unconfirmed guesses. |