detached 9577230

refactor(vulkan): compute the redrawn area once per frame

commit
95772303a2c65affeee7b5a806de52fb8642d157
author
brice · · 2026-10-13 17:58 UTC
committer
brice · · 2026-10-14 04:34 UTC
parent
bc247f2
signature
GPG VerifiedCD88F9E564E0102646FB6077A1A07C7C7C3E349D · arch-gpg Verified for the committer email
1 file · +3 -7
M internal/adapters/vulkan/frame.go +3 -7
@@ -186,7 +186,9 @@ func (r *Renderer) Render(s ports.Scene, contents map[ports.WindowID]ports.Surfa
186186 dmg.finish()
187187 r.dropPools()
188188 partial := !dmg.all()
189+ redrawn := sw * sh
189190 if partial {
191+ redrawn = dmg.area.Dx() * dmg.area.Dy()
190192 // The pass keeps the image: repaint the background under the
191193 // region, then everything clipped to it.
192194 // Keep the background first without allocating a second draw slice.
@@ -195,15 +197,9 @@ func (r *Renderer) Render(s ports.Scene, contents map[ports.WindowID]ports.Surfa
195197 ds[0] = r.fillDraw(dmg.area, parseColor(s.Background))
196198 ds = dmg.clip(ds)
197199 r.scratchDraws = ds
198- r.redrawn += dmg.area.Dx() * dmg.area.Dy()
199- } else {
200- r.redrawn += sw * sh
201200 }
201+ r.redrawn += redrawn
202202 if r.traceDamage {
203- redrawn := sw * sh
204- if partial {
205- redrawn = dmg.area.Dx() * dmg.area.Dy()
206- }
207203 r.log.Debug().Int("redrawn", redrawn).Int("draws", len(ds)).Bool("partial", partial).Msg("frame damage")
208204 }
209205 r.orient(ds, s.Transform)
@@ -186,7 +186,9 @@ func (r *Renderer) Render(s ports.Scene, contents map[ports.WindowID]ports.Surfa
186 dmg.finish()186 dmg.finish()
187 r.dropPools()187 r.dropPools()
188 partial := !dmg.all()188 partial := !dmg.all()
189+ redrawn := sw * sh
189 if partial {190 if partial {
191+ redrawn = dmg.area.Dx() * dmg.area.Dy()
190 // The pass keeps the image: repaint the background under the192 // The pass keeps the image: repaint the background under the
191 // region, then everything clipped to it.193 // region, then everything clipped to it.
192 // Keep the background first without allocating a second draw slice.194 // Keep the background first without allocating a second draw slice.
@@ -195,15 +197,9 @@ func (r *Renderer) Render(s ports.Scene, contents map[ports.WindowID]ports.Surfa
195 ds[0] = r.fillDraw(dmg.area, parseColor(s.Background))197 ds[0] = r.fillDraw(dmg.area, parseColor(s.Background))
196 ds = dmg.clip(ds)198 ds = dmg.clip(ds)
197 r.scratchDraws = ds199 r.scratchDraws = ds
198- r.redrawn += dmg.area.Dx() * dmg.area.Dy()
199- } else {
200- r.redrawn += sw * sh
201 }200 }
201+ r.redrawn += redrawn
202 if r.traceDamage {202 if r.traceDamage {
203- redrawn := sw * sh
204- if partial {
205- redrawn = dmg.area.Dx() * dmg.area.Dy()
206- }
207 r.log.Debug().Int("redrawn", redrawn).Int("draws", len(ds)).Bool("partial", partial).Msg("frame damage")203 r.log.Debug().Int("redrawn", redrawn).Int("draws", len(ds)).Bool("partial", partial).Msg("frame damage")
208 }204 }
209 r.orient(ds, s.Transform)205 r.orient(ds, s.Transform)

Keyboard shortcuts

Single-key shortcuts are on. ctrl k and esc work whatever this says.

ctrl k :
go to a section, branch, tag, file or repository
?
this list
j k
move the row cursor down / up
enter
open the row under the cursor; on Files, a directory opens or closes in place
↑ ↓ ← → home end
in the file tree (focus on a row): previous / next row, close / open a directory or go to its parent / first entry, first / last row. They never open a file
l h
on Files: open a directory or a file / close a directory or go up to its parent, then to the parent page. Elsewhere: into the side panel (on a merge request, its files) / back to the content; there j k move between its controls
g g G
first / last row
/
filter the list; on Files, find a file anywhere in the repository (esc clears, enter opens the best match)
b
switch branch or tag
g s g f g c g b g m g i g r g a
tabs: summary, files, commits, branches & tags, merge requests, issues, releases, actions (when available)
g h
home
w
wide mode: use the whole width of the screen, or not (remembered)
y
copy a permalink pinned to the commit
d u x
diff: split / unified / collapse or expand all
e E
diff: the whole file in view / every file, with the lines the hunks hide
n
merge request: next note in the diff
esc
close a dialog, leave a field

Branches 23

Tags 10

↑↓ moveenter openesc close