From 252f769c379a07241604d549ad31873213472982 Mon Sep 17 00:00:00 2001 From: Andrey Kolkov Date: Sat, 29 Aug 2026 12:48:06 +0300 Subject: [PATCH 1/2] feat: add DownlevelCapabilities() to DeviceProvider interface (ADR-071) Enables consumers (gg, g3d, Born ML) to query backend capabilities (compute support, indirect execution) without importing wgpu. Follows Features() precedent added for RT/ADR-062. Ref: gogpu/wgpu#336 --- device_provider.go | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/device_provider.go b/device_provider.go index fe67daa..e23ff60 100644 --- a/device_provider.go +++ b/device_provider.go @@ -58,4 +58,12 @@ type DeviceProvider interface { // without importing wgpu. Returns 0 if the implementation does not // track features (backward compatible — treat as no optional features). Features() gputypes.Features + + // DownlevelCapabilities returns backend capability flags for downlevel adapters. + // Consumers (e.g., gg) use this to query compute support, indirect execution, + // and other capabilities that may not be available on all backends (GLES 3.0). + // Returns zero-value DownlevelCapabilities if the implementation does not + // track downlevel capabilities (backward compatible — treat as no capabilities). + // Matches Rust wgpu Adapter::get_downlevel_capabilities() (adapter.rs:174). + DownlevelCapabilities() gputypes.DownlevelCapabilities } From 109187e6e645f977630d848e1a7a4443f6ed0a18 Mon Sep 17 00:00:00 2001 From: Andrey Kolkov Date: Sun, 30 Aug 2026 13:36:29 +0300 Subject: [PATCH 2/2] =?UTF-8?q?release:=20v0.30.0=20=E2=80=94=20DownlevelC?= =?UTF-8?q?apabilities=20on=20DeviceProvider=20(ADR-071)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CHANGELOG.md | 10 ++++++++++ go.mod | 2 +- go.sum | 4 ++-- 3 files changed, 13 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 9d2b5d6..ce884dc 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,16 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## [0.30.0] - 2026-08-30 + +### Added + +- **`DeviceProvider.DownlevelCapabilities()`** — returns `gputypes.DownlevelCapabilities` for backend capability queries. Enables consumers (gg, g3d, Born ML) to check compute support, indirect execution, and other capabilities that may be absent on non-conformant backends (GLES 3.0, CPU software). Returns zero-value if implementation does not track downlevel capabilities (backward compatible). Matches Rust wgpu `Adapter::get_downlevel_capabilities()` pattern. Architecture: DeviceProvider interface method, not type-assert — follows Flutter Impeller "check capabilities, not backend type" principle. See ADR-071. + +### Changed + +- **deps:** gputypes v0.6.0 → v0.7.0 (DownlevelCapabilities types) + ## [0.29.0] - 2026-08-27 ### Added diff --git a/go.mod b/go.mod index 32ee990..954999e 100644 --- a/go.mod +++ b/go.mod @@ -2,4 +2,4 @@ module github.com/gogpu/gpucontext go 1.25 -require github.com/gogpu/gputypes v0.6.0 +require github.com/gogpu/gputypes v0.7.0 diff --git a/go.sum b/go.sum index fac6f2e..1e52b59 100644 --- a/go.sum +++ b/go.sum @@ -1,2 +1,2 @@ -github.com/gogpu/gputypes v0.6.0 h1:nfjx0ek0jU97ziHmukJgUJZBzlTlls9hsnEeqIEZUxM= -github.com/gogpu/gputypes v0.6.0/go.mod h1:cnXrDMwTpWTvJLW1Vreop3PcT6a2YP/i3s91rPaOavw= +github.com/gogpu/gputypes v0.7.0 h1:1IcXGyPx8v6iAutpjwBYjcyYd3g6ep+FhThoZbhpVAg= +github.com/gogpu/gputypes v0.7.0/go.mod h1:cnXrDMwTpWTvJLW1Vreop3PcT6a2YP/i3s91rPaOavw=