Releases: gogpu/gpucontext
Releases · gogpu/gpucontext
v0.18.0 — SubpixelLayout for LCD/ClearType Detection
Added
- SubpixelLayout on PlatformProvider (ADR-024) —
SubpixelLayout()method returns display subpixel arrangement (SubpixelNone,SubpixelRGB,SubpixelBGR,SubpixelVRGB,SubpixelVBGR). Enables auto-detection of LCD/ClearType font rendering in gg. Follows Qt6QPlatformScreenpattern — subpixel is a display/OS property, not GPU.NullPlatformProviderreturnsSubpixelNone.
Full Changelog: v0.17.0...v0.18.0
v0.17.0
What's Changed
Added
- AdapterInfo on DeviceProvider (ADR-020) —
AdapterInfo()method returnsAdapterInfo{Name, Type}withAdapterTypeenum (Discrete, Integrated, Software, Unknown). Enables gg render mode auto-selection: CPU rasterizer on software adapters vs GPU accelerator on real hardware.
Fixed
- Lint cleanup — extracted
stringNoneconstant, 0 lint issues on all platforms.
Full Changelog: v0.16.0...v0.17.0
v0.16.0 — Runtime Fullscreen Toggle Interface
WindowChrome: SetFullscreen + IsFullscreen
Added runtime fullscreen toggle to the WindowChrome interface (ADR-018).
Added
SetFullscreen(bool)— enter/exit fullscreen modeIsFullscreen() bool— query fullscreen state- NullWindowChrome no-op defaults
Enables App.SetFullscreen(bool) in gogpu for borderless fullscreen (Windows), native toggleFullScreen: (macOS), _NET_WM_STATE_FULLSCREEN (X11), xdg_toplevel.set_fullscreen (Wayland).
Triggered by ui#88 (@AgentNemo00).
v0.15.0
Type-Safe GPU Resource Handles (ADR-018)
Breaking: TextureView changed from interface{} to opaque struct{ptr unsafe.Pointer}.
Changed
- TextureView — compile-time type safety via opaque handle (Vulkan/Ebitengine/Go Protobuf Opaque pattern). 8 bytes, value type, zero allocations, GC-safe.
Added
- CommandEncoder — opaque handle for shared encoder pipeline (ADR-017). Same pattern as TextureView.
Migration
// Before (v0.14.0)
var view gpucontext.TextureView = wgpuView // interface{} accepted anything
// After (v0.15.0)
view := gpucontext.NewTextureView(unsafe.Pointer(wgpuView))
if view.IsNil() { ... } // was: view == nil
ptr := view.Pointer() // unsafe.Pointer for type assertionv0.14.0
Added
- TextureView type token interface — type-safe render target for cross-package GPU operations. Follows Device/Queue/Surface pattern.
Full Changelog: v0.13.0...v0.14.0
v0.13.0
v0.13.0 — TextureRegionUpdater + gputypes v0.5.0
Added
- TextureRegionUpdater interface —
UpdateRegion(x, y, w, h int, data []byte) errorfor partial texture upload. Enables incremental rendering where only dirty regions are uploaded to GPU instead of full texture.
Changed
- Dependencies: gputypes v0.2.0 → v0.5.0 (PrimitiveState zero value = WebGPU spec default)
Full Changelog: v0.12.0...v0.13.0
v0.12.0 — CursorMode + PointerEvent deltas
Added
- CursorMode —
CursorModeNormal,CursorModeLocked,CursorModeConfinedfor mouse grab / pointer lock (SDL parity) - PointerEvent.DeltaX/DeltaY — relative mouse movement in locked cursor mode
v0.11.0 — WindowChrome Interface
Added
- WindowChrome interface for custom window chrome (frameless windows)
SetFrameless/IsFrameless— enable/disable frameless modeSetHitTestCallback(HitTestCallback)— custom hit testing for drag, resize, buttonsMinimize/Maximize/IsMaximized/Close— window controls
- HitTestResult enum (13 values): Client, Caption, Close, Maximize, Minimize, 8 resize edges/corners
- HitTestCallback type:
func(x, y float64) HitTestResult - NullWindowChrome — no-op implementation for testing
Enables replacing OS window chrome with GPU-rendered custom title bars. Implemented by gogpu.App (v0.25.0+).
v0.10.0 — Typed interfaces, remove HalProvider
Removed
- HalProvider interface deleted (HalDevice/HalQueue with
any)
Changed
- Device, Queue, Adapter, Surface, Instance → minimal type-token interfaces
- Consumers type-assert to
*wgpu.Devicefor full API (Go "accept interfaces, return structs")
v0.9.0
Added
- HalProvider interface for direct HAL device/queue access
HalDevice() any— returns underlying HAL deviceHalQueue() any— returns underlying HAL queue- Optional interface on DeviceProvider — use type assertion
- Enables GPU accelerators to share host devices without creating their own wgpu instance