Skip to content

Releases: gogpu/gogpu

v0.41.11

14 Jun 10:36
48dfe75

Choose a tag to compare

What's Changed

Fixed

  • Wayland CSD maximize/fullscreen geometry (#300) — 5 bugs fixed based on enterprise research (GTK4, winit/SCTK, SDL3/libdecor, GLFW consensus):
    • Title bar at (0, -tbH) on maximize — no longer covers Vulkan content (winit AdwaitaFrame pattern)
    • Fullscreen state parsed from xdg_toplevel states (value 2)
    • ALL decorations destroyed on fullscreen, recreated on restore
    • set_window_geometry negative offset model on maximize (winit/libdecor pattern)
    • ResizeCSD triggers on state change even without size change

Full Changelog: v0.41.10...v0.41.11

v0.41.10

14 Jun 08:48
abb4caf

Choose a tag to compare

Fixed

  • Wayland multiwindow (@lkmavi, #292) — 4 bugs:
    • macOS: Show() not called for secondary windows (v0.41.5 regression)
    • Wayland: global callback handles overwritten → per-proxy maps
    • Wayland: closing one window closed both → independent connections
    • Wayland: WaitEvents didn't poll secondary FDs
  • Thread panic propagation (@lkmavi) — re-panic on caller instead of silent goroutine death
  • macOS GetPoint buffer (@lkmavi) — [4]float64 for goffi HFA return (Go 1.26 -race)

Changed

Contributors

@lkmavi — all 3 code fixes in this release

v0.41.9

11 Jun 17:01
7f6fc4b

Choose a tag to compare

Changed

  • deps: wgpu v0.29.13 → v0.29.14 — missing vertexBuffers in Linux CreateRenderPipeline. All GLES geometry was silently discarded on Linux (vertex attributes never configured). One-line fix found by @lkmavi (wgpu#215/#217).

Please test

go get github.com/gogpu/wgpu@v0.29.14
GOGPU_GRAPHICS_API=gles go run github.com/gogpu/gogpu/examples/particles@v0.41.9

@z46-dev @lkmavi @omer316

v0.41.8

11 Jun 06:15
fd42b00

Choose a tag to compare

Changed

  • deps: wgpu v0.29.12 → v0.29.13, naga v0.17.13 → v0.17.14
    • GLES enterprise parity: GLSL version propagation, WindowBit-only EGL config tier (Wayland fix), runtime binding fallback GL<4.2, compute barrier, lazy VAO, MSAA validation
    • First Pure Go GLES rendering on Linux Wayland verified (triangle on WSL2 Mesa GL 4.1)

v0.41.7

08 Jun 10:35
9ef5c6a

Choose a tag to compare

Fixed

  • Wayland GLES init (@lkmavi, #292) — renderer 4-phase init split: initInstancecreateSurface (GLES) → initAdapterDevice(surfaceHint)configureSurface. EGL requires surface before GL context.
  • Wayland invisible cursorSetCursor(lastCursor) on wl_pointer.enter (GLFW pattern). Restores last known cursor shape.
  • Wayland CSD seat timingwl_seat in required globals + extra roundtrip for optional late globals.
  • Wayland CSD hit-test (@lkmavi) — buttons priority over resize grips at top edge (GNOME/libadwaita pattern).
  • Wayland fallback onDrawClear(0,0,0,1) for windows without callback so compositor shows the window.
  • KDE Plasma AppMenu (@lkmavi) — org_kde_kwin_appmenu protocol for Wayland global menus.
  • D-Bus RegisterWindow (@lkmavi) — winID=0 on Wayland (KDE matches by sender PID).
  • File dialog key repeat (@lkmavi) — cancel repeat before blocking dialog.

Changed

  • deps: wgpu v0.29.9 → v0.29.12 (GLES FFI pointer convention fix — 30+ GL calls corrected, EGL surfaceless/pbuffer, Wayland nativeDisplay fallback, @lkmavi wgpu#210/#213)

Contributors

@lkmavi — 6 out of 8 fixes in this release. Outstanding Wayland + GLES work.

v0.41.6

07 Jun 16:56
0ff5239

Choose a tag to compare

Fixed

  • Wayland SIGSEGV (#292)wl_data_device.data_offer event had NULL wl_message.types array. libwayland's create_proxies() created wl_data_offer proxy with interface=NULL → crash at proxy->object.interface->event_count (offset 0x18). Fix: dataOfferTypes[0] now points to correct wl_data_offer interface struct. Root cause found after 30+ research agents, WAYLAND_DEBUG tracing, strace wire protocol analysis, and libwayland source audit.

Changed

  • deps: wgpu v0.29.8 → v0.29.9 (SHM triple-buffer freeze: bufferBusyMap fix + roundtrip_queue dispatch)
  • ci: Remove fail_ci_if_error from Codecov (GPG infrastructure issue)

v0.41.5

06 Jun 18:48
5964f45

Choose a tag to compare

Fixed

  • Window creation: hidden-then-show pattern — windows created hidden, shown after GPU init. Eliminates WM_SETFOCUS loss, black flash, and focus race on all platforms. Matches GLFW, Ebiten, SDL3, winit, Flutter.
  • Win32: GLFW/Ebiten focus patternShowWindow(SW_SHOWNA) + BringWindowToTop + SetForegroundWindow + SetFocus after handle registration.
  • All platforms unifiedShow() added to internal PlatformWindow interface. Windows: deferred show. macOS: extracted from CreateWindow. X11: MapWindow deferred. Wayland/Browser: no-op.

Changed

  • deps: wgpu v0.29.4 → v0.29.7
    • Fence ordering fix (glFenceSync before glFlush)
    • Fence.Signal returns error (Rust parity)
    • Wayland SIGSEGV fix (#292)obtainWlShm moved from lazy render-thread init to eager Configure() on main thread. Eliminates race between wl_display_roundtrip and concurrent event dispatch.

Research

  • 16 research agents across 3 rounds
  • Enterprise references verified: GLFW, Ebiten, SDL3, winit, Flutter, Qt6
  • Raymond Chen: "Saving the window handle too late"
  • Wayland wl_proxy.display at offset 0x18 confirmed via libwayland struct layout

v0.41.4

06 Jun 04:56
5185ac9

Choose a tag to compare

Fixed

  • Wayland Vulkan: app event queue separation (ADR-041 Phase 4, #292) — all app Wayland objects moved to custom wl_event_queue. Default queue left for Mesa Vulkan WSI. Prevents dispatch from firing Mesa's internal wl_buffer.release callbacks. Enterprise pattern from GLFW/SDL3.
  • Wayland CSD thread safetyDispatchCSDEvents() holds displayMu for thread-safe wl_display_flush.

Changed

  • deps: wgpu v0.29.4 (Wayland GLES wl_egl_window + Software wl_shm + VK_ERROR_SURFACE_LOST), goffi v0.5.3

Full Changelog: v0.41.3...v0.41.4

v0.41.3

05 Jun 14:49
1a98e2f

Choose a tag to compare

Fixed

  • Wayland SIGSEGV in vkQueuePresentKHR (ADR-041, #292) — two fixes:
    • Configure gate: blocking WaitForConfigure() loop (SDL3/winit pattern). xdg-shell spec requires xdg_surface.configure before first buffer attach.
    • Display thread safety: displayMu mutex serializes wl_display access between main thread (event dispatch) and render thread (Vulkan WSI). DisplayLocker optional interface — no-op on X11/Windows/macOS/WASM.

Fixes crash on all Wayland compositors (GNOME, KDE, Sway) with any GPU vendor. Tested users: please verify with go get github.com/gogpu/gogpu@v0.41.3.

Full Changelog: v0.41.2...v0.41.3

v0.41.2

03 Jun 08:55
217a23d

Choose a tag to compare

Fixed

  • D-Bus flag: NO_REPLY_EXPECTED was 0x02 (NO_AUTO_START), now 0x01 — wrong flag could prevent AppMenu registrar from starting on socket-activated desktop environments.
  • DRY refactor: dbusAssembleMsg extracted as shared function (dbus_linux.go), eliminates duplication between file dialog and menu D-Bus code.
  • stopCh shutdown loggingserve() now distinguishes intentional shutdown from unexpected connection loss.

Full Changelog: v0.41.1...v0.41.2