react-native-wgpu 0.5.6 → 0.5.8
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/WebGPUModule.h +2 -1
- package/apple/WebGPUModule.mm +22 -16
- package/cpp/rnwgpu/ArrayBuffer.h +7 -2
- package/lib/commonjs/external/reanimated/registerWebGPUForReanimated.js +0 -1
- package/lib/commonjs/external/reanimated/registerWebGPUForReanimated.js.map +1 -1
- package/lib/commonjs/main/index.js +21 -17
- package/lib/commonjs/main/index.js.map +1 -1
- package/lib/module/external/reanimated/registerWebGPUForReanimated.js +0 -1
- package/lib/module/external/reanimated/registerWebGPUForReanimated.js.map +1 -1
- package/lib/module/main/index.js +21 -17
- package/lib/module/main/index.js.map +1 -1
- package/lib/typescript/lib/commonjs/external/reanimated/registerWebGPUForReanimated.d.ts.map +1 -1
- package/lib/typescript/lib/module/external/reanimated/registerWebGPUForReanimated.d.ts.map +1 -1
- package/lib/typescript/src/external/reanimated/registerWebGPUForReanimated.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/external/ModuleProxy.ts +1 -1
- package/src/external/reanimated/registerWebGPUForReanimated.ts +4 -4
- package/src/main/index.tsx +24 -19
package/apple/WebGPUModule.h
CHANGED
|
@@ -2,9 +2,10 @@
|
|
|
2
2
|
|
|
3
3
|
#import "RNWebGPUManager.h"
|
|
4
4
|
#import <RNWgpuViewSpec/RNWgpuViewSpec.h>
|
|
5
|
+
#import <React/RCTCallInvokerModule.h>
|
|
5
6
|
#import <React/RCTEventEmitter.h>
|
|
6
7
|
|
|
7
|
-
@interface WebGPUModule : RCTEventEmitter <NativeWebGPUModuleSpec>
|
|
8
|
+
@interface WebGPUModule : RCTEventEmitter <NativeWebGPUModuleSpec, RCTCallInvokerModule>
|
|
8
9
|
|
|
9
10
|
+ (std::shared_ptr<rnwgpu::RNWebGPUManager>)getManager;
|
|
10
11
|
|
package/apple/WebGPUModule.mm
CHANGED
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
#import "GPUCanvasContext.h"
|
|
4
4
|
|
|
5
5
|
#import <React/RCTBridge+Private.h>
|
|
6
|
+
#import <React/RCTCallInvoker.h>
|
|
6
7
|
#import <React/RCTLog.h>
|
|
7
8
|
#import <ReactCommon/RCTTurboModule.h>
|
|
8
9
|
#import <jsi/jsi.h>
|
|
@@ -11,12 +12,25 @@
|
|
|
11
12
|
namespace jsi = facebook::jsi;
|
|
12
13
|
namespace react = facebook::react;
|
|
13
14
|
|
|
15
|
+
// Category to declare the runtime property on RCTBridge/RCTBridgeProxy.
|
|
16
|
+
// In Bridgeless mode, self.bridge is an RCTBridgeProxy which implements
|
|
17
|
+
// -(void *)runtime. In Legacy mode, self.bridge is the real RCTBridge
|
|
18
|
+
// (backed by RCTCxxBridge) which also implements it.
|
|
19
|
+
@interface RCTBridge (JSIRuntime)
|
|
20
|
+
- (void *)runtime;
|
|
21
|
+
@end
|
|
22
|
+
|
|
14
23
|
@implementation WebGPUModule
|
|
15
24
|
|
|
16
25
|
RCT_EXPORT_MODULE(WebGPUModule)
|
|
17
26
|
|
|
18
27
|
static std::shared_ptr<rnwgpu::RNWebGPUManager> webgpuManager;
|
|
19
28
|
|
|
29
|
+
// Synthesize callInvoker so RCTTurboModuleManager injects the JS CallInvoker.
|
|
30
|
+
// When the module conforms to RCTCallInvokerModule, the TurboModule infra
|
|
31
|
+
// calls setCallInvoker: during module initialization.
|
|
32
|
+
@synthesize callInvoker = _callInvoker;
|
|
33
|
+
|
|
20
34
|
+ (std::shared_ptr<rnwgpu::RNWebGPUManager>)getManager {
|
|
21
35
|
return webgpuManager;
|
|
22
36
|
}
|
|
@@ -28,9 +42,6 @@ static std::shared_ptr<rnwgpu::RNWebGPUManager> webgpuManager;
|
|
|
28
42
|
}
|
|
29
43
|
|
|
30
44
|
- (void)invalidate {
|
|
31
|
-
// if (_webgpuManager != nil) {
|
|
32
|
-
// [_webgpuManager invalidate];
|
|
33
|
-
// }
|
|
34
45
|
webgpuManager = nil;
|
|
35
46
|
}
|
|
36
47
|
|
|
@@ -43,31 +54,26 @@ RCT_EXPORT_BLOCKING_SYNCHRONOUS_METHOD(install) {
|
|
|
43
54
|
// Already initialized, ignore call.
|
|
44
55
|
return @true;
|
|
45
56
|
}
|
|
46
|
-
RCTCxxBridge *cxxBridge = (RCTCxxBridge *)[RCTBridge currentBridge];
|
|
47
|
-
if (!cxxBridge.runtime) {
|
|
48
|
-
NSLog(@"Failed to install react-native-wgpu: RCTBridge is not a "
|
|
49
|
-
@"RCTCxxBridge!");
|
|
50
|
-
return [NSNumber numberWithBool:NO];
|
|
51
|
-
}
|
|
52
57
|
|
|
53
|
-
|
|
58
|
+
// self.bridge works in both Legacy (RCTBridge) and Bridgeless (RCTBridgeProxy).
|
|
59
|
+
jsi::Runtime *runtime = (jsi::Runtime *)self.bridge.runtime;
|
|
54
60
|
if (!runtime) {
|
|
55
|
-
NSLog(@"Failed to install react-native-wgpu: jsi::Runtime* was null!"
|
|
61
|
+
NSLog(@"Failed to install react-native-wgpu: jsi::Runtime* was null! "
|
|
62
|
+
@"(self.bridge=%@)", self.bridge);
|
|
56
63
|
return [NSNumber numberWithBool:NO];
|
|
57
64
|
}
|
|
58
|
-
|
|
65
|
+
|
|
66
|
+
// _callInvoker is injected by RCTTurboModuleManager because we conform to
|
|
67
|
+
// RCTCallInvokerModule. Works in both Legacy and Bridgeless.
|
|
68
|
+
std::shared_ptr<react::CallInvoker> jsInvoker = _callInvoker.callInvoker;
|
|
59
69
|
if (!jsInvoker) {
|
|
60
70
|
NSLog(@"Failed to install react-native-wgpu: react::CallInvoker was "
|
|
61
71
|
@"null!");
|
|
62
72
|
return [NSNumber numberWithBool:NO];
|
|
63
73
|
}
|
|
64
74
|
|
|
65
|
-
if (!jsInvoker) {
|
|
66
|
-
jsInvoker = cxxBridge.jsCallInvoker;
|
|
67
|
-
}
|
|
68
75
|
std::shared_ptr<rnwgpu::PlatformContext> platformContext =
|
|
69
76
|
std::make_shared<rnwgpu::ApplePlatformContext>();
|
|
70
|
-
// TODO: remove allocation here
|
|
71
77
|
webgpuManager = std::make_shared<rnwgpu::RNWebGPUManager>(runtime, jsInvoker,
|
|
72
78
|
platformContext);
|
|
73
79
|
return @true;
|
package/cpp/rnwgpu/ArrayBuffer.h
CHANGED
|
@@ -49,8 +49,13 @@ template <> struct JSIConverter<std::shared_ptr<ArrayBuffer>> {
|
|
|
49
49
|
auto buff = bufferProp.getObject(runtime);
|
|
50
50
|
auto bytesPerElements =
|
|
51
51
|
obj.getProperty(runtime, "BYTES_PER_ELEMENT").asNumber();
|
|
52
|
-
|
|
53
|
-
|
|
52
|
+
auto arrayBuffer = buff.getArrayBuffer(runtime);
|
|
53
|
+
auto byteOffset = static_cast<size_t>(
|
|
54
|
+
obj.getProperty(runtime, "byteOffset").asNumber());
|
|
55
|
+
auto byteLength = static_cast<size_t>(
|
|
56
|
+
obj.getProperty(runtime, "byteLength").asNumber());
|
|
57
|
+
return std::make_shared<ArrayBuffer>(
|
|
58
|
+
arrayBuffer.data(runtime) + byteOffset, byteLength,
|
|
54
59
|
static_cast<size_t>(bytesPerElements));
|
|
55
60
|
}
|
|
56
61
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["isRegistered","registerWebGPUForReanimated","registerCustomSerializable","require","name","determine","value","__webgpuIsWebGPUObject","pack","__webgpuBox","unpack","boxed","unbox","exports"],"sourceRoot":"../../../../src","sources":["external/reanimated/registerWebGPUForReanimated.ts"],"mappings":";;;;;;AAAA;;
|
|
1
|
+
{"version":3,"names":["isRegistered","registerWebGPUForReanimated","registerCustomSerializable","require","name","determine","value","__webgpuIsWebGPUObject","pack","__webgpuBox","unpack","boxed","unbox","exports"],"sourceRoot":"../../../../src","sources":["external/reanimated/registerWebGPUForReanimated.ts"],"mappings":";;;;;;AAAA;;AAOA,IAAIA,YAAY,GAAG,KAAK;;AAExB;AACA;AACA;AACA;AACA;AACA;AACO,MAAMC,2BAA2B,GAAGA,CAAA,KAAM;EAC/C,IAAID,YAAY,EAAE;IAChB;EACF;EACAA,YAAY,GAAG,IAAI;EAEnB,IAAI;IACF,MAAM;MAAEE;IAA2B,CAAC,GAAGC,OAAO,CAAC,uBAAuB,CAAC;IAEvED,0BAA0B,CAAC;MACzBE,IAAI,EAAE,QAAQ;MACdC,SAAS,EAAGC,KAAa,IAAsB;QAC7C,SAAS;;QACT,OAAOC,sBAAsB,CAACD,KAAK,CAAC;MACtC,CAAC;MACDE,IAAI,EAAGF,KAAa,IAAK;QACvB,SAAS;;QACT,OAAOG,WAAW,CAACH,KAAK,CAAC;MAC3B,CAAC;MACDI,MAAM,EAAGC,KAA8B,IAAK;QAC1C,SAAS;;QACT,OAAOA,KAAK,CAACC,KAAK,CAAC,CAAC;MACtB;IACF,CAAC,CAAC;EACJ,CAAC,CAAC,MAAM;IACN;EAAA;AAEJ,CAAC;AAACC,OAAA,CAAAZ,2BAAA,GAAAA,2BAAA","ignoreList":[]}
|
|
@@ -63,25 +63,29 @@ Object.keys(_hooks).forEach(function (key) {
|
|
|
63
63
|
});
|
|
64
64
|
});
|
|
65
65
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
66
|
-
_NativeWebGPUModule.default.install();
|
|
66
|
+
const _installOk = _NativeWebGPUModule.default.install();
|
|
67
67
|
(0, _external.registerWebGPUForReanimated)();
|
|
68
|
-
if (
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
}
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
68
|
+
if (typeof RNWebGPU !== "undefined") {
|
|
69
|
+
if (!navigator) {
|
|
70
|
+
// @ts-expect-error Navigation object is more complex than this, setting it to an empty object to add gpu property
|
|
71
|
+
navigator = {
|
|
72
|
+
gpu: RNWebGPU.gpu,
|
|
73
|
+
userAgent: "react-native"
|
|
74
|
+
};
|
|
75
|
+
} else {
|
|
76
|
+
navigator.gpu = RNWebGPU.gpu;
|
|
77
|
+
if (typeof navigator.userAgent !== "string") {
|
|
78
|
+
try {
|
|
79
|
+
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
80
|
+
// @ts-ignore - Hermes navigator may not include a userAgent, align with the polyfill if needed
|
|
81
|
+
navigator.userAgent = "react-native";
|
|
82
|
+
} catch {
|
|
83
|
+
// navigator.userAgent can be read-only; ignore if assignment fails
|
|
84
|
+
}
|
|
83
85
|
}
|
|
84
86
|
}
|
|
87
|
+
global.createImageBitmap = global.createImageBitmap ?? RNWebGPU.createImageBitmap.bind(RNWebGPU);
|
|
88
|
+
} else {
|
|
89
|
+
console.warn(`[react-native-wgpu] install() returned ${_installOk} but RNWebGPU global is not available`);
|
|
85
90
|
}
|
|
86
|
-
global.createImageBitmap = global.createImageBitmap ?? RNWebGPU.createImageBitmap.bind(RNWebGPU);
|
|
87
91
|
//# sourceMappingURL=index.js.map
|
|
@@ -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","e","__esModule","default","WebGPUModule","install","registerWebGPUForReanimated","
|
|
1
|
+
{"version":3,"names":["_external","require","_NativeWebGPUModule","_interopRequireDefault","_Canvas","Object","keys","forEach","key","prototype","hasOwnProperty","call","_exportNames","exports","defineProperty","enumerable","get","_Offscreen","_WebGPUViewNativeComponent","_hooks","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;AAAyB,SAAAL,uBAAAiB,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAIzB,MAAMG,UAAU,GAAGC,2BAAY,CAACC,OAAO,CAAC,CAAC;AAEzC,IAAAC,qCAA2B,EAAC,CAAC;AAE7B,IAAI,OAAOC,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,0CAA0CZ,UAAU,uCACtD,CAAC;AACH","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["isRegistered","registerWebGPUForReanimated","registerCustomSerializable","require","name","determine","value","__webgpuIsWebGPUObject","pack","__webgpuBox","unpack","boxed","unbox"],"sourceRoot":"../../../../src","sources":["external/reanimated/registerWebGPUForReanimated.ts"],"mappings":"AAAA;;
|
|
1
|
+
{"version":3,"names":["isRegistered","registerWebGPUForReanimated","registerCustomSerializable","require","name","determine","value","__webgpuIsWebGPUObject","pack","__webgpuBox","unpack","boxed","unbox"],"sourceRoot":"../../../../src","sources":["external/reanimated/registerWebGPUForReanimated.ts"],"mappings":"AAAA;;AAOA,IAAIA,YAAY,GAAG,KAAK;;AAExB;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMC,2BAA2B,GAAGA,CAAA,KAAM;EAC/C,IAAID,YAAY,EAAE;IAChB;EACF;EACAA,YAAY,GAAG,IAAI;EAEnB,IAAI;IACF,MAAM;MAAEE;IAA2B,CAAC,GAAGC,OAAO,CAAC,uBAAuB,CAAC;IAEvED,0BAA0B,CAAC;MACzBE,IAAI,EAAE,QAAQ;MACdC,SAAS,EAAGC,KAAa,IAAsB;QAC7C,SAAS;;QACT,OAAOC,sBAAsB,CAACD,KAAK,CAAC;MACtC,CAAC;MACDE,IAAI,EAAGF,KAAa,IAAK;QACvB,SAAS;;QACT,OAAOG,WAAW,CAACH,KAAK,CAAC;MAC3B,CAAC;MACDI,MAAM,EAAGC,KAA8B,IAAK;QAC1C,SAAS;;QACT,OAAOA,KAAK,CAACC,KAAK,CAAC,CAAC;MACtB;IACF,CAAC,CAAC;EACJ,CAAC,CAAC,MAAM;IACN;EAAA;AAEJ,CAAC","ignoreList":[]}
|
package/lib/module/main/index.js
CHANGED
|
@@ -5,25 +5,29 @@ export * from "../Offscreen";
|
|
|
5
5
|
export * from "../WebGPUViewNativeComponent";
|
|
6
6
|
export * from "../hooks";
|
|
7
7
|
export { default as WebGPUModule } from "../NativeWebGPUModule";
|
|
8
|
-
WebGPUModule.install();
|
|
8
|
+
const _installOk = WebGPUModule.install();
|
|
9
9
|
registerWebGPUForReanimated();
|
|
10
|
-
if (
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
10
|
+
if (typeof RNWebGPU !== "undefined") {
|
|
11
|
+
if (!navigator) {
|
|
12
|
+
// @ts-expect-error Navigation object is more complex than this, setting it to an empty object to add gpu property
|
|
13
|
+
navigator = {
|
|
14
|
+
gpu: RNWebGPU.gpu,
|
|
15
|
+
userAgent: "react-native"
|
|
16
|
+
};
|
|
17
|
+
} else {
|
|
18
|
+
navigator.gpu = RNWebGPU.gpu;
|
|
19
|
+
if (typeof navigator.userAgent !== "string") {
|
|
20
|
+
try {
|
|
21
|
+
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
22
|
+
// @ts-ignore - Hermes navigator may not include a userAgent, align with the polyfill if needed
|
|
23
|
+
navigator.userAgent = "react-native";
|
|
24
|
+
} catch {
|
|
25
|
+
// navigator.userAgent can be read-only; ignore if assignment fails
|
|
26
|
+
}
|
|
25
27
|
}
|
|
26
28
|
}
|
|
29
|
+
global.createImageBitmap = global.createImageBitmap ?? RNWebGPU.createImageBitmap.bind(RNWebGPU);
|
|
30
|
+
} else {
|
|
31
|
+
console.warn(`[react-native-wgpu] install() returned ${_installOk} but RNWebGPU global is not available`);
|
|
27
32
|
}
|
|
28
|
-
global.createImageBitmap = global.createImageBitmap ?? RNWebGPU.createImageBitmap.bind(RNWebGPU);
|
|
29
33
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["registerWebGPUForReanimated","WebGPUModule","default","install","
|
|
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;AAExB,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,0CAA0CV,UAAU,uCACtD,CAAC;AACH","ignoreList":[]}
|
package/lib/typescript/lib/commonjs/external/reanimated/registerWebGPUForReanimated.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registerWebGPUForReanimated.d.ts","sourceRoot":"","sources":["../../../../../commonjs/external/reanimated/registerWebGPUForReanimated.js"],"names":[],"mappings":";AAUA;;;;;GAKG;AACH,
|
|
1
|
+
{"version":3,"file":"registerWebGPUForReanimated.d.ts","sourceRoot":"","sources":["../../../../../commonjs/external/reanimated/registerWebGPUForReanimated.js"],"names":[],"mappings":";AAUA;;;;;GAKG;AACH,oDA8BC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registerWebGPUForReanimated.d.ts","sourceRoot":"","sources":["../../../../../module/external/reanimated/registerWebGPUForReanimated.js"],"names":[],"mappings":"AAUO,
|
|
1
|
+
{"version":3,"file":"registerWebGPUForReanimated.d.ts","sourceRoot":"","sources":["../../../../../module/external/reanimated/registerWebGPUForReanimated.js"],"names":[],"mappings":"AAUO,oDA8BN"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registerWebGPUForReanimated.d.ts","sourceRoot":"","sources":["../../../../../src/external/reanimated/registerWebGPUForReanimated.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"registerWebGPUForReanimated.d.ts","sourceRoot":"","sources":["../../../../../src/external/reanimated/registerWebGPUForReanimated.ts"],"names":[],"mappings":"AASA;;;;;GAKG;AACH,eAAO,MAAM,2BAA2B,YA2BvC,CAAC"}
|
package/package.json
CHANGED
|
@@ -6,7 +6,7 @@ type ImportType = ReturnType<typeof require>;
|
|
|
6
6
|
* This is useful for lazily requiring optional dependencies.
|
|
7
7
|
*/
|
|
8
8
|
export const createModuleProxy = <TModule>(
|
|
9
|
-
getModule: () => ImportType
|
|
9
|
+
getModule: () => ImportType,
|
|
10
10
|
): TModule => {
|
|
11
11
|
const holder: { module: TModule | undefined } = { module: undefined };
|
|
12
12
|
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
// Declare global WebGPU worklet helper functions (installed by native module)
|
|
2
2
|
declare function __webgpuIsWebGPUObject(obj: unknown): boolean;
|
|
3
|
-
declare function __webgpuBox(
|
|
4
|
-
|
|
5
|
-
|
|
3
|
+
declare function __webgpuBox(obj: object): {
|
|
4
|
+
unbox: () => object;
|
|
5
|
+
__boxedWebGPU: true;
|
|
6
|
+
};
|
|
6
7
|
|
|
7
8
|
let isRegistered = false;
|
|
8
9
|
|
|
@@ -19,7 +20,6 @@ export const registerWebGPUForReanimated = () => {
|
|
|
19
20
|
isRegistered = true;
|
|
20
21
|
|
|
21
22
|
try {
|
|
22
|
-
// eslint-disable-next-line @typescript-eslint/no-var-requires
|
|
23
23
|
const { registerCustomSerializable } = require("react-native-worklets");
|
|
24
24
|
|
|
25
25
|
registerCustomSerializable({
|
package/src/main/index.tsx
CHANGED
|
@@ -8,28 +8,33 @@ export * from "../hooks";
|
|
|
8
8
|
|
|
9
9
|
export { default as WebGPUModule } from "../NativeWebGPUModule";
|
|
10
10
|
|
|
11
|
-
WebGPUModule.install();
|
|
11
|
+
const _installOk = WebGPUModule.install();
|
|
12
12
|
|
|
13
13
|
registerWebGPUForReanimated();
|
|
14
14
|
|
|
15
|
-
if (
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
15
|
+
if (typeof RNWebGPU !== "undefined") {
|
|
16
|
+
if (!navigator) {
|
|
17
|
+
// @ts-expect-error Navigation object is more complex than this, setting it to an empty object to add gpu property
|
|
18
|
+
navigator = {
|
|
19
|
+
gpu: RNWebGPU.gpu,
|
|
20
|
+
userAgent: "react-native",
|
|
21
|
+
};
|
|
22
|
+
} else {
|
|
23
|
+
navigator.gpu = RNWebGPU.gpu;
|
|
24
|
+
if (typeof navigator.userAgent !== "string") {
|
|
25
|
+
try {
|
|
26
|
+
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
27
|
+
// @ts-ignore - Hermes navigator may not include a userAgent, align with the polyfill if needed
|
|
28
|
+
navigator.userAgent = "react-native";
|
|
29
|
+
} catch {
|
|
30
|
+
// navigator.userAgent can be read-only; ignore if assignment fails
|
|
31
|
+
}
|
|
30
32
|
}
|
|
31
33
|
}
|
|
34
|
+
global.createImageBitmap =
|
|
35
|
+
global.createImageBitmap ?? RNWebGPU.createImageBitmap.bind(RNWebGPU);
|
|
36
|
+
} else {
|
|
37
|
+
console.warn(
|
|
38
|
+
`[react-native-wgpu] install() returned ${_installOk} but RNWebGPU global is not available`,
|
|
39
|
+
);
|
|
32
40
|
}
|
|
33
|
-
|
|
34
|
-
global.createImageBitmap =
|
|
35
|
-
global.createImageBitmap ?? RNWebGPU.createImageBitmap.bind(RNWebGPU);
|