Tags: gogpu/gg
Tags
refactor: compositor architecture migration (ADR-067) Move compositor ownership from gg to gogpu: - Remove preserveContent from GPURenderSession (compositor decides LoadOp) - Delegate MSAA overlay compositing via SurfaceCompositor interface - Per-frame compositor via GPURenderTarget.Compositor field - selectBaseLayer uses target.PreserveContent (not frameRendered) - shouldPreserveSurface checks compositor.ShouldPreserveContent() - Legacy fallback preserved for standalone gg without gogpu - Tests updated for new compositor signal path Enterprise pattern: drawing library receives compositor context per-frame, same as Chromium PlaybackToCanvas, Flutter ScopedFrame, GTK4 GSK render.
release: v0.51.0 — damage overlay + TT advance cache (#491) * feat: migrate ggcanvas to DamageReporter API (ADR-065 + ADR-066) - DamageRectSetter → DamageReporter via RegisterDamageSource('gg') - damage_debug.go → implements DamageOverlayRenderer with text labels - Per-source colors, anti-aliased borders, reason detail in labels - 67 ggcanvas tests passing Part of: #437 * docs: GOGPU_DEBUG_DAMAGE=1 → =overlay (pre-v1.0 clean cut) * perf(text): TT advance cache + deps bump + examples update (#490) - Per-(ppem, glyphID) advance cache in ttHintCacheEntry avoids re-running TT bytecode interpreter for advance-only queries. 60fps→15fps regression from v0.50.13 advanceResolver fixed. - deps: gpucontext v0.26.0, wgpu v0.31.0, gogpu v0.51.0 - examples: migrate LoadFontFace to text.NewFontSourceFromFile API - multi_damage_demo: single-path spinner, FPS counter, proper overlay * fix(lint): remove unused const, fix staticcheck SA4023 in overlay test
fix(text): variable font advance + shear aliased rendering (#405) (#489) * fix(text): variable font advance + shear aliased rendering (#405) Two fixes for variable font regression reported by @tsl0922: 1. drawGlyphsVariable used TT-hinted phantom advances (integer-rounded) for positioning while Face.Advance/MeasureString used HVAR (fractional). Now uses HVAR via varOrRawAdvance(), matching FreeType ttgload.c:964-977. Also fixed faceGlyphAdvance to use advanceResolver for MultiFace/FilteredFace. 2. Aliased text with shear/rotation produced garbled output because NoAAFiller cannot handle non-axis-aligned paths. Now forces AA for non-axis-aligned outlines in both drawStringCPUAliased and drawStringCPU, matching Skia computeAxisAlignmentForHText pattern. 8 new tests covering advance consistency and shear rendering quality. * fix(test): skip ink-width assertion when font lacks test glyphs Cantarell VF trimmed has no Latin glyphs — rightmostInk=-1 on CI. Skip subtest instead of failing with impossible -50px width.
fix(gpu): bind group lifecycle + deps v0.30.29 + examples update (#460) * fix(gpu): defer bind group release for shared encoder (ADR-056, #287) Shared encoder path released bind groups before gogpu submitted, causing use-after-free. Own-encoder path unaffected (submit before return). Fix: defer release to BeginFrame() for shared encoder, matching Skia Graphite frame-scoped resource lifecycle. Tested: Vulkan 2314+ frames, DX12, GLES — all 60 FPS stable. * fix(gpu): defer bind group release for shared encoder + update examples Shared encoder path released bind groups before submit, causing use-after-free (wgpu#287). Defer to BeginFrame() for shared encoder. Update all 14 examples to latest ecosystem deps. Remove stale replace directives.
PreviousNext