Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 3 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -57,8 +57,9 @@ CGO_ENABLED=0 go build
> **Note:** wgpu uses Pure Go FFI via [goffi](https://github.com/go-webgpu/goffi). Both `CGO_ENABLED=0` (default, zero C compiler dependency) and `CGO_ENABLED=1` (for race detector or coexistence with CGO libraries) are supported.

The unreleased Android/arm64 Vulkan implementation is documented separately in
[Android Vulkan preview](docs/ANDROID.md). It requires the exact canonical
goffi candidate named there and is not yet a released support claim.
[Android Vulkan preview](docs/ANDROID.md). It consumes canonical goffi v0.6.1
and is not yet a released support claim; the optional Rust path temporarily
pins the exact merged WebGPU Android source until that dependency is released.

New surface integrations should use the explicit safe or unsafe target API
described in [Surface targets](docs/SURFACE-TARGETS.md). The original
Expand Down
46 changes: 23 additions & 23 deletions docs/ANDROID.md
Original file line number Diff line number Diff line change
@@ -1,10 +1,13 @@
# Android Vulkan preview

Android/arm64 support is an unreleased implementation preview in
[gogpu/wgpu#268](https://github.com/gogpu/wgpu/pull/268), not a released support
claim. Its current scope is Vulkan, arm64, Android API 29 or newer, and both
`CGO_ENABLED=0` and `CGO_ENABLED=1`. GLES, software fallback, 32-bit Android,
debug callbacks, and API 28 or older are out of scope.
Android/arm64 support is an unreleased implementation preview on WGPU `main`,
not a released support claim. It landed in
[gogpu/wgpu#273](https://github.com/gogpu/wgpu/pull/273), whose squash included
the Android WSI work prepared and discussed in
[gogpu/wgpu#268](https://github.com/gogpu/wgpu/pull/268). Its current scope is
Vulkan, arm64, Android API 29 or newer, and both `CGO_ENABLED=0` and
`CGO_ENABLED=1`. GLES, software fallback, 32-bit Android, debug callbacks, and
API 28 or older are out of scope.

The default backend consumes canonical
[goffi v0.6.1](https://github.com/go-webgpu/goffi/releases/tag/v0.6.1), released
Expand Down Expand Up @@ -81,22 +84,20 @@ filter. The canonical backend's existing application-version request remains
unchanged; actual extensions, commands, features, and device evidence decide
whether a Vulkan implementation works.

## Merge order
## Integration status

The Android Vulkan work remains in
[wgpu#268](https://github.com/gogpu/wgpu/pull/268). This typed-surface change is
best reviewed and merged after #268. Its five WGPU prerequisites (#264, #265,
#266, #267, and #269), goffi#62/v0.6.1, and webgpu#24 are merged. This branch is
rebased onto the resulting WGPU `main`, so none of those five WGPU prerequisite
commits are replayed here. Until #268 lands, its Android-owned commits remain
below this PR's typed-target commits; they can be dropped in one final rebase
without changing the public design.
The five WGPU prerequisites (#264, #265, #266, #267, and #269), goffi#62/v0.6.1,
webgpu#24, and typed-surface PR #273 are merged. The #273 squash also included
the Android-owned commits originally carried by #268, so WGPU `main` already
contains both the Vulkan WSI implementation and the typed public/HAL surface
API. PR #268 remains the implementation's design and review record rather than
a code dependency.

[wgpu#253](https://github.com/gogpu/wgpu/pull/253) is the design precedent for
matching Rust's typed public/HAL seam; it is not a code dependency of Android.
The default Vulkan path needs #268 and goffi v0.6.1. The `rust` build-tag path
needs the canonical `go-webgpu/webgpu` helper as well. No WGPU-local copy of
that helper should be merged.
The default Vulkan path uses goffi v0.6.1. The `rust` build-tag path needs the
canonical `go-webgpu/webgpu` helper as well. No WGPU-local copy of that helper
should be added.

## Reproducing deterministic proof

Expand Down Expand Up @@ -126,9 +127,8 @@ These are deterministic cross-build and binary-shape checks. They do not prove
process startup, adapter enumeration, surface creation, rendering,
presentation, rotation, or lifecycle recovery on a physical device.

Before the preview can become a released support claim, the canonical
`go-webgpu/webgpu` helper and the WGPU prerequisites must merge and ship through
canonical refs; #268 must rebase to Android-only commits; and API 29 plus API
36 arm64 devices must pass startup, known-color presentation, rotation,
Activity recreation, and repeated native-window replacement without crashes,
hangs, stale frames, or validation errors.
Before the preview can become a released support claim, this WGPU integration
and a canonical `go-webgpu/webgpu` release containing the Android helper must
ship; API 29 plus API 36 arm64 devices must also pass startup, known-color
presentation, rotation, Activity recreation, and repeated native-window
replacement without crashes, hangs, stale frames, or validation errors.
6 changes: 3 additions & 3 deletions docs/SURFACE-TARGETS.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,9 +10,9 @@ target and ownership mode explicitly.
## Exhaustive API mapping

This map covers every exported production symbol added or behaviorally changed
by this follow-up relative to PR #268. Test-only declarations are excluded.
Build-tagged implementations of the same package selector are one logical Go
symbol. The Rust references are the pinned v29.0.3 sources for
by the typed-surface integration in PR #273. Test-only declarations are
excluded. Build-tagged implementations of the same package selector are one
logical Go symbol. The Rust references are the pinned v29.0.3 sources for
[`Instance::create_surface`](https://github.com/gfx-rs/wgpu/blob/4cbe6232b2d7c289b6e1a38416a6ae1461a22e81/wgpu/src/api/instance.rs#L175-L280),
[`SurfaceTarget` and `SurfaceTargetUnsafe`](https://github.com/gfx-rs/wgpu/blob/4cbe6232b2d7c289b6e1a38416a6ae1461a22e81/wgpu/src/api/surface.rs#L254-L458),
and [core surface creation](https://github.com/gfx-rs/wgpu/blob/4cbe6232b2d7c289b6e1a38416a6ae1461a22e81/wgpu-core/src/instance.rs#L218-L290).
Expand Down
Loading