deps: pick up go-widgets/window v0.77.0, so DamageRects finally does something - #293
Merged
Merged
Conversation
…something
app/damage.go has reported which rectangles changed since it was written, and
on macOS it bought nothing — not because of anything here, but because the
Cocoa backend converted the WHOLE framebuffer to a CGImage on every present
whatever the invalid region said. The report narrowed the blit and left the
cost where it was. Measured on another consumer of the same backend: 26.2% of
a core without damage reporting, 26.8% with it.
go-widgets/window v0.77.0 converts only the changed rows, so the report now
reaches something that acts on it. Measured there, three alternating pairs on
a window repainting a small region every frame at 60 Hz: 32.2/39.5/42.4% of a
core without, 14.1/15.3/24.3% with. Every pair the same way round.
The gate in DamageRects — diff only on an animation-only frame — is untouched
and remains right: on a content frame most of the surface changed anyway, and
scanning to discover that is overhead over a single full present.
WHAT THIS MOVES, since it is wider than the one module asked for:
go-widgets/toolkit v0.305.0 -> v0.316.0
go-widgets/window v0.64.0 -> v0.77.0
go-macos/appkit v0.1.0 -> v0.5.0
go-macos/objc v0.9.1 -> v0.10.2
go-gtk/gtk4 v0.3.0 -> v0.6.0
ebitengine/purego v0.10.2 -> v0.11.0
WHAT IS VERIFIED: build, vet and the whole suite (27 packages) on darwin, and
nr-build produces a signed bundle.
WHAT IS NOT: the runtime behaviour of the AppKit binding jump. CI runs on
ubuntu and the test lists exclude internal/window, so no lane executes that
path — and this change was not run on a device. The two macOS binding bumps
are the ones to watch if something misbehaves.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Why
app/damage.gohas reported which rectangles changed since it was written, andon macOS it bought nothing — not because of anything here, but because the
Cocoa backend converted the whole framebuffer to a CGImage on every present
whatever the invalid region said. The report narrowed the blit and left the
cost where it was.
Measured on another consumer of the same backend: 26.2% of a core without
damage reporting, 26.8% with it.
go-widgets/window
v0.77.0 converts only the
changed rows, so the report now reaches something that acts on it. Measured
there, three alternating pairs on a window repainting a small region every
frame at 60 Hz:
Every pair the same way round.
The gate in
DamageRects— diff only on an animation-only frame — is untouchedand remains right: on a content frame most of the surface changed anyway, and
scanning to discover that is overhead over a single full present.
What this moves
Wider than the one module asked for, so it is listed rather than left to the
lockfile:
go-widgets/toolkitgo-widgets/windowgo-macos/appkitgo-macos/objcgo-gtk/gtk4ebitengine/puregoVerified, and not
Verified: build, vet and the whole suite (27 packages) on darwin, and
nr-buildproduces a signed bundle.Not verified: the runtime behaviour of the AppKit binding jump. CI runs on
ubuntu and the test lists exclude
internal/window, so no lane executes thatpath — and this change was not run on a device. The two macOS binding bumps are
the ones to watch if something misbehaves.
🤖 Generated with Claude Code