react-native-webgpu 0.14.1 → 0.15.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/android/cpp/AndroidColorSpace.h +107 -0
- package/android/cpp/AndroidPlatformContext.h +100 -9
- package/android/cpp/AndroidVideoPlayer.h +46 -1
- package/android/cpp/cpp-adapter.cpp +53 -1
- package/android/src/main/java/com/webgpu/SyncFences.java +88 -0
- package/android/src/main/java/com/webgpu/ViewSnapshot.java +66 -23
- package/android/src/main/java/com/webgpu/WebGPUModule.java +69 -5
- package/android/src/main/java/com/webgpu/WebGPUVideoPlayer.java +109 -0
- package/apple/ApplePlatformContext.h +5 -5
- package/apple/ApplePlatformContext.mm +75 -3
- package/apple/AppleVideoPlayer.mm +68 -35
- package/cpp/dawn/common/ExternalTextureParams.h +67 -0
- package/cpp/rnwgpu/PlatformContext.h +65 -16
- package/cpp/rnwgpu/SurfaceRegistry.h +39 -5
- package/cpp/rnwgpu/api/GPUAdapter.cpp +35 -0
- package/cpp/rnwgpu/api/GPUExternalTexture.cpp +172 -156
- package/cpp/rnwgpu/api/GPUExternalTexture.h +2 -19
- package/cpp/rnwgpu/api/GPUQueue.cpp +98 -3
- package/cpp/rnwgpu/api/RNWebGPU.h +12 -3
- package/cpp/rnwgpu/api/VideoFrameBlit.h +39 -24
- package/cpp/rnwgpu/api/descriptors/GPUExternalTextureDescriptor.h +10 -3
- package/lib/commonjs/Canvas.js +36 -6
- package/lib/commonjs/Canvas.js.map +1 -1
- package/lib/commonjs/WebPolyfillGPUModule.js +6 -3
- package/lib/commonjs/WebPolyfillGPUModule.js.map +1 -1
- package/lib/commonjs/constants.js +6 -3
- package/lib/commonjs/constants.js.map +1 -1
- package/lib/commonjs/index.js +1 -0
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/install.js +9 -22
- package/lib/commonjs/install.js.map +1 -1
- package/lib/commonjs/main/index.js +8 -7
- package/lib/commonjs/main/index.js.map +1 -1
- package/lib/commonjs/main/index.web.js +1 -1
- package/lib/commonjs/main/installNative.js +20 -0
- package/lib/commonjs/main/installNative.js.map +1 -0
- package/lib/commonjs/main/installNative.web.js +4 -0
- package/lib/commonjs/main/installNative.web.js.map +1 -0
- package/lib/commonjs/mock.js +60 -13
- package/lib/commonjs/mock.js.map +1 -1
- package/lib/module/Canvas.js +37 -7
- package/lib/module/Canvas.js.map +1 -1
- package/lib/module/WebPolyfillGPUModule.js +6 -3
- package/lib/module/WebPolyfillGPUModule.js.map +1 -1
- package/lib/module/constants.js +6 -3
- package/lib/module/constants.js.map +1 -1
- package/lib/module/index.js +8 -1
- package/lib/module/index.js.map +1 -1
- package/lib/module/install.js +8 -20
- package/lib/module/install.js.map +1 -1
- package/lib/module/main/index.js +6 -7
- package/lib/module/main/index.js.map +1 -1
- package/lib/module/main/index.web.js +1 -1
- package/lib/module/main/index.web.js.map +1 -1
- package/lib/module/main/installNative.js +18 -0
- package/lib/module/main/installNative.js.map +1 -0
- package/lib/module/main/installNative.web.js +6 -0
- package/lib/module/main/installNative.web.js.map +1 -0
- package/lib/module/mock.js +55 -1
- package/lib/module/mock.js.map +1 -1
- package/lib/typescript/lib/commonjs/Canvas.d.ts.map +1 -1
- package/lib/typescript/lib/commonjs/install.d.ts +41 -3
- package/lib/typescript/lib/commonjs/install.d.ts.map +1 -1
- package/lib/typescript/lib/commonjs/main/installNative.d.ts +2 -0
- package/lib/typescript/lib/commonjs/main/installNative.d.ts.map +1 -0
- package/lib/typescript/lib/commonjs/main/installNative.web.d.ts +2 -0
- package/lib/typescript/lib/commonjs/main/installNative.web.d.ts.map +1 -0
- package/lib/typescript/lib/commonjs/mock.d.ts +39 -0
- package/lib/typescript/lib/commonjs/mock.d.ts.map +1 -1
- package/lib/typescript/lib/module/Canvas.d.ts.map +1 -1
- package/lib/typescript/lib/module/install.d.ts +0 -1
- package/lib/typescript/lib/module/install.d.ts.map +1 -1
- package/lib/typescript/lib/module/main/installNative.d.ts +2 -0
- package/lib/typescript/lib/module/main/installNative.d.ts.map +1 -0
- package/lib/typescript/lib/module/main/installNative.web.d.ts +2 -0
- package/lib/typescript/lib/module/main/installNative.web.d.ts.map +1 -0
- package/lib/typescript/lib/module/mock.d.ts +39 -1
- package/lib/typescript/lib/module/mock.d.ts.map +1 -1
- package/lib/typescript/src/Canvas.d.ts.map +1 -1
- package/lib/typescript/src/constants.d.ts.map +1 -1
- package/lib/typescript/src/index.d.ts +2 -2
- package/lib/typescript/src/index.d.ts.map +1 -1
- package/lib/typescript/src/install.d.ts +0 -5
- package/lib/typescript/src/install.d.ts.map +1 -1
- package/lib/typescript/src/main/index.d.ts +1 -0
- package/lib/typescript/src/main/index.d.ts.map +1 -1
- package/lib/typescript/src/main/index.web.d.ts +1 -1
- package/lib/typescript/src/main/index.web.d.ts.map +1 -1
- package/lib/typescript/src/main/installNative.d.ts +2 -0
- package/lib/typescript/src/main/installNative.d.ts.map +1 -0
- package/lib/typescript/src/main/installNative.web.d.ts +2 -0
- package/lib/typescript/src/main/installNative.web.d.ts.map +1 -0
- package/lib/typescript/src/mock.d.ts +5 -1
- package/lib/typescript/src/mock.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/Canvas.tsx +48 -29
- package/src/WebPolyfillGPUModule.ts +3 -1
- package/src/constants.ts +6 -3
- package/src/index.tsx +18 -10
- package/src/install.ts +9 -18
- package/src/main/index.tsx +7 -10
- package/src/main/index.web.tsx +1 -1
- package/src/main/installNative.ts +20 -0
- package/src/main/installNative.web.ts +5 -0
- package/src/mock.ts +60 -1
package/lib/commonjs/mock.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_react","_interopRequireDefault","require","_reactNative","
|
|
1
|
+
{"version":3,"names":["_react","_interopRequireDefault","require","_reactNative","_formats","Object","keys","forEach","key","prototype","hasOwnProperty","call","_exportNames","exports","defineProperty","enumerable","get","e","__esModule","default","GPUBufferUsage","MAP_READ","MAP_WRITE","COPY_SRC","COPY_DST","INDEX","VERTEX","UNIFORM","STORAGE","INDIRECT","QUERY_RESOLVE","GPUTextureUsage","TEXTURE_BINDING","STORAGE_BINDING","RENDER_ATTACHMENT","TRANSIENT_ATTACHMENT","GPUShaderStage","FRAGMENT","COMPUTE","GPUColorWrite","RED","GREEN","BLUE","ALPHA","ALL","GPUMapMode","READ","WRITE","g","globalThis","value","entries","undefined","NOT_AVAILABLE_UNDER_JEST","Canvas","opaque","_opaque","android","_android","ref","props","React","useImperativeHandle","getContextId","getContext","_contextName","getNativeSurface","Error","createElement","View","useCanvasRef","useRef","useSurface","surface","warnIfNotHardwareAccelerated","useDevice","adapter","device","GPUDeviceProvider","children","useMainDevice","importDevice","_pointer","adoptTexture","installWebGPU","WebGPUModule","install"],"sourceRoot":"../../src","sources":["mock.ts"],"mappings":"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","ignoreList":[]}
|
package/lib/module/Canvas.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
|
|
2
2
|
import React, { useEffect, useImperativeHandle, useRef, useState } from "react";
|
|
3
|
-
import { View } from "react-native";
|
|
3
|
+
import { Platform, View } from "react-native";
|
|
4
4
|
import WebGPUNativeView from "./WebGPUViewNativeComponent";
|
|
5
5
|
let CONTEXT_COUNTER = 1;
|
|
6
6
|
function generateContextId() {
|
|
@@ -9,6 +9,36 @@ function generateContextId() {
|
|
|
9
9
|
// Anything else reaching the native component would hit the generated
|
|
10
10
|
// string-enum parser, which aborts on unknown values.
|
|
11
11
|
const resolveSurfaceType = surfaceType => surfaceType === "SurfaceView" || surfaceType === "TextureView" || surfaceType === "HardwareBufferView" ? surfaceType : "auto";
|
|
12
|
+
|
|
13
|
+
// A view measured relative to itself gets its layout size, without the
|
|
14
|
+
// transforms getBoundingClientRect() includes; measureLayout() calls back
|
|
15
|
+
// synchronously on the new architecture. On the web react-native-web measures
|
|
16
|
+
// asynchronously, so the DOM node is read directly: clientWidth/clientHeight
|
|
17
|
+
// are layout values that ignore transforms too (unlike getBoundingClientRect)
|
|
18
|
+
// and are what browser WebGPU code sizes a canvas from.
|
|
19
|
+
const measureLayout = view => {
|
|
20
|
+
if (Platform.OS === "web") {
|
|
21
|
+
const {
|
|
22
|
+
clientWidth,
|
|
23
|
+
clientHeight
|
|
24
|
+
} = view;
|
|
25
|
+
return {
|
|
26
|
+
width: clientWidth,
|
|
27
|
+
height: clientHeight
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
let size = {
|
|
31
|
+
width: 0,
|
|
32
|
+
height: 0
|
|
33
|
+
};
|
|
34
|
+
view.measureLayout(view, (_left, _top, width, height) => {
|
|
35
|
+
size = {
|
|
36
|
+
width,
|
|
37
|
+
height
|
|
38
|
+
};
|
|
39
|
+
});
|
|
40
|
+
return size;
|
|
41
|
+
};
|
|
12
42
|
export const Canvas = ({
|
|
13
43
|
opaque = true,
|
|
14
44
|
android,
|
|
@@ -21,7 +51,10 @@ export const Canvas = ({
|
|
|
21
51
|
// native surface is still attached, this is a no-op and the native view's
|
|
22
52
|
// own teardown retires the entry instead — which keeps StrictMode's
|
|
23
53
|
// simulated unmount (which re-runs effects without unmounting native views)
|
|
24
|
-
// from orphaning a live surface.
|
|
54
|
+
// from orphaning a live surface. When no surface is attached yet (StrictMode
|
|
55
|
+
// runs this cleanup right after mount, possibly before the UI thread got to
|
|
56
|
+
// it), a context kept from the first effect run keeps its surface entry,
|
|
57
|
+
// which the native view takes over when it attaches.
|
|
25
58
|
useEffect(() => {
|
|
26
59
|
return () => {
|
|
27
60
|
RNWebGPU.destroyContext(contextId);
|
|
@@ -39,13 +72,10 @@ export const Canvas = ({
|
|
|
39
72
|
if (!viewRef.current) {
|
|
40
73
|
throw new Error("[WebGPU] Cannot get context before mount");
|
|
41
74
|
}
|
|
42
|
-
|
|
43
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
44
|
-
const view = viewRef.current;
|
|
45
|
-
const size = "getBoundingClientRect" in view ? view.getBoundingClientRect() : view.unstable_getBoundingClientRect();
|
|
75
|
+
const size = measureLayout(viewRef.current);
|
|
46
76
|
return RNWebGPU.MakeWebGPUCanvasContext(contextId, size.width, size.height);
|
|
47
77
|
}
|
|
48
|
-
}));
|
|
78
|
+
}), [contextId]);
|
|
49
79
|
return /*#__PURE__*/React.createElement(View, _extends({
|
|
50
80
|
collapsable: false,
|
|
51
81
|
ref: viewRef
|
package/lib/module/Canvas.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","useEffect","useImperativeHandle","useRef","useState","View","WebGPUNativeView","CONTEXT_COUNTER","generateContextId","resolveSurfaceType","surfaceType","
|
|
1
|
+
{"version":3,"names":["React","useEffect","useImperativeHandle","useRef","useState","Platform","View","WebGPUNativeView","CONTEXT_COUNTER","generateContextId","resolveSurfaceType","surfaceType","measureLayout","view","OS","clientWidth","clientHeight","width","height","size","_left","_top","Canvas","opaque","android","ref","props","viewRef","contextId","_","RNWebGPU","destroyContext","getContextId","getNativeSurface","getContext","contextName","Error","current","MakeWebGPUCanvasContext","createElement","_extends","collapsable","style","flex","androidSurfaceType","androidZOrderOnTop","zOrderOnTop"],"sourceRoot":"../../src","sources":["Canvas.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -2,10 +2,13 @@ import { contextIdToId } from "./utils";
|
|
|
2
2
|
const fabric = true;
|
|
3
3
|
function getNativeSurface(contextId) {
|
|
4
4
|
const canvas = document.getElementById(contextIdToId(contextId));
|
|
5
|
+
|
|
6
|
+
// Layout size, like the native view size in dp: unlike
|
|
7
|
+
// getBoundingClientRect() it ignores CSS transforms.
|
|
5
8
|
const {
|
|
6
|
-
height,
|
|
7
|
-
width
|
|
8
|
-
} = canvas
|
|
9
|
+
clientHeight: height,
|
|
10
|
+
clientWidth: width
|
|
11
|
+
} = canvas;
|
|
9
12
|
return {
|
|
10
13
|
surface: BigInt(contextId),
|
|
11
14
|
height,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["contextIdToId","fabric","getNativeSurface","contextId","canvas","document","getElementById","height","
|
|
1
|
+
{"version":3,"names":["contextIdToId","fabric","getNativeSurface","contextId","canvas","document","getElementById","clientHeight","height","clientWidth","width","surface","BigInt","addEventListener","bind","removeEventListener","dispatchEvent","setPointerCapture","releasePointerCapture","makeWebGPUCanvasContext","dpr","window","devicePixelRatio","pixelWidth","toString","pixelHeight","getAttribute","setAttribute","context","getContext","Object","assign","present","RNWebGPU","MakeWebGPUCanvasContext","destroyContext","_contextId"],"sourceRoot":"../../src","sources":["WebPolyfillGPUModule.ts"],"mappings":"AAAA,SAASA,aAAa,QAAQ,SAAS;AAEvC,MAAMC,MAAM,GAAG,IAAI;AAEnB,SAASC,gBAAgBA,CAACC,SAAiB,EAAE;EAC3C,MAAMC,MAAM,GAAGC,QAAQ,CAACC,cAAc,CACpCN,aAAa,CAACG,SAAS,CACzB,CAAsB;;EAEtB;EACA;EACA,MAAM;IAAEI,YAAY,EAAEC,MAAM;IAAEC,WAAW,EAAEC;EAAM,CAAC,GAAGN,MAAM;EAE3D,OAAO;IACLO,OAAO,EAAEC,MAAM,CAACT,SAAS,CAAC;IAC1BK,MAAM;IACNE,KAAK;IACLH,YAAY,EAAEC,MAAM;IACpBC,WAAW,EAAEC,KAAK;IAClB;IACAG,gBAAgB,EAAET,MAAM,CAACS,gBAAgB,CAACC,IAAI,CAACV,MAAM,CAAC;IACtDW,mBAAmB,EAAEX,MAAM,CAACW,mBAAmB,CAACD,IAAI,CAACV,MAAM,CAAC;IAC5DY,aAAa,EAAEZ,MAAM,CAACY,aAAa,CAACF,IAAI,CAACV,MAAM,CAAC;IAChDa,iBAAiB,EAAEb,MAAM,CAACa,iBAAiB,CAACH,IAAI,CAACV,MAAM,CAAC;IACxDc,qBAAqB,EAAEd,MAAM,CAACc,qBAAqB,CAACJ,IAAI,CAACV,MAAM;EACjE,CAAC;AACH;AAEA,SAASe,uBAAuBA,CAC9BhB,SAAiB,EACjBO,KAAa,EACbF,MAAc,EACd;EACA,MAAMJ,MAAM,GAAGC,QAAQ,CAACC,cAAc,CACpCN,aAAa,CAACG,SAAS,CACzB,CAAsB;EAEtB,MAAMiB,GAAG,GAAGC,MAAM,CAACC,gBAAgB,IAAI,CAAC;EACxC,MAAMC,UAAU,GAAG,CAACb,KAAK,GAAGU,GAAG,EAAEI,QAAQ,CAAC,CAAC;EAC3C,MAAMC,WAAW,GAAG,CAACjB,MAAM,GAAGY,GAAG,EAAEI,QAAQ,CAAC,CAAC;EAE7C,IACEpB,MAAM,CAACsB,YAAY,CAAC,OAAO,CAAC,KAAKH,UAAU,IAC3CnB,MAAM,CAACsB,YAAY,CAAC,QAAQ,CAAC,KAAKD,WAAW,EAC7C;IACArB,MAAM,CAACuB,YAAY,CAAC,OAAO,EAAEJ,UAAU,CAAC;IACxCnB,MAAM,CAACuB,YAAY,CAAC,QAAQ,EAAEF,WAAW,CAAC;EAC5C;EAEA,MAAMG,OAAO,GAAGxB,MAAM,CAACyB,UAAU,CAAC,QAAQ,CAAC;EAC3C;EACA;EACA,IAAI,CAACD,OAAO,EAAE;IACZ,OAAO,IAAI;EACb;EACA;EACA;EACA,OAAOE,MAAM,CAACC,MAAM,CAACH,OAAO,EAAE;IAAEI,OAAO,EAAEA,CAAA,KAAM,CAAC;EAAE,CAAC,CAAC;AACtD;;AAEA;AACAX,MAAM,CAACY,QAAQ,GAAG;EAChB/B,gBAAgB;EAChB;EACA;EACAgC,uBAAuB,EACrBf,uBAAkE;EACpE;EACAgB,cAAc,EAAGC,UAAkB,IAAK,CAAC,CAAC;EAC1CnC;AACF,CAAC","ignoreList":[]}
|
package/lib/module/constants.js
CHANGED
|
@@ -22,9 +22,12 @@
|
|
|
22
22
|
// device.createBuffer({ usage: GPUBufferUsage.COPY_DST | GPUBufferUsage.MAP_READ });
|
|
23
23
|
// };
|
|
24
24
|
//
|
|
25
|
-
// These are read at module evaluation time
|
|
26
|
-
//
|
|
27
|
-
//
|
|
25
|
+
// These are read at module evaluation time, so the native module must be
|
|
26
|
+
// installed first: the package entry (`./index.tsx`) starts with a bare
|
|
27
|
+
// `import "./main/installNative"` (so does `./main`), which runs the install
|
|
28
|
+
// before this file is reached, directly or through `./install`. An import is
|
|
29
|
+
// evaluated before the body of the module that declares it, so installing in
|
|
30
|
+
// the body of `./main` left every flag undefined.
|
|
28
31
|
|
|
29
32
|
export const {
|
|
30
33
|
GPUBufferUsage
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["GPUBufferUsage","globalThis","GPUTextureUsage","GPUShaderStage","GPUColorWrite","GPUMapMode"],"sourceRoot":"../../src","sources":["constants.ts"],"mappings":"AAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,OAAO,MAAM;EAAEA;AAAe,CAAC,GAAGC,UAAU;AAE5C,OAAO,MAAM;EAAEC;AAAgB,CAAC,GAAGD,UAAU;AAE7C,OAAO,MAAM;EAAEE;AAAe,CAAC,GAAGF,UAAU;AAE5C,OAAO,MAAM;EAAEG;AAAc,CAAC,GAAGH,UAAU;AAE3C,OAAO,MAAM;EAAEI;AAAW,CAAC,GAAGJ,UAAU","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["GPUBufferUsage","globalThis","GPUTextureUsage","GPUShaderStage","GPUColorWrite","GPUMapMode"],"sourceRoot":"../../src","sources":["constants.ts"],"mappings":"AAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,OAAO,MAAM;EAAEA;AAAe,CAAC,GAAGC,UAAU;AAE5C,OAAO,MAAM;EAAEC;AAAgB,CAAC,GAAGD,UAAU;AAE7C,OAAO,MAAM;EAAEE;AAAe,CAAC,GAAGF,UAAU;AAE5C,OAAO,MAAM;EAAEG;AAAc,CAAC,GAAGH,UAAU;AAE3C,OAAO,MAAM;EAAEI;AAAW,CAAC,GAAGJ,UAAU","ignoreList":[]}
|
package/lib/module/index.js
CHANGED
|
@@ -1,5 +1,12 @@
|
|
|
1
1
|
/// <reference types="@webgpu/types" />
|
|
2
|
-
|
|
2
|
+
// Must stay the FIRST import, and a bare one: it installs the native module
|
|
3
|
+
// (`./main/installNative.ts`; the web variant loads the RNWebGPU polyfill),
|
|
4
|
+
// and `./constants` reads the globals it installs while being evaluated.
|
|
5
|
+
// Putting it here, rather than relying on `./main` being exported before
|
|
6
|
+
// `./constants` below, makes the order of the `export *` lines irrelevant. A
|
|
7
|
+
// bare import is never deferred by `inlineRequires`, and `import/order --fix`
|
|
8
|
+
// never moves an import across one.
|
|
9
|
+
import "./main/installNative";
|
|
3
10
|
export * from "./main";
|
|
4
11
|
export * from "./constants";
|
|
5
12
|
export { installWebGPU } from "./install";
|
package/lib/module/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["installWebGPU"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":"AAAA
|
|
1
|
+
{"version":3,"names":["installWebGPU"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,sBAAsB;AAmB7B,cAAc,QAAQ;AACtB,cAAc,aAAa;AAC3B,SAASA,aAAa,QAAQ,WAAW","ignoreList":[]}
|
package/lib/module/install.js
CHANGED
|
@@ -13,23 +13,14 @@ const constants = {
|
|
|
13
13
|
GPUMapMode
|
|
14
14
|
};
|
|
15
15
|
|
|
16
|
-
// The GPU instance destined for `navigator.gpu` on other runtimes,
|
|
17
|
-
//
|
|
18
|
-
// evaluated
|
|
19
|
-
//
|
|
20
|
-
//
|
|
21
|
-
//
|
|
22
|
-
//
|
|
23
|
-
|
|
24
|
-
const holder = {};
|
|
25
|
-
|
|
26
|
-
/**
|
|
27
|
-
* @internal Called once by `main/index.tsx` after the native install, so
|
|
28
|
-
* `installWebGPU()` can put `navigator.gpu` on other runtimes.
|
|
29
|
-
*/
|
|
30
|
-
export const provideGPUForInstall = gpu => {
|
|
31
|
-
holder.gpu = gpu;
|
|
32
|
-
};
|
|
16
|
+
// The GPU instance destined for `navigator.gpu` on other runtimes, read from
|
|
17
|
+
// the native install like the flags above (the package entry runs the install
|
|
18
|
+
// before this module is evaluated). Undefined on web, where the RNWebGPU
|
|
19
|
+
// polyfill has no gpu and the browser already provides navigator.gpu. Captured
|
|
20
|
+
// into the `installWebGPU` worklet closure: when a worklet is serialized, the
|
|
21
|
+
// Worklets custom serializer boxes the GPU object, and unboxing on the target
|
|
22
|
+
// runtime installs the GPU prototype there.
|
|
23
|
+
const gpu = typeof RNWebGPU === "undefined" ? undefined : RNWebGPU.gpu;
|
|
33
24
|
|
|
34
25
|
/**
|
|
35
26
|
* Install WebGPU on the runtime that calls it.
|
|
@@ -83,9 +74,6 @@ export const installWebGPU = () => {
|
|
|
83
74
|
g[key] = value;
|
|
84
75
|
}
|
|
85
76
|
}
|
|
86
|
-
const {
|
|
87
|
-
gpu
|
|
88
|
-
} = holder;
|
|
89
77
|
if (gpu !== undefined) {
|
|
90
78
|
const nav = g.navigator;
|
|
91
79
|
if (nav === undefined) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["GPUBufferUsage","GPUColorWrite","GPUMapMode","GPUShaderStage","GPUTextureUsage","constants","
|
|
1
|
+
{"version":3,"names":["GPUBufferUsage","GPUColorWrite","GPUMapMode","GPUShaderStage","GPUTextureUsage","constants","gpu","RNWebGPU","undefined","installWebGPU","g","globalThis","key","value","Object","entries","nav","navigator","userAgent"],"sourceRoot":"../../src","sources":["install.ts"],"mappings":"AAAA;AACA,SACEA,cAAc,EACdC,aAAa,EACbC,UAAU,EACVC,cAAc,EACdC,eAAe,QACV,aAAa;;AAEpB;AACA;AACA;AACA;AACA,MAAMC,SAAS,GAAG;EAChBL,cAAc;EACdI,eAAe;EACfD,cAAc;EACdF,aAAa;EACbC;AACF,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAMI,GAAoB,GACxB,OAAOC,QAAQ,KAAK,WAAW,GAAGC,SAAS,GAAGD,QAAQ,CAACD,GAAG;;AAE5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMG,aAAa,GAAGA,CAAA,KAAM;EACjC,SAAS;;EACT,MAAMC,CAAC,GAAGC,UAAgD;EAC1D,KAAK,MAAM,CAACC,GAAG,EAAEC,KAAK,CAAC,IAAIC,MAAM,CAACC,OAAO,CAACV,SAAS,CAAC,EAAE;IACpD,IAAIK,CAAC,CAACE,GAAG,CAAC,KAAKJ,SAAS,EAAE;MACxBE,CAAC,CAACE,GAAG,CAAC,GAAGC,KAAK;IAChB;EACF;EACA,IAAIP,GAAG,KAAKE,SAAS,EAAE;IACrB,MAAMQ,GAAG,GAAGN,CAAC,CAACO,SAA0D;IACxE,IAAID,GAAG,KAAKR,SAAS,EAAE;MACrBE,CAAC,CAACO,SAAS,GAAG;QAAEX,GAAG;QAAEY,SAAS,EAAE;MAAe,CAAC;IAClD,CAAC,MAAM,IAAIF,GAAG,CAACV,GAAG,KAAKE,SAAS,EAAE;MAChCQ,GAAG,CAACV,GAAG,GAAGA,GAAG;IACf;EACF;AACF,CAAC","ignoreList":[]}
|
package/lib/module/main/index.js
CHANGED
|
@@ -1,7 +1,11 @@
|
|
|
1
|
+
// Must stay the FIRST import, and a bare one: it installs the native module
|
|
2
|
+
// (the RNWebGPU global and the WebGPU globals) before anything else here is
|
|
3
|
+
// evaluated; the package entry imports it first as well, see ./installNative.ts.
|
|
4
|
+
// An import with bindings could be deferred to its first use by
|
|
5
|
+
// `inlineRequires`; a bare import is not.
|
|
6
|
+
import "./installNative";
|
|
1
7
|
import { findNodeHandle } from "react-native";
|
|
2
8
|
import { registerWebGPUForReanimated } from "../external";
|
|
3
|
-
import { provideGPUForInstall } from "../install";
|
|
4
|
-
import WebGPUModule from "../NativeWebGPUModule";
|
|
5
9
|
// Resolve the `source` of drawElementImageToTexture to a React tag on the
|
|
6
10
|
// main JS runtime, where findNodeHandle is available: it handles class
|
|
7
11
|
// components and legacy host instances that the native fallback (a number or
|
|
@@ -42,7 +46,6 @@ export * from "../importDevice";
|
|
|
42
46
|
export * from "../video";
|
|
43
47
|
export * from "../formats";
|
|
44
48
|
export { default as WebGPUModule } from "../NativeWebGPUModule";
|
|
45
|
-
const _installOk = WebGPUModule.install();
|
|
46
49
|
registerWebGPUForReanimated();
|
|
47
50
|
if (typeof RNWebGPU !== "undefined") {
|
|
48
51
|
if (!navigator) {
|
|
@@ -65,9 +68,5 @@ if (typeof RNWebGPU !== "undefined") {
|
|
|
65
68
|
}
|
|
66
69
|
global.createImageBitmap = global.createImageBitmap ?? RNWebGPU.createImageBitmap.bind(RNWebGPU);
|
|
67
70
|
installDrawElementImageToTexture();
|
|
68
|
-
// Let installWebGPU() put navigator.gpu on other runtimes (see install.ts).
|
|
69
|
-
provideGPUForInstall(RNWebGPU.gpu);
|
|
70
|
-
} else {
|
|
71
|
-
console.warn(`[react-native-webgpu] install() returned ${_installOk} but RNWebGPU global is not available`);
|
|
72
71
|
}
|
|
73
72
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["findNodeHandle","registerWebGPUForReanimated","
|
|
1
|
+
{"version":3,"names":["findNodeHandle","registerWebGPUForReanimated","resolveElementSource","source","instance","current","tag","undefined","Error","installDrawElementImageToTexture","GPUQueue","native","prototype","drawElementImageToTexture","destination","call","default","WebGPUModule","RNWebGPU","navigator","gpu","userAgent","global","createImageBitmap","bind"],"sourceRoot":"../../../src","sources":["main/index.tsx"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA,OAAO,iBAAiB;AAExB,SAASA,cAAc,QAAQ,cAAc;AAE7C,SAASC,2BAA2B,QAAQ,aAAa;AAGzD;AACA;AACA;AACA;AACA,MAAMC,oBAAoB,GAAIC,MAAqC,IAAK;EACtE,IAAI,OAAOA,MAAM,KAAK,QAAQ,EAAE;IAC9B,OAAOA,MAAM;EACf;EACA,MAAMC,QAAQ,GACZD,MAAM,KAAK,IAAI,IAAI,OAAOA,MAAM,KAAK,QAAQ,IAAI,SAAS,IAAIA,MAAM,GAChEA,MAAM,CAACE,OAAO,GACdF,MAAM;EACZ;EACA,MAAMG,GAAG,GAAGF,QAAQ,IAAI,IAAI,GAAG,IAAI,GAAGJ,cAAc,CAACI,QAAe,CAAC;EACrE,IAAIE,GAAG,KAAK,IAAI,IAAIA,GAAG,KAAKC,SAAS,EAAE;IACrC,MAAM,IAAIC,KAAK,CACb,qEAAqE,GACnE,+DAA+D,GAC/D,sBACJ,CAAC;EACH;EACA,OAAOF,GAAG;AACZ,CAAC;AAED,MAAMG,gCAAgC,GAAGA,CAAA,KAAM;EAC7C,IAAI,OAAOC,QAAQ,KAAK,WAAW,EAAE;IACnC;EACF;EACA,MAAMC,MAAM,GAAGD,QAAQ,CAACE,SAAS,CAACC,yBAAyB;EAC3D,IAAI,OAAOF,MAAM,KAAK,UAAU,EAAE;IAChC;EACF;EACAD,QAAQ,CAACE,SAAS,CAACC,yBAAyB,GAAG,UAE7CV,MAAM,EACNW,WAAW,EACX;IACA,OAAOH,MAAM,CAACI,IAAI,CAChB,IAAI,EACJ;MAAE,GAAGZ,MAAM;MAAEA,MAAM,EAAED,oBAAoB,CAACC,MAAM,CAACA,MAAM;IAAE,CAAC,EAC1DW,WACF,CAAC;EACH,CAAC;AACH,CAAC;AAED,cAAc,WAAW;AACzB,cAAc,cAAc;AAC5B,cAAc,8BAA8B;AAC5C,cAAc,UAAU;AACxB,cAAc,sBAAsB;AACpC,cAAc,iBAAiB;AAC/B,cAAc,UAAU;AACxB,cAAc,YAAY;AAE1B,SAASE,OAAO,IAAIC,YAAY,QAAQ,uBAAuB;AAE/DhB,2BAA2B,CAAC,CAAC;AAE7B,IAAI,OAAOiB,QAAQ,KAAK,WAAW,EAAE;EACnC,IAAI,CAACC,SAAS,EAAE;IACd;IACAA,SAAS,GAAG;MACVC,GAAG,EAAEF,QAAQ,CAACE,GAAG;MACjBC,SAAS,EAAE;IACb,CAAC;EACH,CAAC,MAAM;IACLF,SAAS,CAACC,GAAG,GAAGF,QAAQ,CAACE,GAAG;IAC5B,IAAI,OAAOD,SAAS,CAACE,SAAS,KAAK,QAAQ,EAAE;MAC3C,IAAI;QACF;QACA;QACAF,SAAS,CAACE,SAAS,GAAG,cAAc;MACtC,CAAC,CAAC,MAAM;QACN;MAAA;IAEJ;EACF;EACAC,MAAM,CAACC,iBAAiB,GACtBD,MAAM,CAACC,iBAAiB,IAAIL,QAAQ,CAACK,iBAAiB,CAACC,IAAI,CAACN,QAAQ,CAAC;EACvET,gCAAgC,CAAC,CAAC;AACpC","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":[],"sourceRoot":"../../../src","sources":["main/index.web.tsx"],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"names":[],"sourceRoot":"../../../src","sources":["main/index.web.tsx"],"mappings":"AAAA,OAAO,iBAAiB;AAExB,cAAc,WAAW;AACzB,cAAc,cAAc;AAC5B,cAAc,8BAA8B;AAC5C,cAAc,UAAU;AACxB,cAAc,sBAAsB;AACpC,cAAc,YAAY;AAC1B,cAAc,UAAU;;AAExB","ignoreList":[]}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import WebGPUModule from "../NativeWebGPUModule";
|
|
2
|
+
|
|
3
|
+
// Installs the native module: the RNWebGPU global, and the WebGPU globals of
|
|
4
|
+
// the main runtime (GPUBufferUsage, GPUTextureUsage, GPUShaderStage...).
|
|
5
|
+
//
|
|
6
|
+
// A module of its own, imported FIRST (as a bare import) by the package entry
|
|
7
|
+
// `../index.tsx` and by `./index.tsx`, because `../constants` reads those
|
|
8
|
+
// globals while it is evaluated, and every import of a module is evaluated
|
|
9
|
+
// before that module's body. Installing in the body of `./index.tsx` came too
|
|
10
|
+
// late: the flags exported by the package were all undefined.
|
|
11
|
+
const installOk = WebGPUModule.install();
|
|
12
|
+
if (typeof RNWebGPU === "undefined") {
|
|
13
|
+
// install() logs the reason natively (e.g. a null jsi::Runtime on iOS).
|
|
14
|
+
// Nothing works from here on (navigator.gpu, the flag constants, Canvas),
|
|
15
|
+
// so fail at import time rather than leave every export undefined.
|
|
16
|
+
throw new Error(`[react-native-webgpu] the native module failed to install (install() returned ${installOk}): the RNWebGPU global is not available. Make sure the native dependencies are installed and rebuild the app.`);
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=installNative.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["WebGPUModule","installOk","install","RNWebGPU","Error"],"sourceRoot":"../../../src","sources":["main/installNative.ts"],"mappings":"AAAA,OAAOA,YAAY,MAAM,uBAAuB;;AAEhD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAMC,SAAS,GAAGD,YAAY,CAACE,OAAO,CAAC,CAAC;AAExC,IAAI,OAAOC,QAAQ,KAAK,WAAW,EAAE;EACnC;EACA;EACA;EACA,MAAM,IAAIC,KAAK,CACb,iFAAiFH,SAAS,+GAC5F,CAAC;AACH","ignoreList":[]}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
// Web counterpart of ./installNative.ts, so the package entry can import
|
|
2
|
+
// `./main/installNative` on every platform without reaching the TurboModule
|
|
3
|
+
// here. The browser provides the WebGPU globals (navigator.gpu, the flag
|
|
4
|
+
// constants); the polyfill provides the RNWebGPU global that Canvas relies on.
|
|
5
|
+
import "../WebPolyfillGPUModule";
|
|
6
|
+
//# sourceMappingURL=installNative.web.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":[],"sourceRoot":"../../../src","sources":["main/installNative.web.ts"],"mappings":"AAAA;AACA;AACA;AACA;AACA,OAAO,yBAAyB","ignoreList":[]}
|
package/lib/module/mock.js
CHANGED
|
@@ -12,8 +12,62 @@ import { View } from "react-native";
|
|
|
12
12
|
// missing native install (see `importDevice`/`adoptTexture` in
|
|
13
13
|
// `./importDevice.ts`).
|
|
14
14
|
|
|
15
|
-
export * from "./constants";
|
|
16
15
|
export * from "./formats";
|
|
16
|
+
|
|
17
|
+
// The flag constants. The real package re-exports the globals the native
|
|
18
|
+
// module installs (`./constants.ts`); nothing installs them under Jest, so the
|
|
19
|
+
// mock defines the spec values itself and, like the native install, also puts
|
|
20
|
+
// them on globalThis for code that references the bare globals.
|
|
21
|
+
export const GPUBufferUsage = {
|
|
22
|
+
MAP_READ: 0x0001,
|
|
23
|
+
MAP_WRITE: 0x0002,
|
|
24
|
+
COPY_SRC: 0x0004,
|
|
25
|
+
COPY_DST: 0x0008,
|
|
26
|
+
INDEX: 0x0010,
|
|
27
|
+
VERTEX: 0x0020,
|
|
28
|
+
UNIFORM: 0x0040,
|
|
29
|
+
STORAGE: 0x0080,
|
|
30
|
+
INDIRECT: 0x0100,
|
|
31
|
+
QUERY_RESOLVE: 0x0200
|
|
32
|
+
};
|
|
33
|
+
export const GPUTextureUsage = {
|
|
34
|
+
COPY_SRC: 0x01,
|
|
35
|
+
COPY_DST: 0x02,
|
|
36
|
+
TEXTURE_BINDING: 0x04,
|
|
37
|
+
STORAGE_BINDING: 0x08,
|
|
38
|
+
RENDER_ATTACHMENT: 0x10,
|
|
39
|
+
TRANSIENT_ATTACHMENT: 0x20
|
|
40
|
+
};
|
|
41
|
+
export const GPUShaderStage = {
|
|
42
|
+
VERTEX: 0x1,
|
|
43
|
+
FRAGMENT: 0x2,
|
|
44
|
+
COMPUTE: 0x4
|
|
45
|
+
};
|
|
46
|
+
export const GPUColorWrite = {
|
|
47
|
+
RED: 0x1,
|
|
48
|
+
GREEN: 0x2,
|
|
49
|
+
BLUE: 0x4,
|
|
50
|
+
ALPHA: 0x8,
|
|
51
|
+
ALL: 0xf
|
|
52
|
+
};
|
|
53
|
+
export const GPUMapMode = {
|
|
54
|
+
READ: 0x1,
|
|
55
|
+
WRITE: 0x2
|
|
56
|
+
};
|
|
57
|
+
{
|
|
58
|
+
const g = globalThis;
|
|
59
|
+
for (const [key, value] of Object.entries({
|
|
60
|
+
GPUBufferUsage,
|
|
61
|
+
GPUTextureUsage,
|
|
62
|
+
GPUShaderStage,
|
|
63
|
+
GPUColorWrite,
|
|
64
|
+
GPUMapMode
|
|
65
|
+
})) {
|
|
66
|
+
if (g[key] === undefined) {
|
|
67
|
+
g[key] = value;
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
}
|
|
17
71
|
const NOT_AVAILABLE_UNDER_JEST = "is not available under Jest - react-native-webgpu has no native implementation in tests (see react-native-webgpu/jestSetup.js)";
|
|
18
72
|
// Strip the same props the real Canvas keeps off its outer View.
|
|
19
73
|
export const Canvas = ({
|
package/lib/module/mock.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","View","NOT_AVAILABLE_UNDER_JEST","Canvas","opaque","_opaque","android","_android","ref","props","useImperativeHandle","getContextId","getContext","_contextName","getNativeSurface","Error","createElement","useCanvasRef","useRef","useSurface","surface","warnIfNotHardwareAccelerated","
|
|
1
|
+
{"version":3,"names":["React","View","GPUBufferUsage","MAP_READ","MAP_WRITE","COPY_SRC","COPY_DST","INDEX","VERTEX","UNIFORM","STORAGE","INDIRECT","QUERY_RESOLVE","GPUTextureUsage","TEXTURE_BINDING","STORAGE_BINDING","RENDER_ATTACHMENT","TRANSIENT_ATTACHMENT","GPUShaderStage","FRAGMENT","COMPUTE","GPUColorWrite","RED","GREEN","BLUE","ALPHA","ALL","GPUMapMode","READ","WRITE","g","globalThis","key","value","Object","entries","undefined","NOT_AVAILABLE_UNDER_JEST","Canvas","opaque","_opaque","android","_android","ref","props","useImperativeHandle","getContextId","getContext","_contextName","getNativeSurface","Error","createElement","useCanvasRef","useRef","useSurface","surface","warnIfNotHardwareAccelerated","useDevice","adapter","device","GPUDeviceProvider","children","useMainDevice","importDevice","_pointer","adoptTexture","installWebGPU","WebGPUModule","install"],"sourceRoot":"../../src","sources":["mock.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Canvas.d.ts","sourceRoot":"","sources":["../../../commonjs/Canvas.js"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"Canvas.d.ts","sourceRoot":"","sources":["../../../commonjs/Canvas.js"],"names":[],"mappings":";AAiDA;;;;;QAiDC"}
|
|
@@ -1,8 +1,46 @@
|
|
|
1
1
|
export const __esModule: boolean;
|
|
2
2
|
/**
|
|
3
|
-
*
|
|
4
|
-
*
|
|
3
|
+
* Install WebGPU on the runtime that calls it.
|
|
4
|
+
*
|
|
5
|
+
* The native module sets up WebGPU on the main JS runtime, but worklet
|
|
6
|
+
* runtimes (Reanimated UI, dedicated worklet runtimes, Vision Camera frame
|
|
7
|
+
* processors) start without it: `navigator.gpu` and the flag constants
|
|
8
|
+
* (`GPUBufferUsage`, `GPUTextureUsage`, `GPUShaderStage`, `GPUColorWrite`,
|
|
9
|
+
* `GPUMapMode`) are all `undefined` there.
|
|
10
|
+
*
|
|
11
|
+
* Call `installWebGPU()` once at the top of a worklet to make them available:
|
|
12
|
+
*
|
|
13
|
+
* ```tsx
|
|
14
|
+
* import { installWebGPU } from "react-native-webgpu";
|
|
15
|
+
*
|
|
16
|
+
* const work = () => {
|
|
17
|
+
* "worklet";
|
|
18
|
+
* installWebGPU();
|
|
19
|
+
* navigator.gpu.requestAdapter().then((adapter) => {
|
|
20
|
+
* // ...
|
|
21
|
+
* });
|
|
22
|
+
* };
|
|
23
|
+
* ```
|
|
24
|
+
*
|
|
25
|
+
* Known limitations:
|
|
26
|
+
*
|
|
27
|
+
* - On react-native-worklets < 0.13.0, read `navigator` through
|
|
28
|
+
* `globalThis.navigator`: older versions of the Worklets Babel plugin do
|
|
29
|
+
* not treat a bare `navigator` as a known global, so they capture the main
|
|
30
|
+
* runtime's `navigator` object by closure instead of reading the one this
|
|
31
|
+
* function installed.
|
|
32
|
+
* - Spontaneous events are main-runtime only: on a device created on a
|
|
33
|
+
* worklet runtime, `device.lost` never settles (unless the device is
|
|
34
|
+
* already lost when read) and `uncapturederror` listeners never fire.
|
|
35
|
+
* Observe those on a device created on the main JS thread.
|
|
36
|
+
*
|
|
37
|
+
* Everything is captured into the worklet by closure: the constants like a
|
|
38
|
+
* shader string would be, and the GPU object through the Worklets custom
|
|
39
|
+
* serializer, which installs the native prototypes on the target runtime when
|
|
40
|
+
* it crosses. Promises returned by `requestAdapter`/`requestDevice` settle on
|
|
41
|
+
* the calling runtime (each runtime gets its own async pump). Calling it on a
|
|
42
|
+
* runtime that already has the globals (e.g. the main JS runtime) is a safe
|
|
43
|
+
* no-op.
|
|
5
44
|
*/
|
|
6
|
-
export function provideGPUForInstall(gpu: any): void;
|
|
7
45
|
export function installWebGPU(): void;
|
|
8
46
|
//# sourceMappingURL=install.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"install.d.ts","sourceRoot":"","sources":["../../../commonjs/install.js"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"install.d.ts","sourceRoot":"","sources":["../../../commonjs/install.js"],"names":[],"mappings":";AA8BA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;AACH,sCAoBC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"installNative.d.ts","sourceRoot":"","sources":["../../../../commonjs/main/installNative.js"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"installNative.web.d.ts","sourceRoot":"","sources":["../../../../commonjs/main/installNative.web.js"],"names":[],"mappings":""}
|
|
@@ -1,4 +1,43 @@
|
|
|
1
1
|
export const __esModule: boolean;
|
|
2
|
+
export namespace GPUBufferUsage {
|
|
3
|
+
let MAP_READ: number;
|
|
4
|
+
let MAP_WRITE: number;
|
|
5
|
+
let COPY_SRC: number;
|
|
6
|
+
let COPY_DST: number;
|
|
7
|
+
let INDEX: number;
|
|
8
|
+
let VERTEX: number;
|
|
9
|
+
let UNIFORM: number;
|
|
10
|
+
let STORAGE: number;
|
|
11
|
+
let INDIRECT: number;
|
|
12
|
+
let QUERY_RESOLVE: number;
|
|
13
|
+
}
|
|
14
|
+
export namespace GPUTextureUsage {
|
|
15
|
+
let COPY_SRC_1: number;
|
|
16
|
+
export { COPY_SRC_1 as COPY_SRC };
|
|
17
|
+
let COPY_DST_1: number;
|
|
18
|
+
export { COPY_DST_1 as COPY_DST };
|
|
19
|
+
export let TEXTURE_BINDING: number;
|
|
20
|
+
export let STORAGE_BINDING: number;
|
|
21
|
+
export let RENDER_ATTACHMENT: number;
|
|
22
|
+
export let TRANSIENT_ATTACHMENT: number;
|
|
23
|
+
}
|
|
24
|
+
export namespace GPUShaderStage {
|
|
25
|
+
let VERTEX_1: number;
|
|
26
|
+
export { VERTEX_1 as VERTEX };
|
|
27
|
+
export let FRAGMENT: number;
|
|
28
|
+
export let COMPUTE: number;
|
|
29
|
+
}
|
|
30
|
+
export namespace GPUColorWrite {
|
|
31
|
+
let RED: number;
|
|
32
|
+
let GREEN: number;
|
|
33
|
+
let BLUE: number;
|
|
34
|
+
let ALPHA: number;
|
|
35
|
+
let ALL: number;
|
|
36
|
+
}
|
|
37
|
+
export namespace GPUMapMode {
|
|
38
|
+
let READ: number;
|
|
39
|
+
let WRITE: number;
|
|
40
|
+
}
|
|
2
41
|
export namespace WebGPUModule {
|
|
3
42
|
function install(): boolean;
|
|
4
43
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mock.d.ts","sourceRoot":"","sources":["../../../commonjs/mock.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"mock.d.ts","sourceRoot":"","sources":["../../../commonjs/mock.js"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IA6JW,4BAAW;;AAjDtB;;;;;QAcC;AAED,oCAAsD;AAEtD;;;EAGE;AAEF,0DAAoD;AAEpD;;;EAGE;AAEF;;QAEsB;AAEtB,uCAEC;AAED,mDAEC;AAED,mDAEC;AAED,2CAAqC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Canvas.d.ts","sourceRoot":"","sources":["../../../module/Canvas.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Canvas.d.ts","sourceRoot":"","sources":["../../../module/Canvas.js"],"names":[],"mappings":"AAyCO;;;;;2DAiDN;qBAxF8B,cAAc;kBAD2B,OAAO"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"install.d.ts","sourceRoot":"","sources":["../../../module/install.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"install.d.ts","sourceRoot":"","sources":["../../../module/install.js"],"names":[],"mappings":"AAmEO,sCAoBN"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"installNative.d.ts","sourceRoot":"","sources":["../../../../module/main/installNative.js"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"installNative.web.d.ts","sourceRoot":"","sources":["../../../../module/main/installNative.web.js"],"names":[],"mappings":""}
|