Releases: gogpu/wgpu
Releases · gogpu/wgpu
v0.8.6 - macOS ARM64 Fixes
What's Changed
Fixed
- Metal Double Present Issue — Removed duplicate
[drawable present]call inQueue.Present()presentDrawable:is already scheduled inSubmit()before command buffer commit- Duplicate present was causing synchronization issues on some Metal drivers
Changed
- Updated dependency:
github.com/go-webgpu/goffiv0.3.5 → v0.3.6- ARM64 HFA Returns —
NSRect(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 window —
GetSize()no longer returns (0,0) on M1/M2/M3/M4 Macs - Resolves gogpu/gogpu#24
- ARM64 HFA Returns —
Full Changelog: v0.8.5...v0.8.6
v0.8.5: DX12 Backend Registration
What's Changed
Added
- DX12 Backend Registration — DirectX 12 backend now auto-registers on Windows
- Added
hal/dx12/init.gowithRegisterBackend()call - DX12 backend (~12.7K LOC) now available alongside Vulkan on Windows
- Windows backend priority: Vulkan → DX12 → GLES → Software
- Added
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)
Changed
- Updated dependency:
github.com/gogpu/nagav0.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
- Fixes missing
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
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 BEFOREcommit(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:expectsNSRangestructs - Fix: Pass
NSRangestruct pointers instead of raw integers - Fixed array layer count calculation (was previously ignored)
Installation
go get github.com/gogpu/wgpu@v0.8.3Full Changelog
v0.8.2: Dependency Update
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
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
thispointer first, output pointer second- Affected:
GetCPUDescriptorHandleForHeapStart,GetGPUDescriptorHandleForHeapStart,GetDesc,GetResourceAllocationInfo - Reference: D3D12 Struct Return Convention
- Affected:
-
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.1Full Changelog: v0.8.0...v0.8.1
v0.8.0 — DirectX 12 Backend
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
Fixed
- Metal CommandEncoder State Bug — Fixes Issue #24
- Root cause:
isRecordingflag was not set inCreateCommandEncoder() - Caused
BeginRenderPass()to returnnilon macOS - Fix: Removed boolean flag, use
cmdBuffer != 0as state indicator - Follows wgpu-rs pattern where
Option<CommandBuffer>presence indicates state - Added
IsRecording()method for explicit state checking
- Root cause:
Changed
- Updated
github.com/gogpu/nagadependency from v0.5.0 to v0.6.0
Installation
go get github.com/gogpu/wgpu@v0.7.2Full Changelog: v0.7.1...v0.7.2
v0.7.1 - ErrZeroArea Hotfix
Fixed
- macOS Zero Dimension Crash — Fixes Issue gogpu/gogpu#20
- Added
ErrZeroAreasentinel error matching wgpu-core pattern - Validate dimensions in all
Surface.Configure()implementations - Affected backends: Metal, Vulkan, GLES (Linux/Windows), Software
- Added
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
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