Repository navigation
release: v0.52.7 - #556
Merged
Merged
release: v0.52.7#556
Conversation
wgpu v0.34.10 releases resources before submit, refcounts samplers and holds them from bind groups, keeps a texture alive from its view, and holds the Vulkan dynamic buffer types in the descriptor pool. naga v0.21.5 carries the security fixes of the v0.21 line. The go line stays 1.25.0, so consumers on Go 1.25 keep building.
Folds the Unreleased entries into 0.52.7, merges the two Added lists, and records the release in the roadmap.
Codecov Report✅ All modified and coverable lines are covered by tests. 📢 Thoughts on this report? Let us know! |
6 of 9 tasks
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.
gg v0.52.7. Patch release: five contributor PRs merged, plus the wgpu v0.34.10 and naga v0.21.5 bump.
Added
MultiFaceorFilteredFacethat mixes fonts used to fall back to CPU rendering, because the GPU paths need glyph IDs from onefont. Text is now split into runs by source font before shaping (
MultiFace.FontRuns,FilteredFace.FontRuns,text.ShapeRuns), each glyph keeps the face it came from (ShapedGlyph.Face), and single-font runs go to theglyph-mask and MSDF pipelines.
SetAcceleratorMaxSampleCount(feat(gpu): SetAcceleratorMaxSampleCount caps MSAA, 1 turns it off #547, thanks @sogonov): caps the MSAA sample count of the GPUaccelerator.
1turns multi-sampling off (strategyNoMSAA, the pathsoftware adapters already take), and
0restores the default. The optionalSampleCountAwareinterface carries it, andSDFAcceleratorimplements itby forwarding to
GPUShared. An application that draws only glyph-mask textand pixel-aligned rectangles, such as a terminal UI, looks the same without
MSAA. Turning it off frees the 4x color and depth/stencil targets: about
120 MB of GPU memory for a 2060x1638 window, with screenshots identical
byte for byte.
Fixed
the renderer stores premultiplied colour for the stencil-then-cover pass and the cover uniform multiplied by alpha
a second time, so translucent geometry came out as
alpha²·colourover the background: darker and grayer thanthe CPU output. Opaque colours were unaffected, which is why it depended on what was drawn.
FontSourcekeeps one copy of its data (fix(text): FontSource parses its own copy of the data, and keeps one #546, thanks @sogonov) —NewFontSourcedocumented that the caller'sslice may be reused, but it parsed the caller's slice and stored a copy that nothing read: reusing the buffer broke
the font, and every source held its file twice. It now parses the copy, and
NewFontSourceFromFilehands over thebuffer it just read instead of copying it.
clip, nothing inside the clip was drawn when gg rendered into a window (
examples/clip_path). On that path theframe is recorded into gogpu's command encoder, and gg dropped the pass that marks the clip region in the depth
buffer while the clipped content still tested against it. Offscreen rendering with readback was not affected. A
GPU readback test now renders through a shared encoder as well.
ggcanvas.Newreuses the canvas instead of allocating one per frame (fix(ggcanvas): idempotent New() + auto-resize Draw() — prevent per-frame allocation #484, fix(ggcanvas): reuse canvases and track window size #496, thanks @besmpl) —applications that take a fresh
GPUContextProviderwrapper every frame and callggcanvas.Newwith it got a newcanvas, context and texture pipeline each time.
NewandNewWithScalenow return the existing canvas for thesame GPU device, size and scale, keyed by the provider's stable device/queue/adapter handles. A different size or
scale keeps its own canvas, and
Drawfollows the window's size fromWindowProvider.Rendernow reads thewindow provider under the canvas's lifecycle lock, since a concurrent
Newreplaces it.Changed
go-webgpu/webgpu v0.5.5. wgpu v0.34.10 releases resources before they are submitted, refcounts samplers and holds
them from bind groups, keeps a texture alive from its view, and holds the Vulkan dynamic buffer types in the
descriptor pool; naga v0.21.5 carries the security fixes of the v0.21 line. The
goline stays 1.25.0.