2026 04 07_p13_progress_report - mark-ik/graphshell GitHub Wiki
Previous checkpoint: 370/413 (89.6%) at commit 1789270b1.
The jump reflects completion of the picture-cache tile rendering loop, resolve_ops, and several batch/blend fixes. Test suite grew from 413 → 441 as more tests became runnable under the wgpu path.
Core wgpu rendering: picture-cache tile loop, opaque/alpha batch dispatch, scissored
quad batches, conic gradient debug cleanup, LoadOp::Clear for dynamic targets, cfg
gate on as_byte_slice import. All debug eprintln! removed.
Minor fixes from previous session.
Minor.
Build plumbing for DirectComposition (Windows SDK lib path detection).
Test scene fix — white covering rects extended from 2048→2200 in both dimensions. The gradient extends to layout (2098, 2098); the original rects only reached x=2048 and y=2048 (exclusive), leaving a 50×50 corner uncovered. On GL at hidpi=2 that corner is outside the 3840-wide viewport; on wgpu layout==image pixel so it was visible. This is a pre-existing test authoring error, not a wgpu-specific accommodation.
Added skip_on(wgpu) to allow-subpixel test. Subpixel AA requires GL-specific
extensions not available on the wgpu path. This is a documented feature gap, not a
suppressed failure.
Did we shift the GL baseline or the tests?
- GL backend: untouched. All changes are in
wgpu_device.rsand the wgpu branch ofrenderer/mod.rs. - Tests: two changes, both defensible:
-
conic-large-hard-stop.yaml— corrected an authoring error (covering rects too small). The underlying test intent is unchanged. -
allow-subpixel skip_on(wgpu)— documents a genuine capability gap using the establishedskip_onmechanism.
-
- Reference images (
.pngfiles): none modified.
All have max_difference ≥ 230, meaning these are real rendering bugs, not precision noise.
| Test | Max diff | Pixels | Category |
|---|---|---|---|
compositor-surface/too-many-surfaces |
230 | 960 | compositor overflow |
filters/filter-long-chain |
255 | 111,628 | filter chain accumulation |
gradient/gradient_cache_clamp |
255 | 80,000 | gradient cache texture clamping |
image/snapshot-filters-01 |
235 | 225 | snapshot + filter interaction |
image/snapshot-shadow |
255 | 15,539 | shadow in snapshot |
text/raster_root_C_8192 |
255 | 34,111 | large raster root text |
text/mix-blend-layers |
255 | 8,476 | mix-blend on text layers |
-
gradient/gradient_cache_clamp— 80k wrong pixels, likely a texture sampling mode (clamp vs repeat) not set correctly on the wgpu path. -
filters/filter-long-chain— 111k pixels, filter pass accumulation issue. -
text/raster_root_C_8192— large raster root text may share a root with the mix-blend failure. -
compositor-surface/too-many-surfaces— overflow fallback path. -
image/snapshot-*— snapshot + filter/shadow interactions.
- Subpixel AA on wgpu (skipped, requires GL extensions)
- The 7 rendering bugs above
- Release-mode performance profiling
- Any wgpu-specific resource lifetime / synchronization audit
- All major rendering paths: picture cache tiles, alpha/opaque batch containers, quad batches (scissored + non-scissored), cs_* gradient/blur/border tasks, clip masks, resolve ops, blits, composite fast path, mix blend, SVG filters.
- Backend-aware reftest tolerances (
fuzzy-if(wgpu,...)/skip_on(wgpu)plumbing). - DirectComposition compositor layer (
wrench/src/composite.cpp). - Debug infrastructure added and then cleaned up.