react-native-webgpu 0.6.4 → 0.7.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/apple/WebGPUView.mm +1 -2
- package/cpp/rnwgpu/api/GPU.cpp +21 -0
- package/cpp/rnwgpu/api/RNWebGPU.h +24 -0
- package/lib/commonjs/importDevice.js +28 -0
- package/lib/commonjs/importDevice.js.map +1 -0
- package/lib/commonjs/main/index.js +12 -0
- package/lib/commonjs/main/index.js.map +1 -1
- package/lib/module/importDevice.js +21 -0
- package/lib/module/importDevice.js.map +1 -0
- package/lib/module/main/index.js +1 -0
- package/lib/module/main/index.js.map +1 -1
- package/lib/typescript/lib/commonjs/importDevice.d.ts +17 -0
- package/lib/typescript/lib/commonjs/importDevice.d.ts.map +1 -0
- package/lib/typescript/lib/module/importDevice.d.ts +2 -0
- package/lib/typescript/lib/module/importDevice.d.ts.map +1 -0
- package/lib/typescript/lib/module/main/index.d.ts +1 -0
- package/lib/typescript/src/importDevice.d.ts +16 -0
- package/lib/typescript/src/importDevice.d.ts.map +1 -0
- package/lib/typescript/src/index.d.ts +1 -0
- package/lib/typescript/src/index.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/package.json +1 -1
- package/react-native-webgpu.podspec +5 -0
- package/src/importDevice.ts +22 -0
- package/src/index.tsx +4 -0
- package/src/main/index.tsx +1 -0
package/apple/WebGPUView.mm
CHANGED
package/cpp/rnwgpu/api/GPU.cpp
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
#include "GPU.h"
|
|
2
2
|
|
|
3
|
+
#include <dlfcn.h>
|
|
4
|
+
|
|
3
5
|
#include <cstdio>
|
|
4
6
|
#include <memory>
|
|
5
7
|
#include <string>
|
|
@@ -14,6 +16,25 @@
|
|
|
14
16
|
namespace rnwgpu {
|
|
15
17
|
|
|
16
18
|
GPU::GPU(jsi::Runtime & /*runtime*/) : NativeObject(CLASS_NAME) {
|
|
19
|
+
// If a Graphite build of @shopify/react-native-skia is loaded in this
|
|
20
|
+
// process, adopt its wgpu::Instance instead of creating our own, so
|
|
21
|
+
// Graphite's device and every JS-created device live on one instance. That
|
|
22
|
+
// makes pointer-based handoff (RNWebGPU.importDevice of Skia's device)
|
|
23
|
+
// sound: the async pump serves the shared instance, so callbacks on
|
|
24
|
+
// imported devices settle. Discovered at runtime via dlsym so there is no
|
|
25
|
+
// build-time coupling and native-module init order does not matter. Both
|
|
26
|
+
// packages must link the same single Dawn copy (they vendor the same
|
|
27
|
+
// artifact) for the handle to be meaningful.
|
|
28
|
+
using GetInstanceFn = WGPUInstance (*)();
|
|
29
|
+
if (auto getSkiaInstance = reinterpret_cast<GetInstanceFn>(
|
|
30
|
+
dlsym(RTLD_DEFAULT, "rnskia_getWGPUInstance"))) {
|
|
31
|
+
if (WGPUInstance external = getSkiaInstance()) {
|
|
32
|
+
wgpuInstanceAddRef(external);
|
|
33
|
+
_instance = wgpu::Instance::Acquire(external);
|
|
34
|
+
return;
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
|
|
17
38
|
static const auto kTimedWaitAny = wgpu::InstanceFeatureName::TimedWaitAny;
|
|
18
39
|
wgpu::InstanceDescriptor instanceDesc{.requiredFeatureCount = 1,
|
|
19
40
|
.requiredFeatures = &kTimedWaitAny};
|
|
@@ -9,6 +9,8 @@
|
|
|
9
9
|
#include "Canvas.h"
|
|
10
10
|
#include "GPU.h"
|
|
11
11
|
#include "GPUCanvasContext.h"
|
|
12
|
+
#include "GPUDevice.h"
|
|
13
|
+
#include "rnwgpu/async/RuntimeContext.h"
|
|
12
14
|
#include "ImageBitmap.h"
|
|
13
15
|
#include "PlatformContext.h"
|
|
14
16
|
#include "VideoFrame.h"
|
|
@@ -78,6 +80,26 @@ public:
|
|
|
78
80
|
return ctx;
|
|
79
81
|
}
|
|
80
82
|
|
|
83
|
+
// Wrap an externally created WGPUDevice (passed as a BigInt pointer, e.g.
|
|
84
|
+
// Skia's Graphite device from Skia.getNativeDevice()) in a GPUDevice.
|
|
85
|
+
// AddRefs the handle, so the original owner keeps its reference. Only sound
|
|
86
|
+
// because the process links a single Dawn copy and the GPU instance is
|
|
87
|
+
// shared with the exporter (see the GPU constructor): the calling runtime's
|
|
88
|
+
// pump serves the instance the device lives on, so its async callbacks
|
|
89
|
+
// settle normally.
|
|
90
|
+
std::shared_ptr<GPUDevice> importDevice(jsi::Runtime &runtime,
|
|
91
|
+
void *pointer) {
|
|
92
|
+
if (pointer == nullptr) {
|
|
93
|
+
throw std::runtime_error(
|
|
94
|
+
"importDevice: expected a non-null WGPUDevice pointer (BigInt)");
|
|
95
|
+
}
|
|
96
|
+
auto raw = reinterpret_cast<WGPUDevice>(pointer);
|
|
97
|
+
wgpuDeviceAddRef(raw);
|
|
98
|
+
wgpu::Device device = wgpu::Device::Acquire(raw);
|
|
99
|
+
auto ctx = async::RuntimeContext::getOrCreate(runtime, _gpu->get());
|
|
100
|
+
return std::make_shared<GPUDevice>(device, ctx, "Imported Device");
|
|
101
|
+
}
|
|
102
|
+
|
|
81
103
|
jsi::Value createImageBitmap(jsi::Runtime &runtime,
|
|
82
104
|
const jsi::Value & /*thisVal*/,
|
|
83
105
|
const jsi::Value *args, size_t count) {
|
|
@@ -285,6 +307,8 @@ public:
|
|
|
285
307
|
&RNWebGPU::createTestVideoFrame);
|
|
286
308
|
installMethod(runtime, prototype, "createVideoFrameFromNativeBuffer",
|
|
287
309
|
&RNWebGPU::createVideoFrameFromNativeBuffer);
|
|
310
|
+
installMethodWithRuntime(runtime, prototype, "importDevice",
|
|
311
|
+
&RNWebGPU::importDevice);
|
|
288
312
|
installMethod(runtime, prototype, "createVideoPlayer",
|
|
289
313
|
&RNWebGPU::createVideoPlayer);
|
|
290
314
|
installMethod(runtime, prototype, "writeTestVideoFile",
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.importDevice = void 0;
|
|
7
|
+
/**
|
|
8
|
+
* Wraps an externally created WGPUDevice pointer into a GPUDevice.
|
|
9
|
+
*
|
|
10
|
+
* The canonical use case is adopting the Graphite device from a
|
|
11
|
+
* @shopify/react-native-skia Graphite build:
|
|
12
|
+
*
|
|
13
|
+
* ```ts
|
|
14
|
+
* const device = importDevice(Skia.getNativeDevice());
|
|
15
|
+
* ```
|
|
16
|
+
*
|
|
17
|
+
* This is only sound when the exporting library links the same single Dawn
|
|
18
|
+
* copy as react-native-webgpu and shares its wgpu::Instance (react-native-skia
|
|
19
|
+
* Graphite builds do both).
|
|
20
|
+
*/
|
|
21
|
+
const importDevice = pointer => {
|
|
22
|
+
if (typeof RNWebGPU === "undefined") {
|
|
23
|
+
throw new Error("react-native-webgpu is not installed natively; importDevice is unavailable");
|
|
24
|
+
}
|
|
25
|
+
return RNWebGPU.importDevice(pointer);
|
|
26
|
+
};
|
|
27
|
+
exports.importDevice = importDevice;
|
|
28
|
+
//# sourceMappingURL=importDevice.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["importDevice","pointer","RNWebGPU","Error","exports"],"sourceRoot":"../../src","sources":["importDevice.ts"],"mappings":";;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAMA,YAAY,GAAIC,OAAe,IAAgB;EAC1D,IAAI,OAAOC,QAAQ,KAAK,WAAW,EAAE;IACnC,MAAM,IAAIC,KAAK,CACb,4EACF,CAAC;EACH;EACA,OAAOD,QAAQ,CAACF,YAAY,CAACC,OAAO,CAAC;AACvC,CAAC;AAACG,OAAA,CAAAJ,YAAA,GAAAA,YAAA","ignoreList":[]}
|
|
@@ -74,6 +74,18 @@ Object.keys(_GPUDeviceProvider).forEach(function (key) {
|
|
|
74
74
|
}
|
|
75
75
|
});
|
|
76
76
|
});
|
|
77
|
+
var _importDevice = require("../importDevice");
|
|
78
|
+
Object.keys(_importDevice).forEach(function (key) {
|
|
79
|
+
if (key === "default" || key === "__esModule") return;
|
|
80
|
+
if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
|
|
81
|
+
if (key in exports && exports[key] === _importDevice[key]) return;
|
|
82
|
+
Object.defineProperty(exports, key, {
|
|
83
|
+
enumerable: true,
|
|
84
|
+
get: function () {
|
|
85
|
+
return _importDevice[key];
|
|
86
|
+
}
|
|
87
|
+
});
|
|
88
|
+
});
|
|
77
89
|
var _formats = require("../formats");
|
|
78
90
|
Object.keys(_formats).forEach(function (key) {
|
|
79
91
|
if (key === "default" || key === "__esModule") return;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_external","require","_NativeWebGPUModule","_interopRequireDefault","_Canvas","Object","keys","forEach","key","prototype","hasOwnProperty","call","_exportNames","exports","defineProperty","enumerable","get","_Offscreen","_WebGPUViewNativeComponent","_hooks","_GPUDeviceProvider","_formats","e","__esModule","default","_installOk","WebGPUModule","install","registerWebGPUForReanimated","RNWebGPU","navigator","gpu","userAgent","global","createImageBitmap","bind","console","warn"],"sourceRoot":"../../../src","sources":["main/index.tsx"],"mappings":";;;;;;;;;;;;;;AAAA,IAAAA,SAAA,GAAAC,OAAA;AACA,IAAAC,mBAAA,GAAAC,sBAAA,CAAAF,OAAA;AAEA,IAAAG,OAAA,GAAAH,OAAA;AAAAI,MAAA,CAAAC,IAAA,CAAAF,OAAA,EAAAG,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAC,YAAA,EAAAJ,GAAA;EAAA,IAAAA,GAAA,IAAAK,OAAA,IAAAA,OAAA,CAAAL,GAAA,MAAAJ,OAAA,CAAAI,GAAA;EAAAH,MAAA,CAAAS,cAAA,CAAAD,OAAA,EAAAL,GAAA;IAAAO,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAZ,OAAA,CAAAI,GAAA;IAAA;EAAA;AAAA;AACA,IAAAS,UAAA,GAAAhB,OAAA;AAAAI,MAAA,CAAAC,IAAA,CAAAW,UAAA,EAAAV,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAC,YAAA,EAAAJ,GAAA;EAAA,IAAAA,GAAA,IAAAK,OAAA,IAAAA,OAAA,CAAAL,GAAA,MAAAS,UAAA,CAAAT,GAAA;EAAAH,MAAA,CAAAS,cAAA,CAAAD,OAAA,EAAAL,GAAA;IAAAO,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAC,UAAA,CAAAT,GAAA;IAAA;EAAA;AAAA;AACA,IAAAU,0BAAA,GAAAjB,OAAA;AAAAI,MAAA,CAAAC,IAAA,CAAAY,0BAAA,EAAAX,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAC,YAAA,EAAAJ,GAAA;EAAA,IAAAA,GAAA,IAAAK,OAAA,IAAAA,OAAA,CAAAL,GAAA,MAAAU,0BAAA,CAAAV,GAAA;EAAAH,MAAA,CAAAS,cAAA,CAAAD,OAAA,EAAAL,GAAA;IAAAO,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAE,0BAAA,CAAAV,GAAA;IAAA;EAAA;AAAA;AACA,IAAAW,MAAA,GAAAlB,OAAA;AAAAI,MAAA,CAAAC,IAAA,CAAAa,MAAA,EAAAZ,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAC,YAAA,EAAAJ,GAAA;EAAA,IAAAA,GAAA,IAAAK,OAAA,IAAAA,OAAA,CAAAL,GAAA,MAAAW,MAAA,CAAAX,GAAA;EAAAH,MAAA,CAAAS,cAAA,CAAAD,OAAA,EAAAL,GAAA;IAAAO,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAG,MAAA,CAAAX,GAAA;IAAA;EAAA;AAAA;AACA,IAAAY,kBAAA,GAAAnB,OAAA;AAAAI,MAAA,CAAAC,IAAA,CAAAc,kBAAA,EAAAb,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAC,YAAA,EAAAJ,GAAA;EAAA,IAAAA,GAAA,IAAAK,OAAA,IAAAA,OAAA,CAAAL,GAAA,MAAAY,kBAAA,CAAAZ,GAAA;EAAAH,MAAA,CAAAS,cAAA,CAAAD,OAAA,EAAAL,GAAA;IAAAO,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAI,kBAAA,CAAAZ,GAAA;IAAA;EAAA;AAAA;AACA,IAAAa,
|
|
1
|
+
{"version":3,"names":["_external","require","_NativeWebGPUModule","_interopRequireDefault","_Canvas","Object","keys","forEach","key","prototype","hasOwnProperty","call","_exportNames","exports","defineProperty","enumerable","get","_Offscreen","_WebGPUViewNativeComponent","_hooks","_GPUDeviceProvider","_importDevice","_formats","e","__esModule","default","_installOk","WebGPUModule","install","registerWebGPUForReanimated","RNWebGPU","navigator","gpu","userAgent","global","createImageBitmap","bind","console","warn"],"sourceRoot":"../../../src","sources":["main/index.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Wraps an externally created WGPUDevice pointer into a GPUDevice.
|
|
3
|
+
*
|
|
4
|
+
* The canonical use case is adopting the Graphite device from a
|
|
5
|
+
* @shopify/react-native-skia Graphite build:
|
|
6
|
+
*
|
|
7
|
+
* ```ts
|
|
8
|
+
* const device = importDevice(Skia.getNativeDevice());
|
|
9
|
+
* ```
|
|
10
|
+
*
|
|
11
|
+
* This is only sound when the exporting library links the same single Dawn
|
|
12
|
+
* copy as react-native-webgpu and shares its wgpu::Instance (react-native-skia
|
|
13
|
+
* Graphite builds do both).
|
|
14
|
+
*/
|
|
15
|
+
export const importDevice = pointer => {
|
|
16
|
+
if (typeof RNWebGPU === "undefined") {
|
|
17
|
+
throw new Error("react-native-webgpu is not installed natively; importDevice is unavailable");
|
|
18
|
+
}
|
|
19
|
+
return RNWebGPU.importDevice(pointer);
|
|
20
|
+
};
|
|
21
|
+
//# sourceMappingURL=importDevice.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["importDevice","pointer","RNWebGPU","Error"],"sourceRoot":"../../src","sources":["importDevice.ts"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMA,YAAY,GAAIC,OAAe,IAAgB;EAC1D,IAAI,OAAOC,QAAQ,KAAK,WAAW,EAAE;IACnC,MAAM,IAAIC,KAAK,CACb,4EACF,CAAC;EACH;EACA,OAAOD,QAAQ,CAACF,YAAY,CAACC,OAAO,CAAC;AACvC,CAAC","ignoreList":[]}
|
package/lib/module/main/index.js
CHANGED
|
@@ -5,6 +5,7 @@ export * from "../Offscreen";
|
|
|
5
5
|
export * from "../WebGPUViewNativeComponent";
|
|
6
6
|
export * from "../hooks";
|
|
7
7
|
export * from "../GPUDeviceProvider";
|
|
8
|
+
export * from "../importDevice";
|
|
8
9
|
export * from "../formats";
|
|
9
10
|
export { default as WebGPUModule } from "../NativeWebGPUModule";
|
|
10
11
|
const _installOk = WebGPUModule.install();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["registerWebGPUForReanimated","WebGPUModule","default","_installOk","install","RNWebGPU","navigator","gpu","userAgent","global","createImageBitmap","bind","console","warn"],"sourceRoot":"../../../src","sources":["main/index.tsx"],"mappings":"AAAA,SAASA,2BAA2B,QAAQ,aAAa;AACzD,OAAOC,YAAY,MAAM,uBAAuB;AAEhD,cAAc,WAAW;AACzB,cAAc,cAAc;AAC5B,cAAc,8BAA8B;AAC5C,cAAc,UAAU;AACxB,cAAc,sBAAsB;AACpC,cAAc,YAAY;AAE1B,SAASC,OAAO,IAAID,YAAY,QAAQ,uBAAuB;AAE/D,MAAME,UAAU,GAAGF,YAAY,CAACG,OAAO,CAAC,CAAC;AAEzCJ,2BAA2B,CAAC,CAAC;AAE7B,IAAI,OAAOK,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;AACzE,CAAC,MAAM;EACLO,OAAO,CAACC,IAAI,CACV,4CAA4CV,UAAU,uCACxD,CAAC;AACH","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["registerWebGPUForReanimated","WebGPUModule","default","_installOk","install","RNWebGPU","navigator","gpu","userAgent","global","createImageBitmap","bind","console","warn"],"sourceRoot":"../../../src","sources":["main/index.tsx"],"mappings":"AAAA,SAASA,2BAA2B,QAAQ,aAAa;AACzD,OAAOC,YAAY,MAAM,uBAAuB;AAEhD,cAAc,WAAW;AACzB,cAAc,cAAc;AAC5B,cAAc,8BAA8B;AAC5C,cAAc,UAAU;AACxB,cAAc,sBAAsB;AACpC,cAAc,iBAAiB;AAC/B,cAAc,YAAY;AAE1B,SAASC,OAAO,IAAID,YAAY,QAAQ,uBAAuB;AAE/D,MAAME,UAAU,GAAGF,YAAY,CAACG,OAAO,CAAC,CAAC;AAEzCJ,2BAA2B,CAAC,CAAC;AAE7B,IAAI,OAAOK,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;AACzE,CAAC,MAAM;EACLO,OAAO,CAACC,IAAI,CACV,4CAA4CV,UAAU,uCACxD,CAAC;AACH","ignoreList":[]}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export const __esModule: boolean;
|
|
2
|
+
/**
|
|
3
|
+
* Wraps an externally created WGPUDevice pointer into a GPUDevice.
|
|
4
|
+
*
|
|
5
|
+
* The canonical use case is adopting the Graphite device from a
|
|
6
|
+
* @shopify/react-native-skia Graphite build:
|
|
7
|
+
*
|
|
8
|
+
* ```ts
|
|
9
|
+
* const device = importDevice(Skia.getNativeDevice());
|
|
10
|
+
* ```
|
|
11
|
+
*
|
|
12
|
+
* This is only sound when the exporting library links the same single Dawn
|
|
13
|
+
* copy as react-native-webgpu and shares its wgpu::Instance (react-native-skia
|
|
14
|
+
* Graphite builds do both).
|
|
15
|
+
*/
|
|
16
|
+
export function importDevice(pointer: any): GPUDevice;
|
|
17
|
+
//# sourceMappingURL=importDevice.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"importDevice.d.ts","sourceRoot":"","sources":["../../../commonjs/importDevice.js"],"names":[],"mappings":";AAMA;;;;;;;;;;;;;GAaG;AACH,sDAKC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"importDevice.d.ts","sourceRoot":"","sources":["../../../module/importDevice.js"],"names":[],"mappings":"AAcO,sDAKN"}
|
|
@@ -3,6 +3,7 @@ export * from "../Offscreen";
|
|
|
3
3
|
export * from "../WebGPUViewNativeComponent";
|
|
4
4
|
export * from "../hooks";
|
|
5
5
|
export * from "../GPUDeviceProvider";
|
|
6
|
+
export * from "../importDevice";
|
|
6
7
|
export * from "../formats";
|
|
7
8
|
export { default as WebGPUModule } from "../NativeWebGPUModule";
|
|
8
9
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Wraps an externally created WGPUDevice pointer into a GPUDevice.
|
|
3
|
+
*
|
|
4
|
+
* The canonical use case is adopting the Graphite device from a
|
|
5
|
+
* @shopify/react-native-skia Graphite build:
|
|
6
|
+
*
|
|
7
|
+
* ```ts
|
|
8
|
+
* const device = importDevice(Skia.getNativeDevice());
|
|
9
|
+
* ```
|
|
10
|
+
*
|
|
11
|
+
* This is only sound when the exporting library links the same single Dawn
|
|
12
|
+
* copy as react-native-webgpu and shares its wgpu::Instance (react-native-skia
|
|
13
|
+
* Graphite builds do both).
|
|
14
|
+
*/
|
|
15
|
+
export declare const importDevice: (pointer: bigint) => GPUDevice;
|
|
16
|
+
//# sourceMappingURL=importDevice.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"importDevice.d.ts","sourceRoot":"","sources":["../../../src/importDevice.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,YAAY,GAAI,SAAS,MAAM,KAAG,SAO9C,CAAC"}
|
|
@@ -19,6 +19,7 @@ declare global {
|
|
|
19
19
|
loadVideoFrame: (path: string) => NativeVideoFrame;
|
|
20
20
|
createTestVideoFrame: (width: number, height: number) => NativeVideoFrame;
|
|
21
21
|
createVideoFrameFromNativeBuffer: (pointer: bigint) => NativeVideoFrame;
|
|
22
|
+
importDevice: (pointer: bigint) => GPUDevice;
|
|
22
23
|
createVideoPlayer: (path: string, pixelFormat?: NativeVideoPixelFormat) => VideoPlayer;
|
|
23
24
|
writeTestVideoFile: () => string;
|
|
24
25
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,cAAc,EACd,wBAAwB,EACxB,wBAAwB,EACxB,sBAAsB,EACtB,gCAAgC,EAChC,YAAY,EACZ,eAAe,EACf,WAAW,EACX,gBAAgB,EAChB,sBAAsB,EACvB,MAAM,SAAS,CAAC;AAEjB,cAAc,QAAQ,CAAC;AACvB,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,YAAY,EACV,gBAAgB,EAChB,WAAW,EACX,cAAc,EACd,wBAAwB,EACxB,wBAAwB,EACxB,mBAAmB,EACnB,kBAAkB,EAClB,sBAAsB,EACtB,gCAAgC,EAChC,oCAAoC,EACpC,sBAAsB,EACtB,wBAAwB,EACxB,wBAAwB,GACzB,MAAM,SAAS,CAAC;AAEjB,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,SAAS;QACjB,GAAG,EAAE,GAAG,CAAC;KACV;IAED,IAAI,SAAS,EAAE,SAAS,CAAC;IAEzB,IAAI,QAAQ,EAAE;QACZ,GAAG,EAAE,GAAG,CAAC;QACT,MAAM,EAAE,OAAO,CAAC;QAChB,gBAAgB,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,YAAY,CAAC;QACtD,uBAAuB,EAAE,CACvB,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,KACX,eAAe,CAAC;QAGrB,cAAc,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;QAC5C,YAAY,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,eAAe,GAAG,WAAW,KAAK,MAAM,CAAC;QACvE,iBAAiB,EAAE,OAAO,iBAAiB,CAAC;QAC5C,cAAc,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,gBAAgB,CAAC;QACnD,oBAAoB,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,gBAAgB,CAAC;QAI1E,gCAAgC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,cAAc,EACd,wBAAwB,EACxB,wBAAwB,EACxB,sBAAsB,EACtB,gCAAgC,EAChC,YAAY,EACZ,eAAe,EACf,WAAW,EACX,gBAAgB,EAChB,sBAAsB,EACvB,MAAM,SAAS,CAAC;AAEjB,cAAc,QAAQ,CAAC;AACvB,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,YAAY,EACV,gBAAgB,EAChB,WAAW,EACX,cAAc,EACd,wBAAwB,EACxB,wBAAwB,EACxB,mBAAmB,EACnB,kBAAkB,EAClB,sBAAsB,EACtB,gCAAgC,EAChC,oCAAoC,EACpC,sBAAsB,EACtB,wBAAwB,EACxB,wBAAwB,GACzB,MAAM,SAAS,CAAC;AAEjB,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,SAAS;QACjB,GAAG,EAAE,GAAG,CAAC;KACV;IAED,IAAI,SAAS,EAAE,SAAS,CAAC;IAEzB,IAAI,QAAQ,EAAE;QACZ,GAAG,EAAE,GAAG,CAAC;QACT,MAAM,EAAE,OAAO,CAAC;QAChB,gBAAgB,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,YAAY,CAAC;QACtD,uBAAuB,EAAE,CACvB,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,KACX,eAAe,CAAC;QAGrB,cAAc,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;QAC5C,YAAY,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,eAAe,GAAG,WAAW,KAAK,MAAM,CAAC;QACvE,iBAAiB,EAAE,OAAO,iBAAiB,CAAC;QAC5C,cAAc,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,gBAAgB,CAAC;QACnD,oBAAoB,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,gBAAgB,CAAC;QAI1E,gCAAgC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,gBAAgB,CAAC;QAIxE,YAAY,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,SAAS,CAAC;QAC7C,iBAAiB,EAAE,CACjB,IAAI,EAAE,MAAM,EACZ,WAAW,CAAC,EAAE,sBAAsB,KACjC,WAAW,CAAC;QACjB,kBAAkB,EAAE,MAAM,MAAM,CAAC;KAClC,CAAC;IAEF,UAAU,SAAS;QACjB,yBAAyB,CACvB,UAAU,EAAE,gCAAgC,GAC3C,sBAAsB,CAAC;QAC1B,iBAAiB,CAAC,UAAU,EAAE,wBAAwB,GAAG,cAAc,CAAC;KACzE;IAID,UAAU,mBAAmB;QAC3B,WAAW,CAAC,EAAE,wBAAwB,CAAC;KACxC;IAMD,UAAU,4BAA4B;QACpC,QAAQ,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,CAAC;QAC9B,QAAQ,CAAC,EAAE,OAAO,CAAC;KACpB;IASD,UAAU,kBAAkB;QAC1B,OAAO,IAAI,IAAI,CAAC;QAShB,QAAQ,CAAC,cAAc,EAAE,MAAM,EAAE,CAAC;KACnC;IAGD,SAAS,iBAAiB,CACxB,KAAK,EAAE,WAAW,GAAG,eAAe,EACpC,OAAO,CAAC,EAAE,kBAAkB,GAC3B,OAAO,CAAC,WAAW,CAAC,CAAC;CACzB"}
|
|
@@ -3,6 +3,7 @@ export * from "../Offscreen";
|
|
|
3
3
|
export * from "../WebGPUViewNativeComponent";
|
|
4
4
|
export * from "../hooks";
|
|
5
5
|
export * from "../GPUDeviceProvider";
|
|
6
|
+
export * from "../importDevice";
|
|
6
7
|
export * from "../formats";
|
|
7
8
|
export { default as WebGPUModule } from "../NativeWebGPUModule";
|
|
8
9
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/main/index.tsx"],"names":[],"mappings":"AAGA,cAAc,WAAW,CAAC;AAC1B,cAAc,cAAc,CAAC;AAC7B,cAAc,8BAA8B,CAAC;AAC7C,cAAc,UAAU,CAAC;AACzB,cAAc,sBAAsB,CAAC;AACrC,cAAc,YAAY,CAAC;AAE3B,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,uBAAuB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/main/index.tsx"],"names":[],"mappings":"AAGA,cAAc,WAAW,CAAC;AAC1B,cAAc,cAAc,CAAC;AAC7B,cAAc,8BAA8B,CAAC;AAC7C,cAAc,UAAU,CAAC;AACzB,cAAc,sBAAsB,CAAC;AACrC,cAAc,iBAAiB,CAAC;AAChC,cAAc,YAAY,CAAC;AAE3B,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,uBAAuB,CAAC"}
|
package/package.json
CHANGED
|
@@ -28,6 +28,11 @@ Pod::Spec.new do |s|
|
|
|
28
28
|
|
|
29
29
|
s.pod_target_xcconfig = {
|
|
30
30
|
'HEADER_SEARCH_PATHS' => '$(PODS_TARGET_SRCROOT)/cpp',
|
|
31
|
+
# Xcode's all-target headermaps let same-named headers leak across pods
|
|
32
|
+
# (e.g. @shopify/react-native-skia keeps a jsi/ helper layer with
|
|
33
|
+
# identical relative header paths). Resolve includes strictly through our
|
|
34
|
+
# own search paths instead.
|
|
35
|
+
'USE_HEADERMAP' => 'NO',
|
|
31
36
|
}
|
|
32
37
|
|
|
33
38
|
# Use install_modules_dependencies helper to install the dependencies if React Native version >=0.71.0.
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Wraps an externally created WGPUDevice pointer into a GPUDevice.
|
|
3
|
+
*
|
|
4
|
+
* The canonical use case is adopting the Graphite device from a
|
|
5
|
+
* @shopify/react-native-skia Graphite build:
|
|
6
|
+
*
|
|
7
|
+
* ```ts
|
|
8
|
+
* const device = importDevice(Skia.getNativeDevice());
|
|
9
|
+
* ```
|
|
10
|
+
*
|
|
11
|
+
* This is only sound when the exporting library links the same single Dawn
|
|
12
|
+
* copy as react-native-webgpu and shares its wgpu::Instance (react-native-skia
|
|
13
|
+
* Graphite builds do both).
|
|
14
|
+
*/
|
|
15
|
+
export const importDevice = (pointer: bigint): GPUDevice => {
|
|
16
|
+
if (typeof RNWebGPU === "undefined") {
|
|
17
|
+
throw new Error(
|
|
18
|
+
"react-native-webgpu is not installed natively; importDevice is unavailable",
|
|
19
|
+
);
|
|
20
|
+
}
|
|
21
|
+
return RNWebGPU.importDevice(pointer);
|
|
22
|
+
};
|
package/src/index.tsx
CHANGED
|
@@ -58,6 +58,10 @@ declare global {
|
|
|
58
58
|
// on Android) into a NativeVideoFrame. Matches the shape used by libraries
|
|
59
59
|
// that emit NativeBuffer (e.g. react-native-vision-camera).
|
|
60
60
|
createVideoFrameFromNativeBuffer: (pointer: bigint) => NativeVideoFrame;
|
|
61
|
+
// Wrap an externally created WGPUDevice pointer (e.g. Skia's Graphite
|
|
62
|
+
// device from Skia.getNativeDevice()) into a GPUDevice. Requires the
|
|
63
|
+
// exporter to share this process's single Dawn instance.
|
|
64
|
+
importDevice: (pointer: bigint) => GPUDevice;
|
|
61
65
|
createVideoPlayer: (
|
|
62
66
|
path: string,
|
|
63
67
|
pixelFormat?: NativeVideoPixelFormat,
|
package/src/main/index.tsx
CHANGED
|
@@ -6,6 +6,7 @@ export * from "../Offscreen";
|
|
|
6
6
|
export * from "../WebGPUViewNativeComponent";
|
|
7
7
|
export * from "../hooks";
|
|
8
8
|
export * from "../GPUDeviceProvider";
|
|
9
|
+
export * from "../importDevice";
|
|
9
10
|
export * from "../formats";
|
|
10
11
|
|
|
11
12
|
export { default as WebGPUModule } from "../NativeWebGPUModule";
|