render: move the cell painter into felis-render-core behind a display list #173
No reviewers
Labels
No labels
Area/ci
Area/cli
Area/client
Area/client-core
Area/daemon
Area/deps
Area/docs
Area/grid
Area/manual
Area/nix
Area/protocol
Area/pty
Area/render
Area/shaping
Area/skills
Area/transport
Area/vt
Compat/Breaking
Kind/Bug
Kind/Documentation
Kind/Enhancement
Kind/Feature
Kind/Performance
Kind/Security
Kind/Testing
perf-regression-accepted
Reviewed
Confirmed
Reviewed
Duplicate
Reviewed
Invalid
Reviewed
Won't Fix
Status
Blocked
Status
Need More Info
Status
Upstream
No milestone
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
felis-terminal/felis!173
Loading…
Reference in a new issue
No description provided.
Delete branch "render/core-painter"
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?
Depends on #172 (and #171 under it); review the last two commits.
Last of four PRs extracting the wgpu-free half of
felis-render-wgpuintofelis-render-core. After this, a CPU-rendered client reuses how a cell looks (colors, cursor, selection, decorations, overlays, clipping) instead of re-deriving it.97cb66c7— paint into a display list (painter still in wgpu)display_list:RowPaint { rects, glyphs, decos }in physical pixels, linear RGBA.GlyphDrawcarries its source in atlas pixels (src_min_px/src_max_px,crop_src_x/y), likeimage_layout'sImageDrawcarries image pixels.GlyphSlotswitches from normalized uv toatlas_px+size_px;AtlasView::sheet_sidegives the encoder each sheet's side.gpu_instances.rs: the POD instance types plusencode(RowPaint) → InstanceBuffers;RowCacheencodes each repainted row once.00080118— move the painterinstances.rs→ corepainter.rs(98% rename); Boundary API madepub(extend_row,resolved,push_scrollbar_lane,cursor(),CursorPaint::cell(),cursor_rect_px,clip_extent_at,CURSOR_MARKER_PX).extend_instances→extend_screen,extend_*_instances→extend_*,clip_cell_instances_above→clip_cells_above.renderer_effect/image_layout(a per-draw renderer trait rejected: the core would dictate call order, the GPU would re-buffer,RowCacheneeds per-row data); workspace.md and pipeline.md.Evidence
mul_addarithmetic within 1e-6 at sides 256–2048, bit-exact at power-of-two sides.paint_frame(full runs, alternating): full ≈0%, one dirty row +2.6%, cursor move +3.2%.just checkgreen; sol review PASS.00080118593056186e62