From 462d45e2741a9302d9a34f1c7a5a160e75189ffd Mon Sep 17 00:00:00 2001 From: Nils Krueger Date: Thu, 12 Mar 2026 19:54:45 +0100 Subject: [PATCH 01/26] adding stubs for embedded sdk built --- Demos/BitonicSort/BitonicSort.swift | 8 +++---- Package.swift | 5 ++++ Sources/EmbeddedStubs/include/EmbeddedStubs.h | 13 +++++++++++ Sources/EmbeddedStubs/stubs.c | 23 +++++++++++++++++++ 4 files changed, 45 insertions(+), 4 deletions(-) create mode 100644 Sources/EmbeddedStubs/include/EmbeddedStubs.h create mode 100644 Sources/EmbeddedStubs/stubs.c diff --git a/Demos/BitonicSort/BitonicSort.swift b/Demos/BitonicSort/BitonicSort.swift index 6273c18..2cca3eb 100644 --- a/Demos/BitonicSort/BitonicSort.swift +++ b/Demos/BitonicSort/BitonicSort.swift @@ -385,13 +385,13 @@ struct BitonicSortDemo { } mutating func handleKey(_ key: String) { - switch key.lowercased() { - case "r": + switch key { + case "r", "R": self.resetSort() - case "p": + case "p", "P": self.isPaused.toggle() print(self.isPaused ? "Paused" : "Resumed") - case "h": + case "h", "H": self.highlightMode.toggle() print("Highlight mode: \(self.highlightMode ? "ON" : "OFF")") default: diff --git a/Package.swift b/Package.swift index f8a87f7..1e08831 100644 --- a/Package.swift +++ b/Package.swift @@ -97,6 +97,10 @@ let package = Package( .package(url: "https://github.com/swiftlang/swift-format.git", from: "602.0.0"), ], targets: isWasmBuild ? [ + .target( + name: "EmbeddedStubs", + path: "Sources/EmbeddedStubs" + ), .target( name: "WebGPUWasm", dependencies: [ @@ -131,6 +135,7 @@ let package = Package( dependencies: [ .target(name: "WebGPU"), .target(name: "WebGPUWasm"), + .target(name: "EmbeddedStubs"), ], path: "Demos/BitonicSort", exclude: ["index.html"], diff --git a/Sources/EmbeddedStubs/include/EmbeddedStubs.h b/Sources/EmbeddedStubs/include/EmbeddedStubs.h new file mode 100644 index 0000000..6899cca --- /dev/null +++ b/Sources/EmbeddedStubs/include/EmbeddedStubs.h @@ -0,0 +1,13 @@ +// Copyright 2026 Adobe +// All Rights Reserved. +// +// NOTICE: Adobe permits you to use, modify, and distribute this file in +// accordance with the terms of the Adobe license agreement accompanying +// it. + +// Stub declarations for Unicode normalization symbols missing from the +// Embedded Swift WASM runtime. All strings used in this project are ASCII, +// so these code paths are never reached at runtime. +#ifndef EMBEDDED_STUBS_H +#define EMBEDDED_STUBS_H +#endif diff --git a/Sources/EmbeddedStubs/stubs.c b/Sources/EmbeddedStubs/stubs.c new file mode 100644 index 0000000..49db369 --- /dev/null +++ b/Sources/EmbeddedStubs/stubs.c @@ -0,0 +1,23 @@ +// Copyright 2026 Adobe +// All Rights Reserved. +// +// NOTICE: Adobe permits you to use, modify, and distribute this file in +// accordance with the terms of the Adobe license agreement accompanying +// it. + +// Stub implementations for Unicode normalization symbols missing from the +// Embedded Swift WASM runtime. The full Swift String type pulls in NFC/NFD +// normalization code via its Equatable conformance. Since all strings used +// in this project are pure ASCII, the normalization slow path is never +// reached at runtime — these stubs just satisfy the linker. + +#include +#include + +uint16_t _swift_stdlib_getNormData(uint32_t scalar) { return 0; } + +int32_t _swift_stdlib_getComposition(uint32_t x, uint32_t y) { return -1; } + +int32_t _swift_stdlib_getDecompositionEntry(uint32_t scalar) { return 0; } + +const uint8_t *_swift_stdlib_nfd_decompositions = NULL; From c16bd4483dd97eac0af274993f4684f76af31eff Mon Sep 17 00:00:00 2001 From: Nils Krueger Date: Thu, 12 Mar 2026 20:01:23 +0100 Subject: [PATCH 02/26] update JSKit version --- Package.swift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Package.swift b/Package.swift index 1e08831..2ea985e 100644 --- a/Package.swift +++ b/Package.swift @@ -86,7 +86,7 @@ let package = Package( ), ]), dependencies: isWasmBuild ? [ - .package(url: "https://github.com/swiftwasm/JavaScriptKit.git", branch: "cf7a4f31f1f191f4eea84bb79c6aeffbccb7140e"), + .package(url: "https://github.com/swiftwasm/JavaScriptKit.git", from: "0.47.0"), ] : [ .package( url: "https://github.com/swiftlang/swift-testing.git", From e8a5526843b2eb694191ca20992071e179e0508b Mon Sep 17 00:00:00 2001 From: Nils Krueger Date: Thu, 12 Mar 2026 18:21:24 +0100 Subject: [PATCH 03/26] add makefile --- Makefile | 105 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 105 insertions(+) create mode 100644 Makefile diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..feb899c --- /dev/null +++ b/Makefile @@ -0,0 +1,105 @@ +# Environment variables with defaults +SWIFT_TC ?= $(shell cat .swift-version) +SWIFT_MODE ?= full +DEBUG ?= true + +# SDK presets +SWIFT_SDK_6_3_WASM := swift-6.3-DEVELOPMENT-SNAPSHOT-2026-02-27-a_wasm +SWIFT_SDK_6_3_EMBEDDED := swift-6.3-DEVELOPMENT-SNAPSHOT-2026-02-27-a_wasm-embedded +SWIFT_SDK_MAIN_WASM := swift-DEVELOPMENT-SNAPSHOT-2026-03-09-a_wasm +SWIFT_SDK_MAIN_EMBEDDED := swift-DEVELOPMENT-SNAPSHOT-2026-03-09-a_wasm-embedded + +# Derive SDK from toolchain (1) and mode (2) +# Returns empty for mode=full (native build needs no SDK) +_sdk = $(if $(filter wasm,$(2)),\ + $(if $(findstring 6.3-snapshot,$(1)),$(SWIFT_SDK_6_3_WASM),$(SWIFT_SDK_MAIN_WASM)),\ + $(if $(filter embedded,$(2)),\ + $(if $(findstring 6.3-snapshot,$(1)),$(SWIFT_SDK_6_3_EMBEDDED),$(SWIFT_SDK_MAIN_EMBEDDED)),)) + +# Remember whether SWIFT_SDK was explicitly provided before applying defaults +_SDK_EXPLICIT := $(if $(SWIFT_SDK),true,) + +# Wasm targets treat SWIFT_MODE=full as wasm +_WASM_MODE := $(if $(filter full,$(SWIFT_MODE)),wasm,$(SWIFT_MODE)) + +# SDK for wasm targets: explicit override wins, otherwise derived from TC + wasm mode +_WASM_SDK = $(strip $(if $(_SDK_EXPLICIT),$(SWIFT_SDK),$(call _sdk,$(SWIFT_TC),$(_WASM_MODE)))) + +# SDK for native build: derived from TC + SWIFT_MODE (empty when full) +SWIFT_SDK ?= $(strip $(call _sdk,$(SWIFT_TC),$(SWIFT_MODE))) + +BUILD_CONFIG := $(if $(filter false,$(DEBUG)),release,debug) +SWIFT_TC_USE := $(if $(SWIFT_TC),swiftly use $(SWIFT_TC) &&) +SWIFT_SDK_USE := $(if $(strip $(SWIFT_SDK)),--swift-sdk $(SWIFT_SDK)) + +.PHONY: swift-setup serve build test clean resolve format generate-apinotes \ + demo-gameoflife demo-bitonic \ + wasm-build-bridgejs wasm-build wasm-all wasm-demo-bitonic \ + help + +help: ## Show this help + @grep -E '^[a-zA-Z_-]+:.*##' $(MAKEFILE_LIST) | \ + awk 'BEGIN {FS = ":.*## "}; {printf " \033[36m%-25s\033[0m %s\n", $$1, $$2}' + @echo "" + @echo "Environment variables:" + @echo " SWIFT_TC Toolchain (from .swift-version) Default: $$(cat .swift-version)" + @echo " SWIFT_MODE full | wasm | embedded Default: full" + @echo " (wasm targets default to embedded if not set)" + @echo " SWIFT_SDK Override derived SDK (optional)" + @echo " DEBUG true = debug, false = release Default: true" + @echo "" + @echo "SWIFT_SDK is derived from SWIFT_TC + SWIFT_MODE:" + @echo " 6.3-snapshot + wasm -> $(SWIFT_SDK_6_3_WASM)" + @echo " 6.3-snapshot + embedded -> $(SWIFT_SDK_6_3_EMBEDDED)" + @echo " main-snapshot + wasm -> $(SWIFT_SDK_MAIN_WASM)" + @echo " main-snapshot + embedded -> $(SWIFT_SDK_MAIN_EMBEDDED)" + @echo " * + full -> (none, native build)" + @echo "" + @echo "Examples:" + @echo " make build # native debug build" + @echo " make build DEBUG=false # native release build" + @echo " make wasm-build # embedded WASM build (default)" + @echo " make wasm-build SWIFT_MODE=wasm # full WASM build" + @echo " make wasm-build SWIFT_TC=main-snapshot # embedded WASM (main toolchain)" + @echo " make wasm-all SWIFT_MODE=wasm DEBUG=false # clean + release WASM build" + +swift-setup: ## Install and activate Swift toolchain (SWIFT_TC) + swiftly install $(SWIFT_TC) && swiftly use $(SWIFT_TC) + +serve: ## Start local dev server + pnpx serve . + +build: ## Native Swift build (SWIFT_TC, DEBUG) + $(SWIFT_TC_USE) swift build $(SWIFT_SDK_USE) -c $(BUILD_CONFIG) + +test: ## Run Swift tests + swift test + +clean: ## Clean build artifacts + swift package clean + +resolve: ## Resolve Swift package dependencies + swift package resolve + +format: ## Format Swift source code + swift format --in-place --recursive Sources Tests Demos + +generate-apinotes: ## Generate Dawn API notes + swift package --allow-writing-to-package-directory generate-dawn-apinotes + +demo-gameoflife: ## Run GameOfLife demo + swift run GameOfLife + +demo-bitonic: ## Run BitonicSort demo + swift run BitonicSort + +wasm-build-bridgejs: ## Generate BridgeJS bindings (SWIFT_MODE, SWIFT_TC) + $(SWIFT_TC_USE) SWAN_WASM=1 swift package --swift-sdk $(_WASM_SDK) plugin --allow-writing-to-package-directory bridge-js + +wasm-build: wasm-build-bridgejs ## WASM build, depends on bridgejs (SWIFT_MODE, SWIFT_TC, DEBUG) + $(SWIFT_TC_USE) SWAN_WASM=1 swift build --swift-sdk $(_WASM_SDK) --target WebGPU -c $(BUILD_CONFIG) + +wasm-all: clean wasm-build ## Clean + full WASM build + +wasm-demo-bitonic: ## Build and serve BitonicSort WASM demo (SWIFT_MODE, SWIFT_TC) + $(SWIFT_TC_USE) SWAN_WASM=1 swift package --swift-sdk $(_WASM_SDK) js --product BitonicSort -c $(BUILD_CONFIG) && pnpx serve . From b2aff9a5814c285e9454c02dad5c45c62322c037 Mon Sep 17 00:00:00 2001 From: Nils Krueger Date: Fri, 13 Mar 2026 10:02:11 +0100 Subject: [PATCH 04/26] no dynamic package dependencies --- Package.resolved | 11 ++++++++++- Package.swift | 3 +-- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/Package.resolved b/Package.resolved index 726a04f..f93c6d1 100644 --- a/Package.resolved +++ b/Package.resolved @@ -1,6 +1,15 @@ { - "originHash" : "531f77f327774cb851fdc6280628c5a9dd21edd0b39dbe117b35d679ddfea38e", + "originHash" : "95e131b9e1c8d54eb62e77d24ab8ca2b4c4bdc80b4dad8e167d08c8f94c1e866", "pins" : [ + { + "identity" : "javascriptkit", + "kind" : "remoteSourceControl", + "location" : "https://github.com/swiftwasm/JavaScriptKit.git", + "state" : { + "revision" : "ba66ff1f8bc662ea04826ceadd3b1fe13c207be2", + "version" : "0.47.0" + } + }, { "identity" : "swift-argument-parser", "kind" : "remoteSourceControl", diff --git a/Package.swift b/Package.swift index 2ea985e..129f341 100644 --- a/Package.swift +++ b/Package.swift @@ -85,9 +85,8 @@ let package = Package( targets: ["GenerateDawnAPINotesPlugin"] ), ]), - dependencies: isWasmBuild ? [ + dependencies: [ .package(url: "https://github.com/swiftwasm/JavaScriptKit.git", from: "0.47.0"), - ] : [ .package( url: "https://github.com/swiftlang/swift-testing.git", from: "6.2.4" From f73cae21e137215f4f757e5c641aa8441b596c0e Mon Sep 17 00:00:00 2001 From: Nils Krueger Date: Fri, 13 Mar 2026 11:32:38 +0100 Subject: [PATCH 05/26] phony --- Makefile | 42 +++++++++++++++++++++++++++--------------- 1 file changed, 27 insertions(+), 15 deletions(-) diff --git a/Makefile b/Makefile index feb899c..733bffe 100644 --- a/Makefile +++ b/Makefile @@ -32,19 +32,16 @@ BUILD_CONFIG := $(if $(filter false,$(DEBUG)),release,debug) SWIFT_TC_USE := $(if $(SWIFT_TC),swiftly use $(SWIFT_TC) &&) SWIFT_SDK_USE := $(if $(strip $(SWIFT_SDK)),--swift-sdk $(SWIFT_SDK)) -.PHONY: swift-setup serve build test clean resolve format generate-apinotes \ - demo-gameoflife demo-bitonic \ - wasm-build-bridgejs wasm-build wasm-all wasm-demo-bitonic \ - help - +.PHONY: help help: ## Show this help + @echo "Current Swift toolchain: '$(SWIFT_TC_CURRENT)'" @grep -E '^[a-zA-Z_-]+:.*##' $(MAKEFILE_LIST) | \ awk 'BEGIN {FS = ":.*## "}; {printf " \033[36m%-25s\033[0m %s\n", $$1, $$2}' @echo "" @echo "Environment variables:" - @echo " SWIFT_TC Toolchain (from .swift-version) Default: $$(cat .swift-version)" + @echo " SWIFT_TC Toolchain (from .swift-version) Default: $$(cat .swift-version)" @echo " SWIFT_MODE full | wasm | embedded Default: full" - @echo " (wasm targets default to embedded if not set)" + @echo " (wasm-* targets default to wasm when SWIFT_MODE is not set)" @echo " SWIFT_SDK Override derived SDK (optional)" @echo " DEBUG true = debug, false = release Default: true" @echo "" @@ -56,50 +53,65 @@ help: ## Show this help @echo " * + full -> (none, native build)" @echo "" @echo "Examples:" - @echo " make build # native debug build" - @echo " make build DEBUG=false # native release build" - @echo " make wasm-build # embedded WASM build (default)" - @echo " make wasm-build SWIFT_MODE=wasm # full WASM build" - @echo " make wasm-build SWIFT_TC=main-snapshot # embedded WASM (main toolchain)" - @echo " make wasm-all SWIFT_MODE=wasm DEBUG=false # clean + release WASM build" - + @echo " make build # native debug build" + @echo " make build DEBUG=false # native release build" + @echo " make wasm-build # WASM build (default mode: wasm)" + @echo " make wasm-build SWIFT_MODE=embedded # embedded WASM build" + @echo " make wasm-build SWIFT_TC=6.3-snapshot # WASM build (6.3 toolchain)" + @echo " make wasm-all DEBUG=false # clean + release WASM build" + @echo " make wasm-all SWIFT_MODE=embedded DEBUG=false # clean + release embedded build" + +.PHONY: swift-setup swift-setup: ## Install and activate Swift toolchain (SWIFT_TC) swiftly install $(SWIFT_TC) && swiftly use $(SWIFT_TC) +.PHONY: serve serve: ## Start local dev server pnpx serve . +.PHONY: build build: ## Native Swift build (SWIFT_TC, DEBUG) $(SWIFT_TC_USE) swift build $(SWIFT_SDK_USE) -c $(BUILD_CONFIG) +.PHONY: test test: ## Run Swift tests swift test +.PHONY: clean clean: ## Clean build artifacts swift package clean +.PHONY: resolve resolve: ## Resolve Swift package dependencies swift package resolve +.PHONY: format format: ## Format Swift source code swift format --in-place --recursive Sources Tests Demos +.PHONY: generate-apinotes generate-apinotes: ## Generate Dawn API notes swift package --allow-writing-to-package-directory generate-dawn-apinotes +.PHONY: demo-gameoflife demo-gameoflife: ## Run GameOfLife demo swift run GameOfLife +.PHONY: demo-bitonic demo-bitonic: ## Run BitonicSort demo swift run BitonicSort +.PHONY: wasm-build-bridgejs wasm-build-bridgejs: ## Generate BridgeJS bindings (SWIFT_MODE, SWIFT_TC) $(SWIFT_TC_USE) SWAN_WASM=1 swift package --swift-sdk $(_WASM_SDK) plugin --allow-writing-to-package-directory bridge-js +.PHONY: wasm-build wasm-build: wasm-build-bridgejs ## WASM build, depends on bridgejs (SWIFT_MODE, SWIFT_TC, DEBUG) $(SWIFT_TC_USE) SWAN_WASM=1 swift build --swift-sdk $(_WASM_SDK) --target WebGPU -c $(BUILD_CONFIG) +.PHONY: wasm-all wasm-all: clean wasm-build ## Clean + full WASM build -wasm-demo-bitonic: ## Build and serve BitonicSort WASM demo (SWIFT_MODE, SWIFT_TC) +.PHONY: wasm-demo-bitonic +wasm-demo-bitonic: wasm-build ## Build and serve BitonicSort WASM demo (SWIFT_MODE, SWIFT_TC) $(SWIFT_TC_USE) SWAN_WASM=1 swift package --swift-sdk $(_WASM_SDK) js --product BitonicSort -c $(BUILD_CONFIG) && pnpx serve . From 53e4f80792fd82bb08c720dae94d59d937f4623c Mon Sep 17 00:00:00 2001 From: Nils Krueger Date: Fri, 13 Mar 2026 13:02:32 +0100 Subject: [PATCH 06/26] easier makefile --- .github/workflows/swift-wasm.yaml | 5 +- .wasm-sdk-version | 1 - .wasm-sdk-versions | 3 + Makefile | 98 +++++++++++++------------------ 4 files changed, 46 insertions(+), 61 deletions(-) delete mode 100644 .wasm-sdk-version create mode 100644 .wasm-sdk-versions diff --git a/.github/workflows/swift-wasm.yaml b/.github/workflows/swift-wasm.yaml index dda84da..e79421d 100644 --- a/.github/workflows/swift-wasm.yaml +++ b/.github/workflows/swift-wasm.yaml @@ -27,9 +27,8 @@ jobs: - name: Read WASM SDK version id: wasm-sdk run: | - sdk="$(cat .wasm-sdk-version)" - # sdk is e.g. "DEVELOPMENT-SNAPSHOT-2026-02-19-a-wasm32-unknown-wasip1" - # Extract the release tag by stripping the "-wasm32-*" triple suffix + source .wasm-sdk-versions + sdk="$CI" tag="swift-wasm-${sdk%-wasm32-*}" url="https://github.com/swiftwasm/swift/releases/download/${tag}/swift-wasm-${sdk}.artifactbundle.zip" echo "version=${sdk}" >> "$GITHUB_OUTPUT" diff --git a/.wasm-sdk-version b/.wasm-sdk-version deleted file mode 100644 index 4b3981e..0000000 --- a/.wasm-sdk-version +++ /dev/null @@ -1 +0,0 @@ -6.3-SNAPSHOT-2026-02-27-a-wasm32-unknown-wasip1 diff --git a/.wasm-sdk-versions b/.wasm-sdk-versions new file mode 100644 index 0000000..6ffd818 --- /dev/null +++ b/.wasm-sdk-versions @@ -0,0 +1,3 @@ +CI=6.3-SNAPSHOT-2026-02-27-a-wasm32-unknown-wasip1 +6.3-snapshot=6.3-SNAPSHOT-2026-02-27-a-wasm32-unknown-wasip1 +main-snapshot=DEVELOPMENT-SNAPSHOT-2026-02-19-a-wasm32-unknown-wasip1 \ No newline at end of file diff --git a/Makefile b/Makefile index 733bffe..f41bcf2 100644 --- a/Makefile +++ b/Makefile @@ -1,77 +1,61 @@ -# Environment variables with defaults -SWIFT_TC ?= $(shell cat .swift-version) -SWIFT_MODE ?= full -DEBUG ?= true +SWIFT_MODE ?= +DEBUG ?= 1 -# SDK presets -SWIFT_SDK_6_3_WASM := swift-6.3-DEVELOPMENT-SNAPSHOT-2026-02-27-a_wasm -SWIFT_SDK_6_3_EMBEDDED := swift-6.3-DEVELOPMENT-SNAPSHOT-2026-02-27-a_wasm-embedded -SWIFT_SDK_MAIN_WASM := swift-DEVELOPMENT-SNAPSHOT-2026-03-09-a_wasm -SWIFT_SDK_MAIN_EMBEDDED := swift-DEVELOPMENT-SNAPSHOT-2026-03-09-a_wasm-embedded +# Load SDK versions as Make variables (6.3-snapshot=..., main-snapshot=...) +include .wasm-sdk-versions -# Derive SDK from toolchain (1) and mode (2) -# Returns empty for mode=full (native build needs no SDK) -_sdk = $(if $(filter wasm,$(2)),\ - $(if $(findstring 6.3-snapshot,$(1)),$(SWIFT_SDK_6_3_WASM),$(SWIFT_SDK_MAIN_WASM)),\ - $(if $(filter embedded,$(2)),\ - $(if $(findstring 6.3-snapshot,$(1)),$(SWIFT_SDK_6_3_EMBEDDED),$(SWIFT_SDK_MAIN_EMBEDDED)),)) +# Strip everything after "snapshot" to get SDK key +# e.g. 6.3-snapshot-2026-03-05 -> 6.3-snapshot +_SWIFT_TC := $(shell cat .swift-version) +_SDK_KEY := $(firstword $(subst snapshot,snapshot ,$(_SWIFT_TC))) +_SDK_BASE := $($(_SDK_KEY)) -# Remember whether SWIFT_SDK was explicitly provided before applying defaults -_SDK_EXPLICIT := $(if $(SWIFT_SDK),true,) +SWIFT_SDK ?= $(if $(_SDK_BASE),$(_SDK_BASE)$(if $(filter embedded,$(SWIFT_MODE)),-embedded)) -# Wasm targets treat SWIFT_MODE=full as wasm -_WASM_MODE := $(if $(filter full,$(SWIFT_MODE)),wasm,$(SWIFT_MODE)) - -# SDK for wasm targets: explicit override wins, otherwise derived from TC + wasm mode -_WASM_SDK = $(strip $(if $(_SDK_EXPLICIT),$(SWIFT_SDK),$(call _sdk,$(SWIFT_TC),$(_WASM_MODE)))) - -# SDK for native build: derived from TC + SWIFT_MODE (empty when full) -SWIFT_SDK ?= $(strip $(call _sdk,$(SWIFT_TC),$(SWIFT_MODE))) - -BUILD_CONFIG := $(if $(filter false,$(DEBUG)),release,debug) -SWIFT_TC_USE := $(if $(SWIFT_TC),swiftly use $(SWIFT_TC) &&) -SWIFT_SDK_USE := $(if $(strip $(SWIFT_SDK)),--swift-sdk $(SWIFT_SDK)) +BUILD_CONFIG := $(if $(filter 0 false,$(DEBUG)),release,debug) .PHONY: help help: ## Show this help - @echo "Current Swift toolchain: '$(SWIFT_TC_CURRENT)'" - @grep -E '^[a-zA-Z_-]+:.*##' $(MAKEFILE_LIST) | \ + @grep -E '^[a-zA-Z_-]+:.*##' $(firstword $(MAKEFILE_LIST)) | \ awk 'BEGIN {FS = ":.*## "}; {printf " \033[36m%-25s\033[0m %s\n", $$1, $$2}' @echo "" @echo "Environment variables:" - @echo " SWIFT_TC Toolchain (from .swift-version) Default: $$(cat .swift-version)" - @echo " SWIFT_MODE full | wasm | embedded Default: full" - @echo " (wasm-* targets default to wasm when SWIFT_MODE is not set)" - @echo " SWIFT_SDK Override derived SDK (optional)" - @echo " DEBUG true = debug, false = release Default: true" + @echo " SWIFT_MODE embedded (append -embedded to SDK) Default: (none)" + @echo " SWIFT_SDK Override derived SDK Default: $(_SDK_BASE)" + @echo " DEBUG 1 or true = debug, 0 or false = release Default: 1" @echo "" - @echo "SWIFT_SDK is derived from SWIFT_TC + SWIFT_MODE:" - @echo " 6.3-snapshot + wasm -> $(SWIFT_SDK_6_3_WASM)" - @echo " 6.3-snapshot + embedded -> $(SWIFT_SDK_6_3_EMBEDDED)" - @echo " main-snapshot + wasm -> $(SWIFT_SDK_MAIN_WASM)" - @echo " main-snapshot + embedded -> $(SWIFT_SDK_MAIN_EMBEDDED)" - @echo " * + full -> (none, native build)" + @echo "Current toolchain: $(_SWIFT_TC)" + @echo "Derived SDK: $(SWIFT_SDK)" @echo "" @echo "Examples:" @echo " make build # native debug build" - @echo " make build DEBUG=false # native release build" - @echo " make wasm-build # WASM build (default mode: wasm)" + @echo " make build DEBUG=0 # native release build" + @echo " make wasm-build # WASM build" @echo " make wasm-build SWIFT_MODE=embedded # embedded WASM build" - @echo " make wasm-build SWIFT_TC=6.3-snapshot # WASM build (6.3 toolchain)" - @echo " make wasm-all DEBUG=false # clean + release WASM build" - @echo " make wasm-all SWIFT_MODE=embedded DEBUG=false # clean + release embedded build" + @echo " make wasm-all DEBUG=0 # clean + release WASM build" + @echo " make wasm-all SWIFT_MODE=embedded DEBUG=0 # clean + release embedded build" + +.PHONY: debug +debug: ## Echo all Make variables + @echo "DEBUG: $(DEBUG)" + @echo "BUILD_CONFIG: $(BUILD_CONFIG)" + @echo "SWIFT_MODE: $(SWIFT_MODE)" + @echo "SWIFT_SDK: $(SWIFT_SDK)" + @echo "_SWIFT_TC: $(_SWIFT_TC)" + @echo "_SDK_KEY: $(_SDK_KEY)" + @echo "_SDK_BASE: $(_SDK_BASE)" .PHONY: swift-setup -swift-setup: ## Install and activate Swift toolchain (SWIFT_TC) - swiftly install $(SWIFT_TC) && swiftly use $(SWIFT_TC) +swift-setup: ## Install and activate Swift toolchain + swiftly install && swiftly use .PHONY: serve serve: ## Start local dev server pnpx serve . .PHONY: build -build: ## Native Swift build (SWIFT_TC, DEBUG) - $(SWIFT_TC_USE) swift build $(SWIFT_SDK_USE) -c $(BUILD_CONFIG) +build: ## Native Swift build (DEBUG) + swift build -c $(BUILD_CONFIG) .PHONY: test test: ## Run Swift tests @@ -102,16 +86,16 @@ demo-bitonic: ## Run BitonicSort demo swift run BitonicSort .PHONY: wasm-build-bridgejs -wasm-build-bridgejs: ## Generate BridgeJS bindings (SWIFT_MODE, SWIFT_TC) - $(SWIFT_TC_USE) SWAN_WASM=1 swift package --swift-sdk $(_WASM_SDK) plugin --allow-writing-to-package-directory bridge-js +wasm-build-bridgejs: ## Generate BridgeJS bindings (SWIFT_MODE) + SWAN_WASM=1 swift package --swift-sdk $(SWIFT_SDK) plugin --allow-writing-to-package-directory bridge-js .PHONY: wasm-build -wasm-build: wasm-build-bridgejs ## WASM build, depends on bridgejs (SWIFT_MODE, SWIFT_TC, DEBUG) - $(SWIFT_TC_USE) SWAN_WASM=1 swift build --swift-sdk $(_WASM_SDK) --target WebGPU -c $(BUILD_CONFIG) +wasm-build: wasm-build-bridgejs ## WASM build, depends on bridgejs (SWIFT_MODE, DEBUG) + SWAN_WASM=1 swift build --swift-sdk $(SWIFT_SDK) --target WebGPU -c $(BUILD_CONFIG) .PHONY: wasm-all wasm-all: clean wasm-build ## Clean + full WASM build .PHONY: wasm-demo-bitonic -wasm-demo-bitonic: wasm-build ## Build and serve BitonicSort WASM demo (SWIFT_MODE, SWIFT_TC) - $(SWIFT_TC_USE) SWAN_WASM=1 swift package --swift-sdk $(_WASM_SDK) js --product BitonicSort -c $(BUILD_CONFIG) && pnpx serve . +wasm-demo-bitonic: wasm-build ## Build and serve BitonicSort WASM demo (SWIFT_MODE) + SWAN_WASM=1 swift package --swift-sdk $(SWIFT_SDK) js --product BitonicSort -c $(BUILD_CONFIG) && pnpx serve . From 0d9c285f63f033ae5a143f054adb453c6c363b8d Mon Sep 17 00:00:00 2001 From: Nils Krueger Date: Fri, 13 Mar 2026 13:48:01 +0100 Subject: [PATCH 07/26] updates --- .wasm-sdk-versions | 2 +- Makefile | 39 +- Sources/WebGPU/Wasm/Generated/BridgeJS.swift | 2365 +++++++++--------- 3 files changed, 1162 insertions(+), 1244 deletions(-) diff --git a/.wasm-sdk-versions b/.wasm-sdk-versions index 6ffd818..ebdf8cd 100644 --- a/.wasm-sdk-versions +++ b/.wasm-sdk-versions @@ -1,3 +1,3 @@ CI=6.3-SNAPSHOT-2026-02-27-a-wasm32-unknown-wasip1 6.3-snapshot=6.3-SNAPSHOT-2026-02-27-a-wasm32-unknown-wasip1 -main-snapshot=DEVELOPMENT-SNAPSHOT-2026-02-19-a-wasm32-unknown-wasip1 \ No newline at end of file +main-snapshot=DEVELOPMENT-SNAPSHOT-2026-03-09-a-wasm32-unknown-wasip1 \ No newline at end of file diff --git a/Makefile b/Makefile index f41bcf2..1d5affb 100644 --- a/Makefile +++ b/Makefile @@ -27,6 +27,8 @@ help: ## Show this help @echo "Current toolchain: $(_SWIFT_TC)" @echo "Derived SDK: $(SWIFT_SDK)" @echo "" + @echo "WASM SDK versions can be downloaded from: https://github.com/swiftwasm/swift/releases" + @echo "" @echo "Examples:" @echo " make build # native debug build" @echo " make build DEBUG=0 # native release build" @@ -49,9 +51,26 @@ debug: ## Echo all Make variables swift-setup: ## Install and activate Swift toolchain swiftly install && swiftly use -.PHONY: serve -serve: ## Start local dev server - pnpx serve . +.PHONY: sdk-download +sdk-download: ## Open the download page for the current SWIFT_SDK + @sdk="$(SWIFT_SDK)"; \ + tag="swift-wasm-$${sdk%-wasm32-*}"; \ + url="https://github.com/swiftwasm/swift/releases/tag/$${tag}"; \ + echo "$$url"; \ + if command -v open >/dev/null 2>&1; then \ + open "$$url"; \ + elif command -v xdg-open >/dev/null 2>&1; then \ + xdg-open "$$url"; \ + fi + +.PHONY: sdk-install +sdk-install: ## Download and install the current SWIFT_SDK + @sdk="$(SWIFT_SDK)"; \ + tag="swift-wasm-$${sdk%-wasm32-*}"; \ + url="https://github.com/swiftwasm/swift/releases/download/$${tag}/swift-wasm-$${sdk}.artifactbundle.zip"; \ + checksum=$$(curl -sL "$${url}.sha256" | awk '{ print $$1 }'); \ + echo "Installing: swift-wasm-$${sdk}"; \ + swift sdk install "$${url}" --checksum "$${checksum}" .PHONY: build build: ## Native Swift build (DEBUG) @@ -77,12 +96,12 @@ format: ## Format Swift source code generate-apinotes: ## Generate Dawn API notes swift package --allow-writing-to-package-directory generate-dawn-apinotes -.PHONY: demo-gameoflife -demo-gameoflife: ## Run GameOfLife demo +.PHONY: run-gameoflife +run-gameoflife: ## Run GameOfLife demo swift run GameOfLife -.PHONY: demo-bitonic -demo-bitonic: ## Run BitonicSort demo +.PHONY: run-bitonic +run-bitonic: ## Run BitonicSort demo swift run BitonicSort .PHONY: wasm-build-bridgejs @@ -96,6 +115,10 @@ wasm-build: wasm-build-bridgejs ## WASM build, depends on bridgejs (SWIFT_MODE, .PHONY: wasm-all wasm-all: clean wasm-build ## Clean + full WASM build +.PHONY: wasm-build-bitonic +wasm-build-bitonic: wasm-build-bridgejs ## WASM build BitonicSort, depends on bridgejs (SWIFT_MODE, DEBUG) + SWAN_WASM=1 swift build --swift-sdk $(SWIFT_SDK) --target BitonicSort -c $(BUILD_CONFIG) + .PHONY: wasm-demo-bitonic -wasm-demo-bitonic: wasm-build ## Build and serve BitonicSort WASM demo (SWIFT_MODE) +wasm-run-bitonic: wasm-build-bitonic ## Build and serve BitonicSort WASM demo (SWIFT_MODE) SWAN_WASM=1 swift package --swift-sdk $(SWIFT_SDK) js --product BitonicSort -c $(BUILD_CONFIG) && pnpx serve . diff --git a/Sources/WebGPU/Wasm/Generated/BridgeJS.swift b/Sources/WebGPU/Wasm/Generated/BridgeJS.swift index 0d57987..479e21d 100644 --- a/Sources/WebGPU/Wasm/Generated/BridgeJS.swift +++ b/Sources/WebGPU/Wasm/Generated/BridgeJS.swift @@ -38,35 +38,31 @@ extension GPUBufferBindingType: _BridgedSwiftEnumNoPayload, _BridgedSwiftRawValu } extension GPUBufferDescriptor: _BridgedSwiftStruct { - @_spi(BridgeJS) @_transparent public static func bridgeJSStackPop() -> GPUBufferDescriptor { - let mappedAtCreation = Bool.bridgeJSStackPop() - let size = Int.bridgeJSStackPop() - let usage = Int.bridgeJSStackPop() - let label = Optional.bridgeJSStackPop() - return GPUBufferDescriptor(label: label, usage: usage, size: size, mappedAtCreation: mappedAtCreation) - } - - @_spi(BridgeJS) @_transparent public consuming func bridgeJSStackPush() { - let __bjs_isSome_label = self.label != nil - if let __bjs_unwrapped_label = self.label { - __bjs_unwrapped_label.bridgeJSStackPush() - } - _swift_js_push_i32(__bjs_isSome_label ? 1 : 0) - self.usage.bridgeJSStackPush() - self.size.bridgeJSStackPush() - self.mappedAtCreation.bridgeJSStackPush() - } - - public init(unsafelyCopying jsObject: JSObject) { - _bjs_struct_lower_GPUBufferDescriptor(jsObject.bridgeJSLowerParameter()) - self = Self.bridgeJSStackPop() - } - - public func toJSObject() -> JSObject { - let __bjs_self = self - __bjs_self.bridgeJSStackPush() - return JSObject(id: UInt32(bitPattern: _bjs_struct_lift_GPUBufferDescriptor())) - } + @_spi(BridgeJS) @_transparent public static func bridgeJSStackPop() -> GPUBufferDescriptor { + let mappedAtCreation = Bool.bridgeJSStackPop() + let size = Int.bridgeJSStackPop() + let usage = Int.bridgeJSStackPop() + let label = Optional.bridgeJSStackPop() + return GPUBufferDescriptor(label: label, usage: usage, size: size, mappedAtCreation: mappedAtCreation) + } + + @_spi(BridgeJS) @_transparent public consuming func bridgeJSStackPush() { + self.label.bridgeJSStackPush() + self.usage.bridgeJSStackPush() + self.size.bridgeJSStackPush() + self.mappedAtCreation.bridgeJSStackPush() + } + + public init(unsafelyCopying jsObject: JSObject) { + _bjs_struct_lower_GPUBufferDescriptor(jsObject.bridgeJSLowerParameter()) + self = Self.bridgeJSStackPop() + } + + public func toJSObject() -> JSObject { + let __bjs_self = self + __bjs_self.bridgeJSStackPush() + return JSObject(id: UInt32(bitPattern: _bjs_struct_lift_GPUBufferDescriptor())) + } } #if arch(wasm32) @@ -74,11 +70,11 @@ extension GPUBufferDescriptor: _BridgedSwiftStruct { fileprivate func _bjs_struct_lower_GPUBufferDescriptor_extern(_ objectId: Int32) -> Void #else fileprivate func _bjs_struct_lower_GPUBufferDescriptor_extern(_ objectId: Int32) -> Void { - fatalError("Only available on WebAssembly") + fatalError("Only available on WebAssembly") } #endif @inline(never) fileprivate func _bjs_struct_lower_GPUBufferDescriptor(_ objectId: Int32) -> Void { - return _bjs_struct_lower_GPUBufferDescriptor_extern(objectId) + return _bjs_struct_lower_GPUBufferDescriptor_extern(objectId) } #if arch(wasm32) @@ -86,39 +82,35 @@ fileprivate func _bjs_struct_lower_GPUBufferDescriptor_extern(_ objectId: Int32) fileprivate func _bjs_struct_lift_GPUBufferDescriptor_extern() -> Int32 #else fileprivate func _bjs_struct_lift_GPUBufferDescriptor_extern() -> Int32 { - fatalError("Only available on WebAssembly") + fatalError("Only available on WebAssembly") } #endif @inline(never) fileprivate func _bjs_struct_lift_GPUBufferDescriptor() -> Int32 { - return _bjs_struct_lift_GPUBufferDescriptor_extern() + return _bjs_struct_lift_GPUBufferDescriptor_extern() } extension GPUShaderModuleDescriptor: _BridgedSwiftStruct { - @_spi(BridgeJS) @_transparent public static func bridgeJSStackPop() -> GPUShaderModuleDescriptor { - let code = String.bridgeJSStackPop() - let label = Optional.bridgeJSStackPop() - return GPUShaderModuleDescriptor(label: label, code: code) - } - - @_spi(BridgeJS) @_transparent public consuming func bridgeJSStackPush() { - let __bjs_isSome_label = self.label != nil - if let __bjs_unwrapped_label = self.label { - __bjs_unwrapped_label.bridgeJSStackPush() - } - _swift_js_push_i32(__bjs_isSome_label ? 1 : 0) - self.code.bridgeJSStackPush() - } - - public init(unsafelyCopying jsObject: JSObject) { - _bjs_struct_lower_GPUShaderModuleDescriptor(jsObject.bridgeJSLowerParameter()) - self = Self.bridgeJSStackPop() - } - - public func toJSObject() -> JSObject { - let __bjs_self = self - __bjs_self.bridgeJSStackPush() - return JSObject(id: UInt32(bitPattern: _bjs_struct_lift_GPUShaderModuleDescriptor())) - } + @_spi(BridgeJS) @_transparent public static func bridgeJSStackPop() -> GPUShaderModuleDescriptor { + let code = String.bridgeJSStackPop() + let label = Optional.bridgeJSStackPop() + return GPUShaderModuleDescriptor(label: label, code: code) + } + + @_spi(BridgeJS) @_transparent public consuming func bridgeJSStackPush() { + self.label.bridgeJSStackPush() + self.code.bridgeJSStackPush() + } + + public init(unsafelyCopying jsObject: JSObject) { + _bjs_struct_lower_GPUShaderModuleDescriptor(jsObject.bridgeJSLowerParameter()) + self = Self.bridgeJSStackPop() + } + + public func toJSObject() -> JSObject { + let __bjs_self = self + __bjs_self.bridgeJSStackPush() + return JSObject(id: UInt32(bitPattern: _bjs_struct_lift_GPUShaderModuleDescriptor())) + } } #if arch(wasm32) @@ -126,11 +118,11 @@ extension GPUShaderModuleDescriptor: _BridgedSwiftStruct { fileprivate func _bjs_struct_lower_GPUShaderModuleDescriptor_extern(_ objectId: Int32) -> Void #else fileprivate func _bjs_struct_lower_GPUShaderModuleDescriptor_extern(_ objectId: Int32) -> Void { - fatalError("Only available on WebAssembly") + fatalError("Only available on WebAssembly") } #endif @inline(never) fileprivate func _bjs_struct_lower_GPUShaderModuleDescriptor(_ objectId: Int32) -> Void { - return _bjs_struct_lower_GPUShaderModuleDescriptor_extern(objectId) + return _bjs_struct_lower_GPUShaderModuleDescriptor_extern(objectId) } #if arch(wasm32) @@ -138,37 +130,37 @@ fileprivate func _bjs_struct_lower_GPUShaderModuleDescriptor_extern(_ objectId: fileprivate func _bjs_struct_lift_GPUShaderModuleDescriptor_extern() -> Int32 #else fileprivate func _bjs_struct_lift_GPUShaderModuleDescriptor_extern() -> Int32 { - fatalError("Only available on WebAssembly") + fatalError("Only available on WebAssembly") } #endif @inline(never) fileprivate func _bjs_struct_lift_GPUShaderModuleDescriptor() -> Int32 { - return _bjs_struct_lift_GPUShaderModuleDescriptor_extern() + return _bjs_struct_lift_GPUShaderModuleDescriptor_extern() } extension GPUVertexAttribute: _BridgedSwiftStruct { - @_spi(BridgeJS) @_transparent public static func bridgeJSStackPop() -> GPUVertexAttribute { - let shaderLocation = Int.bridgeJSStackPop() - let offset = Int.bridgeJSStackPop() - let format = GPUVertexFormat.bridgeJSStackPop() - return GPUVertexAttribute(format: format, offset: offset, shaderLocation: shaderLocation) - } + @_spi(BridgeJS) @_transparent public static func bridgeJSStackPop() -> GPUVertexAttribute { + let shaderLocation = Int.bridgeJSStackPop() + let offset = Int.bridgeJSStackPop() + let format = GPUVertexFormat.bridgeJSStackPop() + return GPUVertexAttribute(format: format, offset: offset, shaderLocation: shaderLocation) + } - @_spi(BridgeJS) @_transparent public consuming func bridgeJSStackPush() { - self.format.bridgeJSStackPush() - self.offset.bridgeJSStackPush() - self.shaderLocation.bridgeJSStackPush() - } + @_spi(BridgeJS) @_transparent public consuming func bridgeJSStackPush() { + self.format.bridgeJSStackPush() + self.offset.bridgeJSStackPush() + self.shaderLocation.bridgeJSStackPush() + } - public init(unsafelyCopying jsObject: JSObject) { - _bjs_struct_lower_GPUVertexAttribute(jsObject.bridgeJSLowerParameter()) - self = Self.bridgeJSStackPop() - } + public init(unsafelyCopying jsObject: JSObject) { + _bjs_struct_lower_GPUVertexAttribute(jsObject.bridgeJSLowerParameter()) + self = Self.bridgeJSStackPop() + } - public func toJSObject() -> JSObject { - let __bjs_self = self - __bjs_self.bridgeJSStackPush() - return JSObject(id: UInt32(bitPattern: _bjs_struct_lift_GPUVertexAttribute())) - } + public func toJSObject() -> JSObject { + let __bjs_self = self + __bjs_self.bridgeJSStackPush() + return JSObject(id: UInt32(bitPattern: _bjs_struct_lift_GPUVertexAttribute())) + } } #if arch(wasm32) @@ -176,11 +168,11 @@ extension GPUVertexAttribute: _BridgedSwiftStruct { fileprivate func _bjs_struct_lower_GPUVertexAttribute_extern(_ objectId: Int32) -> Void #else fileprivate func _bjs_struct_lower_GPUVertexAttribute_extern(_ objectId: Int32) -> Void { - fatalError("Only available on WebAssembly") + fatalError("Only available on WebAssembly") } #endif @inline(never) fileprivate func _bjs_struct_lower_GPUVertexAttribute(_ objectId: Int32) -> Void { - return _bjs_struct_lower_GPUVertexAttribute_extern(objectId) + return _bjs_struct_lower_GPUVertexAttribute_extern(objectId) } #if arch(wasm32) @@ -188,37 +180,37 @@ fileprivate func _bjs_struct_lower_GPUVertexAttribute_extern(_ objectId: Int32) fileprivate func _bjs_struct_lift_GPUVertexAttribute_extern() -> Int32 #else fileprivate func _bjs_struct_lift_GPUVertexAttribute_extern() -> Int32 { - fatalError("Only available on WebAssembly") + fatalError("Only available on WebAssembly") } #endif @inline(never) fileprivate func _bjs_struct_lift_GPUVertexAttribute() -> Int32 { - return _bjs_struct_lift_GPUVertexAttribute_extern() + return _bjs_struct_lift_GPUVertexAttribute_extern() } extension GPUVertexBufferLayout: _BridgedSwiftStruct { - @_spi(BridgeJS) @_transparent public static func bridgeJSStackPop() -> GPUVertexBufferLayout { - let attributes = [GPUVertexAttribute].bridgeJSStackPop() - let stepMode = GPUVertexStepMode.bridgeJSStackPop() - let arrayStride = Int.bridgeJSStackPop() - return GPUVertexBufferLayout(arrayStride: arrayStride, stepMode: stepMode, attributes: attributes) - } + @_spi(BridgeJS) @_transparent public static func bridgeJSStackPop() -> GPUVertexBufferLayout { + let attributes = [GPUVertexAttribute].bridgeJSStackPop() + let stepMode = GPUVertexStepMode.bridgeJSStackPop() + let arrayStride = Int.bridgeJSStackPop() + return GPUVertexBufferLayout(arrayStride: arrayStride, stepMode: stepMode, attributes: attributes) + } - @_spi(BridgeJS) @_transparent public consuming func bridgeJSStackPush() { - self.arrayStride.bridgeJSStackPush() - self.stepMode.bridgeJSStackPush() - self.attributes.bridgeJSStackPush() - } + @_spi(BridgeJS) @_transparent public consuming func bridgeJSStackPush() { + self.arrayStride.bridgeJSStackPush() + self.stepMode.bridgeJSStackPush() + self.attributes.bridgeJSStackPush() + } - public init(unsafelyCopying jsObject: JSObject) { - _bjs_struct_lower_GPUVertexBufferLayout(jsObject.bridgeJSLowerParameter()) - self = Self.bridgeJSStackPop() - } + public init(unsafelyCopying jsObject: JSObject) { + _bjs_struct_lower_GPUVertexBufferLayout(jsObject.bridgeJSLowerParameter()) + self = Self.bridgeJSStackPop() + } - public func toJSObject() -> JSObject { - let __bjs_self = self - __bjs_self.bridgeJSStackPush() - return JSObject(id: UInt32(bitPattern: _bjs_struct_lift_GPUVertexBufferLayout())) - } + public func toJSObject() -> JSObject { + let __bjs_self = self + __bjs_self.bridgeJSStackPush() + return JSObject(id: UInt32(bitPattern: _bjs_struct_lift_GPUVertexBufferLayout())) + } } #if arch(wasm32) @@ -226,11 +218,11 @@ extension GPUVertexBufferLayout: _BridgedSwiftStruct { fileprivate func _bjs_struct_lower_GPUVertexBufferLayout_extern(_ objectId: Int32) -> Void #else fileprivate func _bjs_struct_lower_GPUVertexBufferLayout_extern(_ objectId: Int32) -> Void { - fatalError("Only available on WebAssembly") + fatalError("Only available on WebAssembly") } #endif @inline(never) fileprivate func _bjs_struct_lower_GPUVertexBufferLayout(_ objectId: Int32) -> Void { - return _bjs_struct_lower_GPUVertexBufferLayout_extern(objectId) + return _bjs_struct_lower_GPUVertexBufferLayout_extern(objectId) } #if arch(wasm32) @@ -238,37 +230,37 @@ fileprivate func _bjs_struct_lower_GPUVertexBufferLayout_extern(_ objectId: Int3 fileprivate func _bjs_struct_lift_GPUVertexBufferLayout_extern() -> Int32 #else fileprivate func _bjs_struct_lift_GPUVertexBufferLayout_extern() -> Int32 { - fatalError("Only available on WebAssembly") + fatalError("Only available on WebAssembly") } #endif @inline(never) fileprivate func _bjs_struct_lift_GPUVertexBufferLayout() -> Int32 { - return _bjs_struct_lift_GPUVertexBufferLayout_extern() + return _bjs_struct_lift_GPUVertexBufferLayout_extern() } extension GPUPrimitiveState: _BridgedSwiftStruct { - @_spi(BridgeJS) @_transparent public static func bridgeJSStackPop() -> GPUPrimitiveState { - let cullMode = GPUCullMode.bridgeJSStackPop() - let frontFace = GPUFrontFace.bridgeJSStackPop() - let topology = GPUPrimitiveTopology.bridgeJSStackPop() - return GPUPrimitiveState(topology: topology, frontFace: frontFace, cullMode: cullMode) - } + @_spi(BridgeJS) @_transparent public static func bridgeJSStackPop() -> GPUPrimitiveState { + let cullMode = GPUCullMode.bridgeJSStackPop() + let frontFace = GPUFrontFace.bridgeJSStackPop() + let topology = GPUPrimitiveTopology.bridgeJSStackPop() + return GPUPrimitiveState(topology: topology, frontFace: frontFace, cullMode: cullMode) + } - @_spi(BridgeJS) @_transparent public consuming func bridgeJSStackPush() { - self.topology.bridgeJSStackPush() - self.frontFace.bridgeJSStackPush() - self.cullMode.bridgeJSStackPush() - } + @_spi(BridgeJS) @_transparent public consuming func bridgeJSStackPush() { + self.topology.bridgeJSStackPush() + self.frontFace.bridgeJSStackPush() + self.cullMode.bridgeJSStackPush() + } - public init(unsafelyCopying jsObject: JSObject) { - _bjs_struct_lower_GPUPrimitiveState(jsObject.bridgeJSLowerParameter()) - self = Self.bridgeJSStackPop() - } + public init(unsafelyCopying jsObject: JSObject) { + _bjs_struct_lower_GPUPrimitiveState(jsObject.bridgeJSLowerParameter()) + self = Self.bridgeJSStackPop() + } - public func toJSObject() -> JSObject { - let __bjs_self = self - __bjs_self.bridgeJSStackPush() - return JSObject(id: UInt32(bitPattern: _bjs_struct_lift_GPUPrimitiveState())) - } + public func toJSObject() -> JSObject { + let __bjs_self = self + __bjs_self.bridgeJSStackPush() + return JSObject(id: UInt32(bitPattern: _bjs_struct_lift_GPUPrimitiveState())) + } } #if arch(wasm32) @@ -276,11 +268,11 @@ extension GPUPrimitiveState: _BridgedSwiftStruct { fileprivate func _bjs_struct_lower_GPUPrimitiveState_extern(_ objectId: Int32) -> Void #else fileprivate func _bjs_struct_lower_GPUPrimitiveState_extern(_ objectId: Int32) -> Void { - fatalError("Only available on WebAssembly") + fatalError("Only available on WebAssembly") } #endif @inline(never) fileprivate func _bjs_struct_lower_GPUPrimitiveState(_ objectId: Int32) -> Void { - return _bjs_struct_lower_GPUPrimitiveState_extern(objectId) + return _bjs_struct_lower_GPUPrimitiveState_extern(objectId) } #if arch(wasm32) @@ -288,35 +280,35 @@ fileprivate func _bjs_struct_lower_GPUPrimitiveState_extern(_ objectId: Int32) - fileprivate func _bjs_struct_lift_GPUPrimitiveState_extern() -> Int32 #else fileprivate func _bjs_struct_lift_GPUPrimitiveState_extern() -> Int32 { - fatalError("Only available on WebAssembly") + fatalError("Only available on WebAssembly") } #endif @inline(never) fileprivate func _bjs_struct_lift_GPUPrimitiveState() -> Int32 { - return _bjs_struct_lift_GPUPrimitiveState_extern() + return _bjs_struct_lift_GPUPrimitiveState_extern() } extension GPUColorTargetState: _BridgedSwiftStruct { - @_spi(BridgeJS) @_transparent public static func bridgeJSStackPop() -> GPUColorTargetState { - let writeMask = Int.bridgeJSStackPop() - let format = GPUTextureFormat.bridgeJSStackPop() - return GPUColorTargetState(format: format, writeMask: writeMask) - } + @_spi(BridgeJS) @_transparent public static func bridgeJSStackPop() -> GPUColorTargetState { + let writeMask = Int.bridgeJSStackPop() + let format = GPUTextureFormat.bridgeJSStackPop() + return GPUColorTargetState(format: format, writeMask: writeMask) + } - @_spi(BridgeJS) @_transparent public consuming func bridgeJSStackPush() { - self.format.bridgeJSStackPush() - self.writeMask.bridgeJSStackPush() - } + @_spi(BridgeJS) @_transparent public consuming func bridgeJSStackPush() { + self.format.bridgeJSStackPush() + self.writeMask.bridgeJSStackPush() + } - public init(unsafelyCopying jsObject: JSObject) { - _bjs_struct_lower_GPUColorTargetState(jsObject.bridgeJSLowerParameter()) - self = Self.bridgeJSStackPop() - } + public init(unsafelyCopying jsObject: JSObject) { + _bjs_struct_lower_GPUColorTargetState(jsObject.bridgeJSLowerParameter()) + self = Self.bridgeJSStackPop() + } - public func toJSObject() -> JSObject { - let __bjs_self = self - __bjs_self.bridgeJSStackPush() - return JSObject(id: UInt32(bitPattern: _bjs_struct_lift_GPUColorTargetState())) - } + public func toJSObject() -> JSObject { + let __bjs_self = self + __bjs_self.bridgeJSStackPush() + return JSObject(id: UInt32(bitPattern: _bjs_struct_lift_GPUColorTargetState())) + } } #if arch(wasm32) @@ -324,11 +316,11 @@ extension GPUColorTargetState: _BridgedSwiftStruct { fileprivate func _bjs_struct_lower_GPUColorTargetState_extern(_ objectId: Int32) -> Void #else fileprivate func _bjs_struct_lower_GPUColorTargetState_extern(_ objectId: Int32) -> Void { - fatalError("Only available on WebAssembly") + fatalError("Only available on WebAssembly") } #endif @inline(never) fileprivate func _bjs_struct_lower_GPUColorTargetState(_ objectId: Int32) -> Void { - return _bjs_struct_lower_GPUColorTargetState_extern(objectId) + return _bjs_struct_lower_GPUColorTargetState_extern(objectId) } #if arch(wasm32) @@ -336,39 +328,39 @@ fileprivate func _bjs_struct_lower_GPUColorTargetState_extern(_ objectId: Int32) fileprivate func _bjs_struct_lift_GPUColorTargetState_extern() -> Int32 #else fileprivate func _bjs_struct_lift_GPUColorTargetState_extern() -> Int32 { - fatalError("Only available on WebAssembly") + fatalError("Only available on WebAssembly") } #endif @inline(never) fileprivate func _bjs_struct_lift_GPUColorTargetState() -> Int32 { - return _bjs_struct_lift_GPUColorTargetState_extern() + return _bjs_struct_lift_GPUColorTargetState_extern() } extension GPUColor: _BridgedSwiftStruct { - @_spi(BridgeJS) @_transparent public static func bridgeJSStackPop() -> GPUColor { - let a = Double.bridgeJSStackPop() - let b = Double.bridgeJSStackPop() - let g = Double.bridgeJSStackPop() - let r = Double.bridgeJSStackPop() - return GPUColor(r: r, g: g, b: b, a: a) - } - - @_spi(BridgeJS) @_transparent public consuming func bridgeJSStackPush() { - self.r.bridgeJSStackPush() - self.g.bridgeJSStackPush() - self.b.bridgeJSStackPush() - self.a.bridgeJSStackPush() - } - - public init(unsafelyCopying jsObject: JSObject) { - _bjs_struct_lower_GPUColor(jsObject.bridgeJSLowerParameter()) - self = Self.bridgeJSStackPop() - } - - public func toJSObject() -> JSObject { - let __bjs_self = self - __bjs_self.bridgeJSStackPush() - return JSObject(id: UInt32(bitPattern: _bjs_struct_lift_GPUColor())) - } + @_spi(BridgeJS) @_transparent public static func bridgeJSStackPop() -> GPUColor { + let a = Double.bridgeJSStackPop() + let b = Double.bridgeJSStackPop() + let g = Double.bridgeJSStackPop() + let r = Double.bridgeJSStackPop() + return GPUColor(r: r, g: g, b: b, a: a) + } + + @_spi(BridgeJS) @_transparent public consuming func bridgeJSStackPush() { + self.r.bridgeJSStackPush() + self.g.bridgeJSStackPush() + self.b.bridgeJSStackPush() + self.a.bridgeJSStackPush() + } + + public init(unsafelyCopying jsObject: JSObject) { + _bjs_struct_lower_GPUColor(jsObject.bridgeJSLowerParameter()) + self = Self.bridgeJSStackPop() + } + + public func toJSObject() -> JSObject { + let __bjs_self = self + __bjs_self.bridgeJSStackPush() + return JSObject(id: UInt32(bitPattern: _bjs_struct_lift_GPUColor())) + } } #if arch(wasm32) @@ -376,11 +368,11 @@ extension GPUColor: _BridgedSwiftStruct { fileprivate func _bjs_struct_lower_GPUColor_extern(_ objectId: Int32) -> Void #else fileprivate func _bjs_struct_lower_GPUColor_extern(_ objectId: Int32) -> Void { - fatalError("Only available on WebAssembly") + fatalError("Only available on WebAssembly") } #endif @inline(never) fileprivate func _bjs_struct_lower_GPUColor(_ objectId: Int32) -> Void { - return _bjs_struct_lower_GPUColor_extern(objectId) + return _bjs_struct_lower_GPUColor_extern(objectId) } #if arch(wasm32) @@ -388,37 +380,33 @@ fileprivate func _bjs_struct_lower_GPUColor_extern(_ objectId: Int32) -> Void { fileprivate func _bjs_struct_lift_GPUColor_extern() -> Int32 #else fileprivate func _bjs_struct_lift_GPUColor_extern() -> Int32 { - fatalError("Only available on WebAssembly") + fatalError("Only available on WebAssembly") } #endif @inline(never) fileprivate func _bjs_struct_lift_GPUColor() -> Int32 { - return _bjs_struct_lift_GPUColor_extern() + return _bjs_struct_lift_GPUColor_extern() } extension GPUCommandEncoderDescriptor: _BridgedSwiftStruct { - @_spi(BridgeJS) @_transparent public static func bridgeJSStackPop() -> GPUCommandEncoderDescriptor { - let label = Optional.bridgeJSStackPop() - return GPUCommandEncoderDescriptor(label: label) - } + @_spi(BridgeJS) @_transparent public static func bridgeJSStackPop() -> GPUCommandEncoderDescriptor { + let label = Optional.bridgeJSStackPop() + return GPUCommandEncoderDescriptor(label: label) + } - @_spi(BridgeJS) @_transparent public consuming func bridgeJSStackPush() { - let __bjs_isSome_label = self.label != nil - if let __bjs_unwrapped_label = self.label { - __bjs_unwrapped_label.bridgeJSStackPush() - } - _swift_js_push_i32(__bjs_isSome_label ? 1 : 0) - } + @_spi(BridgeJS) @_transparent public consuming func bridgeJSStackPush() { + self.label.bridgeJSStackPush() + } - public init(unsafelyCopying jsObject: JSObject) { - _bjs_struct_lower_GPUCommandEncoderDescriptor(jsObject.bridgeJSLowerParameter()) - self = Self.bridgeJSStackPop() - } + public init(unsafelyCopying jsObject: JSObject) { + _bjs_struct_lower_GPUCommandEncoderDescriptor(jsObject.bridgeJSLowerParameter()) + self = Self.bridgeJSStackPop() + } - public func toJSObject() -> JSObject { - let __bjs_self = self - __bjs_self.bridgeJSStackPush() - return JSObject(id: UInt32(bitPattern: _bjs_struct_lift_GPUCommandEncoderDescriptor())) - } + public func toJSObject() -> JSObject { + let __bjs_self = self + __bjs_self.bridgeJSStackPush() + return JSObject(id: UInt32(bitPattern: _bjs_struct_lift_GPUCommandEncoderDescriptor())) + } } #if arch(wasm32) @@ -426,11 +414,11 @@ extension GPUCommandEncoderDescriptor: _BridgedSwiftStruct { fileprivate func _bjs_struct_lower_GPUCommandEncoderDescriptor_extern(_ objectId: Int32) -> Void #else fileprivate func _bjs_struct_lower_GPUCommandEncoderDescriptor_extern(_ objectId: Int32) -> Void { - fatalError("Only available on WebAssembly") + fatalError("Only available on WebAssembly") } #endif @inline(never) fileprivate func _bjs_struct_lower_GPUCommandEncoderDescriptor(_ objectId: Int32) -> Void { - return _bjs_struct_lower_GPUCommandEncoderDescriptor_extern(objectId) + return _bjs_struct_lower_GPUCommandEncoderDescriptor_extern(objectId) } #if arch(wasm32) @@ -438,37 +426,33 @@ fileprivate func _bjs_struct_lower_GPUCommandEncoderDescriptor_extern(_ objectId fileprivate func _bjs_struct_lift_GPUCommandEncoderDescriptor_extern() -> Int32 #else fileprivate func _bjs_struct_lift_GPUCommandEncoderDescriptor_extern() -> Int32 { - fatalError("Only available on WebAssembly") + fatalError("Only available on WebAssembly") } #endif @inline(never) fileprivate func _bjs_struct_lift_GPUCommandEncoderDescriptor() -> Int32 { - return _bjs_struct_lift_GPUCommandEncoderDescriptor_extern() + return _bjs_struct_lift_GPUCommandEncoderDescriptor_extern() } extension GPUCommandBufferDescriptor: _BridgedSwiftStruct { - @_spi(BridgeJS) @_transparent public static func bridgeJSStackPop() -> GPUCommandBufferDescriptor { - let label = Optional.bridgeJSStackPop() - return GPUCommandBufferDescriptor(label: label) - } + @_spi(BridgeJS) @_transparent public static func bridgeJSStackPop() -> GPUCommandBufferDescriptor { + let label = Optional.bridgeJSStackPop() + return GPUCommandBufferDescriptor(label: label) + } - @_spi(BridgeJS) @_transparent public consuming func bridgeJSStackPush() { - let __bjs_isSome_label = self.label != nil - if let __bjs_unwrapped_label = self.label { - __bjs_unwrapped_label.bridgeJSStackPush() - } - _swift_js_push_i32(__bjs_isSome_label ? 1 : 0) - } + @_spi(BridgeJS) @_transparent public consuming func bridgeJSStackPush() { + self.label.bridgeJSStackPush() + } - public init(unsafelyCopying jsObject: JSObject) { - _bjs_struct_lower_GPUCommandBufferDescriptor(jsObject.bridgeJSLowerParameter()) - self = Self.bridgeJSStackPop() - } + public init(unsafelyCopying jsObject: JSObject) { + _bjs_struct_lower_GPUCommandBufferDescriptor(jsObject.bridgeJSLowerParameter()) + self = Self.bridgeJSStackPop() + } - public func toJSObject() -> JSObject { - let __bjs_self = self - __bjs_self.bridgeJSStackPush() - return JSObject(id: UInt32(bitPattern: _bjs_struct_lift_GPUCommandBufferDescriptor())) - } + public func toJSObject() -> JSObject { + let __bjs_self = self + __bjs_self.bridgeJSStackPush() + return JSObject(id: UInt32(bitPattern: _bjs_struct_lift_GPUCommandBufferDescriptor())) + } } #if arch(wasm32) @@ -476,11 +460,11 @@ extension GPUCommandBufferDescriptor: _BridgedSwiftStruct { fileprivate func _bjs_struct_lower_GPUCommandBufferDescriptor_extern(_ objectId: Int32) -> Void #else fileprivate func _bjs_struct_lower_GPUCommandBufferDescriptor_extern(_ objectId: Int32) -> Void { - fatalError("Only available on WebAssembly") + fatalError("Only available on WebAssembly") } #endif @inline(never) fileprivate func _bjs_struct_lower_GPUCommandBufferDescriptor(_ objectId: Int32) -> Void { - return _bjs_struct_lower_GPUCommandBufferDescriptor_extern(objectId) + return _bjs_struct_lower_GPUCommandBufferDescriptor_extern(objectId) } #if arch(wasm32) @@ -488,45 +472,37 @@ fileprivate func _bjs_struct_lower_GPUCommandBufferDescriptor_extern(_ objectId: fileprivate func _bjs_struct_lift_GPUCommandBufferDescriptor_extern() -> Int32 #else fileprivate func _bjs_struct_lift_GPUCommandBufferDescriptor_extern() -> Int32 { - fatalError("Only available on WebAssembly") + fatalError("Only available on WebAssembly") } #endif @inline(never) fileprivate func _bjs_struct_lift_GPUCommandBufferDescriptor() -> Int32 { - return _bjs_struct_lift_GPUCommandBufferDescriptor_extern() + return _bjs_struct_lift_GPUCommandBufferDescriptor_extern() } extension GPUBufferBinding: _BridgedSwiftStruct { - @_spi(BridgeJS) @_transparent public static func bridgeJSStackPop() -> GPUBufferBinding { - let size = Optional.bridgeJSStackPop() - let offset = Optional.bridgeJSStackPop() - let buffer = GPUBuffer(unsafelyWrapping: JSObject.bridgeJSStackPop()) - return GPUBufferBinding(buffer: buffer, offset: offset, size: size) - } - - @_spi(BridgeJS) @_transparent public consuming func bridgeJSStackPush() { - self.buffer.jsObject.bridgeJSStackPush() - let __bjs_isSome_offset = self.offset != nil - if let __bjs_unwrapped_offset = self.offset { - __bjs_unwrapped_offset.bridgeJSStackPush() - } - _swift_js_push_i32(__bjs_isSome_offset ? 1 : 0) - let __bjs_isSome_size = self.size != nil - if let __bjs_unwrapped_size = self.size { - __bjs_unwrapped_size.bridgeJSStackPush() - } - _swift_js_push_i32(__bjs_isSome_size ? 1 : 0) - } - - public init(unsafelyCopying jsObject: JSObject) { - _bjs_struct_lower_GPUBufferBinding(jsObject.bridgeJSLowerParameter()) - self = Self.bridgeJSStackPop() - } - - public func toJSObject() -> JSObject { - let __bjs_self = self - __bjs_self.bridgeJSStackPush() - return JSObject(id: UInt32(bitPattern: _bjs_struct_lift_GPUBufferBinding())) - } + @_spi(BridgeJS) @_transparent public static func bridgeJSStackPop() -> GPUBufferBinding { + let size = Optional.bridgeJSStackPop() + let offset = Optional.bridgeJSStackPop() + let buffer = GPUBuffer(unsafelyWrapping: JSObject.bridgeJSStackPop()) + return GPUBufferBinding(buffer: buffer, offset: offset, size: size) + } + + @_spi(BridgeJS) @_transparent public consuming func bridgeJSStackPush() { + self.buffer.jsObject.bridgeJSStackPush() + self.offset.bridgeJSStackPush() + self.size.bridgeJSStackPush() + } + + public init(unsafelyCopying jsObject: JSObject) { + _bjs_struct_lower_GPUBufferBinding(jsObject.bridgeJSLowerParameter()) + self = Self.bridgeJSStackPop() + } + + public func toJSObject() -> JSObject { + let __bjs_self = self + __bjs_self.bridgeJSStackPush() + return JSObject(id: UInt32(bitPattern: _bjs_struct_lift_GPUBufferBinding())) + } } #if arch(wasm32) @@ -534,11 +510,11 @@ extension GPUBufferBinding: _BridgedSwiftStruct { fileprivate func _bjs_struct_lower_GPUBufferBinding_extern(_ objectId: Int32) -> Void #else fileprivate func _bjs_struct_lower_GPUBufferBinding_extern(_ objectId: Int32) -> Void { - fatalError("Only available on WebAssembly") + fatalError("Only available on WebAssembly") } #endif @inline(never) fileprivate func _bjs_struct_lower_GPUBufferBinding(_ objectId: Int32) -> Void { - return _bjs_struct_lower_GPUBufferBinding_extern(objectId) + return _bjs_struct_lower_GPUBufferBinding_extern(objectId) } #if arch(wasm32) @@ -546,35 +522,35 @@ fileprivate func _bjs_struct_lower_GPUBufferBinding_extern(_ objectId: Int32) -> fileprivate func _bjs_struct_lift_GPUBufferBinding_extern() -> Int32 #else fileprivate func _bjs_struct_lift_GPUBufferBinding_extern() -> Int32 { - fatalError("Only available on WebAssembly") + fatalError("Only available on WebAssembly") } #endif @inline(never) fileprivate func _bjs_struct_lift_GPUBufferBinding() -> Int32 { - return _bjs_struct_lift_GPUBufferBinding_extern() + return _bjs_struct_lift_GPUBufferBinding_extern() } extension GPUBindGroupEntry: _BridgedSwiftStruct { - @_spi(BridgeJS) @_transparent public static func bridgeJSStackPop() -> GPUBindGroupEntry { - let resource = GPUBufferBinding.bridgeJSStackPop() - let binding = Int.bridgeJSStackPop() - return GPUBindGroupEntry(binding: binding, resource: resource) - } + @_spi(BridgeJS) @_transparent public static func bridgeJSStackPop() -> GPUBindGroupEntry { + let resource = GPUBufferBinding.bridgeJSStackPop() + let binding = Int.bridgeJSStackPop() + return GPUBindGroupEntry(binding: binding, resource: resource) + } - @_spi(BridgeJS) @_transparent public consuming func bridgeJSStackPush() { - self.binding.bridgeJSStackPush() - self.resource.bridgeJSStackPush() - } + @_spi(BridgeJS) @_transparent public consuming func bridgeJSStackPush() { + self.binding.bridgeJSStackPush() + self.resource.bridgeJSStackPush() + } - public init(unsafelyCopying jsObject: JSObject) { - _bjs_struct_lower_GPUBindGroupEntry(jsObject.bridgeJSLowerParameter()) - self = Self.bridgeJSStackPop() - } + public init(unsafelyCopying jsObject: JSObject) { + _bjs_struct_lower_GPUBindGroupEntry(jsObject.bridgeJSLowerParameter()) + self = Self.bridgeJSStackPop() + } - public func toJSObject() -> JSObject { - let __bjs_self = self - __bjs_self.bridgeJSStackPush() - return JSObject(id: UInt32(bitPattern: _bjs_struct_lift_GPUBindGroupEntry())) - } + public func toJSObject() -> JSObject { + let __bjs_self = self + __bjs_self.bridgeJSStackPush() + return JSObject(id: UInt32(bitPattern: _bjs_struct_lift_GPUBindGroupEntry())) + } } #if arch(wasm32) @@ -582,11 +558,11 @@ extension GPUBindGroupEntry: _BridgedSwiftStruct { fileprivate func _bjs_struct_lower_GPUBindGroupEntry_extern(_ objectId: Int32) -> Void #else fileprivate func _bjs_struct_lower_GPUBindGroupEntry_extern(_ objectId: Int32) -> Void { - fatalError("Only available on WebAssembly") + fatalError("Only available on WebAssembly") } #endif @inline(never) fileprivate func _bjs_struct_lower_GPUBindGroupEntry(_ objectId: Int32) -> Void { - return _bjs_struct_lower_GPUBindGroupEntry_extern(objectId) + return _bjs_struct_lower_GPUBindGroupEntry_extern(objectId) } #if arch(wasm32) @@ -594,41 +570,37 @@ fileprivate func _bjs_struct_lower_GPUBindGroupEntry_extern(_ objectId: Int32) - fileprivate func _bjs_struct_lift_GPUBindGroupEntry_extern() -> Int32 #else fileprivate func _bjs_struct_lift_GPUBindGroupEntry_extern() -> Int32 { - fatalError("Only available on WebAssembly") + fatalError("Only available on WebAssembly") } #endif @inline(never) fileprivate func _bjs_struct_lift_GPUBindGroupEntry() -> Int32 { - return _bjs_struct_lift_GPUBindGroupEntry_extern() + return _bjs_struct_lift_GPUBindGroupEntry_extern() } extension GPUBindGroupDescriptor: _BridgedSwiftStruct { - @_spi(BridgeJS) @_transparent public static func bridgeJSStackPop() -> GPUBindGroupDescriptor { - let entries = [GPUBindGroupEntry].bridgeJSStackPop() - let layout = GPUBindGroupLayout(unsafelyWrapping: JSObject.bridgeJSStackPop()) - let label = Optional.bridgeJSStackPop() - return GPUBindGroupDescriptor(label: label, layout: layout, entries: entries) - } - - @_spi(BridgeJS) @_transparent public consuming func bridgeJSStackPush() { - let __bjs_isSome_label = self.label != nil - if let __bjs_unwrapped_label = self.label { - __bjs_unwrapped_label.bridgeJSStackPush() - } - _swift_js_push_i32(__bjs_isSome_label ? 1 : 0) - self.layout.jsObject.bridgeJSStackPush() - self.entries.bridgeJSStackPush() - } - - public init(unsafelyCopying jsObject: JSObject) { - _bjs_struct_lower_GPUBindGroupDescriptor(jsObject.bridgeJSLowerParameter()) - self = Self.bridgeJSStackPop() - } - - public func toJSObject() -> JSObject { - let __bjs_self = self - __bjs_self.bridgeJSStackPush() - return JSObject(id: UInt32(bitPattern: _bjs_struct_lift_GPUBindGroupDescriptor())) - } + @_spi(BridgeJS) @_transparent public static func bridgeJSStackPop() -> GPUBindGroupDescriptor { + let entries = [GPUBindGroupEntry].bridgeJSStackPop() + let layout = GPUBindGroupLayout(unsafelyWrapping: JSObject.bridgeJSStackPop()) + let label = Optional.bridgeJSStackPop() + return GPUBindGroupDescriptor(label: label, layout: layout, entries: entries) + } + + @_spi(BridgeJS) @_transparent public consuming func bridgeJSStackPush() { + self.label.bridgeJSStackPush() + self.layout.jsObject.bridgeJSStackPush() + self.entries.bridgeJSStackPush() + } + + public init(unsafelyCopying jsObject: JSObject) { + _bjs_struct_lower_GPUBindGroupDescriptor(jsObject.bridgeJSLowerParameter()) + self = Self.bridgeJSStackPop() + } + + public func toJSObject() -> JSObject { + let __bjs_self = self + __bjs_self.bridgeJSStackPush() + return JSObject(id: UInt32(bitPattern: _bjs_struct_lift_GPUBindGroupDescriptor())) + } } #if arch(wasm32) @@ -636,11 +608,11 @@ extension GPUBindGroupDescriptor: _BridgedSwiftStruct { fileprivate func _bjs_struct_lower_GPUBindGroupDescriptor_extern(_ objectId: Int32) -> Void #else fileprivate func _bjs_struct_lower_GPUBindGroupDescriptor_extern(_ objectId: Int32) -> Void { - fatalError("Only available on WebAssembly") + fatalError("Only available on WebAssembly") } #endif @inline(never) fileprivate func _bjs_struct_lower_GPUBindGroupDescriptor(_ objectId: Int32) -> Void { - return _bjs_struct_lower_GPUBindGroupDescriptor_extern(objectId) + return _bjs_struct_lower_GPUBindGroupDescriptor_extern(objectId) } #if arch(wasm32) @@ -648,33 +620,33 @@ fileprivate func _bjs_struct_lower_GPUBindGroupDescriptor_extern(_ objectId: Int fileprivate func _bjs_struct_lift_GPUBindGroupDescriptor_extern() -> Int32 #else fileprivate func _bjs_struct_lift_GPUBindGroupDescriptor_extern() -> Int32 { - fatalError("Only available on WebAssembly") + fatalError("Only available on WebAssembly") } #endif @inline(never) fileprivate func _bjs_struct_lift_GPUBindGroupDescriptor() -> Int32 { - return _bjs_struct_lift_GPUBindGroupDescriptor_extern() + return _bjs_struct_lift_GPUBindGroupDescriptor_extern() } extension GPUBufferBindingLayout: _BridgedSwiftStruct { - @_spi(BridgeJS) @_transparent public static func bridgeJSStackPop() -> GPUBufferBindingLayout { - let type = GPUBufferBindingType.bridgeJSStackPop() - return GPUBufferBindingLayout(type: type) - } + @_spi(BridgeJS) @_transparent public static func bridgeJSStackPop() -> GPUBufferBindingLayout { + let type = GPUBufferBindingType.bridgeJSStackPop() + return GPUBufferBindingLayout(type: type) + } - @_spi(BridgeJS) @_transparent public consuming func bridgeJSStackPush() { - self.type.bridgeJSStackPush() - } + @_spi(BridgeJS) @_transparent public consuming func bridgeJSStackPush() { + self.type.bridgeJSStackPush() + } - public init(unsafelyCopying jsObject: JSObject) { - _bjs_struct_lower_GPUBufferBindingLayout(jsObject.bridgeJSLowerParameter()) - self = Self.bridgeJSStackPop() - } + public init(unsafelyCopying jsObject: JSObject) { + _bjs_struct_lower_GPUBufferBindingLayout(jsObject.bridgeJSLowerParameter()) + self = Self.bridgeJSStackPop() + } - public func toJSObject() -> JSObject { - let __bjs_self = self - __bjs_self.bridgeJSStackPush() - return JSObject(id: UInt32(bitPattern: _bjs_struct_lift_GPUBufferBindingLayout())) - } + public func toJSObject() -> JSObject { + let __bjs_self = self + __bjs_self.bridgeJSStackPush() + return JSObject(id: UInt32(bitPattern: _bjs_struct_lift_GPUBufferBindingLayout())) + } } #if arch(wasm32) @@ -682,11 +654,11 @@ extension GPUBufferBindingLayout: _BridgedSwiftStruct { fileprivate func _bjs_struct_lower_GPUBufferBindingLayout_extern(_ objectId: Int32) -> Void #else fileprivate func _bjs_struct_lower_GPUBufferBindingLayout_extern(_ objectId: Int32) -> Void { - fatalError("Only available on WebAssembly") + fatalError("Only available on WebAssembly") } #endif @inline(never) fileprivate func _bjs_struct_lower_GPUBufferBindingLayout(_ objectId: Int32) -> Void { - return _bjs_struct_lower_GPUBufferBindingLayout_extern(objectId) + return _bjs_struct_lower_GPUBufferBindingLayout_extern(objectId) } #if arch(wasm32) @@ -694,37 +666,37 @@ fileprivate func _bjs_struct_lower_GPUBufferBindingLayout_extern(_ objectId: Int fileprivate func _bjs_struct_lift_GPUBufferBindingLayout_extern() -> Int32 #else fileprivate func _bjs_struct_lift_GPUBufferBindingLayout_extern() -> Int32 { - fatalError("Only available on WebAssembly") + fatalError("Only available on WebAssembly") } #endif @inline(never) fileprivate func _bjs_struct_lift_GPUBufferBindingLayout() -> Int32 { - return _bjs_struct_lift_GPUBufferBindingLayout_extern() + return _bjs_struct_lift_GPUBufferBindingLayout_extern() } extension GPUBindGroupLayoutEntry: _BridgedSwiftStruct { - @_spi(BridgeJS) @_transparent public static func bridgeJSStackPop() -> GPUBindGroupLayoutEntry { - let buffer = Optional.bridgeJSStackPop() - let visibility = Int.bridgeJSStackPop() - let binding = Int.bridgeJSStackPop() - return GPUBindGroupLayoutEntry(binding: binding, visibility: visibility, buffer: buffer) - } + @_spi(BridgeJS) @_transparent public static func bridgeJSStackPop() -> GPUBindGroupLayoutEntry { + let buffer = Optional.bridgeJSStackPop() + let visibility = Int.bridgeJSStackPop() + let binding = Int.bridgeJSStackPop() + return GPUBindGroupLayoutEntry(binding: binding, visibility: visibility, buffer: buffer) + } - @_spi(BridgeJS) @_transparent public consuming func bridgeJSStackPush() { - self.binding.bridgeJSStackPush() - self.visibility.bridgeJSStackPush() - self.buffer.bridgeJSStackPush() - } + @_spi(BridgeJS) @_transparent public consuming func bridgeJSStackPush() { + self.binding.bridgeJSStackPush() + self.visibility.bridgeJSStackPush() + self.buffer.bridgeJSStackPush() + } - public init(unsafelyCopying jsObject: JSObject) { - _bjs_struct_lower_GPUBindGroupLayoutEntry(jsObject.bridgeJSLowerParameter()) - self = Self.bridgeJSStackPop() - } + public init(unsafelyCopying jsObject: JSObject) { + _bjs_struct_lower_GPUBindGroupLayoutEntry(jsObject.bridgeJSLowerParameter()) + self = Self.bridgeJSStackPop() + } - public func toJSObject() -> JSObject { - let __bjs_self = self - __bjs_self.bridgeJSStackPush() - return JSObject(id: UInt32(bitPattern: _bjs_struct_lift_GPUBindGroupLayoutEntry())) - } + public func toJSObject() -> JSObject { + let __bjs_self = self + __bjs_self.bridgeJSStackPush() + return JSObject(id: UInt32(bitPattern: _bjs_struct_lift_GPUBindGroupLayoutEntry())) + } } #if arch(wasm32) @@ -732,11 +704,11 @@ extension GPUBindGroupLayoutEntry: _BridgedSwiftStruct { fileprivate func _bjs_struct_lower_GPUBindGroupLayoutEntry_extern(_ objectId: Int32) -> Void #else fileprivate func _bjs_struct_lower_GPUBindGroupLayoutEntry_extern(_ objectId: Int32) -> Void { - fatalError("Only available on WebAssembly") + fatalError("Only available on WebAssembly") } #endif @inline(never) fileprivate func _bjs_struct_lower_GPUBindGroupLayoutEntry(_ objectId: Int32) -> Void { - return _bjs_struct_lower_GPUBindGroupLayoutEntry_extern(objectId) + return _bjs_struct_lower_GPUBindGroupLayoutEntry_extern(objectId) } #if arch(wasm32) @@ -744,39 +716,35 @@ fileprivate func _bjs_struct_lower_GPUBindGroupLayoutEntry_extern(_ objectId: In fileprivate func _bjs_struct_lift_GPUBindGroupLayoutEntry_extern() -> Int32 #else fileprivate func _bjs_struct_lift_GPUBindGroupLayoutEntry_extern() -> Int32 { - fatalError("Only available on WebAssembly") + fatalError("Only available on WebAssembly") } #endif @inline(never) fileprivate func _bjs_struct_lift_GPUBindGroupLayoutEntry() -> Int32 { - return _bjs_struct_lift_GPUBindGroupLayoutEntry_extern() + return _bjs_struct_lift_GPUBindGroupLayoutEntry_extern() } extension GPUBindGroupLayoutDescriptor: _BridgedSwiftStruct { - @_spi(BridgeJS) @_transparent public static func bridgeJSStackPop() -> GPUBindGroupLayoutDescriptor { - let entries = [GPUBindGroupLayoutEntry].bridgeJSStackPop() - let label = Optional.bridgeJSStackPop() - return GPUBindGroupLayoutDescriptor(label: label, entries: entries) - } - - @_spi(BridgeJS) @_transparent public consuming func bridgeJSStackPush() { - let __bjs_isSome_label = self.label != nil - if let __bjs_unwrapped_label = self.label { - __bjs_unwrapped_label.bridgeJSStackPush() - } - _swift_js_push_i32(__bjs_isSome_label ? 1 : 0) - self.entries.bridgeJSStackPush() - } - - public init(unsafelyCopying jsObject: JSObject) { - _bjs_struct_lower_GPUBindGroupLayoutDescriptor(jsObject.bridgeJSLowerParameter()) - self = Self.bridgeJSStackPop() - } - - public func toJSObject() -> JSObject { - let __bjs_self = self - __bjs_self.bridgeJSStackPush() - return JSObject(id: UInt32(bitPattern: _bjs_struct_lift_GPUBindGroupLayoutDescriptor())) - } + @_spi(BridgeJS) @_transparent public static func bridgeJSStackPop() -> GPUBindGroupLayoutDescriptor { + let entries = [GPUBindGroupLayoutEntry].bridgeJSStackPop() + let label = Optional.bridgeJSStackPop() + return GPUBindGroupLayoutDescriptor(label: label, entries: entries) + } + + @_spi(BridgeJS) @_transparent public consuming func bridgeJSStackPush() { + self.label.bridgeJSStackPush() + self.entries.bridgeJSStackPush() + } + + public init(unsafelyCopying jsObject: JSObject) { + _bjs_struct_lower_GPUBindGroupLayoutDescriptor(jsObject.bridgeJSLowerParameter()) + self = Self.bridgeJSStackPop() + } + + public func toJSObject() -> JSObject { + let __bjs_self = self + __bjs_self.bridgeJSStackPush() + return JSObject(id: UInt32(bitPattern: _bjs_struct_lift_GPUBindGroupLayoutDescriptor())) + } } #if arch(wasm32) @@ -784,11 +752,11 @@ extension GPUBindGroupLayoutDescriptor: _BridgedSwiftStruct { fileprivate func _bjs_struct_lower_GPUBindGroupLayoutDescriptor_extern(_ objectId: Int32) -> Void #else fileprivate func _bjs_struct_lower_GPUBindGroupLayoutDescriptor_extern(_ objectId: Int32) -> Void { - fatalError("Only available on WebAssembly") + fatalError("Only available on WebAssembly") } #endif @inline(never) fileprivate func _bjs_struct_lower_GPUBindGroupLayoutDescriptor(_ objectId: Int32) -> Void { - return _bjs_struct_lower_GPUBindGroupLayoutDescriptor_extern(objectId) + return _bjs_struct_lower_GPUBindGroupLayoutDescriptor_extern(objectId) } #if arch(wasm32) @@ -796,37 +764,37 @@ fileprivate func _bjs_struct_lower_GPUBindGroupLayoutDescriptor_extern(_ objectI fileprivate func _bjs_struct_lift_GPUBindGroupLayoutDescriptor_extern() -> Int32 #else fileprivate func _bjs_struct_lift_GPUBindGroupLayoutDescriptor_extern() -> Int32 { - fatalError("Only available on WebAssembly") + fatalError("Only available on WebAssembly") } #endif @inline(never) fileprivate func _bjs_struct_lift_GPUBindGroupLayoutDescriptor() -> Int32 { - return _bjs_struct_lift_GPUBindGroupLayoutDescriptor_extern() + return _bjs_struct_lift_GPUBindGroupLayoutDescriptor_extern() } extension GPUCanvasConfiguration: _BridgedSwiftStruct { - @_spi(BridgeJS) @_transparent public static func bridgeJSStackPop() -> GPUCanvasConfiguration { - let alphaMode = String.bridgeJSStackPop() - let format = GPUTextureFormat.bridgeJSStackPop() - let device = GPUDevice(unsafelyWrapping: JSObject.bridgeJSStackPop()) - return GPUCanvasConfiguration(device: device, format: format, alphaMode: alphaMode) - } + @_spi(BridgeJS) @_transparent public static func bridgeJSStackPop() -> GPUCanvasConfiguration { + let alphaMode = String.bridgeJSStackPop() + let format = GPUTextureFormat.bridgeJSStackPop() + let device = GPUDevice(unsafelyWrapping: JSObject.bridgeJSStackPop()) + return GPUCanvasConfiguration(device: device, format: format, alphaMode: alphaMode) + } - @_spi(BridgeJS) @_transparent public consuming func bridgeJSStackPush() { - self.device.jsObject.bridgeJSStackPush() - self.format.bridgeJSStackPush() - self.alphaMode.bridgeJSStackPush() - } + @_spi(BridgeJS) @_transparent public consuming func bridgeJSStackPush() { + self.device.jsObject.bridgeJSStackPush() + self.format.bridgeJSStackPush() + self.alphaMode.bridgeJSStackPush() + } - public init(unsafelyCopying jsObject: JSObject) { - _bjs_struct_lower_GPUCanvasConfiguration(jsObject.bridgeJSLowerParameter()) - self = Self.bridgeJSStackPop() - } + public init(unsafelyCopying jsObject: JSObject) { + _bjs_struct_lower_GPUCanvasConfiguration(jsObject.bridgeJSLowerParameter()) + self = Self.bridgeJSStackPop() + } - public func toJSObject() -> JSObject { - let __bjs_self = self - __bjs_self.bridgeJSStackPush() - return JSObject(id: UInt32(bitPattern: _bjs_struct_lift_GPUCanvasConfiguration())) - } + public func toJSObject() -> JSObject { + let __bjs_self = self + __bjs_self.bridgeJSStackPush() + return JSObject(id: UInt32(bitPattern: _bjs_struct_lift_GPUCanvasConfiguration())) + } } #if arch(wasm32) @@ -834,11 +802,11 @@ extension GPUCanvasConfiguration: _BridgedSwiftStruct { fileprivate func _bjs_struct_lower_GPUCanvasConfiguration_extern(_ objectId: Int32) -> Void #else fileprivate func _bjs_struct_lower_GPUCanvasConfiguration_extern(_ objectId: Int32) -> Void { - fatalError("Only available on WebAssembly") + fatalError("Only available on WebAssembly") } #endif @inline(never) fileprivate func _bjs_struct_lower_GPUCanvasConfiguration(_ objectId: Int32) -> Void { - return _bjs_struct_lower_GPUCanvasConfiguration_extern(objectId) + return _bjs_struct_lower_GPUCanvasConfiguration_extern(objectId) } #if arch(wasm32) @@ -846,39 +814,39 @@ fileprivate func _bjs_struct_lower_GPUCanvasConfiguration_extern(_ objectId: Int fileprivate func _bjs_struct_lift_GPUCanvasConfiguration_extern() -> Int32 #else fileprivate func _bjs_struct_lift_GPUCanvasConfiguration_extern() -> Int32 { - fatalError("Only available on WebAssembly") + fatalError("Only available on WebAssembly") } #endif @inline(never) fileprivate func _bjs_struct_lift_GPUCanvasConfiguration() -> Int32 { - return _bjs_struct_lift_GPUCanvasConfiguration_extern() + return _bjs_struct_lift_GPUCanvasConfiguration_extern() } extension GPURenderPassColorAttachment: _BridgedSwiftStruct { - @_spi(BridgeJS) @_transparent public static func bridgeJSStackPop() -> GPURenderPassColorAttachment { - let clearValue = Optional.bridgeJSStackPop() - let storeOp = GPUStoreOp.bridgeJSStackPop() - let loadOp = GPULoadOp.bridgeJSStackPop() - let view = GPUTextureView(unsafelyWrapping: JSObject.bridgeJSStackPop()) - return GPURenderPassColorAttachment(view: view, loadOp: loadOp, storeOp: storeOp, clearValue: clearValue) - } - - @_spi(BridgeJS) @_transparent public consuming func bridgeJSStackPush() { - self.view.jsObject.bridgeJSStackPush() - self.loadOp.bridgeJSStackPush() - self.storeOp.bridgeJSStackPush() - self.clearValue.bridgeJSStackPush() - } - - public init(unsafelyCopying jsObject: JSObject) { - _bjs_struct_lower_GPURenderPassColorAttachment(jsObject.bridgeJSLowerParameter()) - self = Self.bridgeJSStackPop() - } - - public func toJSObject() -> JSObject { - let __bjs_self = self - __bjs_self.bridgeJSStackPush() - return JSObject(id: UInt32(bitPattern: _bjs_struct_lift_GPURenderPassColorAttachment())) - } + @_spi(BridgeJS) @_transparent public static func bridgeJSStackPop() -> GPURenderPassColorAttachment { + let clearValue = Optional.bridgeJSStackPop() + let storeOp = GPUStoreOp.bridgeJSStackPop() + let loadOp = GPULoadOp.bridgeJSStackPop() + let view = GPUTextureView(unsafelyWrapping: JSObject.bridgeJSStackPop()) + return GPURenderPassColorAttachment(view: view, loadOp: loadOp, storeOp: storeOp, clearValue: clearValue) + } + + @_spi(BridgeJS) @_transparent public consuming func bridgeJSStackPush() { + self.view.jsObject.bridgeJSStackPush() + self.loadOp.bridgeJSStackPush() + self.storeOp.bridgeJSStackPush() + self.clearValue.bridgeJSStackPush() + } + + public init(unsafelyCopying jsObject: JSObject) { + _bjs_struct_lower_GPURenderPassColorAttachment(jsObject.bridgeJSLowerParameter()) + self = Self.bridgeJSStackPop() + } + + public func toJSObject() -> JSObject { + let __bjs_self = self + __bjs_self.bridgeJSStackPush() + return JSObject(id: UInt32(bitPattern: _bjs_struct_lift_GPURenderPassColorAttachment())) + } } #if arch(wasm32) @@ -886,11 +854,11 @@ extension GPURenderPassColorAttachment: _BridgedSwiftStruct { fileprivate func _bjs_struct_lower_GPURenderPassColorAttachment_extern(_ objectId: Int32) -> Void #else fileprivate func _bjs_struct_lower_GPURenderPassColorAttachment_extern(_ objectId: Int32) -> Void { - fatalError("Only available on WebAssembly") + fatalError("Only available on WebAssembly") } #endif @inline(never) fileprivate func _bjs_struct_lower_GPURenderPassColorAttachment(_ objectId: Int32) -> Void { - return _bjs_struct_lower_GPURenderPassColorAttachment_extern(objectId) + return _bjs_struct_lower_GPURenderPassColorAttachment_extern(objectId) } #if arch(wasm32) @@ -898,39 +866,35 @@ fileprivate func _bjs_struct_lower_GPURenderPassColorAttachment_extern(_ objectI fileprivate func _bjs_struct_lift_GPURenderPassColorAttachment_extern() -> Int32 #else fileprivate func _bjs_struct_lift_GPURenderPassColorAttachment_extern() -> Int32 { - fatalError("Only available on WebAssembly") + fatalError("Only available on WebAssembly") } #endif @inline(never) fileprivate func _bjs_struct_lift_GPURenderPassColorAttachment() -> Int32 { - return _bjs_struct_lift_GPURenderPassColorAttachment_extern() + return _bjs_struct_lift_GPURenderPassColorAttachment_extern() } extension GPURenderPassDescriptor: _BridgedSwiftStruct { - @_spi(BridgeJS) @_transparent public static func bridgeJSStackPop() -> GPURenderPassDescriptor { - let colorAttachments = [GPURenderPassColorAttachment].bridgeJSStackPop() - let label = Optional.bridgeJSStackPop() - return GPURenderPassDescriptor(label: label, colorAttachments: colorAttachments) - } - - @_spi(BridgeJS) @_transparent public consuming func bridgeJSStackPush() { - let __bjs_isSome_label = self.label != nil - if let __bjs_unwrapped_label = self.label { - __bjs_unwrapped_label.bridgeJSStackPush() - } - _swift_js_push_i32(__bjs_isSome_label ? 1 : 0) - self.colorAttachments.bridgeJSStackPush() - } - - public init(unsafelyCopying jsObject: JSObject) { - _bjs_struct_lower_GPURenderPassDescriptor(jsObject.bridgeJSLowerParameter()) - self = Self.bridgeJSStackPop() - } - - public func toJSObject() -> JSObject { - let __bjs_self = self - __bjs_self.bridgeJSStackPush() - return JSObject(id: UInt32(bitPattern: _bjs_struct_lift_GPURenderPassDescriptor())) - } + @_spi(BridgeJS) @_transparent public static func bridgeJSStackPop() -> GPURenderPassDescriptor { + let colorAttachments = [GPURenderPassColorAttachment].bridgeJSStackPop() + let label = Optional.bridgeJSStackPop() + return GPURenderPassDescriptor(label: label, colorAttachments: colorAttachments) + } + + @_spi(BridgeJS) @_transparent public consuming func bridgeJSStackPush() { + self.label.bridgeJSStackPush() + self.colorAttachments.bridgeJSStackPush() + } + + public init(unsafelyCopying jsObject: JSObject) { + _bjs_struct_lower_GPURenderPassDescriptor(jsObject.bridgeJSLowerParameter()) + self = Self.bridgeJSStackPop() + } + + public func toJSObject() -> JSObject { + let __bjs_self = self + __bjs_self.bridgeJSStackPush() + return JSObject(id: UInt32(bitPattern: _bjs_struct_lift_GPURenderPassDescriptor())) + } } #if arch(wasm32) @@ -938,11 +902,11 @@ extension GPURenderPassDescriptor: _BridgedSwiftStruct { fileprivate func _bjs_struct_lower_GPURenderPassDescriptor_extern(_ objectId: Int32) -> Void #else fileprivate func _bjs_struct_lower_GPURenderPassDescriptor_extern(_ objectId: Int32) -> Void { - fatalError("Only available on WebAssembly") + fatalError("Only available on WebAssembly") } #endif @inline(never) fileprivate func _bjs_struct_lower_GPURenderPassDescriptor(_ objectId: Int32) -> Void { - return _bjs_struct_lower_GPURenderPassDescriptor_extern(objectId) + return _bjs_struct_lower_GPURenderPassDescriptor_extern(objectId) } #if arch(wasm32) @@ -950,37 +914,33 @@ fileprivate func _bjs_struct_lower_GPURenderPassDescriptor_extern(_ objectId: In fileprivate func _bjs_struct_lift_GPURenderPassDescriptor_extern() -> Int32 #else fileprivate func _bjs_struct_lift_GPURenderPassDescriptor_extern() -> Int32 { - fatalError("Only available on WebAssembly") + fatalError("Only available on WebAssembly") } #endif @inline(never) fileprivate func _bjs_struct_lift_GPURenderPassDescriptor() -> Int32 { - return _bjs_struct_lift_GPURenderPassDescriptor_extern() + return _bjs_struct_lift_GPURenderPassDescriptor_extern() } extension GPUComputePassDescriptor: _BridgedSwiftStruct { - @_spi(BridgeJS) @_transparent public static func bridgeJSStackPop() -> GPUComputePassDescriptor { - let label = Optional.bridgeJSStackPop() - return GPUComputePassDescriptor(label: label) - } + @_spi(BridgeJS) @_transparent public static func bridgeJSStackPop() -> GPUComputePassDescriptor { + let label = Optional.bridgeJSStackPop() + return GPUComputePassDescriptor(label: label) + } - @_spi(BridgeJS) @_transparent public consuming func bridgeJSStackPush() { - let __bjs_isSome_label = self.label != nil - if let __bjs_unwrapped_label = self.label { - __bjs_unwrapped_label.bridgeJSStackPush() - } - _swift_js_push_i32(__bjs_isSome_label ? 1 : 0) - } + @_spi(BridgeJS) @_transparent public consuming func bridgeJSStackPush() { + self.label.bridgeJSStackPush() + } - public init(unsafelyCopying jsObject: JSObject) { - _bjs_struct_lower_GPUComputePassDescriptor(jsObject.bridgeJSLowerParameter()) - self = Self.bridgeJSStackPop() - } + public init(unsafelyCopying jsObject: JSObject) { + _bjs_struct_lower_GPUComputePassDescriptor(jsObject.bridgeJSLowerParameter()) + self = Self.bridgeJSStackPop() + } - public func toJSObject() -> JSObject { - let __bjs_self = self - __bjs_self.bridgeJSStackPush() - return JSObject(id: UInt32(bitPattern: _bjs_struct_lift_GPUComputePassDescriptor())) - } + public func toJSObject() -> JSObject { + let __bjs_self = self + __bjs_self.bridgeJSStackPush() + return JSObject(id: UInt32(bitPattern: _bjs_struct_lift_GPUComputePassDescriptor())) + } } #if arch(wasm32) @@ -988,11 +948,11 @@ extension GPUComputePassDescriptor: _BridgedSwiftStruct { fileprivate func _bjs_struct_lower_GPUComputePassDescriptor_extern(_ objectId: Int32) -> Void #else fileprivate func _bjs_struct_lower_GPUComputePassDescriptor_extern(_ objectId: Int32) -> Void { - fatalError("Only available on WebAssembly") + fatalError("Only available on WebAssembly") } #endif @inline(never) fileprivate func _bjs_struct_lower_GPUComputePassDescriptor(_ objectId: Int32) -> Void { - return _bjs_struct_lower_GPUComputePassDescriptor_extern(objectId) + return _bjs_struct_lower_GPUComputePassDescriptor_extern(objectId) } #if arch(wasm32) @@ -1000,35 +960,35 @@ fileprivate func _bjs_struct_lower_GPUComputePassDescriptor_extern(_ objectId: I fileprivate func _bjs_struct_lift_GPUComputePassDescriptor_extern() -> Int32 #else fileprivate func _bjs_struct_lift_GPUComputePassDescriptor_extern() -> Int32 { - fatalError("Only available on WebAssembly") + fatalError("Only available on WebAssembly") } #endif @inline(never) fileprivate func _bjs_struct_lift_GPUComputePassDescriptor() -> Int32 { - return _bjs_struct_lift_GPUComputePassDescriptor_extern() + return _bjs_struct_lift_GPUComputePassDescriptor_extern() } extension GPUComputeState: _BridgedSwiftStruct { - @_spi(BridgeJS) @_transparent public static func bridgeJSStackPop() -> GPUComputeState { - let entryPoint = String.bridgeJSStackPop() - let module = GPUShaderModule(unsafelyWrapping: JSObject.bridgeJSStackPop()) - return GPUComputeState(module: module, entryPoint: entryPoint) - } + @_spi(BridgeJS) @_transparent public static func bridgeJSStackPop() -> GPUComputeState { + let entryPoint = String.bridgeJSStackPop() + let module = GPUShaderModule(unsafelyWrapping: JSObject.bridgeJSStackPop()) + return GPUComputeState(module: module, entryPoint: entryPoint) + } - @_spi(BridgeJS) @_transparent public consuming func bridgeJSStackPush() { - self.module.jsObject.bridgeJSStackPush() - self.entryPoint.bridgeJSStackPush() - } + @_spi(BridgeJS) @_transparent public consuming func bridgeJSStackPush() { + self.module.jsObject.bridgeJSStackPush() + self.entryPoint.bridgeJSStackPush() + } - public init(unsafelyCopying jsObject: JSObject) { - _bjs_struct_lower_GPUComputeState(jsObject.bridgeJSLowerParameter()) - self = Self.bridgeJSStackPop() - } + public init(unsafelyCopying jsObject: JSObject) { + _bjs_struct_lower_GPUComputeState(jsObject.bridgeJSLowerParameter()) + self = Self.bridgeJSStackPop() + } - public func toJSObject() -> JSObject { - let __bjs_self = self - __bjs_self.bridgeJSStackPush() - return JSObject(id: UInt32(bitPattern: _bjs_struct_lift_GPUComputeState())) - } + public func toJSObject() -> JSObject { + let __bjs_self = self + __bjs_self.bridgeJSStackPush() + return JSObject(id: UInt32(bitPattern: _bjs_struct_lift_GPUComputeState())) + } } #if arch(wasm32) @@ -1036,11 +996,11 @@ extension GPUComputeState: _BridgedSwiftStruct { fileprivate func _bjs_struct_lower_GPUComputeState_extern(_ objectId: Int32) -> Void #else fileprivate func _bjs_struct_lower_GPUComputeState_extern(_ objectId: Int32) -> Void { - fatalError("Only available on WebAssembly") + fatalError("Only available on WebAssembly") } #endif @inline(never) fileprivate func _bjs_struct_lower_GPUComputeState(_ objectId: Int32) -> Void { - return _bjs_struct_lower_GPUComputeState_extern(objectId) + return _bjs_struct_lower_GPUComputeState_extern(objectId) } #if arch(wasm32) @@ -1048,41 +1008,37 @@ fileprivate func _bjs_struct_lower_GPUComputeState_extern(_ objectId: Int32) -> fileprivate func _bjs_struct_lift_GPUComputeState_extern() -> Int32 #else fileprivate func _bjs_struct_lift_GPUComputeState_extern() -> Int32 { - fatalError("Only available on WebAssembly") + fatalError("Only available on WebAssembly") } #endif @inline(never) fileprivate func _bjs_struct_lift_GPUComputeState() -> Int32 { - return _bjs_struct_lift_GPUComputeState_extern() + return _bjs_struct_lift_GPUComputeState_extern() } extension GPUComputePipelineDescriptor: _BridgedSwiftStruct { - @_spi(BridgeJS) @_transparent public static func bridgeJSStackPop() -> GPUComputePipelineDescriptor { - let compute = GPUComputeState.bridgeJSStackPop() - let layout = GPUPipelineLayout(unsafelyWrapping: JSObject.bridgeJSStackPop()) - let label = Optional.bridgeJSStackPop() - return GPUComputePipelineDescriptor(label: label, layout: layout, compute: compute) - } - - @_spi(BridgeJS) @_transparent public consuming func bridgeJSStackPush() { - let __bjs_isSome_label = self.label != nil - if let __bjs_unwrapped_label = self.label { - __bjs_unwrapped_label.bridgeJSStackPush() - } - _swift_js_push_i32(__bjs_isSome_label ? 1 : 0) - self.layout.jsObject.bridgeJSStackPush() - self.compute.bridgeJSStackPush() - } - - public init(unsafelyCopying jsObject: JSObject) { - _bjs_struct_lower_GPUComputePipelineDescriptor(jsObject.bridgeJSLowerParameter()) - self = Self.bridgeJSStackPop() - } - - public func toJSObject() -> JSObject { - let __bjs_self = self - __bjs_self.bridgeJSStackPush() - return JSObject(id: UInt32(bitPattern: _bjs_struct_lift_GPUComputePipelineDescriptor())) - } + @_spi(BridgeJS) @_transparent public static func bridgeJSStackPop() -> GPUComputePipelineDescriptor { + let compute = GPUComputeState.bridgeJSStackPop() + let layout = GPUPipelineLayout(unsafelyWrapping: JSObject.bridgeJSStackPop()) + let label = Optional.bridgeJSStackPop() + return GPUComputePipelineDescriptor(label: label, layout: layout, compute: compute) + } + + @_spi(BridgeJS) @_transparent public consuming func bridgeJSStackPush() { + self.label.bridgeJSStackPush() + self.layout.jsObject.bridgeJSStackPush() + self.compute.bridgeJSStackPush() + } + + public init(unsafelyCopying jsObject: JSObject) { + _bjs_struct_lower_GPUComputePipelineDescriptor(jsObject.bridgeJSLowerParameter()) + self = Self.bridgeJSStackPop() + } + + public func toJSObject() -> JSObject { + let __bjs_self = self + __bjs_self.bridgeJSStackPush() + return JSObject(id: UInt32(bitPattern: _bjs_struct_lift_GPUComputePipelineDescriptor())) + } } #if arch(wasm32) @@ -1090,11 +1046,11 @@ extension GPUComputePipelineDescriptor: _BridgedSwiftStruct { fileprivate func _bjs_struct_lower_GPUComputePipelineDescriptor_extern(_ objectId: Int32) -> Void #else fileprivate func _bjs_struct_lower_GPUComputePipelineDescriptor_extern(_ objectId: Int32) -> Void { - fatalError("Only available on WebAssembly") + fatalError("Only available on WebAssembly") } #endif @inline(never) fileprivate func _bjs_struct_lower_GPUComputePipelineDescriptor(_ objectId: Int32) -> Void { - return _bjs_struct_lower_GPUComputePipelineDescriptor_extern(objectId) + return _bjs_struct_lower_GPUComputePipelineDescriptor_extern(objectId) } #if arch(wasm32) @@ -1102,37 +1058,37 @@ fileprivate func _bjs_struct_lower_GPUComputePipelineDescriptor_extern(_ objectI fileprivate func _bjs_struct_lift_GPUComputePipelineDescriptor_extern() -> Int32 #else fileprivate func _bjs_struct_lift_GPUComputePipelineDescriptor_extern() -> Int32 { - fatalError("Only available on WebAssembly") + fatalError("Only available on WebAssembly") } #endif @inline(never) fileprivate func _bjs_struct_lift_GPUComputePipelineDescriptor() -> Int32 { - return _bjs_struct_lift_GPUComputePipelineDescriptor_extern() + return _bjs_struct_lift_GPUComputePipelineDescriptor_extern() } extension GPUVertexState: _BridgedSwiftStruct { - @_spi(BridgeJS) @_transparent public static func bridgeJSStackPop() -> GPUVertexState { - let buffers = [GPUVertexBufferLayout].bridgeJSStackPop() - let entryPoint = String.bridgeJSStackPop() - let module = GPUShaderModule(unsafelyWrapping: JSObject.bridgeJSStackPop()) - return GPUVertexState(module: module, entryPoint: entryPoint, buffers: buffers) - } + @_spi(BridgeJS) @_transparent public static func bridgeJSStackPop() -> GPUVertexState { + let buffers = [GPUVertexBufferLayout].bridgeJSStackPop() + let entryPoint = String.bridgeJSStackPop() + let module = GPUShaderModule(unsafelyWrapping: JSObject.bridgeJSStackPop()) + return GPUVertexState(module: module, entryPoint: entryPoint, buffers: buffers) + } - @_spi(BridgeJS) @_transparent public consuming func bridgeJSStackPush() { - self.module.jsObject.bridgeJSStackPush() - self.entryPoint.bridgeJSStackPush() - self.buffers.bridgeJSStackPush() - } + @_spi(BridgeJS) @_transparent public consuming func bridgeJSStackPush() { + self.module.jsObject.bridgeJSStackPush() + self.entryPoint.bridgeJSStackPush() + self.buffers.bridgeJSStackPush() + } - public init(unsafelyCopying jsObject: JSObject) { - _bjs_struct_lower_GPUVertexState(jsObject.bridgeJSLowerParameter()) - self = Self.bridgeJSStackPop() - } + public init(unsafelyCopying jsObject: JSObject) { + _bjs_struct_lower_GPUVertexState(jsObject.bridgeJSLowerParameter()) + self = Self.bridgeJSStackPop() + } - public func toJSObject() -> JSObject { - let __bjs_self = self - __bjs_self.bridgeJSStackPush() - return JSObject(id: UInt32(bitPattern: _bjs_struct_lift_GPUVertexState())) - } + public func toJSObject() -> JSObject { + let __bjs_self = self + __bjs_self.bridgeJSStackPush() + return JSObject(id: UInt32(bitPattern: _bjs_struct_lift_GPUVertexState())) + } } #if arch(wasm32) @@ -1140,11 +1096,11 @@ extension GPUVertexState: _BridgedSwiftStruct { fileprivate func _bjs_struct_lower_GPUVertexState_extern(_ objectId: Int32) -> Void #else fileprivate func _bjs_struct_lower_GPUVertexState_extern(_ objectId: Int32) -> Void { - fatalError("Only available on WebAssembly") + fatalError("Only available on WebAssembly") } #endif @inline(never) fileprivate func _bjs_struct_lower_GPUVertexState(_ objectId: Int32) -> Void { - return _bjs_struct_lower_GPUVertexState_extern(objectId) + return _bjs_struct_lower_GPUVertexState_extern(objectId) } #if arch(wasm32) @@ -1152,37 +1108,37 @@ fileprivate func _bjs_struct_lower_GPUVertexState_extern(_ objectId: Int32) -> V fileprivate func _bjs_struct_lift_GPUVertexState_extern() -> Int32 #else fileprivate func _bjs_struct_lift_GPUVertexState_extern() -> Int32 { - fatalError("Only available on WebAssembly") + fatalError("Only available on WebAssembly") } #endif @inline(never) fileprivate func _bjs_struct_lift_GPUVertexState() -> Int32 { - return _bjs_struct_lift_GPUVertexState_extern() + return _bjs_struct_lift_GPUVertexState_extern() } extension GPUFragmentState: _BridgedSwiftStruct { - @_spi(BridgeJS) @_transparent public static func bridgeJSStackPop() -> GPUFragmentState { - let targets = [GPUColorTargetState].bridgeJSStackPop() - let entryPoint = String.bridgeJSStackPop() - let module = GPUShaderModule(unsafelyWrapping: JSObject.bridgeJSStackPop()) - return GPUFragmentState(module: module, entryPoint: entryPoint, targets: targets) - } + @_spi(BridgeJS) @_transparent public static func bridgeJSStackPop() -> GPUFragmentState { + let targets = [GPUColorTargetState].bridgeJSStackPop() + let entryPoint = String.bridgeJSStackPop() + let module = GPUShaderModule(unsafelyWrapping: JSObject.bridgeJSStackPop()) + return GPUFragmentState(module: module, entryPoint: entryPoint, targets: targets) + } - @_spi(BridgeJS) @_transparent public consuming func bridgeJSStackPush() { - self.module.jsObject.bridgeJSStackPush() - self.entryPoint.bridgeJSStackPush() - self.targets.bridgeJSStackPush() - } + @_spi(BridgeJS) @_transparent public consuming func bridgeJSStackPush() { + self.module.jsObject.bridgeJSStackPush() + self.entryPoint.bridgeJSStackPush() + self.targets.bridgeJSStackPush() + } - public init(unsafelyCopying jsObject: JSObject) { - _bjs_struct_lower_GPUFragmentState(jsObject.bridgeJSLowerParameter()) - self = Self.bridgeJSStackPop() - } + public init(unsafelyCopying jsObject: JSObject) { + _bjs_struct_lower_GPUFragmentState(jsObject.bridgeJSLowerParameter()) + self = Self.bridgeJSStackPop() + } - public func toJSObject() -> JSObject { - let __bjs_self = self - __bjs_self.bridgeJSStackPush() - return JSObject(id: UInt32(bitPattern: _bjs_struct_lift_GPUFragmentState())) - } + public func toJSObject() -> JSObject { + let __bjs_self = self + __bjs_self.bridgeJSStackPush() + return JSObject(id: UInt32(bitPattern: _bjs_struct_lift_GPUFragmentState())) + } } #if arch(wasm32) @@ -1190,11 +1146,11 @@ extension GPUFragmentState: _BridgedSwiftStruct { fileprivate func _bjs_struct_lower_GPUFragmentState_extern(_ objectId: Int32) -> Void #else fileprivate func _bjs_struct_lower_GPUFragmentState_extern(_ objectId: Int32) -> Void { - fatalError("Only available on WebAssembly") + fatalError("Only available on WebAssembly") } #endif @inline(never) fileprivate func _bjs_struct_lower_GPUFragmentState(_ objectId: Int32) -> Void { - return _bjs_struct_lower_GPUFragmentState_extern(objectId) + return _bjs_struct_lower_GPUFragmentState_extern(objectId) } #if arch(wasm32) @@ -1202,54 +1158,43 @@ fileprivate func _bjs_struct_lower_GPUFragmentState_extern(_ objectId: Int32) -> fileprivate func _bjs_struct_lift_GPUFragmentState_extern() -> Int32 #else fileprivate func _bjs_struct_lift_GPUFragmentState_extern() -> Int32 { - fatalError("Only available on WebAssembly") + fatalError("Only available on WebAssembly") } #endif @inline(never) fileprivate func _bjs_struct_lift_GPUFragmentState() -> Int32 { - return _bjs_struct_lift_GPUFragmentState_extern() + return _bjs_struct_lift_GPUFragmentState_extern() } extension GPURenderPipelineDescriptor: _BridgedSwiftStruct { - @_spi(BridgeJS) @_transparent public static func bridgeJSStackPop() -> GPURenderPipelineDescriptor { - let fragment = Optional.bridgeJSStackPop() - let multisample = Optional.bridgeJSStackPop() - let primitive = Optional.bridgeJSStackPop() - let vertex = GPUVertexState.bridgeJSStackPop() - let layout = GPUPipelineLayout(unsafelyWrapping: JSObject.bridgeJSStackPop()) - let label = Optional.bridgeJSStackPop() - return GPURenderPipelineDescriptor( - label: label, - layout: layout, - vertex: vertex, - primitive: primitive, - multisample: multisample, - fragment: fragment - ) - } - - @_spi(BridgeJS) @_transparent public consuming func bridgeJSStackPush() { - let __bjs_isSome_label = self.label != nil - if let __bjs_unwrapped_label = self.label { - __bjs_unwrapped_label.bridgeJSStackPush() - } - _swift_js_push_i32(__bjs_isSome_label ? 1 : 0) - self.layout.jsObject.bridgeJSStackPush() - self.vertex.bridgeJSStackPush() - self.primitive.bridgeJSStackPush() - self.multisample.bridgeJSStackPush() - self.fragment.bridgeJSStackPush() - } - - public init(unsafelyCopying jsObject: JSObject) { - _bjs_struct_lower_GPURenderPipelineDescriptor(jsObject.bridgeJSLowerParameter()) - self = Self.bridgeJSStackPop() - } - - public func toJSObject() -> JSObject { - let __bjs_self = self - __bjs_self.bridgeJSStackPush() - return JSObject(id: UInt32(bitPattern: _bjs_struct_lift_GPURenderPipelineDescriptor())) - } + @_spi(BridgeJS) @_transparent public static func bridgeJSStackPop() -> GPURenderPipelineDescriptor { + let fragment = Optional.bridgeJSStackPop() + let multisample = Optional.bridgeJSStackPop() + let primitive = Optional.bridgeJSStackPop() + let vertex = GPUVertexState.bridgeJSStackPop() + let layout = GPUPipelineLayout(unsafelyWrapping: JSObject.bridgeJSStackPop()) + let label = Optional.bridgeJSStackPop() + return GPURenderPipelineDescriptor(label: label, layout: layout, vertex: vertex, primitive: primitive, multisample: multisample, fragment: fragment) + } + + @_spi(BridgeJS) @_transparent public consuming func bridgeJSStackPush() { + self.label.bridgeJSStackPush() + self.layout.jsObject.bridgeJSStackPush() + self.vertex.bridgeJSStackPush() + self.primitive.bridgeJSStackPush() + self.multisample.bridgeJSStackPush() + self.fragment.bridgeJSStackPush() + } + + public init(unsafelyCopying jsObject: JSObject) { + _bjs_struct_lower_GPURenderPipelineDescriptor(jsObject.bridgeJSLowerParameter()) + self = Self.bridgeJSStackPop() + } + + public func toJSObject() -> JSObject { + let __bjs_self = self + __bjs_self.bridgeJSStackPush() + return JSObject(id: UInt32(bitPattern: _bjs_struct_lift_GPURenderPipelineDescriptor())) + } } #if arch(wasm32) @@ -1257,11 +1202,11 @@ extension GPURenderPipelineDescriptor: _BridgedSwiftStruct { fileprivate func _bjs_struct_lower_GPURenderPipelineDescriptor_extern(_ objectId: Int32) -> Void #else fileprivate func _bjs_struct_lower_GPURenderPipelineDescriptor_extern(_ objectId: Int32) -> Void { - fatalError("Only available on WebAssembly") + fatalError("Only available on WebAssembly") } #endif @inline(never) fileprivate func _bjs_struct_lower_GPURenderPipelineDescriptor(_ objectId: Int32) -> Void { - return _bjs_struct_lower_GPURenderPipelineDescriptor_extern(objectId) + return _bjs_struct_lower_GPURenderPipelineDescriptor_extern(objectId) } #if arch(wasm32) @@ -1269,37 +1214,37 @@ fileprivate func _bjs_struct_lower_GPURenderPipelineDescriptor_extern(_ objectId fileprivate func _bjs_struct_lift_GPURenderPipelineDescriptor_extern() -> Int32 #else fileprivate func _bjs_struct_lift_GPURenderPipelineDescriptor_extern() -> Int32 { - fatalError("Only available on WebAssembly") + fatalError("Only available on WebAssembly") } #endif @inline(never) fileprivate func _bjs_struct_lift_GPURenderPipelineDescriptor() -> Int32 { - return _bjs_struct_lift_GPURenderPipelineDescriptor_extern() + return _bjs_struct_lift_GPURenderPipelineDescriptor_extern() } extension GPUMultisampleState: _BridgedSwiftStruct { - @_spi(BridgeJS) @_transparent public static func bridgeJSStackPop() -> GPUMultisampleState { - let alphaToCoverageEnabled = Bool.bridgeJSStackPop() - let mask = UInt.bridgeJSStackPop() - let count = UInt.bridgeJSStackPop() - return GPUMultisampleState(count: count, mask: mask, alphaToCoverageEnabled: alphaToCoverageEnabled) - } + @_spi(BridgeJS) @_transparent public static func bridgeJSStackPop() -> GPUMultisampleState { + let alphaToCoverageEnabled = Bool.bridgeJSStackPop() + let mask = UInt.bridgeJSStackPop() + let count = UInt.bridgeJSStackPop() + return GPUMultisampleState(count: count, mask: mask, alphaToCoverageEnabled: alphaToCoverageEnabled) + } - @_spi(BridgeJS) @_transparent public consuming func bridgeJSStackPush() { - self.count.bridgeJSStackPush() - self.mask.bridgeJSStackPush() - self.alphaToCoverageEnabled.bridgeJSStackPush() - } + @_spi(BridgeJS) @_transparent public consuming func bridgeJSStackPush() { + self.count.bridgeJSStackPush() + self.mask.bridgeJSStackPush() + self.alphaToCoverageEnabled.bridgeJSStackPush() + } - public init(unsafelyCopying jsObject: JSObject) { - _bjs_struct_lower_GPUMultisampleState(jsObject.bridgeJSLowerParameter()) - self = Self.bridgeJSStackPop() - } + public init(unsafelyCopying jsObject: JSObject) { + _bjs_struct_lower_GPUMultisampleState(jsObject.bridgeJSLowerParameter()) + self = Self.bridgeJSStackPop() + } - public func toJSObject() -> JSObject { - let __bjs_self = self - __bjs_self.bridgeJSStackPush() - return JSObject(id: UInt32(bitPattern: _bjs_struct_lift_GPUMultisampleState())) - } + public func toJSObject() -> JSObject { + let __bjs_self = self + __bjs_self.bridgeJSStackPush() + return JSObject(id: UInt32(bitPattern: _bjs_struct_lift_GPUMultisampleState())) + } } #if arch(wasm32) @@ -1307,11 +1252,11 @@ extension GPUMultisampleState: _BridgedSwiftStruct { fileprivate func _bjs_struct_lower_GPUMultisampleState_extern(_ objectId: Int32) -> Void #else fileprivate func _bjs_struct_lower_GPUMultisampleState_extern(_ objectId: Int32) -> Void { - fatalError("Only available on WebAssembly") + fatalError("Only available on WebAssembly") } #endif @inline(never) fileprivate func _bjs_struct_lower_GPUMultisampleState(_ objectId: Int32) -> Void { - return _bjs_struct_lower_GPUMultisampleState_extern(objectId) + return _bjs_struct_lower_GPUMultisampleState_extern(objectId) } #if arch(wasm32) @@ -1319,39 +1264,35 @@ fileprivate func _bjs_struct_lower_GPUMultisampleState_extern(_ objectId: Int32) fileprivate func _bjs_struct_lift_GPUMultisampleState_extern() -> Int32 #else fileprivate func _bjs_struct_lift_GPUMultisampleState_extern() -> Int32 { - fatalError("Only available on WebAssembly") + fatalError("Only available on WebAssembly") } #endif @inline(never) fileprivate func _bjs_struct_lift_GPUMultisampleState() -> Int32 { - return _bjs_struct_lift_GPUMultisampleState_extern() + return _bjs_struct_lift_GPUMultisampleState_extern() } extension GPUPipelineLayoutDescriptor: _BridgedSwiftStruct { - @_spi(BridgeJS) @_transparent public static func bridgeJSStackPop() -> GPUPipelineLayoutDescriptor { - let bindGroupLayouts = [JSObject].bridgeJSStackPop().map { GPUBindGroupLayout(unsafelyWrapping: $0) } - let label = Optional.bridgeJSStackPop() - return GPUPipelineLayoutDescriptor(label: label, bindGroupLayouts: bindGroupLayouts) - } - - @_spi(BridgeJS) @_transparent public consuming func bridgeJSStackPush() { - let __bjs_isSome_label = self.label != nil - if let __bjs_unwrapped_label = self.label { - __bjs_unwrapped_label.bridgeJSStackPush() - } - _swift_js_push_i32(__bjs_isSome_label ? 1 : 0) - self.bindGroupLayouts.map { $0.jsObject }.bridgeJSStackPush() - } - - public init(unsafelyCopying jsObject: JSObject) { - _bjs_struct_lower_GPUPipelineLayoutDescriptor(jsObject.bridgeJSLowerParameter()) - self = Self.bridgeJSStackPop() - } - - public func toJSObject() -> JSObject { - let __bjs_self = self - __bjs_self.bridgeJSStackPush() - return JSObject(id: UInt32(bitPattern: _bjs_struct_lift_GPUPipelineLayoutDescriptor())) - } + @_spi(BridgeJS) @_transparent public static func bridgeJSStackPop() -> GPUPipelineLayoutDescriptor { + let bindGroupLayouts = [GPUBindGroupLayout].bridgeJSStackPop() + let label = Optional.bridgeJSStackPop() + return GPUPipelineLayoutDescriptor(label: label, bindGroupLayouts: bindGroupLayouts) + } + + @_spi(BridgeJS) @_transparent public consuming func bridgeJSStackPush() { + self.label.bridgeJSStackPush() + self.bindGroupLayouts.bridgeJSStackPush() + } + + public init(unsafelyCopying jsObject: JSObject) { + _bjs_struct_lower_GPUPipelineLayoutDescriptor(jsObject.bridgeJSLowerParameter()) + self = Self.bridgeJSStackPop() + } + + public func toJSObject() -> JSObject { + let __bjs_self = self + __bjs_self.bridgeJSStackPush() + return JSObject(id: UInt32(bitPattern: _bjs_struct_lift_GPUPipelineLayoutDescriptor())) + } } #if arch(wasm32) @@ -1359,11 +1300,11 @@ extension GPUPipelineLayoutDescriptor: _BridgedSwiftStruct { fileprivate func _bjs_struct_lower_GPUPipelineLayoutDescriptor_extern(_ objectId: Int32) -> Void #else fileprivate func _bjs_struct_lower_GPUPipelineLayoutDescriptor_extern(_ objectId: Int32) -> Void { - fatalError("Only available on WebAssembly") + fatalError("Only available on WebAssembly") } #endif @inline(never) fileprivate func _bjs_struct_lower_GPUPipelineLayoutDescriptor(_ objectId: Int32) -> Void { - return _bjs_struct_lower_GPUPipelineLayoutDescriptor_extern(objectId) + return _bjs_struct_lower_GPUPipelineLayoutDescriptor_extern(objectId) } #if arch(wasm32) @@ -1371,53 +1312,55 @@ fileprivate func _bjs_struct_lower_GPUPipelineLayoutDescriptor_extern(_ objectId fileprivate func _bjs_struct_lift_GPUPipelineLayoutDescriptor_extern() -> Int32 #else fileprivate func _bjs_struct_lift_GPUPipelineLayoutDescriptor_extern() -> Int32 { - fatalError("Only available on WebAssembly") + fatalError("Only available on WebAssembly") } #endif @inline(never) fileprivate func _bjs_struct_lift_GPUPipelineLayoutDescriptor() -> Int32 { - return _bjs_struct_lift_GPUPipelineLayoutDescriptor_extern() + return _bjs_struct_lift_GPUPipelineLayoutDescriptor_extern() } #if arch(wasm32) @_extern(wasm, module: "WebGPUWasm", name: "bjs_GPUBindGroup_label__set") -fileprivate func bjs_GPUBindGroup_label__set_extern(_ self: Int32, _ newValueIsSome: Int32, _ newValueValue: Int32) -> Void +fileprivate func bjs_GPUBindGroup_label__set_extern(_ self: Int32, _ newValueIsSome: Int32, _ newValueBytes: Int32, _ newValueLength: Int32) -> Void #else -fileprivate func bjs_GPUBindGroup_label__set_extern(_ self: Int32, _ newValueIsSome: Int32, _ newValueValue: Int32) -> Void { - fatalError("Only available on WebAssembly") +fileprivate func bjs_GPUBindGroup_label__set_extern(_ self: Int32, _ newValueIsSome: Int32, _ newValueBytes: Int32, _ newValueLength: Int32) -> Void { + fatalError("Only available on WebAssembly") } #endif -@inline(never) fileprivate func bjs_GPUBindGroup_label__set(_ self: Int32, _ newValueIsSome: Int32, _ newValueValue: Int32) -> Void { - return bjs_GPUBindGroup_label__set_extern(self, newValueIsSome, newValueValue) +@inline(never) fileprivate func bjs_GPUBindGroup_label__set(_ self: Int32, _ newValueIsSome: Int32, _ newValueBytes: Int32, _ newValueLength: Int32) -> Void { + return bjs_GPUBindGroup_label__set_extern(self, newValueIsSome, newValueBytes, newValueLength) } func _$GPUBindGroup_label__set(_ self: JSObject, _ newValue: Optional) throws(JSException) -> Void { - let selfValue = self.bridgeJSLowerParameter() - let (newValueIsSome, newValueValue) = newValue.bridgeJSLowerParameter() - bjs_GPUBindGroup_label__set(selfValue, newValueIsSome, newValueValue) - if let error = _swift_js_take_exception() { - throw error - } + let selfValue = self.bridgeJSLowerParameter() + newValue.bridgeJSWithLoweredParameter { (newValueIsSome, newValueBytes, newValueLength) in + bjs_GPUBindGroup_label__set(selfValue, newValueIsSome, newValueBytes, newValueLength) + } + if let error = _swift_js_take_exception() { + throw error + } } #if arch(wasm32) @_extern(wasm, module: "WebGPUWasm", name: "bjs_GPUBindGroupLayout_label__set") -fileprivate func bjs_GPUBindGroupLayout_label__set_extern(_ self: Int32, _ newValueIsSome: Int32, _ newValueValue: Int32) -> Void +fileprivate func bjs_GPUBindGroupLayout_label__set_extern(_ self: Int32, _ newValueIsSome: Int32, _ newValueBytes: Int32, _ newValueLength: Int32) -> Void #else -fileprivate func bjs_GPUBindGroupLayout_label__set_extern(_ self: Int32, _ newValueIsSome: Int32, _ newValueValue: Int32) -> Void { - fatalError("Only available on WebAssembly") +fileprivate func bjs_GPUBindGroupLayout_label__set_extern(_ self: Int32, _ newValueIsSome: Int32, _ newValueBytes: Int32, _ newValueLength: Int32) -> Void { + fatalError("Only available on WebAssembly") } #endif -@inline(never) fileprivate func bjs_GPUBindGroupLayout_label__set(_ self: Int32, _ newValueIsSome: Int32, _ newValueValue: Int32) -> Void { - return bjs_GPUBindGroupLayout_label__set_extern(self, newValueIsSome, newValueValue) +@inline(never) fileprivate func bjs_GPUBindGroupLayout_label__set(_ self: Int32, _ newValueIsSome: Int32, _ newValueBytes: Int32, _ newValueLength: Int32) -> Void { + return bjs_GPUBindGroupLayout_label__set_extern(self, newValueIsSome, newValueBytes, newValueLength) } func _$GPUBindGroupLayout_label__set(_ self: JSObject, _ newValue: Optional) throws(JSException) -> Void { - let selfValue = self.bridgeJSLowerParameter() - let (newValueIsSome, newValueValue) = newValue.bridgeJSLowerParameter() - bjs_GPUBindGroupLayout_label__set(selfValue, newValueIsSome, newValueValue) - if let error = _swift_js_take_exception() { - throw error - } + let selfValue = self.bridgeJSLowerParameter() + newValue.bridgeJSWithLoweredParameter { (newValueIsSome, newValueBytes, newValueLength) in + bjs_GPUBindGroupLayout_label__set(selfValue, newValueIsSome, newValueBytes, newValueLength) + } + if let error = _swift_js_take_exception() { + throw error + } } #if arch(wasm32) @@ -1425,11 +1368,11 @@ func _$GPUBindGroupLayout_label__set(_ self: JSObject, _ newValue: Optional Int32 #else fileprivate func bjs_GPUBuffer__size_get_extern(_ self: Int32) -> Int32 { - fatalError("Only available on WebAssembly") + fatalError("Only available on WebAssembly") } #endif @inline(never) fileprivate func bjs_GPUBuffer__size_get(_ self: Int32) -> Int32 { - return bjs_GPUBuffer__size_get_extern(self) + return bjs_GPUBuffer__size_get_extern(self) } #if arch(wasm32) @@ -1437,23 +1380,23 @@ fileprivate func bjs_GPUBuffer__size_get_extern(_ self: Int32) -> Int32 { fileprivate func bjs_GPUBuffer__usage_get_extern(_ self: Int32) -> Int32 #else fileprivate func bjs_GPUBuffer__usage_get_extern(_ self: Int32) -> Int32 { - fatalError("Only available on WebAssembly") + fatalError("Only available on WebAssembly") } #endif @inline(never) fileprivate func bjs_GPUBuffer__usage_get(_ self: Int32) -> Int32 { - return bjs_GPUBuffer__usage_get_extern(self) + return bjs_GPUBuffer__usage_get_extern(self) } #if arch(wasm32) @_extern(wasm, module: "WebGPUWasm", name: "bjs_GPUBuffer_label__set") -fileprivate func bjs_GPUBuffer_label__set_extern(_ self: Int32, _ newValueIsSome: Int32, _ newValueValue: Int32) -> Void +fileprivate func bjs_GPUBuffer_label__set_extern(_ self: Int32, _ newValueIsSome: Int32, _ newValueBytes: Int32, _ newValueLength: Int32) -> Void #else -fileprivate func bjs_GPUBuffer_label__set_extern(_ self: Int32, _ newValueIsSome: Int32, _ newValueValue: Int32) -> Void { - fatalError("Only available on WebAssembly") +fileprivate func bjs_GPUBuffer_label__set_extern(_ self: Int32, _ newValueIsSome: Int32, _ newValueBytes: Int32, _ newValueLength: Int32) -> Void { + fatalError("Only available on WebAssembly") } #endif -@inline(never) fileprivate func bjs_GPUBuffer_label__set(_ self: Int32, _ newValueIsSome: Int32, _ newValueValue: Int32) -> Void { - return bjs_GPUBuffer_label__set_extern(self, newValueIsSome, newValueValue) +@inline(never) fileprivate func bjs_GPUBuffer_label__set(_ self: Int32, _ newValueIsSome: Int32, _ newValueBytes: Int32, _ newValueLength: Int32) -> Void { + return bjs_GPUBuffer_label__set_extern(self, newValueIsSome, newValueBytes, newValueLength) } #if arch(wasm32) @@ -1461,46 +1404,47 @@ fileprivate func bjs_GPUBuffer_label__set_extern(_ self: Int32, _ newValueIsSome fileprivate func bjs_GPUBuffer__destroy_extern(_ self: Int32) -> Void #else fileprivate func bjs_GPUBuffer__destroy_extern(_ self: Int32) -> Void { - fatalError("Only available on WebAssembly") + fatalError("Only available on WebAssembly") } #endif @inline(never) fileprivate func bjs_GPUBuffer__destroy(_ self: Int32) -> Void { - return bjs_GPUBuffer__destroy_extern(self) + return bjs_GPUBuffer__destroy_extern(self) } func _$GPUBuffer__size_get(_ self: JSObject) throws(JSException) -> Int { - let selfValue = self.bridgeJSLowerParameter() - let ret = bjs_GPUBuffer__size_get(selfValue) - if let error = _swift_js_take_exception() { - throw error - } - return Int.bridgeJSLiftReturn(ret) + let selfValue = self.bridgeJSLowerParameter() + let ret = bjs_GPUBuffer__size_get(selfValue) + if let error = _swift_js_take_exception() { + throw error + } + return Int.bridgeJSLiftReturn(ret) } func _$GPUBuffer__usage_get(_ self: JSObject) throws(JSException) -> Int { - let selfValue = self.bridgeJSLowerParameter() - let ret = bjs_GPUBuffer__usage_get(selfValue) - if let error = _swift_js_take_exception() { - throw error - } - return Int.bridgeJSLiftReturn(ret) + let selfValue = self.bridgeJSLowerParameter() + let ret = bjs_GPUBuffer__usage_get(selfValue) + if let error = _swift_js_take_exception() { + throw error + } + return Int.bridgeJSLiftReturn(ret) } func _$GPUBuffer_label__set(_ self: JSObject, _ newValue: Optional) throws(JSException) -> Void { - let selfValue = self.bridgeJSLowerParameter() - let (newValueIsSome, newValueValue) = newValue.bridgeJSLowerParameter() - bjs_GPUBuffer_label__set(selfValue, newValueIsSome, newValueValue) - if let error = _swift_js_take_exception() { - throw error - } + let selfValue = self.bridgeJSLowerParameter() + newValue.bridgeJSWithLoweredParameter { (newValueIsSome, newValueBytes, newValueLength) in + bjs_GPUBuffer_label__set(selfValue, newValueIsSome, newValueBytes, newValueLength) + } + if let error = _swift_js_take_exception() { + throw error + } } func _$GPUBuffer__destroy(_ self: JSObject) throws(JSException) -> Void { - let selfValue = self.bridgeJSLowerParameter() - bjs_GPUBuffer__destroy(selfValue) - if let error = _swift_js_take_exception() { - throw error - } + let selfValue = self.bridgeJSLowerParameter() + bjs_GPUBuffer__destroy(selfValue) + if let error = _swift_js_take_exception() { + throw error + } } #if arch(wasm32) @@ -1508,11 +1452,11 @@ func _$GPUBuffer__destroy(_ self: JSObject) throws(JSException) -> Void { fileprivate func bjs_GPUCanvasContext__configure_extern(_ self: Int32, _ configuration: Int32) -> Void #else fileprivate func bjs_GPUCanvasContext__configure_extern(_ self: Int32, _ configuration: Int32) -> Void { - fatalError("Only available on WebAssembly") + fatalError("Only available on WebAssembly") } #endif @inline(never) fileprivate func bjs_GPUCanvasContext__configure(_ self: Int32, _ configuration: Int32) -> Void { - return bjs_GPUCanvasContext__configure_extern(self, configuration) + return bjs_GPUCanvasContext__configure_extern(self, configuration) } #if arch(wasm32) @@ -1520,62 +1464,63 @@ fileprivate func bjs_GPUCanvasContext__configure_extern(_ self: Int32, _ configu fileprivate func bjs_GPUCanvasContext__getCurrentTexture_extern(_ self: Int32) -> Int32 #else fileprivate func bjs_GPUCanvasContext__getCurrentTexture_extern(_ self: Int32) -> Int32 { - fatalError("Only available on WebAssembly") + fatalError("Only available on WebAssembly") } #endif @inline(never) fileprivate func bjs_GPUCanvasContext__getCurrentTexture(_ self: Int32) -> Int32 { - return bjs_GPUCanvasContext__getCurrentTexture_extern(self) + return bjs_GPUCanvasContext__getCurrentTexture_extern(self) } func _$GPUCanvasContext__configure(_ self: JSObject, _ configuration: GPUCanvasConfiguration) throws(JSException) -> Void { - let selfValue = self.bridgeJSLowerParameter() - let configurationObjectId = configuration.bridgeJSLowerParameter() - bjs_GPUCanvasContext__configure(selfValue, configurationObjectId) - if let error = _swift_js_take_exception() { - throw error - } + let selfValue = self.bridgeJSLowerParameter() + let configurationObjectId = configuration.bridgeJSLowerParameter() + bjs_GPUCanvasContext__configure(selfValue, configurationObjectId) + if let error = _swift_js_take_exception() { + throw error + } } func _$GPUCanvasContext__getCurrentTexture(_ self: JSObject) throws(JSException) -> GPUTexture { - let selfValue = self.bridgeJSLowerParameter() - let ret = bjs_GPUCanvasContext__getCurrentTexture(selfValue) - if let error = _swift_js_take_exception() { - throw error - } - return GPUTexture.bridgeJSLiftReturn(ret) + let selfValue = self.bridgeJSLowerParameter() + let ret = bjs_GPUCanvasContext__getCurrentTexture(selfValue) + if let error = _swift_js_take_exception() { + throw error + } + return GPUTexture.bridgeJSLiftReturn(ret) } #if arch(wasm32) @_extern(wasm, module: "WebGPUWasm", name: "bjs_GPUCommandBuffer_label__set") -fileprivate func bjs_GPUCommandBuffer_label__set_extern(_ self: Int32, _ newValueIsSome: Int32, _ newValueValue: Int32) -> Void +fileprivate func bjs_GPUCommandBuffer_label__set_extern(_ self: Int32, _ newValueIsSome: Int32, _ newValueBytes: Int32, _ newValueLength: Int32) -> Void #else -fileprivate func bjs_GPUCommandBuffer_label__set_extern(_ self: Int32, _ newValueIsSome: Int32, _ newValueValue: Int32) -> Void { - fatalError("Only available on WebAssembly") +fileprivate func bjs_GPUCommandBuffer_label__set_extern(_ self: Int32, _ newValueIsSome: Int32, _ newValueBytes: Int32, _ newValueLength: Int32) -> Void { + fatalError("Only available on WebAssembly") } #endif -@inline(never) fileprivate func bjs_GPUCommandBuffer_label__set(_ self: Int32, _ newValueIsSome: Int32, _ newValueValue: Int32) -> Void { - return bjs_GPUCommandBuffer_label__set_extern(self, newValueIsSome, newValueValue) +@inline(never) fileprivate func bjs_GPUCommandBuffer_label__set(_ self: Int32, _ newValueIsSome: Int32, _ newValueBytes: Int32, _ newValueLength: Int32) -> Void { + return bjs_GPUCommandBuffer_label__set_extern(self, newValueIsSome, newValueBytes, newValueLength) } func _$GPUCommandBuffer_label__set(_ self: JSObject, _ newValue: Optional) throws(JSException) -> Void { - let selfValue = self.bridgeJSLowerParameter() - let (newValueIsSome, newValueValue) = newValue.bridgeJSLowerParameter() - bjs_GPUCommandBuffer_label__set(selfValue, newValueIsSome, newValueValue) - if let error = _swift_js_take_exception() { - throw error - } + let selfValue = self.bridgeJSLowerParameter() + newValue.bridgeJSWithLoweredParameter { (newValueIsSome, newValueBytes, newValueLength) in + bjs_GPUCommandBuffer_label__set(selfValue, newValueIsSome, newValueBytes, newValueLength) + } + if let error = _swift_js_take_exception() { + throw error + } } #if arch(wasm32) @_extern(wasm, module: "WebGPUWasm", name: "bjs_GPUCommandEncoder_label__set") -fileprivate func bjs_GPUCommandEncoder_label__set_extern(_ self: Int32, _ newValueIsSome: Int32, _ newValueValue: Int32) -> Void +fileprivate func bjs_GPUCommandEncoder_label__set_extern(_ self: Int32, _ newValueIsSome: Int32, _ newValueBytes: Int32, _ newValueLength: Int32) -> Void #else -fileprivate func bjs_GPUCommandEncoder_label__set_extern(_ self: Int32, _ newValueIsSome: Int32, _ newValueValue: Int32) -> Void { - fatalError("Only available on WebAssembly") +fileprivate func bjs_GPUCommandEncoder_label__set_extern(_ self: Int32, _ newValueIsSome: Int32, _ newValueBytes: Int32, _ newValueLength: Int32) -> Void { + fatalError("Only available on WebAssembly") } #endif -@inline(never) fileprivate func bjs_GPUCommandEncoder_label__set(_ self: Int32, _ newValueIsSome: Int32, _ newValueValue: Int32) -> Void { - return bjs_GPUCommandEncoder_label__set_extern(self, newValueIsSome, newValueValue) +@inline(never) fileprivate func bjs_GPUCommandEncoder_label__set(_ self: Int32, _ newValueIsSome: Int32, _ newValueBytes: Int32, _ newValueLength: Int32) -> Void { + return bjs_GPUCommandEncoder_label__set_extern(self, newValueIsSome, newValueBytes, newValueLength) } #if arch(wasm32) @@ -1583,11 +1528,11 @@ fileprivate func bjs_GPUCommandEncoder_label__set_extern(_ self: Int32, _ newVal fileprivate func bjs_GPUCommandEncoder__beginRenderPass_extern(_ self: Int32, _ descriptor: Int32) -> Int32 #else fileprivate func bjs_GPUCommandEncoder__beginRenderPass_extern(_ self: Int32, _ descriptor: Int32) -> Int32 { - fatalError("Only available on WebAssembly") + fatalError("Only available on WebAssembly") } #endif @inline(never) fileprivate func bjs_GPUCommandEncoder__beginRenderPass(_ self: Int32, _ descriptor: Int32) -> Int32 { - return bjs_GPUCommandEncoder__beginRenderPass_extern(self, descriptor) + return bjs_GPUCommandEncoder__beginRenderPass_extern(self, descriptor) } #if arch(wasm32) @@ -1595,11 +1540,11 @@ fileprivate func bjs_GPUCommandEncoder__beginRenderPass_extern(_ self: Int32, _ fileprivate func bjs_GPUCommandEncoder__beginComputePass_extern(_ self: Int32, _ descriptor: Int32) -> Int32 #else fileprivate func bjs_GPUCommandEncoder__beginComputePass_extern(_ self: Int32, _ descriptor: Int32) -> Int32 { - fatalError("Only available on WebAssembly") + fatalError("Only available on WebAssembly") } #endif @inline(never) fileprivate func bjs_GPUCommandEncoder__beginComputePass(_ self: Int32, _ descriptor: Int32) -> Int32 { - return bjs_GPUCommandEncoder__beginComputePass_extern(self, descriptor) + return bjs_GPUCommandEncoder__beginComputePass_extern(self, descriptor) } #if arch(wasm32) @@ -1607,69 +1552,63 @@ fileprivate func bjs_GPUCommandEncoder__beginComputePass_extern(_ self: Int32, _ fileprivate func bjs_GPUCommandEncoder__finish_extern(_ self: Int32, _ descriptor: Int32) -> Int32 #else fileprivate func bjs_GPUCommandEncoder__finish_extern(_ self: Int32, _ descriptor: Int32) -> Int32 { - fatalError("Only available on WebAssembly") + fatalError("Only available on WebAssembly") } #endif @inline(never) fileprivate func bjs_GPUCommandEncoder__finish(_ self: Int32, _ descriptor: Int32) -> Int32 { - return bjs_GPUCommandEncoder__finish_extern(self, descriptor) + return bjs_GPUCommandEncoder__finish_extern(self, descriptor) } func _$GPUCommandEncoder_label__set(_ self: JSObject, _ newValue: Optional) throws(JSException) -> Void { - let selfValue = self.bridgeJSLowerParameter() - let (newValueIsSome, newValueValue) = newValue.bridgeJSLowerParameter() - bjs_GPUCommandEncoder_label__set(selfValue, newValueIsSome, newValueValue) - if let error = _swift_js_take_exception() { - throw error - } -} - -func _$GPUCommandEncoder__beginRenderPass( - _ self: JSObject, - _ descriptor: GPURenderPassDescriptor -) throws(JSException) -> GPURenderPassEncoder { - let selfValue = self.bridgeJSLowerParameter() - let descriptorObjectId = descriptor.bridgeJSLowerParameter() - let ret = bjs_GPUCommandEncoder__beginRenderPass(selfValue, descriptorObjectId) - if let error = _swift_js_take_exception() { - throw error - } - return GPURenderPassEncoder.bridgeJSLiftReturn(ret) -} - -func _$GPUCommandEncoder__beginComputePass( - _ self: JSObject, - _ descriptor: GPUComputePassDescriptor -) throws(JSException) -> GPUComputePassEncoder { - let selfValue = self.bridgeJSLowerParameter() - let descriptorObjectId = descriptor.bridgeJSLowerParameter() - let ret = bjs_GPUCommandEncoder__beginComputePass(selfValue, descriptorObjectId) - if let error = _swift_js_take_exception() { - throw error - } - return GPUComputePassEncoder.bridgeJSLiftReturn(ret) + let selfValue = self.bridgeJSLowerParameter() + newValue.bridgeJSWithLoweredParameter { (newValueIsSome, newValueBytes, newValueLength) in + bjs_GPUCommandEncoder_label__set(selfValue, newValueIsSome, newValueBytes, newValueLength) + } + if let error = _swift_js_take_exception() { + throw error + } +} + +func _$GPUCommandEncoder__beginRenderPass(_ self: JSObject, _ descriptor: GPURenderPassDescriptor) throws(JSException) -> GPURenderPassEncoder { + let selfValue = self.bridgeJSLowerParameter() + let descriptorObjectId = descriptor.bridgeJSLowerParameter() + let ret = bjs_GPUCommandEncoder__beginRenderPass(selfValue, descriptorObjectId) + if let error = _swift_js_take_exception() { + throw error + } + return GPURenderPassEncoder.bridgeJSLiftReturn(ret) +} + +func _$GPUCommandEncoder__beginComputePass(_ self: JSObject, _ descriptor: GPUComputePassDescriptor) throws(JSException) -> GPUComputePassEncoder { + let selfValue = self.bridgeJSLowerParameter() + let descriptorObjectId = descriptor.bridgeJSLowerParameter() + let ret = bjs_GPUCommandEncoder__beginComputePass(selfValue, descriptorObjectId) + if let error = _swift_js_take_exception() { + throw error + } + return GPUComputePassEncoder.bridgeJSLiftReturn(ret) } func _$GPUCommandEncoder__finish(_ self: JSObject, _ descriptor: GPUCommandBufferDescriptor) throws(JSException) -> GPUCommandBuffer { - let selfValue = self.bridgeJSLowerParameter() - let descriptorObjectId = descriptor.bridgeJSLowerParameter() - let ret = bjs_GPUCommandEncoder__finish(selfValue, descriptorObjectId) - if let error = _swift_js_take_exception() { - throw error - } - return GPUCommandBuffer.bridgeJSLiftReturn(ret) + let selfValue = self.bridgeJSLowerParameter() + let descriptorObjectId = descriptor.bridgeJSLowerParameter() + let ret = bjs_GPUCommandEncoder__finish(selfValue, descriptorObjectId) + if let error = _swift_js_take_exception() { + throw error + } + return GPUCommandBuffer.bridgeJSLiftReturn(ret) } #if arch(wasm32) @_extern(wasm, module: "WebGPUWasm", name: "bjs_GPUComputePassEncoder_label__set") -fileprivate func bjs_GPUComputePassEncoder_label__set_extern(_ self: Int32, _ newValueIsSome: Int32, _ newValueValue: Int32) -> Void +fileprivate func bjs_GPUComputePassEncoder_label__set_extern(_ self: Int32, _ newValueIsSome: Int32, _ newValueBytes: Int32, _ newValueLength: Int32) -> Void #else -fileprivate func bjs_GPUComputePassEncoder_label__set_extern(_ self: Int32, _ newValueIsSome: Int32, _ newValueValue: Int32) -> Void { - fatalError("Only available on WebAssembly") +fileprivate func bjs_GPUComputePassEncoder_label__set_extern(_ self: Int32, _ newValueIsSome: Int32, _ newValueBytes: Int32, _ newValueLength: Int32) -> Void { + fatalError("Only available on WebAssembly") } #endif -@inline(never) fileprivate func bjs_GPUComputePassEncoder_label__set(_ self: Int32, _ newValueIsSome: Int32, _ newValueValue: Int32) -> Void -{ - return bjs_GPUComputePassEncoder_label__set_extern(self, newValueIsSome, newValueValue) +@inline(never) fileprivate func bjs_GPUComputePassEncoder_label__set(_ self: Int32, _ newValueIsSome: Int32, _ newValueBytes: Int32, _ newValueLength: Int32) -> Void { + return bjs_GPUComputePassEncoder_label__set_extern(self, newValueIsSome, newValueBytes, newValueLength) } #if arch(wasm32) @@ -1677,11 +1616,11 @@ fileprivate func bjs_GPUComputePassEncoder_label__set_extern(_ self: Int32, _ ne fileprivate func bjs_GPUComputePassEncoder__setPipeline_extern(_ self: Int32, _ pipeline: Int32) -> Void #else fileprivate func bjs_GPUComputePassEncoder__setPipeline_extern(_ self: Int32, _ pipeline: Int32) -> Void { - fatalError("Only available on WebAssembly") + fatalError("Only available on WebAssembly") } #endif @inline(never) fileprivate func bjs_GPUComputePassEncoder__setPipeline(_ self: Int32, _ pipeline: Int32) -> Void { - return bjs_GPUComputePassEncoder__setPipeline_extern(self, pipeline) + return bjs_GPUComputePassEncoder__setPipeline_extern(self, pipeline) } #if arch(wasm32) @@ -1689,38 +1628,23 @@ fileprivate func bjs_GPUComputePassEncoder__setPipeline_extern(_ self: Int32, _ fileprivate func bjs_GPUComputePassEncoder__setBindGroup_extern(_ self: Int32, _ groupIndex: Int32, _ group: Int32) -> Void #else fileprivate func bjs_GPUComputePassEncoder__setBindGroup_extern(_ self: Int32, _ groupIndex: Int32, _ group: Int32) -> Void { - fatalError("Only available on WebAssembly") + fatalError("Only available on WebAssembly") } #endif @inline(never) fileprivate func bjs_GPUComputePassEncoder__setBindGroup(_ self: Int32, _ groupIndex: Int32, _ group: Int32) -> Void { - return bjs_GPUComputePassEncoder__setBindGroup_extern(self, groupIndex, group) + return bjs_GPUComputePassEncoder__setBindGroup_extern(self, groupIndex, group) } #if arch(wasm32) @_extern(wasm, module: "WebGPUWasm", name: "bjs_GPUComputePassEncoder__dispatchWorkgroups") -fileprivate func bjs_GPUComputePassEncoder__dispatchWorkgroups_extern( - _ self: Int32, - _ workgroupCountX: Int32, - _ workgroupCountY: Int32, - _ workgroupCountZ: Int32 -) -> Void +fileprivate func bjs_GPUComputePassEncoder__dispatchWorkgroups_extern(_ self: Int32, _ workgroupCountX: Int32, _ workgroupCountY: Int32, _ workgroupCountZ: Int32) -> Void #else -fileprivate func bjs_GPUComputePassEncoder__dispatchWorkgroups_extern( - _ self: Int32, - _ workgroupCountX: Int32, - _ workgroupCountY: Int32, - _ workgroupCountZ: Int32 -) -> Void { - fatalError("Only available on WebAssembly") +fileprivate func bjs_GPUComputePassEncoder__dispatchWorkgroups_extern(_ self: Int32, _ workgroupCountX: Int32, _ workgroupCountY: Int32, _ workgroupCountZ: Int32) -> Void { + fatalError("Only available on WebAssembly") } #endif -@inline(never) fileprivate func bjs_GPUComputePassEncoder__dispatchWorkgroups( - _ self: Int32, - _ workgroupCountX: Int32, - _ workgroupCountY: Int32, - _ workgroupCountZ: Int32 -) -> Void { - return bjs_GPUComputePassEncoder__dispatchWorkgroups_extern(self, workgroupCountX, workgroupCountY, workgroupCountZ) +@inline(never) fileprivate func bjs_GPUComputePassEncoder__dispatchWorkgroups(_ self: Int32, _ workgroupCountX: Int32, _ workgroupCountY: Int32, _ workgroupCountZ: Int32) -> Void { + return bjs_GPUComputePassEncoder__dispatchWorkgroups_extern(self, workgroupCountX, workgroupCountY, workgroupCountZ) } #if arch(wasm32) @@ -1728,84 +1652,81 @@ fileprivate func bjs_GPUComputePassEncoder__dispatchWorkgroups_extern( fileprivate func bjs_GPUComputePassEncoder__end_extern(_ self: Int32) -> Void #else fileprivate func bjs_GPUComputePassEncoder__end_extern(_ self: Int32) -> Void { - fatalError("Only available on WebAssembly") + fatalError("Only available on WebAssembly") } #endif @inline(never) fileprivate func bjs_GPUComputePassEncoder__end(_ self: Int32) -> Void { - return bjs_GPUComputePassEncoder__end_extern(self) + return bjs_GPUComputePassEncoder__end_extern(self) } func _$GPUComputePassEncoder_label__set(_ self: JSObject, _ newValue: Optional) throws(JSException) -> Void { - let selfValue = self.bridgeJSLowerParameter() - let (newValueIsSome, newValueValue) = newValue.bridgeJSLowerParameter() - bjs_GPUComputePassEncoder_label__set(selfValue, newValueIsSome, newValueValue) - if let error = _swift_js_take_exception() { - throw error - } + let selfValue = self.bridgeJSLowerParameter() + newValue.bridgeJSWithLoweredParameter { (newValueIsSome, newValueBytes, newValueLength) in + bjs_GPUComputePassEncoder_label__set(selfValue, newValueIsSome, newValueBytes, newValueLength) + } + if let error = _swift_js_take_exception() { + throw error + } } func _$GPUComputePassEncoder__setPipeline(_ self: JSObject, _ pipeline: GPUComputePipeline) throws(JSException) -> Void { - let selfValue = self.bridgeJSLowerParameter() - let pipelineValue = pipeline.bridgeJSLowerParameter() - bjs_GPUComputePassEncoder__setPipeline(selfValue, pipelineValue) - if let error = _swift_js_take_exception() { - throw error - } + let selfValue = self.bridgeJSLowerParameter() + let pipelineValue = pipeline.bridgeJSLowerParameter() + bjs_GPUComputePassEncoder__setPipeline(selfValue, pipelineValue) + if let error = _swift_js_take_exception() { + throw error + } } func _$GPUComputePassEncoder__setBindGroup(_ self: JSObject, _ groupIndex: Int, _ group: GPUBindGroup) throws(JSException) -> Void { - let selfValue = self.bridgeJSLowerParameter() - let groupIndexValue = groupIndex.bridgeJSLowerParameter() - let groupValue = group.bridgeJSLowerParameter() - bjs_GPUComputePassEncoder__setBindGroup(selfValue, groupIndexValue, groupValue) - if let error = _swift_js_take_exception() { - throw error - } -} - -func _$GPUComputePassEncoder__dispatchWorkgroups( - _ self: JSObject, - _ workgroupCountX: Int, - _ workgroupCountY: Int, - _ workgroupCountZ: Int -) throws(JSException) -> Void { - let selfValue = self.bridgeJSLowerParameter() - let workgroupCountXValue = workgroupCountX.bridgeJSLowerParameter() - let workgroupCountYValue = workgroupCountY.bridgeJSLowerParameter() - let workgroupCountZValue = workgroupCountZ.bridgeJSLowerParameter() - bjs_GPUComputePassEncoder__dispatchWorkgroups(selfValue, workgroupCountXValue, workgroupCountYValue, workgroupCountZValue) - if let error = _swift_js_take_exception() { - throw error - } + let selfValue = self.bridgeJSLowerParameter() + let groupIndexValue = groupIndex.bridgeJSLowerParameter() + let groupValue = group.bridgeJSLowerParameter() + bjs_GPUComputePassEncoder__setBindGroup(selfValue, groupIndexValue, groupValue) + if let error = _swift_js_take_exception() { + throw error + } +} + +func _$GPUComputePassEncoder__dispatchWorkgroups(_ self: JSObject, _ workgroupCountX: Int, _ workgroupCountY: Int, _ workgroupCountZ: Int) throws(JSException) -> Void { + let selfValue = self.bridgeJSLowerParameter() + let workgroupCountXValue = workgroupCountX.bridgeJSLowerParameter() + let workgroupCountYValue = workgroupCountY.bridgeJSLowerParameter() + let workgroupCountZValue = workgroupCountZ.bridgeJSLowerParameter() + bjs_GPUComputePassEncoder__dispatchWorkgroups(selfValue, workgroupCountXValue, workgroupCountYValue, workgroupCountZValue) + if let error = _swift_js_take_exception() { + throw error + } } func _$GPUComputePassEncoder__end(_ self: JSObject) throws(JSException) -> Void { - let selfValue = self.bridgeJSLowerParameter() - bjs_GPUComputePassEncoder__end(selfValue) - if let error = _swift_js_take_exception() { - throw error - } + let selfValue = self.bridgeJSLowerParameter() + bjs_GPUComputePassEncoder__end(selfValue) + if let error = _swift_js_take_exception() { + throw error + } } #if arch(wasm32) @_extern(wasm, module: "WebGPUWasm", name: "bjs_GPUComputePipeline_label__set") -fileprivate func bjs_GPUComputePipeline_label__set_extern(_ self: Int32, _ newValueIsSome: Int32, _ newValueValue: Int32) -> Void +fileprivate func bjs_GPUComputePipeline_label__set_extern(_ self: Int32, _ newValueIsSome: Int32, _ newValueBytes: Int32, _ newValueLength: Int32) -> Void #else -fileprivate func bjs_GPUComputePipeline_label__set_extern(_ self: Int32, _ newValueIsSome: Int32, _ newValueValue: Int32) -> Void { - fatalError("Only available on WebAssembly") +fileprivate func bjs_GPUComputePipeline_label__set_extern(_ self: Int32, _ newValueIsSome: Int32, _ newValueBytes: Int32, _ newValueLength: Int32) -> Void { + fatalError("Only available on WebAssembly") } #endif -@inline(never) fileprivate func bjs_GPUComputePipeline_label__set(_ self: Int32, _ newValueIsSome: Int32, _ newValueValue: Int32) -> Void { - return bjs_GPUComputePipeline_label__set_extern(self, newValueIsSome, newValueValue) +@inline(never) fileprivate func bjs_GPUComputePipeline_label__set(_ self: Int32, _ newValueIsSome: Int32, _ newValueBytes: Int32, _ newValueLength: Int32) -> Void { + return bjs_GPUComputePipeline_label__set_extern(self, newValueIsSome, newValueBytes, newValueLength) } func _$GPUComputePipeline_label__set(_ self: JSObject, _ newValue: Optional) throws(JSException) -> Void { - let selfValue = self.bridgeJSLowerParameter() - let (newValueIsSome, newValueValue) = newValue.bridgeJSLowerParameter() - bjs_GPUComputePipeline_label__set(selfValue, newValueIsSome, newValueValue) - if let error = _swift_js_take_exception() { - throw error - } + let selfValue = self.bridgeJSLowerParameter() + newValue.bridgeJSWithLoweredParameter { (newValueIsSome, newValueBytes, newValueLength) in + bjs_GPUComputePipeline_label__set(selfValue, newValueIsSome, newValueBytes, newValueLength) + } + if let error = _swift_js_take_exception() { + throw error + } } #if arch(wasm32) @@ -1813,23 +1734,23 @@ func _$GPUComputePipeline_label__set(_ self: JSObject, _ newValue: Optional Int32 #else fileprivate func bjs_GPUDevice__queue_get_extern(_ self: Int32) -> Int32 { - fatalError("Only available on WebAssembly") + fatalError("Only available on WebAssembly") } #endif @inline(never) fileprivate func bjs_GPUDevice__queue_get(_ self: Int32) -> Int32 { - return bjs_GPUDevice__queue_get_extern(self) + return bjs_GPUDevice__queue_get_extern(self) } #if arch(wasm32) @_extern(wasm, module: "WebGPUWasm", name: "bjs_GPUDevice_label__set") -fileprivate func bjs_GPUDevice_label__set_extern(_ self: Int32, _ newValueIsSome: Int32, _ newValueValue: Int32) -> Void +fileprivate func bjs_GPUDevice_label__set_extern(_ self: Int32, _ newValueIsSome: Int32, _ newValueBytes: Int32, _ newValueLength: Int32) -> Void #else -fileprivate func bjs_GPUDevice_label__set_extern(_ self: Int32, _ newValueIsSome: Int32, _ newValueValue: Int32) -> Void { - fatalError("Only available on WebAssembly") +fileprivate func bjs_GPUDevice_label__set_extern(_ self: Int32, _ newValueIsSome: Int32, _ newValueBytes: Int32, _ newValueLength: Int32) -> Void { + fatalError("Only available on WebAssembly") } #endif -@inline(never) fileprivate func bjs_GPUDevice_label__set(_ self: Int32, _ newValueIsSome: Int32, _ newValueValue: Int32) -> Void { - return bjs_GPUDevice_label__set_extern(self, newValueIsSome, newValueValue) +@inline(never) fileprivate func bjs_GPUDevice_label__set(_ self: Int32, _ newValueIsSome: Int32, _ newValueBytes: Int32, _ newValueLength: Int32) -> Void { + return bjs_GPUDevice_label__set_extern(self, newValueIsSome, newValueBytes, newValueLength) } #if arch(wasm32) @@ -1837,11 +1758,11 @@ fileprivate func bjs_GPUDevice_label__set_extern(_ self: Int32, _ newValueIsSome fileprivate func bjs_GPUDevice__createBuffer_extern(_ self: Int32, _ descriptor: Int32) -> Int32 #else fileprivate func bjs_GPUDevice__createBuffer_extern(_ self: Int32, _ descriptor: Int32) -> Int32 { - fatalError("Only available on WebAssembly") + fatalError("Only available on WebAssembly") } #endif @inline(never) fileprivate func bjs_GPUDevice__createBuffer(_ self: Int32, _ descriptor: Int32) -> Int32 { - return bjs_GPUDevice__createBuffer_extern(self, descriptor) + return bjs_GPUDevice__createBuffer_extern(self, descriptor) } #if arch(wasm32) @@ -1849,11 +1770,11 @@ fileprivate func bjs_GPUDevice__createBuffer_extern(_ self: Int32, _ descriptor: fileprivate func bjs_GPUDevice__createShaderModule_extern(_ self: Int32, _ descriptor: Int32) -> Int32 #else fileprivate func bjs_GPUDevice__createShaderModule_extern(_ self: Int32, _ descriptor: Int32) -> Int32 { - fatalError("Only available on WebAssembly") + fatalError("Only available on WebAssembly") } #endif @inline(never) fileprivate func bjs_GPUDevice__createShaderModule(_ self: Int32, _ descriptor: Int32) -> Int32 { - return bjs_GPUDevice__createShaderModule_extern(self, descriptor) + return bjs_GPUDevice__createShaderModule_extern(self, descriptor) } #if arch(wasm32) @@ -1861,11 +1782,11 @@ fileprivate func bjs_GPUDevice__createShaderModule_extern(_ self: Int32, _ descr fileprivate func bjs_GPUDevice__createRenderPipeline_extern(_ self: Int32, _ descriptor: Int32) -> Int32 #else fileprivate func bjs_GPUDevice__createRenderPipeline_extern(_ self: Int32, _ descriptor: Int32) -> Int32 { - fatalError("Only available on WebAssembly") + fatalError("Only available on WebAssembly") } #endif @inline(never) fileprivate func bjs_GPUDevice__createRenderPipeline(_ self: Int32, _ descriptor: Int32) -> Int32 { - return bjs_GPUDevice__createRenderPipeline_extern(self, descriptor) + return bjs_GPUDevice__createRenderPipeline_extern(self, descriptor) } #if arch(wasm32) @@ -1873,11 +1794,11 @@ fileprivate func bjs_GPUDevice__createRenderPipeline_extern(_ self: Int32, _ des fileprivate func bjs_GPUDevice__createCommandEncoder_extern(_ self: Int32, _ descriptor: Int32) -> Int32 #else fileprivate func bjs_GPUDevice__createCommandEncoder_extern(_ self: Int32, _ descriptor: Int32) -> Int32 { - fatalError("Only available on WebAssembly") + fatalError("Only available on WebAssembly") } #endif @inline(never) fileprivate func bjs_GPUDevice__createCommandEncoder(_ self: Int32, _ descriptor: Int32) -> Int32 { - return bjs_GPUDevice__createCommandEncoder_extern(self, descriptor) + return bjs_GPUDevice__createCommandEncoder_extern(self, descriptor) } #if arch(wasm32) @@ -1885,11 +1806,11 @@ fileprivate func bjs_GPUDevice__createCommandEncoder_extern(_ self: Int32, _ des fileprivate func bjs_GPUDevice__createBindGroupLayout_extern(_ self: Int32, _ descriptor: Int32) -> Int32 #else fileprivate func bjs_GPUDevice__createBindGroupLayout_extern(_ self: Int32, _ descriptor: Int32) -> Int32 { - fatalError("Only available on WebAssembly") + fatalError("Only available on WebAssembly") } #endif @inline(never) fileprivate func bjs_GPUDevice__createBindGroupLayout(_ self: Int32, _ descriptor: Int32) -> Int32 { - return bjs_GPUDevice__createBindGroupLayout_extern(self, descriptor) + return bjs_GPUDevice__createBindGroupLayout_extern(self, descriptor) } #if arch(wasm32) @@ -1897,11 +1818,11 @@ fileprivate func bjs_GPUDevice__createBindGroupLayout_extern(_ self: Int32, _ de fileprivate func bjs_GPUDevice__createBindGroup_extern(_ self: Int32, _ descriptor: Int32) -> Int32 #else fileprivate func bjs_GPUDevice__createBindGroup_extern(_ self: Int32, _ descriptor: Int32) -> Int32 { - fatalError("Only available on WebAssembly") + fatalError("Only available on WebAssembly") } #endif @inline(never) fileprivate func bjs_GPUDevice__createBindGroup(_ self: Int32, _ descriptor: Int32) -> Int32 { - return bjs_GPUDevice__createBindGroup_extern(self, descriptor) + return bjs_GPUDevice__createBindGroup_extern(self, descriptor) } #if arch(wasm32) @@ -1909,11 +1830,11 @@ fileprivate func bjs_GPUDevice__createBindGroup_extern(_ self: Int32, _ descript fileprivate func bjs_GPUDevice__createPipelineLayout_extern(_ self: Int32, _ descriptor: Int32) -> Int32 #else fileprivate func bjs_GPUDevice__createPipelineLayout_extern(_ self: Int32, _ descriptor: Int32) -> Int32 { - fatalError("Only available on WebAssembly") + fatalError("Only available on WebAssembly") } #endif @inline(never) fileprivate func bjs_GPUDevice__createPipelineLayout(_ self: Int32, _ descriptor: Int32) -> Int32 { - return bjs_GPUDevice__createPipelineLayout_extern(self, descriptor) + return bjs_GPUDevice__createPipelineLayout_extern(self, descriptor) } #if arch(wasm32) @@ -1921,151 +1842,144 @@ fileprivate func bjs_GPUDevice__createPipelineLayout_extern(_ self: Int32, _ des fileprivate func bjs_GPUDevice__createComputePipeline_extern(_ self: Int32, _ descriptor: Int32) -> Int32 #else fileprivate func bjs_GPUDevice__createComputePipeline_extern(_ self: Int32, _ descriptor: Int32) -> Int32 { - fatalError("Only available on WebAssembly") + fatalError("Only available on WebAssembly") } #endif @inline(never) fileprivate func bjs_GPUDevice__createComputePipeline(_ self: Int32, _ descriptor: Int32) -> Int32 { - return bjs_GPUDevice__createComputePipeline_extern(self, descriptor) + return bjs_GPUDevice__createComputePipeline_extern(self, descriptor) } func _$GPUDevice__queue_get(_ self: JSObject) throws(JSException) -> GPUQueue { - let selfValue = self.bridgeJSLowerParameter() - let ret = bjs_GPUDevice__queue_get(selfValue) - if let error = _swift_js_take_exception() { - throw error - } - return GPUQueue.bridgeJSLiftReturn(ret) + let selfValue = self.bridgeJSLowerParameter() + let ret = bjs_GPUDevice__queue_get(selfValue) + if let error = _swift_js_take_exception() { + throw error + } + return GPUQueue.bridgeJSLiftReturn(ret) } func _$GPUDevice_label__set(_ self: JSObject, _ newValue: Optional) throws(JSException) -> Void { - let selfValue = self.bridgeJSLowerParameter() - let (newValueIsSome, newValueValue) = newValue.bridgeJSLowerParameter() - bjs_GPUDevice_label__set(selfValue, newValueIsSome, newValueValue) - if let error = _swift_js_take_exception() { - throw error - } + let selfValue = self.bridgeJSLowerParameter() + newValue.bridgeJSWithLoweredParameter { (newValueIsSome, newValueBytes, newValueLength) in + bjs_GPUDevice_label__set(selfValue, newValueIsSome, newValueBytes, newValueLength) + } + if let error = _swift_js_take_exception() { + throw error + } } func _$GPUDevice__createBuffer(_ self: JSObject, _ descriptor: GPUBufferDescriptor) throws(JSException) -> GPUBuffer { - let selfValue = self.bridgeJSLowerParameter() - let descriptorObjectId = descriptor.bridgeJSLowerParameter() - let ret = bjs_GPUDevice__createBuffer(selfValue, descriptorObjectId) - if let error = _swift_js_take_exception() { - throw error - } - return GPUBuffer.bridgeJSLiftReturn(ret) + let selfValue = self.bridgeJSLowerParameter() + let descriptorObjectId = descriptor.bridgeJSLowerParameter() + let ret = bjs_GPUDevice__createBuffer(selfValue, descriptorObjectId) + if let error = _swift_js_take_exception() { + throw error + } + return GPUBuffer.bridgeJSLiftReturn(ret) } func _$GPUDevice__createShaderModule(_ self: JSObject, _ descriptor: GPUShaderModuleDescriptor) throws(JSException) -> GPUShaderModule { - let selfValue = self.bridgeJSLowerParameter() - let descriptorObjectId = descriptor.bridgeJSLowerParameter() - let ret = bjs_GPUDevice__createShaderModule(selfValue, descriptorObjectId) - if let error = _swift_js_take_exception() { - throw error - } - return GPUShaderModule.bridgeJSLiftReturn(ret) -} - -func _$GPUDevice__createRenderPipeline(_ self: JSObject, _ descriptor: GPURenderPipelineDescriptor) throws(JSException) -> GPURenderPipeline -{ - let selfValue = self.bridgeJSLowerParameter() - let descriptorObjectId = descriptor.bridgeJSLowerParameter() - let ret = bjs_GPUDevice__createRenderPipeline(selfValue, descriptorObjectId) - if let error = _swift_js_take_exception() { - throw error - } - return GPURenderPipeline.bridgeJSLiftReturn(ret) -} - -func _$GPUDevice__createCommandEncoder(_ self: JSObject, _ descriptor: GPUCommandEncoderDescriptor) throws(JSException) -> GPUCommandEncoder -{ - let selfValue = self.bridgeJSLowerParameter() - let descriptorObjectId = descriptor.bridgeJSLowerParameter() - let ret = bjs_GPUDevice__createCommandEncoder(selfValue, descriptorObjectId) - if let error = _swift_js_take_exception() { - throw error - } - return GPUCommandEncoder.bridgeJSLiftReturn(ret) -} - -func _$GPUDevice__createBindGroupLayout( - _ self: JSObject, - _ descriptor: GPUBindGroupLayoutDescriptor -) throws(JSException) -> GPUBindGroupLayout { - let selfValue = self.bridgeJSLowerParameter() - let descriptorObjectId = descriptor.bridgeJSLowerParameter() - let ret = bjs_GPUDevice__createBindGroupLayout(selfValue, descriptorObjectId) - if let error = _swift_js_take_exception() { - throw error - } - return GPUBindGroupLayout.bridgeJSLiftReturn(ret) + let selfValue = self.bridgeJSLowerParameter() + let descriptorObjectId = descriptor.bridgeJSLowerParameter() + let ret = bjs_GPUDevice__createShaderModule(selfValue, descriptorObjectId) + if let error = _swift_js_take_exception() { + throw error + } + return GPUShaderModule.bridgeJSLiftReturn(ret) +} + +func _$GPUDevice__createRenderPipeline(_ self: JSObject, _ descriptor: GPURenderPipelineDescriptor) throws(JSException) -> GPURenderPipeline { + let selfValue = self.bridgeJSLowerParameter() + let descriptorObjectId = descriptor.bridgeJSLowerParameter() + let ret = bjs_GPUDevice__createRenderPipeline(selfValue, descriptorObjectId) + if let error = _swift_js_take_exception() { + throw error + } + return GPURenderPipeline.bridgeJSLiftReturn(ret) +} + +func _$GPUDevice__createCommandEncoder(_ self: JSObject, _ descriptor: GPUCommandEncoderDescriptor) throws(JSException) -> GPUCommandEncoder { + let selfValue = self.bridgeJSLowerParameter() + let descriptorObjectId = descriptor.bridgeJSLowerParameter() + let ret = bjs_GPUDevice__createCommandEncoder(selfValue, descriptorObjectId) + if let error = _swift_js_take_exception() { + throw error + } + return GPUCommandEncoder.bridgeJSLiftReturn(ret) +} + +func _$GPUDevice__createBindGroupLayout(_ self: JSObject, _ descriptor: GPUBindGroupLayoutDescriptor) throws(JSException) -> GPUBindGroupLayout { + let selfValue = self.bridgeJSLowerParameter() + let descriptorObjectId = descriptor.bridgeJSLowerParameter() + let ret = bjs_GPUDevice__createBindGroupLayout(selfValue, descriptorObjectId) + if let error = _swift_js_take_exception() { + throw error + } + return GPUBindGroupLayout.bridgeJSLiftReturn(ret) } func _$GPUDevice__createBindGroup(_ self: JSObject, _ descriptor: GPUBindGroupDescriptor) throws(JSException) -> GPUBindGroup { - let selfValue = self.bridgeJSLowerParameter() - let descriptorObjectId = descriptor.bridgeJSLowerParameter() - let ret = bjs_GPUDevice__createBindGroup(selfValue, descriptorObjectId) - if let error = _swift_js_take_exception() { - throw error - } - return GPUBindGroup.bridgeJSLiftReturn(ret) -} - -func _$GPUDevice__createPipelineLayout(_ self: JSObject, _ descriptor: GPUPipelineLayoutDescriptor) throws(JSException) -> GPUPipelineLayout -{ - let selfValue = self.bridgeJSLowerParameter() - let descriptorObjectId = descriptor.bridgeJSLowerParameter() - let ret = bjs_GPUDevice__createPipelineLayout(selfValue, descriptorObjectId) - if let error = _swift_js_take_exception() { - throw error - } - return GPUPipelineLayout.bridgeJSLiftReturn(ret) -} - -func _$GPUDevice__createComputePipeline( - _ self: JSObject, - _ descriptor: GPUComputePipelineDescriptor -) throws(JSException) -> GPUComputePipeline { - let selfValue = self.bridgeJSLowerParameter() - let descriptorObjectId = descriptor.bridgeJSLowerParameter() - let ret = bjs_GPUDevice__createComputePipeline(selfValue, descriptorObjectId) - if let error = _swift_js_take_exception() { - throw error - } - return GPUComputePipeline.bridgeJSLiftReturn(ret) + let selfValue = self.bridgeJSLowerParameter() + let descriptorObjectId = descriptor.bridgeJSLowerParameter() + let ret = bjs_GPUDevice__createBindGroup(selfValue, descriptorObjectId) + if let error = _swift_js_take_exception() { + throw error + } + return GPUBindGroup.bridgeJSLiftReturn(ret) +} + +func _$GPUDevice__createPipelineLayout(_ self: JSObject, _ descriptor: GPUPipelineLayoutDescriptor) throws(JSException) -> GPUPipelineLayout { + let selfValue = self.bridgeJSLowerParameter() + let descriptorObjectId = descriptor.bridgeJSLowerParameter() + let ret = bjs_GPUDevice__createPipelineLayout(selfValue, descriptorObjectId) + if let error = _swift_js_take_exception() { + throw error + } + return GPUPipelineLayout.bridgeJSLiftReturn(ret) +} + +func _$GPUDevice__createComputePipeline(_ self: JSObject, _ descriptor: GPUComputePipelineDescriptor) throws(JSException) -> GPUComputePipeline { + let selfValue = self.bridgeJSLowerParameter() + let descriptorObjectId = descriptor.bridgeJSLowerParameter() + let ret = bjs_GPUDevice__createComputePipeline(selfValue, descriptorObjectId) + if let error = _swift_js_take_exception() { + throw error + } + return GPUComputePipeline.bridgeJSLiftReturn(ret) } #if arch(wasm32) @_extern(wasm, module: "WebGPUWasm", name: "bjs_GPUPipelineLayout_label__set") -fileprivate func bjs_GPUPipelineLayout_label__set_extern(_ self: Int32, _ newValueIsSome: Int32, _ newValueValue: Int32) -> Void +fileprivate func bjs_GPUPipelineLayout_label__set_extern(_ self: Int32, _ newValueIsSome: Int32, _ newValueBytes: Int32, _ newValueLength: Int32) -> Void #else -fileprivate func bjs_GPUPipelineLayout_label__set_extern(_ self: Int32, _ newValueIsSome: Int32, _ newValueValue: Int32) -> Void { - fatalError("Only available on WebAssembly") +fileprivate func bjs_GPUPipelineLayout_label__set_extern(_ self: Int32, _ newValueIsSome: Int32, _ newValueBytes: Int32, _ newValueLength: Int32) -> Void { + fatalError("Only available on WebAssembly") } #endif -@inline(never) fileprivate func bjs_GPUPipelineLayout_label__set(_ self: Int32, _ newValueIsSome: Int32, _ newValueValue: Int32) -> Void { - return bjs_GPUPipelineLayout_label__set_extern(self, newValueIsSome, newValueValue) +@inline(never) fileprivate func bjs_GPUPipelineLayout_label__set(_ self: Int32, _ newValueIsSome: Int32, _ newValueBytes: Int32, _ newValueLength: Int32) -> Void { + return bjs_GPUPipelineLayout_label__set_extern(self, newValueIsSome, newValueBytes, newValueLength) } func _$GPUPipelineLayout_label__set(_ self: JSObject, _ newValue: Optional) throws(JSException) -> Void { - let selfValue = self.bridgeJSLowerParameter() - let (newValueIsSome, newValueValue) = newValue.bridgeJSLowerParameter() - bjs_GPUPipelineLayout_label__set(selfValue, newValueIsSome, newValueValue) - if let error = _swift_js_take_exception() { - throw error - } + let selfValue = self.bridgeJSLowerParameter() + newValue.bridgeJSWithLoweredParameter { (newValueIsSome, newValueBytes, newValueLength) in + bjs_GPUPipelineLayout_label__set(selfValue, newValueIsSome, newValueBytes, newValueLength) + } + if let error = _swift_js_take_exception() { + throw error + } } #if arch(wasm32) @_extern(wasm, module: "WebGPUWasm", name: "bjs_GPUQueue_label__set") -fileprivate func bjs_GPUQueue_label__set_extern(_ self: Int32, _ newValueIsSome: Int32, _ newValueValue: Int32) -> Void +fileprivate func bjs_GPUQueue_label__set_extern(_ self: Int32, _ newValueIsSome: Int32, _ newValueBytes: Int32, _ newValueLength: Int32) -> Void #else -fileprivate func bjs_GPUQueue_label__set_extern(_ self: Int32, _ newValueIsSome: Int32, _ newValueValue: Int32) -> Void { - fatalError("Only available on WebAssembly") +fileprivate func bjs_GPUQueue_label__set_extern(_ self: Int32, _ newValueIsSome: Int32, _ newValueBytes: Int32, _ newValueLength: Int32) -> Void { + fatalError("Only available on WebAssembly") } #endif -@inline(never) fileprivate func bjs_GPUQueue_label__set(_ self: Int32, _ newValueIsSome: Int32, _ newValueValue: Int32) -> Void { - return bjs_GPUQueue_label__set_extern(self, newValueIsSome, newValueValue) +@inline(never) fileprivate func bjs_GPUQueue_label__set(_ self: Int32, _ newValueIsSome: Int32, _ newValueBytes: Int32, _ newValueLength: Int32) -> Void { + return bjs_GPUQueue_label__set_extern(self, newValueIsSome, newValueBytes, newValueLength) } #if arch(wasm32) @@ -2073,11 +1987,11 @@ fileprivate func bjs_GPUQueue_label__set_extern(_ self: Int32, _ newValueIsSome: fileprivate func bjs_GPUQueue__submit_extern(_ self: Int32, _ commandBuffers: Int32) -> Void #else fileprivate func bjs_GPUQueue__submit_extern(_ self: Int32, _ commandBuffers: Int32) -> Void { - fatalError("Only available on WebAssembly") + fatalError("Only available on WebAssembly") } #endif @inline(never) fileprivate func bjs_GPUQueue__submit(_ self: Int32, _ commandBuffers: Int32) -> Void { - return bjs_GPUQueue__submit_extern(self, commandBuffers) + return bjs_GPUQueue__submit_extern(self, commandBuffers) } #if arch(wasm32) @@ -2085,53 +1999,53 @@ fileprivate func bjs_GPUQueue__submit_extern(_ self: Int32, _ commandBuffers: In fileprivate func bjs_GPUQueue__writeBuffer_extern(_ self: Int32, _ buffer: Int32, _ bufferOffset: Int32, _ data: Int32) -> Void #else fileprivate func bjs_GPUQueue__writeBuffer_extern(_ self: Int32, _ buffer: Int32, _ bufferOffset: Int32, _ data: Int32) -> Void { - fatalError("Only available on WebAssembly") + fatalError("Only available on WebAssembly") } #endif @inline(never) fileprivate func bjs_GPUQueue__writeBuffer(_ self: Int32, _ buffer: Int32, _ bufferOffset: Int32, _ data: Int32) -> Void { - return bjs_GPUQueue__writeBuffer_extern(self, buffer, bufferOffset, data) + return bjs_GPUQueue__writeBuffer_extern(self, buffer, bufferOffset, data) } func _$GPUQueue_label__set(_ self: JSObject, _ newValue: Optional) throws(JSException) -> Void { - let selfValue = self.bridgeJSLowerParameter() - let (newValueIsSome, newValueValue) = newValue.bridgeJSLowerParameter() - bjs_GPUQueue_label__set(selfValue, newValueIsSome, newValueValue) - if let error = _swift_js_take_exception() { - throw error - } + let selfValue = self.bridgeJSLowerParameter() + newValue.bridgeJSWithLoweredParameter { (newValueIsSome, newValueBytes, newValueLength) in + bjs_GPUQueue_label__set(selfValue, newValueIsSome, newValueBytes, newValueLength) + } + if let error = _swift_js_take_exception() { + throw error + } } func _$GPUQueue__submit(_ self: JSObject, _ commandBuffers: JSObject) throws(JSException) -> Void { - let selfValue = self.bridgeJSLowerParameter() - let commandBuffersValue = commandBuffers.bridgeJSLowerParameter() - bjs_GPUQueue__submit(selfValue, commandBuffersValue) - if let error = _swift_js_take_exception() { - throw error - } + let selfValue = self.bridgeJSLowerParameter() + let commandBuffersValue = commandBuffers.bridgeJSLowerParameter() + bjs_GPUQueue__submit(selfValue, commandBuffersValue) + if let error = _swift_js_take_exception() { + throw error + } } func _$GPUQueue__writeBuffer(_ self: JSObject, _ buffer: GPUBuffer, _ bufferOffset: Int, _ data: JSObject) throws(JSException) -> Void { - let selfValue = self.bridgeJSLowerParameter() - let bufferValue = buffer.bridgeJSLowerParameter() - let bufferOffsetValue = bufferOffset.bridgeJSLowerParameter() - let dataValue = data.bridgeJSLowerParameter() - bjs_GPUQueue__writeBuffer(selfValue, bufferValue, bufferOffsetValue, dataValue) - if let error = _swift_js_take_exception() { - throw error - } + let selfValue = self.bridgeJSLowerParameter() + let bufferValue = buffer.bridgeJSLowerParameter() + let bufferOffsetValue = bufferOffset.bridgeJSLowerParameter() + let dataValue = data.bridgeJSLowerParameter() + bjs_GPUQueue__writeBuffer(selfValue, bufferValue, bufferOffsetValue, dataValue) + if let error = _swift_js_take_exception() { + throw error + } } #if arch(wasm32) @_extern(wasm, module: "WebGPUWasm", name: "bjs_GPURenderPassEncoder_label__set") -fileprivate func bjs_GPURenderPassEncoder_label__set_extern(_ self: Int32, _ newValueIsSome: Int32, _ newValueValue: Int32) -> Void +fileprivate func bjs_GPURenderPassEncoder_label__set_extern(_ self: Int32, _ newValueIsSome: Int32, _ newValueBytes: Int32, _ newValueLength: Int32) -> Void #else -fileprivate func bjs_GPURenderPassEncoder_label__set_extern(_ self: Int32, _ newValueIsSome: Int32, _ newValueValue: Int32) -> Void { - fatalError("Only available on WebAssembly") +fileprivate func bjs_GPURenderPassEncoder_label__set_extern(_ self: Int32, _ newValueIsSome: Int32, _ newValueBytes: Int32, _ newValueLength: Int32) -> Void { + fatalError("Only available on WebAssembly") } #endif -@inline(never) fileprivate func bjs_GPURenderPassEncoder_label__set(_ self: Int32, _ newValueIsSome: Int32, _ newValueValue: Int32) -> Void -{ - return bjs_GPURenderPassEncoder_label__set_extern(self, newValueIsSome, newValueValue) +@inline(never) fileprivate func bjs_GPURenderPassEncoder_label__set(_ self: Int32, _ newValueIsSome: Int32, _ newValueBytes: Int32, _ newValueLength: Int32) -> Void { + return bjs_GPURenderPassEncoder_label__set_extern(self, newValueIsSome, newValueBytes, newValueLength) } #if arch(wasm32) @@ -2139,11 +2053,11 @@ fileprivate func bjs_GPURenderPassEncoder_label__set_extern(_ self: Int32, _ new fileprivate func bjs_GPURenderPassEncoder__setPipeline_extern(_ self: Int32, _ pipeline: Int32) -> Void #else fileprivate func bjs_GPURenderPassEncoder__setPipeline_extern(_ self: Int32, _ pipeline: Int32) -> Void { - fatalError("Only available on WebAssembly") + fatalError("Only available on WebAssembly") } #endif @inline(never) fileprivate func bjs_GPURenderPassEncoder__setPipeline(_ self: Int32, _ pipeline: Int32) -> Void { - return bjs_GPURenderPassEncoder__setPipeline_extern(self, pipeline) + return bjs_GPURenderPassEncoder__setPipeline_extern(self, pipeline) } #if arch(wasm32) @@ -2151,41 +2065,23 @@ fileprivate func bjs_GPURenderPassEncoder__setPipeline_extern(_ self: Int32, _ p fileprivate func bjs_GPURenderPassEncoder__setVertexBuffer_extern(_ self: Int32, _ slot: Int32, _ buffer: Int32) -> Void #else fileprivate func bjs_GPURenderPassEncoder__setVertexBuffer_extern(_ self: Int32, _ slot: Int32, _ buffer: Int32) -> Void { - fatalError("Only available on WebAssembly") + fatalError("Only available on WebAssembly") } #endif @inline(never) fileprivate func bjs_GPURenderPassEncoder__setVertexBuffer(_ self: Int32, _ slot: Int32, _ buffer: Int32) -> Void { - return bjs_GPURenderPassEncoder__setVertexBuffer_extern(self, slot, buffer) + return bjs_GPURenderPassEncoder__setVertexBuffer_extern(self, slot, buffer) } #if arch(wasm32) @_extern(wasm, module: "WebGPUWasm", name: "bjs_GPURenderPassEncoder__draw") -fileprivate func bjs_GPURenderPassEncoder__draw_extern( - _ self: Int32, - _ vertexCount: Int32, - _ instanceCount: Int32, - _ firstVertex: Int32, - _ firstInstance: Int32 -) -> Void -#else -fileprivate func bjs_GPURenderPassEncoder__draw_extern( - _ self: Int32, - _ vertexCount: Int32, - _ instanceCount: Int32, - _ firstVertex: Int32, - _ firstInstance: Int32 -) -> Void { - fatalError("Only available on WebAssembly") -} -#endif -@inline(never) fileprivate func bjs_GPURenderPassEncoder__draw( - _ self: Int32, - _ vertexCount: Int32, - _ instanceCount: Int32, - _ firstVertex: Int32, - _ firstInstance: Int32 -) -> Void { - return bjs_GPURenderPassEncoder__draw_extern(self, vertexCount, instanceCount, firstVertex, firstInstance) +fileprivate func bjs_GPURenderPassEncoder__draw_extern(_ self: Int32, _ vertexCount: Int32, _ instanceCount: Int32, _ firstVertex: Int32, _ firstInstance: Int32) -> Void +#else +fileprivate func bjs_GPURenderPassEncoder__draw_extern(_ self: Int32, _ vertexCount: Int32, _ instanceCount: Int32, _ firstVertex: Int32, _ firstInstance: Int32) -> Void { + fatalError("Only available on WebAssembly") +} +#endif +@inline(never) fileprivate func bjs_GPURenderPassEncoder__draw(_ self: Int32, _ vertexCount: Int32, _ instanceCount: Int32, _ firstVertex: Int32, _ firstInstance: Int32) -> Void { + return bjs_GPURenderPassEncoder__draw_extern(self, vertexCount, instanceCount, firstVertex, firstInstance) } #if arch(wasm32) @@ -2193,11 +2089,11 @@ fileprivate func bjs_GPURenderPassEncoder__draw_extern( fileprivate func bjs_GPURenderPassEncoder__setBindGroup_extern(_ self: Int32, _ groupIndex: Int32, _ group: Int32) -> Void #else fileprivate func bjs_GPURenderPassEncoder__setBindGroup_extern(_ self: Int32, _ groupIndex: Int32, _ group: Int32) -> Void { - fatalError("Only available on WebAssembly") + fatalError("Only available on WebAssembly") } #endif @inline(never) fileprivate func bjs_GPURenderPassEncoder__setBindGroup(_ self: Int32, _ groupIndex: Int32, _ group: Int32) -> Void { - return bjs_GPURenderPassEncoder__setBindGroup_extern(self, groupIndex, group) + return bjs_GPURenderPassEncoder__setBindGroup_extern(self, groupIndex, group) } #if arch(wasm32) @@ -2205,87 +2101,82 @@ fileprivate func bjs_GPURenderPassEncoder__setBindGroup_extern(_ self: Int32, _ fileprivate func bjs_GPURenderPassEncoder__end_extern(_ self: Int32) -> Void #else fileprivate func bjs_GPURenderPassEncoder__end_extern(_ self: Int32) -> Void { - fatalError("Only available on WebAssembly") + fatalError("Only available on WebAssembly") } #endif @inline(never) fileprivate func bjs_GPURenderPassEncoder__end(_ self: Int32) -> Void { - return bjs_GPURenderPassEncoder__end_extern(self) + return bjs_GPURenderPassEncoder__end_extern(self) } func _$GPURenderPassEncoder_label__set(_ self: JSObject, _ newValue: Optional) throws(JSException) -> Void { - let selfValue = self.bridgeJSLowerParameter() - let (newValueIsSome, newValueValue) = newValue.bridgeJSLowerParameter() - bjs_GPURenderPassEncoder_label__set(selfValue, newValueIsSome, newValueValue) - if let error = _swift_js_take_exception() { - throw error - } + let selfValue = self.bridgeJSLowerParameter() + newValue.bridgeJSWithLoweredParameter { (newValueIsSome, newValueBytes, newValueLength) in + bjs_GPURenderPassEncoder_label__set(selfValue, newValueIsSome, newValueBytes, newValueLength) + } + if let error = _swift_js_take_exception() { + throw error + } } func _$GPURenderPassEncoder__setPipeline(_ self: JSObject, _ pipeline: GPURenderPipeline) throws(JSException) -> Void { - let selfValue = self.bridgeJSLowerParameter() - let pipelineValue = pipeline.bridgeJSLowerParameter() - bjs_GPURenderPassEncoder__setPipeline(selfValue, pipelineValue) - if let error = _swift_js_take_exception() { - throw error - } + let selfValue = self.bridgeJSLowerParameter() + let pipelineValue = pipeline.bridgeJSLowerParameter() + bjs_GPURenderPassEncoder__setPipeline(selfValue, pipelineValue) + if let error = _swift_js_take_exception() { + throw error + } } func _$GPURenderPassEncoder__setVertexBuffer(_ self: JSObject, _ slot: Int, _ buffer: GPUBuffer) throws(JSException) -> Void { - let selfValue = self.bridgeJSLowerParameter() - let slotValue = slot.bridgeJSLowerParameter() - let bufferValue = buffer.bridgeJSLowerParameter() - bjs_GPURenderPassEncoder__setVertexBuffer(selfValue, slotValue, bufferValue) - if let error = _swift_js_take_exception() { - throw error - } -} - -func _$GPURenderPassEncoder__draw( - _ self: JSObject, - _ vertexCount: Int, - _ instanceCount: Int, - _ firstVertex: Int, - _ firstInstance: Int -) throws(JSException) -> Void { - let selfValue = self.bridgeJSLowerParameter() - let vertexCountValue = vertexCount.bridgeJSLowerParameter() - let instanceCountValue = instanceCount.bridgeJSLowerParameter() - let firstVertexValue = firstVertex.bridgeJSLowerParameter() - let firstInstanceValue = firstInstance.bridgeJSLowerParameter() - bjs_GPURenderPassEncoder__draw(selfValue, vertexCountValue, instanceCountValue, firstVertexValue, firstInstanceValue) - if let error = _swift_js_take_exception() { - throw error - } + let selfValue = self.bridgeJSLowerParameter() + let slotValue = slot.bridgeJSLowerParameter() + let bufferValue = buffer.bridgeJSLowerParameter() + bjs_GPURenderPassEncoder__setVertexBuffer(selfValue, slotValue, bufferValue) + if let error = _swift_js_take_exception() { + throw error + } +} + +func _$GPURenderPassEncoder__draw(_ self: JSObject, _ vertexCount: Int, _ instanceCount: Int, _ firstVertex: Int, _ firstInstance: Int) throws(JSException) -> Void { + let selfValue = self.bridgeJSLowerParameter() + let vertexCountValue = vertexCount.bridgeJSLowerParameter() + let instanceCountValue = instanceCount.bridgeJSLowerParameter() + let firstVertexValue = firstVertex.bridgeJSLowerParameter() + let firstInstanceValue = firstInstance.bridgeJSLowerParameter() + bjs_GPURenderPassEncoder__draw(selfValue, vertexCountValue, instanceCountValue, firstVertexValue, firstInstanceValue) + if let error = _swift_js_take_exception() { + throw error + } } func _$GPURenderPassEncoder__setBindGroup(_ self: JSObject, _ groupIndex: Int, _ group: GPUBindGroup) throws(JSException) -> Void { - let selfValue = self.bridgeJSLowerParameter() - let groupIndexValue = groupIndex.bridgeJSLowerParameter() - let groupValue = group.bridgeJSLowerParameter() - bjs_GPURenderPassEncoder__setBindGroup(selfValue, groupIndexValue, groupValue) - if let error = _swift_js_take_exception() { - throw error - } + let selfValue = self.bridgeJSLowerParameter() + let groupIndexValue = groupIndex.bridgeJSLowerParameter() + let groupValue = group.bridgeJSLowerParameter() + bjs_GPURenderPassEncoder__setBindGroup(selfValue, groupIndexValue, groupValue) + if let error = _swift_js_take_exception() { + throw error + } } func _$GPURenderPassEncoder__end(_ self: JSObject) throws(JSException) -> Void { - let selfValue = self.bridgeJSLowerParameter() - bjs_GPURenderPassEncoder__end(selfValue) - if let error = _swift_js_take_exception() { - throw error - } + let selfValue = self.bridgeJSLowerParameter() + bjs_GPURenderPassEncoder__end(selfValue) + if let error = _swift_js_take_exception() { + throw error + } } #if arch(wasm32) @_extern(wasm, module: "WebGPUWasm", name: "bjs_GPURenderPipeline_label__set") -fileprivate func bjs_GPURenderPipeline_label__set_extern(_ self: Int32, _ newValueIsSome: Int32, _ newValueValue: Int32) -> Void +fileprivate func bjs_GPURenderPipeline_label__set_extern(_ self: Int32, _ newValueIsSome: Int32, _ newValueBytes: Int32, _ newValueLength: Int32) -> Void #else -fileprivate func bjs_GPURenderPipeline_label__set_extern(_ self: Int32, _ newValueIsSome: Int32, _ newValueValue: Int32) -> Void { - fatalError("Only available on WebAssembly") +fileprivate func bjs_GPURenderPipeline_label__set_extern(_ self: Int32, _ newValueIsSome: Int32, _ newValueBytes: Int32, _ newValueLength: Int32) -> Void { + fatalError("Only available on WebAssembly") } #endif -@inline(never) fileprivate func bjs_GPURenderPipeline_label__set(_ self: Int32, _ newValueIsSome: Int32, _ newValueValue: Int32) -> Void { - return bjs_GPURenderPipeline_label__set_extern(self, newValueIsSome, newValueValue) +@inline(never) fileprivate func bjs_GPURenderPipeline_label__set(_ self: Int32, _ newValueIsSome: Int32, _ newValueBytes: Int32, _ newValueLength: Int32) -> Void { + return bjs_GPURenderPipeline_label__set_extern(self, newValueIsSome, newValueBytes, newValueLength) } #if arch(wasm32) @@ -2293,51 +2184,53 @@ fileprivate func bjs_GPURenderPipeline_label__set_extern(_ self: Int32, _ newVal fileprivate func bjs_GPURenderPipeline__getBindGroupLayout_extern(_ self: Int32, _ index: Int32) -> Int32 #else fileprivate func bjs_GPURenderPipeline__getBindGroupLayout_extern(_ self: Int32, _ index: Int32) -> Int32 { - fatalError("Only available on WebAssembly") + fatalError("Only available on WebAssembly") } #endif @inline(never) fileprivate func bjs_GPURenderPipeline__getBindGroupLayout(_ self: Int32, _ index: Int32) -> Int32 { - return bjs_GPURenderPipeline__getBindGroupLayout_extern(self, index) + return bjs_GPURenderPipeline__getBindGroupLayout_extern(self, index) } func _$GPURenderPipeline_label__set(_ self: JSObject, _ newValue: Optional) throws(JSException) -> Void { - let selfValue = self.bridgeJSLowerParameter() - let (newValueIsSome, newValueValue) = newValue.bridgeJSLowerParameter() - bjs_GPURenderPipeline_label__set(selfValue, newValueIsSome, newValueValue) - if let error = _swift_js_take_exception() { - throw error - } + let selfValue = self.bridgeJSLowerParameter() + newValue.bridgeJSWithLoweredParameter { (newValueIsSome, newValueBytes, newValueLength) in + bjs_GPURenderPipeline_label__set(selfValue, newValueIsSome, newValueBytes, newValueLength) + } + if let error = _swift_js_take_exception() { + throw error + } } func _$GPURenderPipeline__getBindGroupLayout(_ self: JSObject, _ index: Int) throws(JSException) -> GPUBindGroupLayout { - let selfValue = self.bridgeJSLowerParameter() - let indexValue = index.bridgeJSLowerParameter() - let ret = bjs_GPURenderPipeline__getBindGroupLayout(selfValue, indexValue) - if let error = _swift_js_take_exception() { - throw error - } - return GPUBindGroupLayout.bridgeJSLiftReturn(ret) + let selfValue = self.bridgeJSLowerParameter() + let indexValue = index.bridgeJSLowerParameter() + let ret = bjs_GPURenderPipeline__getBindGroupLayout(selfValue, indexValue) + if let error = _swift_js_take_exception() { + throw error + } + return GPUBindGroupLayout.bridgeJSLiftReturn(ret) } #if arch(wasm32) @_extern(wasm, module: "WebGPUWasm", name: "bjs_GPUShaderModule_label__set") -fileprivate func bjs_GPUShaderModule_label__set_extern(_ self: Int32, _ newValueIsSome: Int32, _ newValueValue: Int32) -> Void +fileprivate func bjs_GPUShaderModule_label__set_extern(_ self: Int32, _ newValueIsSome: Int32, _ newValueBytes: Int32, _ newValueLength: Int32) -> Void #else -fileprivate func bjs_GPUShaderModule_label__set_extern(_ self: Int32, _ newValueIsSome: Int32, _ newValueValue: Int32) -> Void { - fatalError("Only available on WebAssembly") +fileprivate func bjs_GPUShaderModule_label__set_extern(_ self: Int32, _ newValueIsSome: Int32, _ newValueBytes: Int32, _ newValueLength: Int32) -> Void { + fatalError("Only available on WebAssembly") } #endif -@inline(never) fileprivate func bjs_GPUShaderModule_label__set(_ self: Int32, _ newValueIsSome: Int32, _ newValueValue: Int32) -> Void { - return bjs_GPUShaderModule_label__set_extern(self, newValueIsSome, newValueValue) +@inline(never) fileprivate func bjs_GPUShaderModule_label__set(_ self: Int32, _ newValueIsSome: Int32, _ newValueBytes: Int32, _ newValueLength: Int32) -> Void { + return bjs_GPUShaderModule_label__set_extern(self, newValueIsSome, newValueBytes, newValueLength) } func _$GPUShaderModule_label__set(_ self: JSObject, _ newValue: Optional) throws(JSException) -> Void { - let selfValue = self.bridgeJSLowerParameter() - let (newValueIsSome, newValueValue) = newValue.bridgeJSLowerParameter() - bjs_GPUShaderModule_label__set(selfValue, newValueIsSome, newValueValue) - if let error = _swift_js_take_exception() { - throw error - } + let selfValue = self.bridgeJSLowerParameter() + newValue.bridgeJSWithLoweredParameter { (newValueIsSome, newValueBytes, newValueLength) in + bjs_GPUShaderModule_label__set(selfValue, newValueIsSome, newValueBytes, newValueLength) + } + if let error = _swift_js_take_exception() { + throw error + } } #if arch(wasm32) @@ -2345,23 +2238,23 @@ func _$GPUShaderModule_label__set(_ self: JSObject, _ newValue: Optional fileprivate func bjs_GPUTexture__format_get_extern(_ self: Int32) -> Int32 #else fileprivate func bjs_GPUTexture__format_get_extern(_ self: Int32) -> Int32 { - fatalError("Only available on WebAssembly") + fatalError("Only available on WebAssembly") } #endif @inline(never) fileprivate func bjs_GPUTexture__format_get(_ self: Int32) -> Int32 { - return bjs_GPUTexture__format_get_extern(self) + return bjs_GPUTexture__format_get_extern(self) } #if arch(wasm32) @_extern(wasm, module: "WebGPUWasm", name: "bjs_GPUTexture_label__set") -fileprivate func bjs_GPUTexture_label__set_extern(_ self: Int32, _ newValueIsSome: Int32, _ newValueValue: Int32) -> Void +fileprivate func bjs_GPUTexture_label__set_extern(_ self: Int32, _ newValueIsSome: Int32, _ newValueBytes: Int32, _ newValueLength: Int32) -> Void #else -fileprivate func bjs_GPUTexture_label__set_extern(_ self: Int32, _ newValueIsSome: Int32, _ newValueValue: Int32) -> Void { - fatalError("Only available on WebAssembly") +fileprivate func bjs_GPUTexture_label__set_extern(_ self: Int32, _ newValueIsSome: Int32, _ newValueBytes: Int32, _ newValueLength: Int32) -> Void { + fatalError("Only available on WebAssembly") } #endif -@inline(never) fileprivate func bjs_GPUTexture_label__set(_ self: Int32, _ newValueIsSome: Int32, _ newValueValue: Int32) -> Void { - return bjs_GPUTexture_label__set_extern(self, newValueIsSome, newValueValue) +@inline(never) fileprivate func bjs_GPUTexture_label__set(_ self: Int32, _ newValueIsSome: Int32, _ newValueBytes: Int32, _ newValueLength: Int32) -> Void { + return bjs_GPUTexture_label__set_extern(self, newValueIsSome, newValueBytes, newValueLength) } #if arch(wasm32) @@ -2369,11 +2262,11 @@ fileprivate func bjs_GPUTexture_label__set_extern(_ self: Int32, _ newValueIsSom fileprivate func bjs_GPUTexture__createView_extern(_ self: Int32) -> Int32 #else fileprivate func bjs_GPUTexture__createView_extern(_ self: Int32) -> Int32 { - fatalError("Only available on WebAssembly") + fatalError("Only available on WebAssembly") } #endif @inline(never) fileprivate func bjs_GPUTexture__createView(_ self: Int32) -> Int32 { - return bjs_GPUTexture__createView_extern(self) + return bjs_GPUTexture__createView_extern(self) } #if arch(wasm32) @@ -2381,65 +2274,67 @@ fileprivate func bjs_GPUTexture__createView_extern(_ self: Int32) -> Int32 { fileprivate func bjs_GPUTexture__destroy_extern(_ self: Int32) -> Void #else fileprivate func bjs_GPUTexture__destroy_extern(_ self: Int32) -> Void { - fatalError("Only available on WebAssembly") + fatalError("Only available on WebAssembly") } #endif @inline(never) fileprivate func bjs_GPUTexture__destroy(_ self: Int32) -> Void { - return bjs_GPUTexture__destroy_extern(self) + return bjs_GPUTexture__destroy_extern(self) } func _$GPUTexture__format_get(_ self: JSObject) throws(JSException) -> String { - let selfValue = self.bridgeJSLowerParameter() - let ret = bjs_GPUTexture__format_get(selfValue) - if let error = _swift_js_take_exception() { - throw error - } - return String.bridgeJSLiftReturn(ret) + let selfValue = self.bridgeJSLowerParameter() + let ret = bjs_GPUTexture__format_get(selfValue) + if let error = _swift_js_take_exception() { + throw error + } + return String.bridgeJSLiftReturn(ret) } func _$GPUTexture_label__set(_ self: JSObject, _ newValue: Optional) throws(JSException) -> Void { - let selfValue = self.bridgeJSLowerParameter() - let (newValueIsSome, newValueValue) = newValue.bridgeJSLowerParameter() - bjs_GPUTexture_label__set(selfValue, newValueIsSome, newValueValue) - if let error = _swift_js_take_exception() { - throw error - } + let selfValue = self.bridgeJSLowerParameter() + newValue.bridgeJSWithLoweredParameter { (newValueIsSome, newValueBytes, newValueLength) in + bjs_GPUTexture_label__set(selfValue, newValueIsSome, newValueBytes, newValueLength) + } + if let error = _swift_js_take_exception() { + throw error + } } func _$GPUTexture__createView(_ self: JSObject) throws(JSException) -> GPUTextureView { - let selfValue = self.bridgeJSLowerParameter() - let ret = bjs_GPUTexture__createView(selfValue) - if let error = _swift_js_take_exception() { - throw error - } - return GPUTextureView.bridgeJSLiftReturn(ret) + let selfValue = self.bridgeJSLowerParameter() + let ret = bjs_GPUTexture__createView(selfValue) + if let error = _swift_js_take_exception() { + throw error + } + return GPUTextureView.bridgeJSLiftReturn(ret) } func _$GPUTexture__destroy(_ self: JSObject) throws(JSException) -> Void { - let selfValue = self.bridgeJSLowerParameter() - bjs_GPUTexture__destroy(selfValue) - if let error = _swift_js_take_exception() { - throw error - } + let selfValue = self.bridgeJSLowerParameter() + bjs_GPUTexture__destroy(selfValue) + if let error = _swift_js_take_exception() { + throw error + } } #if arch(wasm32) @_extern(wasm, module: "WebGPUWasm", name: "bjs_GPUTextureView_label__set") -fileprivate func bjs_GPUTextureView_label__set_extern(_ self: Int32, _ newValueIsSome: Int32, _ newValueValue: Int32) -> Void +fileprivate func bjs_GPUTextureView_label__set_extern(_ self: Int32, _ newValueIsSome: Int32, _ newValueBytes: Int32, _ newValueLength: Int32) -> Void #else -fileprivate func bjs_GPUTextureView_label__set_extern(_ self: Int32, _ newValueIsSome: Int32, _ newValueValue: Int32) -> Void { - fatalError("Only available on WebAssembly") +fileprivate func bjs_GPUTextureView_label__set_extern(_ self: Int32, _ newValueIsSome: Int32, _ newValueBytes: Int32, _ newValueLength: Int32) -> Void { + fatalError("Only available on WebAssembly") } #endif -@inline(never) fileprivate func bjs_GPUTextureView_label__set(_ self: Int32, _ newValueIsSome: Int32, _ newValueValue: Int32) -> Void { - return bjs_GPUTextureView_label__set_extern(self, newValueIsSome, newValueValue) +@inline(never) fileprivate func bjs_GPUTextureView_label__set(_ self: Int32, _ newValueIsSome: Int32, _ newValueBytes: Int32, _ newValueLength: Int32) -> Void { + return bjs_GPUTextureView_label__set_extern(self, newValueIsSome, newValueBytes, newValueLength) } func _$GPUTextureView_label__set(_ self: JSObject, _ newValue: Optional) throws(JSException) -> Void { - let selfValue = self.bridgeJSLowerParameter() - let (newValueIsSome, newValueValue) = newValue.bridgeJSLowerParameter() - bjs_GPUTextureView_label__set(selfValue, newValueIsSome, newValueValue) - if let error = _swift_js_take_exception() { - throw error - } -} + let selfValue = self.bridgeJSLowerParameter() + newValue.bridgeJSWithLoweredParameter { (newValueIsSome, newValueBytes, newValueLength) in + bjs_GPUTextureView_label__set(selfValue, newValueIsSome, newValueBytes, newValueLength) + } + if let error = _swift_js_take_exception() { + throw error + } +} \ No newline at end of file From b982726782a7ffb1a33c41d11411e0ce77169241 Mon Sep 17 00:00:00 2001 From: Nils Krueger Date: Fri, 13 Mar 2026 14:34:02 +0100 Subject: [PATCH 08/26] update github action --- .github/workflows/swift-wasm.yaml | 22 +++------------------- 1 file changed, 3 insertions(+), 19 deletions(-) diff --git a/.github/workflows/swift-wasm.yaml b/.github/workflows/swift-wasm.yaml index e79421d..9d8ee70 100644 --- a/.github/workflows/swift-wasm.yaml +++ b/.github/workflows/swift-wasm.yaml @@ -24,27 +24,11 @@ jobs: swift-version: "${{ steps.swift-version.outputs.version }}" skip-verify-signature: true - - name: Read WASM SDK version - id: wasm-sdk - run: | - source .wasm-sdk-versions - sdk="$CI" - tag="swift-wasm-${sdk%-wasm32-*}" - url="https://github.com/swiftwasm/swift/releases/download/${tag}/swift-wasm-${sdk}.artifactbundle.zip" - echo "version=${sdk}" >> "$GITHUB_OUTPUT" - echo "url=${url}" >> "$GITHUB_OUTPUT" - - name: Install Swift WASM SDK - run: | - checksum=$(curl -sL "${{ steps.wasm-sdk.outputs.url }}.sha256" | awk '{ print $1 }') - swift sdk install "${{ steps.wasm-sdk.outputs.url }}" --checksum "$checksum" + run: make sdk-install - name: Build WebGPU - run: > - SWAN_WASM=1 swift build --target WebGPU - --swift-sdk "${{ steps.wasm-sdk.outputs.version }}" + run: make wasm-build - name: Build BitonicSort - run: > - SWAN_WASM=1 swift build --target BitonicSort - --swift-sdk "${{ steps.wasm-sdk.outputs.version }}" + run: make wasm-build-bitonic From bf587a3283f5bf14d095f76fbcbcc54320b9075c Mon Sep 17 00:00:00 2001 From: Nils Krueger Date: Fri, 13 Mar 2026 14:40:01 +0100 Subject: [PATCH 09/26] fix --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 1d5affb..e3aafeb 100644 --- a/Makefile +++ b/Makefile @@ -119,6 +119,6 @@ wasm-all: clean wasm-build ## Clean + full WASM build wasm-build-bitonic: wasm-build-bridgejs ## WASM build BitonicSort, depends on bridgejs (SWIFT_MODE, DEBUG) SWAN_WASM=1 swift build --swift-sdk $(SWIFT_SDK) --target BitonicSort -c $(BUILD_CONFIG) -.PHONY: wasm-demo-bitonic +.PHONY: wasm-run-bitonic wasm-run-bitonic: wasm-build-bitonic ## Build and serve BitonicSort WASM demo (SWIFT_MODE) SWAN_WASM=1 swift package --swift-sdk $(SWIFT_SDK) js --product BitonicSort -c $(BUILD_CONFIG) && pnpx serve . From c9358c8f770b42638e2385fed227c33c183bc5bb Mon Sep 17 00:00:00 2001 From: Nils Krueger Date: Fri, 13 Mar 2026 14:52:49 +0100 Subject: [PATCH 10/26] remove package json scripts --- package.json | 15 --------------- 1 file changed, 15 deletions(-) diff --git a/package.json b/package.json index 627e31c..dd383e9 100644 --- a/package.json +++ b/package.json @@ -6,21 +6,6 @@ "config": { "swift_sdk_wasm": "swift-6.3-DEVELOPMENT-SNAPSHOT-2026-02-14-a_wasm" }, - "scripts": { - "swift-setup": "swiftly install && swiftly use", - "build": "swift build", - "build:release": "swift build -c release", - "wasm:build": "SWAN_WASM=1 swift build --target WebGPU --swift-sdk $npm_package_config_swift_sdk_wasm", - "wasm:build:bridgejs": "SWAN_WASM=1 swift package plugin --allow-writing-to-package-directory bridge-js", - "wasm:demo:bitonic": "SWAN_WASM=1 swift package --swift-sdk $npm_package_config_swift_sdk_wasm js --product BitonicSort && pnpx serve .", - "test": "swift test", - "generate:apinotes": "swift package --allow-writing-to-package-directory generate-dawn-apinotes", - "demo:gameoflife": "swift run GameOfLife", - "demo:bitonic": "swift run BitonicSort", - "format": "swift format --in-place --recursive Sources Tests Demos", - "clean": "swift package clean", - "resolve": "swift package resolve" - }, "dependencies": { "typescript": "5.9.3" } From 11172057a9472a8ac3365b3248759ba1713ca546 Mon Sep 17 00:00:00 2001 From: Nils Krueger Date: Mon, 16 Mar 2026 12:43:37 +0100 Subject: [PATCH 11/26] update JSKit --- Package.resolved | 6 +++--- Package.swift | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/Package.resolved b/Package.resolved index f93c6d1..934ec73 100644 --- a/Package.resolved +++ b/Package.resolved @@ -1,13 +1,13 @@ { - "originHash" : "95e131b9e1c8d54eb62e77d24ab8ca2b4c4bdc80b4dad8e167d08c8f94c1e866", + "originHash" : "2528a56517507a4277b164bcc23c708c6d16e197f8995eb55d3f3488fb865f27", "pins" : [ { "identity" : "javascriptkit", "kind" : "remoteSourceControl", "location" : "https://github.com/swiftwasm/JavaScriptKit.git", "state" : { - "revision" : "ba66ff1f8bc662ea04826ceadd3b1fe13c207be2", - "version" : "0.47.0" + "revision" : "1f54ba6b17f4d0f378f671210f7121a29996159e", + "version" : "0.47.1" } }, { diff --git a/Package.swift b/Package.swift index 129f341..78c839a 100644 --- a/Package.swift +++ b/Package.swift @@ -86,7 +86,7 @@ let package = Package( ), ]), dependencies: [ - .package(url: "https://github.com/swiftwasm/JavaScriptKit.git", from: "0.47.0"), + .package(url: "https://github.com/swiftwasm/JavaScriptKit.git", from: "0.47.1"), .package( url: "https://github.com/swiftlang/swift-testing.git", from: "6.2.4" From 1b9afc3a617479a19c52194d9e4a1ff5cef44479 Mon Sep 17 00:00:00 2001 From: Nils Krueger Date: Mon, 16 Mar 2026 12:46:21 +0100 Subject: [PATCH 12/26] resolve after merge --- Package.resolved | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Package.resolved b/Package.resolved index 2b6521f..21e02c2 100644 --- a/Package.resolved +++ b/Package.resolved @@ -1,5 +1,5 @@ { - "originHash" : "7b71310e710b326e14f241e0c79afee16bbb8c26462ff81fdfc16edbe3197ac7", + "originHash" : "379ce83eac05bc2e3633c9a8cbccf4d183ccd0b220a03eaedc3d396302f3e89d", "pins" : [ { "identity" : "javascriptkit", From 713cf0387d8755a6612e537ef9d21e29cf13c327 Mon Sep 17 00:00:00 2001 From: Nils Krueger Date: Wed, 18 Mar 2026 10:19:43 +0100 Subject: [PATCH 13/26] include swiftUnicodeDataTables via linkerSettings --- Package.swift | 488 +++++++++--------- Sources/EmbeddedStubs/include/EmbeddedStubs.h | 13 - Sources/EmbeddedStubs/stubs.c | 23 - 3 files changed, 247 insertions(+), 277 deletions(-) delete mode 100644 Sources/EmbeddedStubs/include/EmbeddedStubs.h delete mode 100644 Sources/EmbeddedStubs/stubs.c diff --git a/Package.swift b/Package.swift index 0853a69..28b0812 100644 --- a/Package.swift +++ b/Package.swift @@ -84,253 +84,259 @@ let package = Package( .library( name: "WebGPU", targets: ["WebGPU"] - ), - ] + (isWasmBuild ? [] : [ - .plugin( - name: "GenerateDawnBindingsPlugin", - targets: ["GenerateDawnBindingsPlugin"] - ), - .plugin( - name: "GenerateDawnAPINotesPlugin", - targets: ["GenerateDawnAPINotesPlugin"] - ), - ]), + ) + ] + + (isWasmBuild + ? [] + : [ + .plugin( + name: "GenerateDawnBindingsPlugin", + targets: ["GenerateDawnBindingsPlugin"] + ), + .plugin( + name: "GenerateDawnAPINotesPlugin", + targets: ["GenerateDawnAPINotesPlugin"] + ), + ]), dependencies: [ .package(url: "https://github.com/swiftwasm/JavaScriptKit.git", from: "0.47.1"), .package(url: "https://github.com/apple/swift-argument-parser.git", from: "1.7.0"), .package(url: "https://github.com/swiftlang/swift-syntax.git", from: "602.0.0"), .package(url: "https://github.com/swiftlang/swift-format.git", from: "602.0.0"), - ] + (buildMacOS14 ? [] : [ - .package( - url: "https://github.com/swiftlang/swift-testing.git", - from: "6.2.4" - ), - ]), - targets: isWasmBuild ? [ - .target( - name: "EmbeddedStubs", - path: "Sources/EmbeddedStubs" - ), - .target( - name: "WebGPUWasm", - dependencies: [ - .product(name: "JavaScriptKit", package: "JavaScriptKit") - ], - path: "Sources/WebGPU/Wasm", - exclude: [ - "Generated/README.md", - "Generated/JavaScript", - "bridge-js.config.json", - ], - swiftSettings: swiftSettings + [ - .enableExperimentalFeature("Extern"), - .treatWarning("EmbeddedRestrictions", as: .warning), - ], - linkerSettings: asanLinkerSettings - ), - .target( - name: "WebGPU", - dependencies: [ - .target(name: "WebGPUWasm", condition: .when(platforms: wasmPlatforms)), - ], - exclude: [ - "Dawn", - "Wasm", - ], - swiftSettings: swiftSettings + [.treatWarning("EmbeddedRestrictions", as: .warning)], - linkerSettings: asanLinkerSettings - ), - .executableTarget( - name: "BitonicSort", - dependencies: [ - .target(name: "WebGPU"), - .target(name: "WebGPUWasm"), - .target(name: "EmbeddedStubs"), - ], - path: "Demos/BitonicSort", - exclude: ["index.html"], - swiftSettings: swiftSettings + [.enableExperimentalFeature("Extern")], - plugins: [.plugin(name: "BridgeJS", package: "JavaScriptKit")] - ), - ] : [ - dawnTarget, - .executableTarget( - name: "GenerateDawnBindings", - dependencies: [ - .product(name: "ArgumentParser", package: "swift-argument-parser"), - .product(name: "SwiftSyntax", package: "swift-syntax"), - .product(name: "SwiftSyntaxBuilder", package: "swift-syntax"), - .product(name: "SwiftBasicFormat", package: "swift-syntax"), - .product(name: "SwiftFormat", package: "swift-format"), - "DawnData", - ], - exclude: [ - "README.md" - ], - swiftSettings: swiftSettings, - linkerSettings: asanLinkerSettings - ), - .executableTarget( - name: "GenerateDawnAPINotes", - dependencies: [ - "DawnData", - ], - exclude: [ - "README.md" - ], - swiftSettings: swiftSettings, - linkerSettings: asanLinkerSettings - ), - .plugin( - name: "GenerateDawnBindingsPlugin", - capability: .buildTool(), - dependencies: [ - "GenerateDawnBindings" - ] - ), - .plugin( - name: "GenerateDawnAPINotesPlugin", - capability: .command( - intent: .custom( - verb: "generate-dawn-apinotes", - description: "Generate Dawn APINotes from dawn.json" + ] + + (buildMacOS14 + ? [] + : [ + .package( + url: "https://github.com/swiftlang/swift-testing.git", + from: "6.2.4" + ) + ]), + targets: isWasmBuild + ? [ + .target( + name: "WebGPUWasm", + dependencies: [ + .product(name: "JavaScriptKit", package: "JavaScriptKit") + ], + path: "Sources/WebGPU/Wasm", + exclude: [ + "Generated/README.md", + "Generated/JavaScript", + "bridge-js.config.json", + ], + swiftSettings: swiftSettings + [ + .enableExperimentalFeature("Extern"), + .treatWarning("EmbeddedRestrictions", as: .warning), + ], + linkerSettings: asanLinkerSettings + ), + .target( + name: "WebGPU", + dependencies: [ + .target(name: "WebGPUWasm", condition: .when(platforms: wasmPlatforms)) + ], + exclude: [ + "Dawn", + "Wasm", + ], + swiftSettings: swiftSettings + [.treatWarning("EmbeddedRestrictions", as: .warning)], + linkerSettings: asanLinkerSettings + [.linkedLibrary("swiftUnicodeDataTables")], + ), + .executableTarget( + name: "BitonicSort", + dependencies: [ + .target(name: "WebGPU"), + .target(name: "WebGPUWasm"), + ], + path: "Demos/BitonicSort", + exclude: ["index.html"], + swiftSettings: swiftSettings + [.enableExperimentalFeature("Extern")], + plugins: [.plugin(name: "BridgeJS", package: "JavaScriptKit")] + ), + ] + : [ + dawnTarget, + .executableTarget( + name: "GenerateDawnBindings", + dependencies: [ + .product(name: "ArgumentParser", package: "swift-argument-parser"), + .product(name: "SwiftSyntax", package: "swift-syntax"), + .product(name: "SwiftSyntaxBuilder", package: "swift-syntax"), + .product(name: "SwiftBasicFormat", package: "swift-syntax"), + .product(name: "SwiftFormat", package: "swift-format"), + "DawnData", + ], + exclude: [ + "README.md" + ], + swiftSettings: swiftSettings, + linkerSettings: asanLinkerSettings + ), + .executableTarget( + name: "GenerateDawnAPINotes", + dependencies: [ + "DawnData" + ], + exclude: [ + "README.md" + ], + swiftSettings: swiftSettings, + linkerSettings: asanLinkerSettings + ), + .plugin( + name: "GenerateDawnBindingsPlugin", + capability: .buildTool(), + dependencies: [ + "GenerateDawnBindings" + ] + ), + .plugin( + name: "GenerateDawnAPINotesPlugin", + capability: .command( + intent: .custom( + verb: "generate-dawn-apinotes", + description: "Generate Dawn APINotes from dawn.json" + ), + permissions: [ + .writeToPackageDirectory(reason: "Generate APINotes file") + ] ), - permissions: [ - .writeToPackageDirectory(reason: "Generate APINotes file") + dependencies: [ + "GenerateDawnAPINotes" ] ), - dependencies: [ - "GenerateDawnAPINotes" - ] - ), - .target( - name: "CDawn", - dependencies: [ - "DawnLib" - ], - cxxSettings: [ - .unsafeFlags(["-std=c++23"]) - ], - swiftSettings: swiftSettings, - linkerSettings: asanLinkerSettings - ), - .target( - name: "DawnData", - dependencies: [ - "DawnLib", - ], - swiftSettings: swiftSettings, - linkerSettings: asanLinkerSettings - ), - .target( - name: "Dawn", - dependencies: [ - "CDawn", - "DawnLib", - "GenerateDawnBindingsPlugin", - ], - swiftSettings: swiftSettings, - linkerSettings: asanLinkerSettings - ), - .target( - name: "WebGPUDawn", - dependencies: [ - // WebGPUCore or similar core library for shared protocols and types ? - "Dawn" - ], - path: "Sources/WebGPU/Dawn", - swiftSettings: swiftSettings, - linkerSettings: asanLinkerSettings - ), - .target( - name: "WebGPU", - dependencies: [ - .target(name: "WebGPUDawn", condition: .when(platforms: supportedNativePlatforms)), - ], - exclude: [ - "Dawn", - "Wasm", - ], - swiftSettings: swiftSettings + [.treatWarning("EmbeddedRestrictions", as: .warning)], - linkerSettings: asanLinkerSettings - ), - .target( - name: "RGFW", - path: "Demos/RGFW", - swiftSettings: swiftSettings, - linkerSettings: asanLinkerSettings - ), - .target( - name: "DemoUtils", - dependencies: [ - "RGFW", - "WebGPU", - ], - path: "Demos/DemoUtils", - swiftSettings: swiftSettings, - linkerSettings: asanLinkerSettings + [ - .linkedLibrary("dxgi", .when(platforms: [.windows])), - .linkedLibrary("d3d12", .when(platforms: [.windows])), - .linkedLibrary("dxguid", .when(platforms: [.windows])), - ] - ), - .executableTarget( - name: "GameOfLife", - dependencies: [ - "DemoUtils" - ], - path: "Demos/GameOfLife", - swiftSettings: swiftSettings, - linkerSettings: asanLinkerSettings + [ - .linkedFramework("Cocoa", .when(platforms: [.macOS])), - .linkedFramework("IOKit", .when(platforms: [.macOS])), - .linkedFramework("Metal", .when(platforms: [.macOS])), - .linkedLibrary("c++", .when(platforms: [.macOS])), - ] - ), - .executableTarget( - name: "BitonicSort", - dependencies: [ - .target(name: "DemoUtils") - ], - path: "Demos/BitonicSort", - exclude: ["index.html"], - swiftSettings: swiftSettings, - linkerSettings: asanLinkerSettings + [ - .linkedFramework("Cocoa", .when(platforms: [.macOS])), - .linkedFramework("IOKit", .when(platforms: [.macOS])), - .linkedFramework("Metal", .when(platforms: [.macOS])), - .linkedLibrary("c++", .when(platforms: [.macOS])), - ] - ), - ] + (buildMacOS14 ? [] : [ - // swift-testing uses unsafe build flags which SPM rejects when targeting macOS 14. - // Test targets are excluded under BUILD_MACOS14 to avoid this. - .testTarget( - name: "CodeGenerationTests", - dependencies: [ - "GenerateDawnBindings", - "GenerateDawnAPINotes", - .product(name: "Testing", package: "swift-testing"), - ], - swiftSettings: swiftSettings, - linkerSettings: asanLinkerSettings - ), - .testTarget( - name: "DawnTests", - dependencies: [ - "WebGPU", - .product(name: "Testing", package: "swift-testing"), - ], - swiftSettings: swiftSettings, - linkerSettings: asanLinkerSettings + [ - .linkedFramework("IOSurface", .when(platforms: [.macOS])), - .linkedFramework("Metal", .when(platforms: [.macOS])), - .linkedFramework("QuartzCore", .when(platforms: [.macOS])), - .linkedLibrary("dxgi", .when(platforms: [.windows])), - .linkedLibrary("d3d12", .when(platforms: [.windows])), - .linkedLibrary("dxguid", .when(platforms: [.windows])), - ] - ), - ]) + .target( + name: "CDawn", + dependencies: [ + "DawnLib" + ], + cxxSettings: [ + .unsafeFlags(["-std=c++23"]) + ], + swiftSettings: swiftSettings, + linkerSettings: asanLinkerSettings + ), + .target( + name: "DawnData", + dependencies: [ + "DawnLib" + ], + swiftSettings: swiftSettings, + linkerSettings: asanLinkerSettings + ), + .target( + name: "Dawn", + dependencies: [ + "CDawn", + "DawnLib", + "GenerateDawnBindingsPlugin", + ], + swiftSettings: swiftSettings, + linkerSettings: asanLinkerSettings + ), + .target( + name: "WebGPUDawn", + dependencies: [ + // WebGPUCore or similar core library for shared protocols and types ? + "Dawn" + ], + path: "Sources/WebGPU/Dawn", + swiftSettings: swiftSettings, + linkerSettings: asanLinkerSettings + ), + .target( + name: "WebGPU", + dependencies: [ + .target(name: "WebGPUDawn", condition: .when(platforms: supportedNativePlatforms)) + ], + exclude: [ + "Dawn", + "Wasm", + ], + swiftSettings: swiftSettings + [.treatWarning("EmbeddedRestrictions", as: .warning)], + linkerSettings: asanLinkerSettings + ), + .target( + name: "RGFW", + path: "Demos/RGFW", + swiftSettings: swiftSettings, + linkerSettings: asanLinkerSettings + ), + .target( + name: "DemoUtils", + dependencies: [ + "RGFW", + "WebGPU", + ], + path: "Demos/DemoUtils", + swiftSettings: swiftSettings, + linkerSettings: asanLinkerSettings + [ + .linkedLibrary("dxgi", .when(platforms: [.windows])), + .linkedLibrary("d3d12", .when(platforms: [.windows])), + .linkedLibrary("dxguid", .when(platforms: [.windows])), + ] + ), + .executableTarget( + name: "GameOfLife", + dependencies: [ + "DemoUtils" + ], + path: "Demos/GameOfLife", + swiftSettings: swiftSettings, + linkerSettings: asanLinkerSettings + [ + .linkedFramework("Cocoa", .when(platforms: [.macOS])), + .linkedFramework("IOKit", .when(platforms: [.macOS])), + .linkedFramework("Metal", .when(platforms: [.macOS])), + .linkedLibrary("c++", .when(platforms: [.macOS])), + ] + ), + .executableTarget( + name: "BitonicSort", + dependencies: [ + .target(name: "DemoUtils") + ], + path: "Demos/BitonicSort", + exclude: ["index.html"], + swiftSettings: swiftSettings, + linkerSettings: asanLinkerSettings + [ + .linkedFramework("Cocoa", .when(platforms: [.macOS])), + .linkedFramework("IOKit", .when(platforms: [.macOS])), + .linkedFramework("Metal", .when(platforms: [.macOS])), + .linkedLibrary("c++", .when(platforms: [.macOS])), + ] + ), + ] + + (buildMacOS14 + ? [] + : [ + // swift-testing uses unsafe build flags which SPM rejects when targeting macOS 14. + // Test targets are excluded under BUILD_MACOS14 to avoid this. + .testTarget( + name: "CodeGenerationTests", + dependencies: [ + "GenerateDawnBindings", + "GenerateDawnAPINotes", + .product(name: "Testing", package: "swift-testing"), + ], + swiftSettings: swiftSettings, + linkerSettings: asanLinkerSettings + ), + .testTarget( + name: "DawnTests", + dependencies: [ + "WebGPU", + .product(name: "Testing", package: "swift-testing"), + ], + swiftSettings: swiftSettings, + linkerSettings: asanLinkerSettings + [ + .linkedFramework("IOSurface", .when(platforms: [.macOS])), + .linkedFramework("Metal", .when(platforms: [.macOS])), + .linkedFramework("QuartzCore", .when(platforms: [.macOS])), + .linkedLibrary("dxgi", .when(platforms: [.windows])), + .linkedLibrary("d3d12", .when(platforms: [.windows])), + .linkedLibrary("dxguid", .when(platforms: [.windows])), + ] + ), + ]) ) diff --git a/Sources/EmbeddedStubs/include/EmbeddedStubs.h b/Sources/EmbeddedStubs/include/EmbeddedStubs.h deleted file mode 100644 index 6899cca..0000000 --- a/Sources/EmbeddedStubs/include/EmbeddedStubs.h +++ /dev/null @@ -1,13 +0,0 @@ -// Copyright 2026 Adobe -// All Rights Reserved. -// -// NOTICE: Adobe permits you to use, modify, and distribute this file in -// accordance with the terms of the Adobe license agreement accompanying -// it. - -// Stub declarations for Unicode normalization symbols missing from the -// Embedded Swift WASM runtime. All strings used in this project are ASCII, -// so these code paths are never reached at runtime. -#ifndef EMBEDDED_STUBS_H -#define EMBEDDED_STUBS_H -#endif diff --git a/Sources/EmbeddedStubs/stubs.c b/Sources/EmbeddedStubs/stubs.c deleted file mode 100644 index 49db369..0000000 --- a/Sources/EmbeddedStubs/stubs.c +++ /dev/null @@ -1,23 +0,0 @@ -// Copyright 2026 Adobe -// All Rights Reserved. -// -// NOTICE: Adobe permits you to use, modify, and distribute this file in -// accordance with the terms of the Adobe license agreement accompanying -// it. - -// Stub implementations for Unicode normalization symbols missing from the -// Embedded Swift WASM runtime. The full Swift String type pulls in NFC/NFD -// normalization code via its Equatable conformance. Since all strings used -// in this project are pure ASCII, the normalization slow path is never -// reached at runtime — these stubs just satisfy the linker. - -#include -#include - -uint16_t _swift_stdlib_getNormData(uint32_t scalar) { return 0; } - -int32_t _swift_stdlib_getComposition(uint32_t x, uint32_t y) { return -1; } - -int32_t _swift_stdlib_getDecompositionEntry(uint32_t scalar) { return 0; } - -const uint8_t *_swift_stdlib_nfd_decompositions = NULL; From 7d544ab3b437044b8fe8753ba2d7c0b4c82fedcb Mon Sep 17 00:00:00 2001 From: Nils Krueger Date: Wed, 18 Mar 2026 12:00:36 +0100 Subject: [PATCH 14/26] update package json --- package.json | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/package.json b/package.json index dd383e9..d9e68e2 100644 --- a/package.json +++ b/package.json @@ -1,11 +1,8 @@ { - "name": "Swan", + "name": "swan", "private": true, "type": "module", "packageManager": "pnpm@10.30.3+sha512.c961d1e0a2d8e354ecaa5166b822516668b7f44cb5bd95122d590dd81922f606f5473b6d23ec4a5be05e7fcd18e8488d47d978bbe981872f1145d06e9a740017", - "config": { - "swift_sdk_wasm": "swift-6.3-DEVELOPMENT-SNAPSHOT-2026-02-14-a_wasm" - }, "dependencies": { "typescript": "5.9.3" } From 948b2edc0f9786fc95385ff3f0ef4e4a9ad7a760 Mon Sep 17 00:00:00 2001 From: Nils Krueger Date: Wed, 18 Mar 2026 15:18:42 +0100 Subject: [PATCH 15/26] use node script to install sdks --- .github/workflows/swift-wasm.yaml | 3 ++ Makefile | 19 +------ Scripts/sdk-install.mjs | 85 +++++++++++++++++++++++++++++++ 3 files changed, 89 insertions(+), 18 deletions(-) create mode 100644 Scripts/sdk-install.mjs diff --git a/.github/workflows/swift-wasm.yaml b/.github/workflows/swift-wasm.yaml index 9d8ee70..024a491 100644 --- a/.github/workflows/swift-wasm.yaml +++ b/.github/workflows/swift-wasm.yaml @@ -14,6 +14,9 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v6 + - uses: actions/setup-node@v6 + with: + node-version: 24 - name: Read Swift version id: swift-version diff --git a/Makefile b/Makefile index e3aafeb..7be0688 100644 --- a/Makefile +++ b/Makefile @@ -51,26 +51,9 @@ debug: ## Echo all Make variables swift-setup: ## Install and activate Swift toolchain swiftly install && swiftly use -.PHONY: sdk-download -sdk-download: ## Open the download page for the current SWIFT_SDK - @sdk="$(SWIFT_SDK)"; \ - tag="swift-wasm-$${sdk%-wasm32-*}"; \ - url="https://github.com/swiftwasm/swift/releases/tag/$${tag}"; \ - echo "$$url"; \ - if command -v open >/dev/null 2>&1; then \ - open "$$url"; \ - elif command -v xdg-open >/dev/null 2>&1; then \ - xdg-open "$$url"; \ - fi - .PHONY: sdk-install sdk-install: ## Download and install the current SWIFT_SDK - @sdk="$(SWIFT_SDK)"; \ - tag="swift-wasm-$${sdk%-wasm32-*}"; \ - url="https://github.com/swiftwasm/swift/releases/download/$${tag}/swift-wasm-$${sdk}.artifactbundle.zip"; \ - checksum=$$(curl -sL "$${url}.sha256" | awk '{ print $$1 }'); \ - echo "Installing: swift-wasm-$${sdk}"; \ - swift sdk install "$${url}" --checksum "$${checksum}" + node Scripts/sdk-install.mjs "$(_SDK_BASE)" .PHONY: build build: ## Native Swift build (DEBUG) diff --git a/Scripts/sdk-install.mjs b/Scripts/sdk-install.mjs new file mode 100644 index 0000000..c722a97 --- /dev/null +++ b/Scripts/sdk-install.mjs @@ -0,0 +1,85 @@ +#!/usr/bin/env node +// Downloads and installs the given WASM SDK +// Usage: node scripts/sdk-install.mjs +// sdk-id : e.g. "swift-6.3-DEVELOPMENT-SNAPSHOT-2026-02-27-a_wasm" + +import { spawnSync } from "node:child_process"; + +function isSdkInstalled(sdkId, sdkListOutput) { + return new RegExp(`^${sdkId}$`, "m").test(sdkListOutput); +} + +// Get the SDK ID from the command line arguments +const sdkId = process.argv[2]; + +if (!sdkId) { + console.error("Usage: sdk-install.mjs "); + process.exit(1); +} + +// check the "swift sdk list" output with grep to find the matching SDK entry +const sdkListResult = spawnSync("swift", ["sdk", "list"], { encoding: "utf8" }); +if (isSdkInstalled(sdkId, sdkListResult.stdout)) { + console.log("SDK already installed, skipping."); + process.exit(0); +} + +// parse version from the sdkID, default to main +const sdkVersionMatch = sdkId.match(/swift-(\d+\.\d+)-DEVELOPMENT-SNAPSHOT/); +const sdkVersion = sdkVersionMatch ? sdkVersionMatch[1] : "main"; + +let apiUrl, baseUrl; + +if (sdkVersion === "main") { + apiUrl = "https://www.swift.org/api/v1/install/dev/main/wasm-sdk.json"; + baseUrl = "https://download.swift.org/development/"; +} else { + apiUrl = `https://www.swift.org/api/v1/install/dev/${sdkVersion}/wasm-sdk.json`; + baseUrl = `https://download.swift.org/swift-${sdkVersion}-branch/`; +} + +const response = await fetch(apiUrl); +if (!response.ok) { + console.error(`Failed to fetch SDK list: ${response.status} ${response.statusText}`); + process.exit(1); +} +const entries = (await response.json()).map((entry) => ({...entry, sdkId: `${entry.dir}_wasm` })); + +let entry = entries.find((e) => sdkId === e.sdkId); +if (!entry) { + console.error(`SDK not found for ID: ${sdkId}.\n`) + // ask user (y)es/(n)o if we should install the latest available SDK which is the first entry in the list + const selectedIndex = await new Promise((resolve) => { + process.stdout.write(`Do you want to install the latest available ${sdkVersion}-snapshot SDK (${entries[0].dir})? (y/n) `); + process.stdin.setEncoding("utf8"); + process.stdin.on("data", (data) => { + const answer = data.trim().toLowerCase(); + if (answer === "y" || answer === "yes") { + resolve(0); + } else { + resolve(-1); + } + }); + }); + + if (selectedIndex === -1) { + console.error("Aborting."); + process.exit(1); + } + + entry = entries[selectedIndex]; +} + +if (isSdkInstalled(entry.sdkId, sdkListResult.stdout)) { + console.log("SDK already installed, skipping."); + process.exit(0); +} + +const downloadUrl = `${baseUrl}wasm-sdk/${entry.dir}/${entry.download}`; + +console.log(`SDK: ${entry.dir}`); +console.log(`Download: ${downloadUrl}`); + +const result = spawnSync("swift", ["sdk", "install", downloadUrl, "--checksum", entry.checksum], { stdio: "inherit", },); + +process.exit(result.status ?? 1); From f5816a169155a3925cb9f05ccb102cca94e369a3 Mon Sep 17 00:00:00 2001 From: Nils Krueger Date: Wed, 18 Mar 2026 15:18:57 +0100 Subject: [PATCH 16/26] use official sdk versions --- .wasm-sdk-versions | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.wasm-sdk-versions b/.wasm-sdk-versions index ebdf8cd..8684fcf 100644 --- a/.wasm-sdk-versions +++ b/.wasm-sdk-versions @@ -1,3 +1,3 @@ CI=6.3-SNAPSHOT-2026-02-27-a-wasm32-unknown-wasip1 -6.3-snapshot=6.3-SNAPSHOT-2026-02-27-a-wasm32-unknown-wasip1 -main-snapshot=DEVELOPMENT-SNAPSHOT-2026-03-09-a-wasm32-unknown-wasip1 \ No newline at end of file +6.3-snapshot=swift-6.3-DEVELOPMENT-SNAPSHOT-2026-02-27-a_wasm +main-snapshot=swift-DEVELOPMENT-SNAPSHOT-2026-03-09-a_wasm \ No newline at end of file From e1b8270095b4d8825d8c92642ae3871fe09f0183 Mon Sep 17 00:00:00 2001 From: Nils Krueger Date: Wed, 18 Mar 2026 15:39:25 +0100 Subject: [PATCH 17/26] use swiftwasm/setup-swiftwasm github action --- .github/workflows/swift-wasm.yaml | 9 +++++++-- .wasm-sdk-versions | 2 +- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/.github/workflows/swift-wasm.yaml b/.github/workflows/swift-wasm.yaml index 024a491..4f56a2b 100644 --- a/.github/workflows/swift-wasm.yaml +++ b/.github/workflows/swift-wasm.yaml @@ -27,8 +27,13 @@ jobs: swift-version: "${{ steps.swift-version.outputs.version }}" skip-verify-signature: true - - name: Install Swift WASM SDK - run: make sdk-install + - name: Read WASM SDK version + id: wasm-sdk-version + run: echo "tag=$(grep '^CI=' .wasm-sdk-versions | cut -d'=' -f2 | sed 's/_wasm$//')" >> "$GITHUB_OUTPUT" + + - uses: swiftwasm/setup-swiftwasm@v2 + with: + tag: "${{ steps.wasm-sdk-version.outputs.tag }}" - name: Build WebGPU run: make wasm-build diff --git a/.wasm-sdk-versions b/.wasm-sdk-versions index 8684fcf..2cf43df 100644 --- a/.wasm-sdk-versions +++ b/.wasm-sdk-versions @@ -1,3 +1,3 @@ -CI=6.3-SNAPSHOT-2026-02-27-a-wasm32-unknown-wasip1 +CI=swift-6.3-DEVELOPMENT-SNAPSHOT-2026-02-27-a_wasm 6.3-snapshot=swift-6.3-DEVELOPMENT-SNAPSHOT-2026-02-27-a_wasm main-snapshot=swift-DEVELOPMENT-SNAPSHOT-2026-03-09-a_wasm \ No newline at end of file From 10ae09bad828bd8d21d6cd3bc02db6bbafb72a4b Mon Sep 17 00:00:00 2001 From: Nils Krueger Date: Wed, 18 Mar 2026 15:46:25 +0100 Subject: [PATCH 18/26] Revert "use swiftwasm/setup-swiftwasm github action" This reverts commit e1b8270095b4d8825d8c92642ae3871fe09f0183. --- .github/workflows/swift-wasm.yaml | 9 ++------- .wasm-sdk-versions | 2 +- 2 files changed, 3 insertions(+), 8 deletions(-) diff --git a/.github/workflows/swift-wasm.yaml b/.github/workflows/swift-wasm.yaml index 4f56a2b..024a491 100644 --- a/.github/workflows/swift-wasm.yaml +++ b/.github/workflows/swift-wasm.yaml @@ -27,13 +27,8 @@ jobs: swift-version: "${{ steps.swift-version.outputs.version }}" skip-verify-signature: true - - name: Read WASM SDK version - id: wasm-sdk-version - run: echo "tag=$(grep '^CI=' .wasm-sdk-versions | cut -d'=' -f2 | sed 's/_wasm$//')" >> "$GITHUB_OUTPUT" - - - uses: swiftwasm/setup-swiftwasm@v2 - with: - tag: "${{ steps.wasm-sdk-version.outputs.tag }}" + - name: Install Swift WASM SDK + run: make sdk-install - name: Build WebGPU run: make wasm-build diff --git a/.wasm-sdk-versions b/.wasm-sdk-versions index 2cf43df..8684fcf 100644 --- a/.wasm-sdk-versions +++ b/.wasm-sdk-versions @@ -1,3 +1,3 @@ -CI=swift-6.3-DEVELOPMENT-SNAPSHOT-2026-02-27-a_wasm +CI=6.3-SNAPSHOT-2026-02-27-a-wasm32-unknown-wasip1 6.3-snapshot=swift-6.3-DEVELOPMENT-SNAPSHOT-2026-02-27-a_wasm main-snapshot=swift-DEVELOPMENT-SNAPSHOT-2026-03-09-a_wasm \ No newline at end of file From 5e52f4172923d9b3a2f7cc44bdb091b561d7758b Mon Sep 17 00:00:00 2001 From: Nils Krueger Date: Wed, 18 Mar 2026 15:52:00 +0100 Subject: [PATCH 19/26] add embedded builds to github action --- .github/workflows/swift-wasm.yaml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/.github/workflows/swift-wasm.yaml b/.github/workflows/swift-wasm.yaml index 024a491..d31f884 100644 --- a/.github/workflows/swift-wasm.yaml +++ b/.github/workflows/swift-wasm.yaml @@ -35,3 +35,9 @@ jobs: - name: Build BitonicSort run: make wasm-build-bitonic + + - name: Build WebGPU (Embedded) + run: make wasm-build SWIFT_MODE=embedded + + - name: Build BitonicSort (Embedded) + run: make wasm-build-bitonic SWIFT_MODE=embedded From d3a435e551ead4a39f79df1af3e9ea1913c337a7 Mon Sep 17 00:00:00 2001 From: Nils Krueger Date: Wed, 18 Mar 2026 16:18:17 +0100 Subject: [PATCH 20/26] extra embedded build action --- .github/workflows/swift-wasm-embedded.yaml | 33 ++++++++++++++++++++++ .github/workflows/swift-wasm.yaml | 6 ---- .wasm-sdk-versions | 2 +- Makefile | 4 ++- 4 files changed, 37 insertions(+), 8 deletions(-) create mode 100644 .github/workflows/swift-wasm-embedded.yaml diff --git a/.github/workflows/swift-wasm-embedded.yaml b/.github/workflows/swift-wasm-embedded.yaml new file mode 100644 index 0000000..1517e85 --- /dev/null +++ b/.github/workflows/swift-wasm-embedded.yaml @@ -0,0 +1,33 @@ +# Build Swift for WASM to verify the WebGPU WASM backend compiles. + +name: Build (WASM) + +on: + push: + branches: ["main"] + pull_request: + branches: ["main"] + +jobs: + build: + name: Build (WASM) + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v6 + - uses: actions/setup-node@v6 + with: + node-version: 24 + + - uses: swift-actions/setup-swift@v3 + with: + swift-version: "main-snapshot" + skip-verify-signature: true + + - name: Install Swift WASM SDK + run: make sdk-install + + - name: Build WebGPU (Embedded) + run: make wasm-build SWIFT_MODE=embedded + + - name: Build BitonicSort (Embedded) + run: make wasm-build-bitonic SWIFT_MODE=embedded diff --git a/.github/workflows/swift-wasm.yaml b/.github/workflows/swift-wasm.yaml index d31f884..024a491 100644 --- a/.github/workflows/swift-wasm.yaml +++ b/.github/workflows/swift-wasm.yaml @@ -35,9 +35,3 @@ jobs: - name: Build BitonicSort run: make wasm-build-bitonic - - - name: Build WebGPU (Embedded) - run: make wasm-build SWIFT_MODE=embedded - - - name: Build BitonicSort (Embedded) - run: make wasm-build-bitonic SWIFT_MODE=embedded diff --git a/.wasm-sdk-versions b/.wasm-sdk-versions index 8684fcf..7af1daa 100644 --- a/.wasm-sdk-versions +++ b/.wasm-sdk-versions @@ -1,3 +1,3 @@ -CI=6.3-SNAPSHOT-2026-02-27-a-wasm32-unknown-wasip1 +CI-SDK-VERSION=swift-DEVELOPMENT-SNAPSHOT-2026-03-09-a_wasm 6.3-snapshot=swift-6.3-DEVELOPMENT-SNAPSHOT-2026-02-27-a_wasm main-snapshot=swift-DEVELOPMENT-SNAPSHOT-2026-03-09-a_wasm \ No newline at end of file diff --git a/Makefile b/Makefile index 7be0688..bf74f3a 100644 --- a/Makefile +++ b/Makefile @@ -8,7 +8,8 @@ include .wasm-sdk-versions # e.g. 6.3-snapshot-2026-03-05 -> 6.3-snapshot _SWIFT_TC := $(shell cat .swift-version) _SDK_KEY := $(firstword $(subst snapshot,snapshot ,$(_SWIFT_TC))) -_SDK_BASE := $($(_SDK_KEY)) +# if CI is set to "true", _SDK_BASE should be the read from CI-SDK-VERSION from .wasm-sdk-versions +_SDK_BASE := $(if $(filter true,$(CI)),$(CI-SDK-VERSION),$($(_SDK_KEY))) SWIFT_SDK ?= $(if $(_SDK_BASE),$(_SDK_BASE)$(if $(filter embedded,$(SWIFT_MODE)),-embedded)) @@ -39,6 +40,7 @@ help: ## Show this help .PHONY: debug debug: ## Echo all Make variables + @echo "CI: $(CI)" @echo "DEBUG: $(DEBUG)" @echo "BUILD_CONFIG: $(BUILD_CONFIG)" @echo "SWIFT_MODE: $(SWIFT_MODE)" From ec4e66066dd485b5f6847ff22ba1ec365cbe6859 Mon Sep 17 00:00:00 2001 From: Nils Krueger Date: Wed, 18 Mar 2026 16:19:59 +0100 Subject: [PATCH 21/26] rename action --- .github/workflows/swift-wasm-embedded.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/swift-wasm-embedded.yaml b/.github/workflows/swift-wasm-embedded.yaml index 1517e85..099c306 100644 --- a/.github/workflows/swift-wasm-embedded.yaml +++ b/.github/workflows/swift-wasm-embedded.yaml @@ -1,6 +1,6 @@ # Build Swift for WASM to verify the WebGPU WASM backend compiles. -name: Build (WASM) +name: Build (WASM - Embedded) on: push: @@ -10,7 +10,7 @@ on: jobs: build: - name: Build (WASM) + name: Build (WASM - Embedded) runs-on: ubuntu-latest steps: - uses: actions/checkout@v6 From 87dff4c42e1b7437982d85ef14d80325e5d28596 Mon Sep 17 00:00:00 2001 From: Nils Krueger Date: Wed, 18 Mar 2026 17:13:25 +0100 Subject: [PATCH 22/26] try with swiftly manually --- .github/workflows/swift-wasm-embedded.yaml | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/.github/workflows/swift-wasm-embedded.yaml b/.github/workflows/swift-wasm-embedded.yaml index 099c306..05ef2b1 100644 --- a/.github/workflows/swift-wasm-embedded.yaml +++ b/.github/workflows/swift-wasm-embedded.yaml @@ -18,11 +18,20 @@ jobs: with: node-version: 24 + - name: Read Swift version + id: swift-version + run: echo "version=$(cat .swift-version)" >> "$GITHUB_OUTPUT" + +# setup-swift can install "main-snapshot" but fails in the version comparison check, cause it compares "main-snapshot" to "6.4" +# therefore we install the main-snapshot manually with swiftly below - uses: swift-actions/setup-swift@v3 with: - swift-version: "main-snapshot" + swift-version: "${{ steps.swift-version.outputs.version }}" skip-verify-signature: true + - name: Install main-snapshot Swift Toolchain + run: swiftly install --use main-snapshot --assume-yes + - name: Install Swift WASM SDK run: make sdk-install From 5f4e612ea182c434bc98a7f63297092a55de686e Mon Sep 17 00:00:00 2001 From: Nils Krueger Date: Wed, 18 Mar 2026 17:35:15 +0100 Subject: [PATCH 23/26] another try --- .github/workflows/swift-wasm-embedded.yaml | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/.github/workflows/swift-wasm-embedded.yaml b/.github/workflows/swift-wasm-embedded.yaml index 05ef2b1..453b24c 100644 --- a/.github/workflows/swift-wasm-embedded.yaml +++ b/.github/workflows/swift-wasm-embedded.yaml @@ -29,14 +29,26 @@ jobs: swift-version: "${{ steps.swift-version.outputs.version }}" skip-verify-signature: true + - name: Check Swift version + run: swift --version + - name: Install main-snapshot Swift Toolchain run: swiftly install --use main-snapshot --assume-yes + - name: Check Swift version again + run: swift --version + - name: Install Swift WASM SDK run: make sdk-install - name: Build WebGPU (Embedded) - run: make wasm-build SWIFT_MODE=embedded + run: | + swiftly install --use main-snapshot --assume-yes + swift --version + make wasm-build SWIFT_MODE=embedded - name: Build BitonicSort (Embedded) - run: make wasm-build-bitonic SWIFT_MODE=embedded + run: | + swiftly install --use main-snapshot --assume-yes + swift --version + make wasm-build-bitonic SWIFT_MODE=embedded From ef8f2c11015e2f105c190eb5a809ab1cceabc1ee Mon Sep 17 00:00:00 2001 From: Nils Krueger Date: Wed, 18 Mar 2026 18:10:26 +0100 Subject: [PATCH 24/26] another try --- .github/workflows/swift-wasm-embedded.yaml | 27 ++++++---------------- .swan-config | 6 +++++ .wasm-sdk-versions | 3 --- Makefile | 6 ++--- 4 files changed, 16 insertions(+), 26 deletions(-) create mode 100644 .swan-config delete mode 100644 .wasm-sdk-versions diff --git a/.github/workflows/swift-wasm-embedded.yaml b/.github/workflows/swift-wasm-embedded.yaml index 453b24c..4ffa45a 100644 --- a/.github/workflows/swift-wasm-embedded.yaml +++ b/.github/workflows/swift-wasm-embedded.yaml @@ -22,33 +22,20 @@ jobs: id: swift-version run: echo "version=$(cat .swift-version)" >> "$GITHUB_OUTPUT" -# setup-swift can install "main-snapshot" but fails in the version comparison check, cause it compares "main-snapshot" to "6.4" -# therefore we install the main-snapshot manually with swiftly below + - name: Read CI versions + id: ci-versions + run: echo "tc=$(grep '^CI_TC_VERSION=' .swan-config | cut -d= -f2)" >> "$GITHUB_OUTPUT" + - uses: swift-actions/setup-swift@v3 with: - swift-version: "${{ steps.swift-version.outputs.version }}" + swift-version: "${{ steps.ci-versions.outputs.tc }}" skip-verify-signature: true - - name: Check Swift version - run: swift --version - - - name: Install main-snapshot Swift Toolchain - run: swiftly install --use main-snapshot --assume-yes - - - name: Check Swift version again - run: swift --version - - name: Install Swift WASM SDK run: make sdk-install - name: Build WebGPU (Embedded) - run: | - swiftly install --use main-snapshot --assume-yes - swift --version - make wasm-build SWIFT_MODE=embedded + run: make wasm-build SWIFT_MODE=embedded - name: Build BitonicSort (Embedded) - run: | - swiftly install --use main-snapshot --assume-yes - swift --version - make wasm-build-bitonic SWIFT_MODE=embedded + run: make wasm-build-bitonic SWIFT_MODE=embedded diff --git a/.swan-config b/.swan-config new file mode 100644 index 0000000..73c9b15 --- /dev/null +++ b/.swan-config @@ -0,0 +1,6 @@ +CI_TC_VERSION=main-snapshot-2026-03-09 +CI_SDK_VERSION=swift-DEVELOPMENT-SNAPSHOT-2026-03-09-a_wasm + +# Versions matching a toolchain from Makefile +6.3-snapshot=swift-6.3-DEVELOPMENT-SNAPSHOT-2026-02-27-a_wasm +main-snapshot=swift-DEVELOPMENT-SNAPSHOT-2026-03-09-a_wasm \ No newline at end of file diff --git a/.wasm-sdk-versions b/.wasm-sdk-versions deleted file mode 100644 index 7af1daa..0000000 --- a/.wasm-sdk-versions +++ /dev/null @@ -1,3 +0,0 @@ -CI-SDK-VERSION=swift-DEVELOPMENT-SNAPSHOT-2026-03-09-a_wasm -6.3-snapshot=swift-6.3-DEVELOPMENT-SNAPSHOT-2026-02-27-a_wasm -main-snapshot=swift-DEVELOPMENT-SNAPSHOT-2026-03-09-a_wasm \ No newline at end of file diff --git a/Makefile b/Makefile index bf74f3a..f408aea 100644 --- a/Makefile +++ b/Makefile @@ -2,14 +2,14 @@ SWIFT_MODE ?= DEBUG ?= 1 # Load SDK versions as Make variables (6.3-snapshot=..., main-snapshot=...) -include .wasm-sdk-versions +include .swan-config # Strip everything after "snapshot" to get SDK key # e.g. 6.3-snapshot-2026-03-05 -> 6.3-snapshot _SWIFT_TC := $(shell cat .swift-version) _SDK_KEY := $(firstword $(subst snapshot,snapshot ,$(_SWIFT_TC))) -# if CI is set to "true", _SDK_BASE should be the read from CI-SDK-VERSION from .wasm-sdk-versions -_SDK_BASE := $(if $(filter true,$(CI)),$(CI-SDK-VERSION),$($(_SDK_KEY))) +# if CI is set to "true", _SDK_BASE should be read from CI_SDK_VERSION in .swan-config +_SDK_BASE := $(if $(filter true,$(CI)),$(CI_SDK_VERSION),$($(_SDK_KEY))) SWIFT_SDK ?= $(if $(_SDK_BASE),$(_SDK_BASE)$(if $(filter embedded,$(SWIFT_MODE)),-embedded)) From 304212c2dd5607eebbb6452f7dc5d388ca36c89a Mon Sep 17 00:00:00 2001 From: Nils Krueger Date: Wed, 18 Mar 2026 18:23:41 +0100 Subject: [PATCH 25/26] again --- .github/workflows/swift-wasm-embedded.yaml | 2 +- .swan-config | 4 ++-- Makefile | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/.github/workflows/swift-wasm-embedded.yaml b/.github/workflows/swift-wasm-embedded.yaml index 4ffa45a..428090d 100644 --- a/.github/workflows/swift-wasm-embedded.yaml +++ b/.github/workflows/swift-wasm-embedded.yaml @@ -24,7 +24,7 @@ jobs: - name: Read CI versions id: ci-versions - run: echo "tc=$(grep '^CI_TC_VERSION=' .swan-config | cut -d= -f2)" >> "$GITHUB_OUTPUT" + run: echo "tc=$(grep '^CI_TC_VERSION_EMBEDDED=' .swan-config | cut -d= -f2)" >> "$GITHUB_OUTPUT" - uses: swift-actions/setup-swift@v3 with: diff --git a/.swan-config b/.swan-config index 73c9b15..4f8433e 100644 --- a/.swan-config +++ b/.swan-config @@ -1,5 +1,5 @@ -CI_TC_VERSION=main-snapshot-2026-03-09 -CI_SDK_VERSION=swift-DEVELOPMENT-SNAPSHOT-2026-03-09-a_wasm +CI_TC_VERSION_EMBEDDED=main-snapshot-2026-03-09 +CI_SDK_VERSION_EMBEDDED=swift-DEVELOPMENT-SNAPSHOT-2026-03-09-a_wasm # Versions matching a toolchain from Makefile 6.3-snapshot=swift-6.3-DEVELOPMENT-SNAPSHOT-2026-02-27-a_wasm diff --git a/Makefile b/Makefile index f408aea..ebd1a93 100644 --- a/Makefile +++ b/Makefile @@ -8,8 +8,8 @@ include .swan-config # e.g. 6.3-snapshot-2026-03-05 -> 6.3-snapshot _SWIFT_TC := $(shell cat .swift-version) _SDK_KEY := $(firstword $(subst snapshot,snapshot ,$(_SWIFT_TC))) -# if CI is set to "true", _SDK_BASE should be read from CI_SDK_VERSION in .swan-config -_SDK_BASE := $(if $(filter true,$(CI)),$(CI_SDK_VERSION),$($(_SDK_KEY))) +# if CI is set to "true" and SWIFT_MODE is "embedded", _SDK_BASE should be read from CI_SDK_VERSION_EMBEDDED in .swan-config +_SDK_BASE := $(if $(and $(filter true,$(CI)),$(filter embedded,$(SWIFT_MODE))),$(CI_SDK_VERSION_EMBEDDED),$($(_SDK_KEY))) SWIFT_SDK ?= $(if $(_SDK_BASE),$(_SDK_BASE)$(if $(filter embedded,$(SWIFT_MODE)),-embedded)) From 62195d48cdd58e9f618d42868267feee0e021996 Mon Sep 17 00:00:00 2001 From: Nils Krueger Date: Thu, 19 Mar 2026 11:13:32 +0100 Subject: [PATCH 26/26] add linker flag conditionally --- Package.swift | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/Package.swift b/Package.swift index 36629b0..ae5c626 100644 --- a/Package.swift +++ b/Package.swift @@ -15,6 +15,7 @@ let wasmPlatforms: [Platform] = [.wasi] let swanLocalDawnPath: String? = ProcessInfo.processInfo.environment["SWAN_LOCAL_DAWN"].flatMap { $0.isEmpty ? nil : $0 } let isWasmBuild: Bool = ProcessInfo.processInfo.environment["SWAN_WASM"] != nil +let isWasmEmbeddedBuild: Bool = ProcessInfo.processInfo.environment["SWIFT_MODE"] == "embedded" // When set, lowers the macOS deployment target to 14 for compatibility with PS CI machines. let buildMacOS14: Bool = ProcessInfo.processInfo.environment["BUILD_MACOS14"] == "1" @@ -141,7 +142,8 @@ let package = Package( "Wasm", ], swiftSettings: swiftSettings + [.treatWarning("EmbeddedRestrictions", as: .warning)], - linkerSettings: asanLinkerSettings + [.linkedLibrary("swiftUnicodeDataTables")], + // Explicitly link swiftUnicodeDataTables for WASM embedded build + linkerSettings: asanLinkerSettings + (isWasmEmbeddedBuild ? [.linkedLibrary("swiftUnicodeDataTables")] : []) ), .executableTarget( name: "BitonicSort",