Skip to content

Releases: gogpu/wgpu

v0.8.6 - macOS ARM64 Fixes

29 Dec 10:00
5d0d3fa

Choose a tag to compare

What's Changed

Fixed

  • Metal Double Present Issue — Removed duplicate [drawable present] call in Queue.Present()
    • presentDrawable: is already scheduled in Submit() before command buffer commit
    • Duplicate present was causing synchronization issues on some Metal drivers

Changed

  • Updated dependency: github.com/go-webgpu/goffi v0.3.5 → v0.3.6
    • ARM64 HFA ReturnsNSRect (4×float64) now correctly returns all values on Apple Silicon
    • Large Struct Returns — Structs >16 bytes properly use X8 register for implicit pointer
    • Fixes macOS ARM64 blank windowGetSize() no longer returns (0,0) on M1/M2/M3/M4 Macs
    • Resolves gogpu/gogpu#24

Full Changelog: v0.8.5...v0.8.6

v0.8.5: DX12 Backend Registration

29 Dec 00:21
f01617a

Choose a tag to compare

What's Changed

Added

  • DX12 Backend Registration — DirectX 12 backend now auto-registers on Windows
    • Added hal/dx12/init.go with RegisterBackend() call
    • DX12 backend (~12.7K LOC) now available alongside Vulkan on Windows
    • Windows backend priority: Vulkan → DX12 → GLES → Software

All 5 HAL Backends Complete

Backend LOC Platforms
Vulkan ~27K Windows, Linux, macOS
Metal ~3K macOS, iOS
DX12 ~12K Windows
GLES ~7.5K Windows, Linux
Software ~10K All platforms

Full Changelog: v0.8.4...v0.8.5

v0.8.4: Update naga v0.8.1 (clamp fix)

28 Dec 23:22
777913c

Choose a tag to compare

Changed

  • Updated dependency: github.com/gogpu/naga v0.8.0 → v0.8.1
    • Fixes missing clamp() built-in function in WGSL shader compilation
    • Adds comprehensive math function tests for all 12 WGSL built-in math functions

Documentation

  • Made README.md version-agnostic (removed hardcoded version numbers)
  • Simplified Roadmap section to link to ROADMAP.md
  • Updated CHANGELOG.md and ROADMAP.md for v0.8.4

Full Changelog: v0.8.3...v0.8.4

v0.8.3: Metal macOS Blank Window Fixes

28 Dec 22:33

Choose a tag to compare

Summary

Fixes macOS Metal backend blank window issue reported in gogpu/gogpu#24.

Fixed

Metal macOS Blank Window

  • Root cause: [drawable present] called separately after command buffer commit
  • Fix: Schedule presentDrawable: on command buffer BEFORE commit (Metal requirement)
  • Added SetDrawable() method to CommandBuffer for drawable attachment
  • Added Drawable() accessor to SurfaceTexture

Metal TextureView NSRange Parameters

  • Root cause: newTextureViewWithPixelFormat:textureType:levels:slices: expects NSRange structs
  • Fix: Pass NSRange struct pointers instead of raw integers
  • Fixed array layer count calculation (was previously ignored)

Installation

go get github.com/gogpu/wgpu@v0.8.3

Full Changelog

v0.8.2...v0.8.3

v0.8.2: Dependency Update

28 Dec 21:14

Choose a tag to compare

Changed

  • Updated naga v0.6.0 → v0.8.0 (HLSL backend, stability fixes)
  • Updated goffi v0.3.3 → v0.3.5

v0.8.1: DX12 COM Calling Convention Fix

28 Dec 11:40

Choose a tag to compare

Highlights

DX12 backend now works on Intel GPUs after fixing COM calling convention for struct-returning methods.

Fixed

  • DX12 COM Calling Convention Bug — D3D12 methods returning structs require this pointer first, output pointer second

    • Affected: GetCPUDescriptorHandleForHeapStart, GetGPUDescriptorHandleForHeapStart, GetDesc, GetResourceAllocationInfo
    • Reference: D3D12 Struct Return Convention
  • Vulkan goffi Argument Passing Bug — Fixes Windows crash (Exception 0xc0000005)

Added

  • DX12 Integration Test (cmd/dx12-test) — Validates DX12 backend on Windows
  • Compute Shader Support (Phase 2) — Core API: ComputePipeline, ComputePassEncoder
  • HAL Compute Infrastructure (Phase 1) — GLES, DX12, Metal compute dispatch

Install

go get github.com/gogpu/wgpu@v0.8.1

Full Changelog: v0.8.0...v0.8.1

v0.8.0 — DirectX 12 Backend

26 Dec 19:10

Choose a tag to compare

DirectX 12 Backend Complete!

All 5 HAL backends are now implemented. ~67K total lines of code.

What's New

  • DirectX 12 Backend (~12K LOC)
    • Pure Go COM bindings via syscall (no CGO!)
    • D3D12 API access via COM interface vtables
    • DXGI integration for swapchain and adapter enumeration
    • Descriptor heap management (CBV/SRV/UAV, Sampler, RTV, DSV)
    • Flip model swapchain with tearing support (VRR)
    • Command list recording with resource barriers
    • Root signature and PSO creation
    • Full format conversion (WebGPU to DXGI)

Backend Status

Backend LOC Platforms
Vulkan ~27K Windows, Linux, macOS
DX12 ~12K Windows
Software ~10K All (headless)
GLES ~7.5K Windows, Linux
Metal ~3K macOS, iOS

Installation

go get github.com/gogpu/wgpu@v0.8.0

Full Changelog

See CHANGELOG.md for details.

v0.7.2: Metal CommandEncoder Fix

26 Dec 15:52
3ea7c37

Choose a tag to compare

Fixed

  • Metal CommandEncoder State Bug — Fixes Issue #24
    • Root cause: isRecording flag was not set in CreateCommandEncoder()
    • Caused BeginRenderPass() to return nil on macOS
    • Fix: Removed boolean flag, use cmdBuffer != 0 as state indicator
    • Follows wgpu-rs pattern where Option<CommandBuffer> presence indicates state
    • Added IsRecording() method for explicit state checking

Changed

  • Updated github.com/gogpu/naga dependency from v0.5.0 to v0.6.0

Installation

go get github.com/gogpu/wgpu@v0.7.2

Full Changelog: v0.7.1...v0.7.2

v0.7.1 - ErrZeroArea Hotfix

26 Dec 07:50

Choose a tag to compare

Fixed

  • macOS Zero Dimension Crash — Fixes Issue gogpu/gogpu#20
    • Added ErrZeroArea sentinel error matching wgpu-core pattern
    • Validate dimensions in all Surface.Configure() implementations
    • Affected backends: Metal, Vulkan, GLES (Linux/Windows), Software

Notes

  • This fix allows proper handling of minimized windows and macOS timing issues
  • Window becomes visible asynchronously on macOS; initial dimensions may be 0,0

v0.7.0 - Metal WGSL→MSL & Render Pipeline

24 Dec 22:47
3e7fca9

Choose a tag to compare

What's New

Metal Backend

  • WGSL→MSL Compilation: Full shader compilation pipeline via naga v0.5.0
    • Parse WGSL source
    • Lower to intermediate representation
    • Compile to Metal Shading Language (MSL)
    • Create MTLLibrary from MSL source
  • CreateRenderPipeline: Complete implementation (~120 LOC)
    • Get vertex/fragment functions from library
    • Configure color attachments and blending
    • Create MTLRenderPipelineState

Dependencies

  • Added github.com/gogpu/naga v0.5.0

Full Changelog

v0.6.1...v0.7.0