react-native-webgpu 0.16.1 → 0.19.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/AndroidPlatformContext.h +8 -0
- package/android/src/main/java/com/webgpu/BackingViewKind.java +38 -0
- package/android/src/main/java/com/webgpu/WebGPUSurfaceView.java +19 -2
- package/android/src/main/java/com/webgpu/WebGPUView.java +78 -76
- package/android/src/main/java/com/webgpu/WebGPUViewManager.java +13 -6
- package/apple/ApplePlatformContext.h +2 -0
- package/apple/ApplePlatformContext.mm +12 -0
- package/apple/MetalLayerColorSpace.mm +20 -8
- package/cpp/jsi/NativeObject.h +42 -32
- package/cpp/rnwgpu/CanvasColorSpace.h +9 -0
- package/cpp/rnwgpu/PlatformContext.h +6 -0
- package/cpp/rnwgpu/RNWebGPUManager.cpp +5 -8
- package/cpp/rnwgpu/SurfaceRegistry.h +101 -30
- package/cpp/rnwgpu/WebGPURuntime.cpp +30 -11
- package/cpp/rnwgpu/WebGPURuntime.h +7 -2
- package/cpp/rnwgpu/api/GPUCanvasContext.cpp +2 -1
- package/cpp/rnwgpu/api/GPUCanvasContext.h +10 -0
- package/cpp/rnwgpu/api/GPUFeatures.h +1 -0
- package/cpp/rnwgpu/api/RNWebGPU.h +63 -5
- package/cpp/rnwgpu/api/VideoFrame.h +2 -2
- package/cpp/rnwgpu/api/descriptors/GPUCanvasConfiguration.h +18 -0
- package/cpp/rnwgpu/async/RuntimeContext.cpp +43 -27
- package/cpp/rnwgpu/async/RuntimeContext.h +19 -11
- package/lib/commonjs/Canvas.js +88 -43
- package/lib/commonjs/Canvas.js.map +1 -1
- package/lib/commonjs/WebGPUViewNativeComponent.js.map +1 -1
- package/lib/commonjs/WebGPUViewNativeComponent.web.js +3 -5
- package/lib/commonjs/WebGPUViewNativeComponent.web.js.map +1 -1
- package/lib/commonjs/WebPolyfillGPUModule.js +2 -0
- package/lib/commonjs/WebPolyfillGPUModule.js.map +1 -1
- package/lib/commonjs/importDevice.js +3 -2
- package/lib/commonjs/importDevice.js.map +1 -1
- package/lib/commonjs/mock.js +0 -1
- package/lib/commonjs/mock.js.map +1 -1
- package/lib/module/Canvas.js +88 -43
- package/lib/module/Canvas.js.map +1 -1
- package/lib/module/WebGPUViewNativeComponent.js.map +1 -1
- package/lib/module/WebGPUViewNativeComponent.web.js +3 -5
- package/lib/module/WebGPUViewNativeComponent.web.js.map +1 -1
- package/lib/module/WebPolyfillGPUModule.js +2 -0
- package/lib/module/WebPolyfillGPUModule.js.map +1 -1
- package/lib/module/importDevice.js +3 -2
- package/lib/module/importDevice.js.map +1 -1
- package/lib/module/mock.js +0 -1
- package/lib/module/mock.js.map +1 -1
- package/lib/typescript/lib/commonjs/Canvas.d.ts +1 -2
- package/lib/typescript/lib/commonjs/Canvas.d.ts.map +1 -1
- package/lib/typescript/lib/commonjs/WebGPUViewNativeComponent.web.d.ts.map +1 -1
- package/lib/typescript/lib/commonjs/importDevice.d.ts +3 -2
- package/lib/typescript/lib/commonjs/importDevice.d.ts.map +1 -1
- package/lib/typescript/lib/commonjs/mock.d.ts +1 -2
- package/lib/typescript/lib/commonjs/mock.d.ts.map +1 -1
- package/lib/typescript/lib/module/Canvas.d.ts +1 -2
- package/lib/typescript/lib/module/Canvas.d.ts.map +1 -1
- package/lib/typescript/lib/module/WebGPUViewNativeComponent.web.d.ts.map +1 -1
- package/lib/typescript/lib/module/importDevice.d.ts.map +1 -1
- package/lib/typescript/lib/module/mock.d.ts +1 -2
- package/lib/typescript/lib/module/mock.d.ts.map +1 -1
- package/lib/typescript/src/Canvas.d.ts +61 -29
- package/lib/typescript/src/Canvas.d.ts.map +1 -1
- package/lib/typescript/src/WebGPUViewNativeComponent.d.ts +3 -2
- package/lib/typescript/src/WebGPUViewNativeComponent.d.ts.map +1 -1
- package/lib/typescript/src/WebGPUViewNativeComponent.web.d.ts +3 -2
- package/lib/typescript/src/WebGPUViewNativeComponent.web.d.ts.map +1 -1
- package/lib/typescript/src/importDevice.d.ts +3 -2
- package/lib/typescript/src/importDevice.d.ts.map +1 -1
- package/lib/typescript/src/index.d.ts +2 -0
- package/lib/typescript/src/index.d.ts.map +1 -1
- package/lib/typescript/src/mock.d.ts +2 -2
- package/lib/typescript/src/mock.d.ts.map +1 -1
- package/package.json +3 -3
- package/src/Canvas.tsx +156 -81
- package/src/WebGPUViewNativeComponent.ts +6 -4
- package/src/WebGPUViewNativeComponent.web.ts +7 -5
- package/src/WebPolyfillGPUModule.ts +3 -0
- package/src/importDevice.ts +3 -2
- package/src/index.tsx +15 -4
- package/src/mock.ts +5 -7
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
#include <memory>
|
|
4
4
|
#include <stdexcept>
|
|
5
|
+
#include <unordered_map>
|
|
5
6
|
#include <utility>
|
|
6
7
|
#include <vector>
|
|
7
8
|
|
|
@@ -14,7 +15,7 @@ namespace rnwgpu::async {
|
|
|
14
15
|
|
|
15
16
|
namespace {
|
|
16
17
|
struct RuntimeData {
|
|
17
|
-
std::shared_ptr<RuntimeContext
|
|
18
|
+
std::unordered_map<WGPUInstance, std::shared_ptr<RuntimeContext>> contexts;
|
|
18
19
|
};
|
|
19
20
|
constexpr const char *TAG = "RuntimeContext";
|
|
20
21
|
|
|
@@ -25,12 +26,27 @@ constexpr const char *TAG = "RuntimeContext";
|
|
|
25
26
|
jsi::Runtime *sMainRuntime = nullptr;
|
|
26
27
|
std::shared_ptr<facebook::react::CallInvoker> sMainInvoker;
|
|
27
28
|
|
|
28
|
-
//
|
|
29
|
-
//
|
|
29
|
+
// ProcessEvents() on one wgpu::Instance is serialized across the runtimes that
|
|
30
|
+
// share it by a mutex per instance, which each context resolves once, on
|
|
31
|
+
// creation. Pumping another library's instance (the one owning a device passed
|
|
32
|
+
// to importDevice) can block on that library's device lock; with one mutex per
|
|
33
|
+
// instance that never stalls the pumps of our own instance. A mutex is held
|
|
34
|
+
// only across the ProcessEvents call itself, never while running JS / mailbox
|
|
30
35
|
// settle-actions, so it cannot deadlock against the per-context mailbox mutex.
|
|
31
|
-
std::mutex
|
|
32
|
-
static std::mutex
|
|
33
|
-
|
|
36
|
+
std::shared_ptr<std::mutex> processEventsMutexFor(WGPUInstance instance) {
|
|
37
|
+
static std::mutex registryMutex;
|
|
38
|
+
static std::unordered_map<WGPUInstance, std::weak_ptr<std::mutex>> registry;
|
|
39
|
+
std::lock_guard<std::mutex> lock(registryMutex);
|
|
40
|
+
auto &slot = registry[instance];
|
|
41
|
+
if (auto existing = slot.lock()) {
|
|
42
|
+
return existing;
|
|
43
|
+
}
|
|
44
|
+
// Contexts retain their instance, so its handle cannot be reused while one
|
|
45
|
+
// of them is alive: an expired slot belonged to an instance whose runtimes
|
|
46
|
+
// are all gone, and an instance reusing that address starts afresh.
|
|
47
|
+
auto created = std::make_shared<std::mutex>();
|
|
48
|
+
slot = created;
|
|
49
|
+
return created;
|
|
34
50
|
}
|
|
35
51
|
} // namespace
|
|
36
52
|
|
|
@@ -42,32 +58,32 @@ void RuntimeContext::registerMainRuntime(
|
|
|
42
58
|
}
|
|
43
59
|
|
|
44
60
|
RuntimeContext::RuntimeContext(jsi::Runtime &runtime, wgpu::Instance instance)
|
|
45
|
-
: _runtime(runtime), _instance(std::move(instance))
|
|
61
|
+
: _runtime(runtime), _instance(std::move(instance)),
|
|
62
|
+
_processEventsMutex(processEventsMutexFor(_instance.Get())) {
|
|
46
63
|
Logger::logToConsole("[%s] Created (runtime=%p)", TAG, &runtime);
|
|
47
64
|
}
|
|
48
65
|
|
|
49
|
-
std::shared_ptr<RuntimeContext> RuntimeContext::get(jsi::Runtime &runtime) {
|
|
50
|
-
auto data = runtime.getRuntimeData(runtimeDataUUID());
|
|
51
|
-
if (!data) {
|
|
52
|
-
return nullptr;
|
|
53
|
-
}
|
|
54
|
-
return std::static_pointer_cast<RuntimeData>(data)->context;
|
|
55
|
-
}
|
|
56
|
-
|
|
57
66
|
std::shared_ptr<RuntimeContext>
|
|
58
|
-
RuntimeContext::getOrCreate(jsi::Runtime &runtime,
|
|
59
|
-
|
|
60
|
-
|
|
67
|
+
RuntimeContext::getOrCreate(jsi::Runtime &runtime,
|
|
68
|
+
const wgpu::Instance &instance) {
|
|
69
|
+
auto data = std::static_pointer_cast<RuntimeData>(
|
|
70
|
+
runtime.getRuntimeData(runtimeDataUUID()));
|
|
71
|
+
if (!data) {
|
|
72
|
+
data = std::make_shared<RuntimeData>();
|
|
73
|
+
runtime.setRuntimeData(runtimeDataUUID(), data);
|
|
61
74
|
}
|
|
62
|
-
|
|
63
|
-
//
|
|
64
|
-
//
|
|
65
|
-
|
|
66
|
-
|
|
75
|
+
// Contexts retain their instance, so its handle is a stable key for the
|
|
76
|
+
// runtime's lifetime, and each instance's callbacks reach the matching pump.
|
|
77
|
+
// A slot left null by a throwing constructor is simply filled next time.
|
|
78
|
+
auto &context = data->contexts[instance.Get()];
|
|
79
|
+
if (!context) {
|
|
80
|
+
context = std::make_shared<RuntimeContext>(runtime, instance);
|
|
81
|
+
// Only the main JS runtime's context carries the CallInvoker; it is used to
|
|
82
|
+
// deliver spontaneous events (device.lost) without the pump.
|
|
83
|
+
if (&runtime == sMainRuntime) {
|
|
84
|
+
context->_callInvoker = sMainInvoker;
|
|
85
|
+
}
|
|
67
86
|
}
|
|
68
|
-
auto data = std::make_shared<RuntimeData>();
|
|
69
|
-
data->context = context;
|
|
70
|
-
runtime.setRuntimeData(runtimeDataUUID(), data);
|
|
71
87
|
return context;
|
|
72
88
|
}
|
|
73
89
|
|
|
@@ -173,7 +189,7 @@ void RuntimeContext::tick() {
|
|
|
173
189
|
{
|
|
174
190
|
// Serialize ProcessEvents across runtimes sharing this instance. Callbacks
|
|
175
191
|
// fired here only deposit into mailboxes (postSettle), they do not run JS.
|
|
176
|
-
std::lock_guard<std::mutex> lock(
|
|
192
|
+
std::lock_guard<std::mutex> lock(*_processEventsMutex);
|
|
177
193
|
_instance.ProcessEvents();
|
|
178
194
|
}
|
|
179
195
|
// Settle this runtime's ready promises on this thread, outside the pump lock.
|
|
@@ -22,11 +22,14 @@ class CallInvoker;
|
|
|
22
22
|
namespace rnwgpu::async {
|
|
23
23
|
|
|
24
24
|
/**
|
|
25
|
-
* Per-runtime coordinator for asynchronous WebGPU operations.
|
|
25
|
+
* Per-runtime, per-instance coordinator for asynchronous WebGPU operations.
|
|
26
26
|
*
|
|
27
|
-
* Each JS runtime
|
|
28
|
-
* runtime's runtimeData.
|
|
29
|
-
*
|
|
27
|
+
* Each (JS runtime, Dawn instance) pair gets its own RuntimeContext, stored in
|
|
28
|
+
* the runtime's runtimeData. A runtime usually has a single one, for the
|
|
29
|
+
* shared WebGPURuntime instance; a device passed to importDevice() can live on
|
|
30
|
+
* another instance, which then gets its own context and pump. Async Dawn
|
|
31
|
+
* operations are registered with CallbackMode::AllowProcessEvents and driven
|
|
32
|
+
* to completion by pumping
|
|
30
33
|
* `instance.ProcessEvents()` on the runtime's OWN thread via a self-
|
|
31
34
|
* rescheduling tick (scheduled through that runtime's setTimeout). Because
|
|
32
35
|
* ProcessEvents invokes the Dawn callbacks synchronously on the pumping thread,
|
|
@@ -56,8 +59,9 @@ namespace rnwgpu::async {
|
|
|
56
59
|
* deposits a settle-action (a plain C++ closure, no JSI) into the OWNING
|
|
57
60
|
* context's thread-safe mailbox via postSettle(), and each context drains its
|
|
58
61
|
* own mailbox on its own thread during tick(). ProcessEvents() itself is
|
|
59
|
-
* serialized across runtimes by a
|
|
60
|
-
* ProcessEvents on one instance is not guaranteed reentrant
|
|
62
|
+
* serialized across the runtimes sharing an instance by a mutex per instance,
|
|
63
|
+
* since concurrent ProcessEvents on one instance is not guaranteed reentrant;
|
|
64
|
+
* pumps of different instances never wait on each other.
|
|
61
65
|
*
|
|
62
66
|
* Threading contract: a RuntimeContext must only be pumped from the runtime it
|
|
63
67
|
* was created for. Request/response async entry points (mapAsync,
|
|
@@ -78,9 +82,10 @@ public:
|
|
|
78
82
|
|
|
79
83
|
RuntimeContext(jsi::Runtime &runtime, wgpu::Instance instance);
|
|
80
84
|
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
85
|
+
// The calling runtime's context for `instance`, created on first use and
|
|
86
|
+
// kept in the runtime's runtimeData for the runtime's lifetime.
|
|
87
|
+
static std::shared_ptr<RuntimeContext>
|
|
88
|
+
getOrCreate(jsi::Runtime &runtime, const wgpu::Instance &instance);
|
|
84
89
|
|
|
85
90
|
// Register the main JS runtime and its CallInvoker. The RuntimeContext
|
|
86
91
|
// created for this runtime gets the invoker (callInvoker() returns it); every
|
|
@@ -97,8 +102,8 @@ public:
|
|
|
97
102
|
return _callInvoker;
|
|
98
103
|
}
|
|
99
104
|
|
|
100
|
-
// The wgpu::Instance
|
|
101
|
-
wgpu::Instance instance() const { return _instance; }
|
|
105
|
+
// The wgpu::Instance served by this context on its owning runtime.
|
|
106
|
+
const wgpu::Instance &instance() const { return _instance; }
|
|
102
107
|
|
|
103
108
|
// The runtime this context belongs to. Safe for pointer-identity checks from
|
|
104
109
|
// any thread; only touch JSI through it on the runtime's own thread.
|
|
@@ -126,6 +131,9 @@ private:
|
|
|
126
131
|
|
|
127
132
|
jsi::Runtime &_runtime;
|
|
128
133
|
wgpu::Instance _instance;
|
|
134
|
+
// Serializes ProcessEvents() on _instance across the runtimes that share it;
|
|
135
|
+
// every context of that instance holds the same mutex.
|
|
136
|
+
std::shared_ptr<std::mutex> _processEventsMutex;
|
|
129
137
|
// Non-null only for the main JS runtime's context (see registerMainRuntime).
|
|
130
138
|
std::shared_ptr<facebook::react::CallInvoker> _callInvoker;
|
|
131
139
|
std::atomic<std::size_t> _pumpTasks{0};
|
package/lib/commonjs/Canvas.js
CHANGED
|
@@ -10,58 +10,110 @@ var _WebGPUViewNativeComponent = _interopRequireDefault(require("./WebGPUViewNat
|
|
|
10
10
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
11
11
|
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
|
|
12
12
|
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); }
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
13
|
+
// Native hands out the id: it must be unique for the life of the process,
|
|
14
|
+
// not of the JS runtime, as the native surface registry outlives a reload.
|
|
15
|
+
const generateContextId = () => RNWebGPU.allocateContextId();
|
|
16
|
+
|
|
17
|
+
/** The Android view a canvas draws into, see {@link AndroidCanvasProps}. */
|
|
18
|
+
|
|
19
|
+
/** The options of a canvas backed by a `TextureView`, the default. */
|
|
20
|
+
|
|
21
|
+
/** The options of a canvas backed by a `SurfaceView`. */
|
|
22
|
+
|
|
23
|
+
/** The options of a canvas backed by a `HardwareBufferView`. */
|
|
17
24
|
|
|
18
25
|
/**
|
|
19
|
-
* Android-only rendering options
|
|
20
|
-
*
|
|
21
|
-
*
|
|
26
|
+
* Android-only rendering options: the native view behind the canvas and its
|
|
27
|
+
* options. The view is created when the canvas mounts and kept: a change of
|
|
28
|
+
* `backingView` is ignored, with a warning in development; remount the canvas
|
|
29
|
+
* (with a `key`) to change it. `opaque` applies in place, and so do the
|
|
30
|
+
* z-order options on Android 11 and later. Ignored on iOS and web.
|
|
22
31
|
*/
|
|
23
32
|
|
|
33
|
+
// The union read as one bag of options; which of them apply to the view is
|
|
34
|
+
// decided below, as it is on the native side.
|
|
35
|
+
|
|
36
|
+
const options = android => android ?? {};
|
|
37
|
+
|
|
24
38
|
// Anything else reaching the native component would hit the generated
|
|
25
39
|
// string-enum parser, which aborts on unknown values.
|
|
26
|
-
const
|
|
27
|
-
|
|
28
|
-
|
|
40
|
+
const resolveBackingView = android => {
|
|
41
|
+
const {
|
|
42
|
+
backingView
|
|
43
|
+
} = options(android);
|
|
44
|
+
return backingView === "SurfaceView" || backingView === "HardwareBufferView" ? backingView : "TextureView";
|
|
45
|
+
};
|
|
29
46
|
|
|
30
|
-
//
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
const
|
|
36
|
-
|
|
37
|
-
|
|
47
|
+
// Whether the canvas composites as opaque, see BackingViewKind.resolveOpaque():
|
|
48
|
+
// a SurfaceView is opaque unless asked otherwise, a TextureView is translucent
|
|
49
|
+
// unless asked otherwise, and a HardwareBufferView always composites with
|
|
50
|
+
// alpha.
|
|
51
|
+
const resolveOpaque = android => {
|
|
52
|
+
const {
|
|
53
|
+
opaque
|
|
54
|
+
} = options(android);
|
|
55
|
+
switch (resolveBackingView(android)) {
|
|
56
|
+
case "SurfaceView":
|
|
57
|
+
return opaque !== false;
|
|
58
|
+
case "TextureView":
|
|
59
|
+
return opaque === true;
|
|
60
|
+
case "HardwareBufferView":
|
|
61
|
+
return false;
|
|
38
62
|
}
|
|
39
|
-
return opaque ? "SurfaceView" : "TextureView";
|
|
40
63
|
};
|
|
41
|
-
const warnIgnored = prop => console.warn(`Ignoring a change of ${prop} on a mounted canvas: the backing view is ` + "chosen when the canvas mounts. Remount the canvas (give it a new key) " + "to change it.");
|
|
42
64
|
|
|
43
|
-
//
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
65
|
+
// The native props the `android` prop resolves to.
|
|
66
|
+
const androidNativeProps = android => {
|
|
67
|
+
const backingView = resolveBackingView(android);
|
|
68
|
+
const {
|
|
69
|
+
zOrderOnTop,
|
|
70
|
+
zOrderMediaOverlay
|
|
71
|
+
} = options(android);
|
|
72
|
+
const surfaceView = backingView === "SurfaceView";
|
|
73
|
+
return {
|
|
74
|
+
androidBackingView: backingView,
|
|
75
|
+
androidOpaque: resolveOpaque(android),
|
|
76
|
+
androidZOrderOnTop: surfaceView && !!zOrderOnTop,
|
|
77
|
+
androidZOrderMediaOverlay: surfaceView && !!zOrderMediaOverlay
|
|
78
|
+
};
|
|
79
|
+
};
|
|
80
|
+
const warnIgnoredChange = prop => console.warn(`Ignoring a change of ${prop} on a mounted canvas: the backing view is ` + "chosen when the canvas mounts. Remount the canvas (give it a new key) " + "to change it.");
|
|
81
|
+
|
|
82
|
+
// Warns, in development on Android, about an option a mounting canvas asks
|
|
83
|
+
// for that the native view cannot honour, and about a change of these props
|
|
84
|
+
// that the native view ignores: the backing view is created from them when
|
|
85
|
+
// the canvas mounts (see WebGPUView.java, whose setters these rules mirror).
|
|
86
|
+
// The native side only says so in logcat, which is not where a JS developer
|
|
87
|
+
// looks.
|
|
88
|
+
const useBackingViewWarning = android => {
|
|
89
|
+
const mount = (0, _react.useRef)(android);
|
|
90
|
+
const prev = (0, _react.useRef)(android);
|
|
91
|
+
(0, _react.useEffect)(() => {
|
|
92
|
+
if (__DEV__ && _reactNative.Platform.OS === "android" && resolveBackingView(mount.current) === "HardwareBufferView" && Number(_reactNative.Platform.Version) < 29) {
|
|
93
|
+
console.warn("android.backingView: HardwareBufferView needs Android 10, the " + "canvas uses a TextureView.");
|
|
94
|
+
}
|
|
95
|
+
}, []);
|
|
50
96
|
(0, _react.useEffect)(() => {
|
|
51
97
|
if (__DEV__ && _reactNative.Platform.OS === "android") {
|
|
52
98
|
const {
|
|
53
99
|
current: before
|
|
54
100
|
} = prev;
|
|
55
|
-
if (
|
|
56
|
-
|
|
101
|
+
if (resolveBackingView(before) !== resolveBackingView(android)) {
|
|
102
|
+
warnIgnoredChange("android.backingView");
|
|
57
103
|
}
|
|
58
104
|
// Only a SurfaceView has a z-order of its own, which Android 11 and
|
|
59
105
|
// later changes in place.
|
|
60
|
-
|
|
61
|
-
|
|
106
|
+
const zOrderAtMount = resolveBackingView(mount.current) === "SurfaceView" && Number(_reactNative.Platform.Version) < 30;
|
|
107
|
+
const was = options(before);
|
|
108
|
+
const is = options(android);
|
|
109
|
+
if (zOrderAtMount && !!was.zOrderOnTop !== !!is.zOrderOnTop) {
|
|
110
|
+
warnIgnoredChange("android.zOrderOnTop");
|
|
111
|
+
}
|
|
112
|
+
if (zOrderAtMount && !!was.zOrderMediaOverlay !== !!is.zOrderMediaOverlay) {
|
|
113
|
+
warnIgnoredChange("android.zOrderMediaOverlay");
|
|
62
114
|
}
|
|
63
115
|
}
|
|
64
|
-
prev.current =
|
|
116
|
+
prev.current = android;
|
|
65
117
|
});
|
|
66
118
|
};
|
|
67
119
|
|
|
@@ -95,17 +147,13 @@ const measureLayout = view => {
|
|
|
95
147
|
return size;
|
|
96
148
|
};
|
|
97
149
|
const Canvas = ({
|
|
98
|
-
opaque = true,
|
|
99
150
|
android,
|
|
100
151
|
ref,
|
|
101
152
|
...props
|
|
102
153
|
}) => {
|
|
103
154
|
const viewRef = (0, _react.useRef)(null);
|
|
104
155
|
const [contextId, _] = (0, _react.useState)(() => generateContextId());
|
|
105
|
-
useBackingViewWarning(
|
|
106
|
-
opaque,
|
|
107
|
-
android
|
|
108
|
-
});
|
|
156
|
+
useBackingViewWarning(android);
|
|
109
157
|
// Retire the native registry entry for this contextId on unmount. When a
|
|
110
158
|
// native surface is still attached, this is a no-op and the native view's
|
|
111
159
|
// own teardown retires the entry instead — which keeps StrictMode's
|
|
@@ -138,15 +186,12 @@ const Canvas = ({
|
|
|
138
186
|
return /*#__PURE__*/_react.default.createElement(_reactNative.View, _extends({
|
|
139
187
|
collapsable: false,
|
|
140
188
|
ref: viewRef
|
|
141
|
-
}, props), /*#__PURE__*/_react.default.createElement(_WebGPUViewNativeComponent.default, {
|
|
189
|
+
}, props), /*#__PURE__*/_react.default.createElement(_WebGPUViewNativeComponent.default, _extends({
|
|
142
190
|
style: {
|
|
143
191
|
flex: 1
|
|
144
192
|
},
|
|
145
|
-
contextId: contextId
|
|
146
|
-
|
|
147
|
-
androidSurfaceType: resolveSurfaceType(android?.surfaceType),
|
|
148
|
-
androidZOrderOnTop: !!android?.zOrderOnTop
|
|
149
|
-
}));
|
|
193
|
+
contextId: contextId
|
|
194
|
+
}, androidNativeProps(android))));
|
|
150
195
|
};
|
|
151
196
|
exports.Canvas = Canvas;
|
|
152
197
|
//# sourceMappingURL=Canvas.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_WebGPUViewNativeComponent","_interopRequireDefault","e","__esModule","default","t","WeakMap","r","n","o","i","f","__proto__","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","_extends","assign","bind","arguments","length","apply","
|
|
1
|
+
{"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_WebGPUViewNativeComponent","_interopRequireDefault","e","__esModule","default","t","WeakMap","r","n","o","i","f","__proto__","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","_extends","assign","bind","arguments","length","apply","generateContextId","RNWebGPU","allocateContextId","options","android","resolveBackingView","backingView","resolveOpaque","opaque","androidNativeProps","zOrderOnTop","zOrderMediaOverlay","surfaceView","androidBackingView","androidOpaque","androidZOrderOnTop","androidZOrderMediaOverlay","warnIgnoredChange","prop","console","warn","useBackingViewWarning","mount","useRef","prev","useEffect","__DEV__","Platform","OS","current","Number","Version","before","zOrderAtMount","was","is","measureLayout","view","clientWidth","clientHeight","width","height","size","_left","_top","Canvas","ref","props","viewRef","contextId","_","useState","destroyContext","useImperativeHandle","getContextId","getNativeSurface","getContext","contextName","Error","MakeWebGPUCanvasContext","createElement","View","collapsable","style","flex","exports"],"sourceRoot":"../../src","sources":["Canvas.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_reactNative","require","_default","exports","default","codegenNativeComponent"],"sourceRoot":"../../src","sources":["WebGPUViewNativeComponent.ts"],"mappings":";;;;;;AAAA,IAAAA,YAAA,GAAAC,OAAA;
|
|
1
|
+
{"version":3,"names":["_reactNative","require","_default","exports","default","codegenNativeComponent"],"sourceRoot":"../../src","sources":["WebGPUViewNativeComponent.ts"],"mappings":";;;;;;AAAA,IAAAA,YAAA,GAAAC,OAAA;AAmBA;AAAA,IAAAC,QAAA,GAAAC,OAAA,CAAAC,OAAA,GACe,IAAAC,mCAAsB,EAAc,YAAY,CAAC","ignoreList":[]}
|
|
@@ -13,9 +13,10 @@ function WebGPUViewNativeComponent(props) {
|
|
|
13
13
|
const {
|
|
14
14
|
contextId,
|
|
15
15
|
style,
|
|
16
|
-
|
|
17
|
-
|
|
16
|
+
androidBackingView: _androidBackingView,
|
|
17
|
+
androidOpaque: _androidOpaque,
|
|
18
18
|
androidZOrderOnTop: _androidZOrderOnTop,
|
|
19
|
+
androidZOrderMediaOverlay: _androidZOrderMediaOverlay,
|
|
19
20
|
...rest
|
|
20
21
|
} = props;
|
|
21
22
|
|
|
@@ -28,9 +29,6 @@ function WebGPUViewNativeComponent(props) {
|
|
|
28
29
|
style: {
|
|
29
30
|
...styles.view,
|
|
30
31
|
...styles.flex1,
|
|
31
|
-
...(opaque ? {
|
|
32
|
-
backgroundColor: "white"
|
|
33
|
-
} : {}),
|
|
34
32
|
...(typeof style === "object" ? style : {})
|
|
35
33
|
}
|
|
36
34
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_react","_interopRequireDefault","require","_reactNative","_utils","e","__esModule","default","WebGPUViewNativeComponent","props","contextId","style","
|
|
1
|
+
{"version":3,"names":["_react","_interopRequireDefault","require","_reactNative","_utils","e","__esModule","default","WebGPUViewNativeComponent","props","contextId","style","androidBackingView","_androidBackingView","androidOpaque","_androidOpaque","androidZOrderOnTop","_androidZOrderOnTop","androidZOrderMediaOverlay","_androidZOrderMediaOverlay","rest","React","createElement","id","contextIdToId","styles","view","flex1","StyleSheet","create","flex","alignItems","backgroundColor","border","boxSizing","display","flexBasis","flexDirection","flexShrink","listStyle","margin","minHeight","minWidth","padding","position","zIndex"],"sourceRoot":"../../src","sources":["WebGPUViewNativeComponent.web.ts"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,YAAA,GAAAD,OAAA;AAIA,IAAAE,MAAA,GAAAF,OAAA;AAAwC,SAAAD,uBAAAI,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAWxC;AACe,SAASG,yBAAyBA,CAC/CC,KAAkB,EACC;EACnB,MAAM;IACJC,SAAS;IACTC,KAAK;IACLC,kBAAkB,EAAEC,mBAAmB;IACvCC,aAAa,EAAEC,cAAc;IAC7BC,kBAAkB,EAAEC,mBAAmB;IACvCC,yBAAyB,EAAEC,0BAA0B;IACrD,GAAGC;EACL,CAAC,GAAGX,KAAK;;EAET;EACA;EACA;EACA,oBAAOY,cAAK,CAACC,aAAa,CAAC,QAAQ,EAAE;IACnC,GAAGF,IAAI;IACPG,EAAE,EAAE,IAAAC,oBAAa,EAACd,SAAS,CAAC;IAC5BC,KAAK,EAAE;MACL,GAAGc,MAAM,CAACC,IAAI;MACd,GAAGD,MAAM,CAACE,KAAK;MACf,IAAI,OAAOhB,KAAK,KAAK,QAAQ,GAAGA,KAAK,GAAG,CAAC,CAAC;IAC5C;EACF,CAAC,CAAC;AACJ;AAEA,MAAMc,MAAM,GAAGG,uBAAU,CAACC,MAAM,CAAC;EAC/BF,KAAK,EAAE;IACLG,IAAI,EAAE;EACR,CAAC;EACDJ,IAAI,EAAE;IACJK,UAAU,EAAE,SAAS;IACrBC,eAAe,EAAE,aAAa;IAC9B;IACA;IACAC,MAAM,EAAE,eAAe;IACvBC,SAAS,EAAE,YAAY;IACvBC,OAAO,EAAE,MAAM;IACfC,SAAS,EAAE,MAAM;IACjBC,aAAa,EAAE,QAAQ;IACvBC,UAAU,EAAE,CAAC;IACbC,SAAS,EAAE,MAAM;IACjBC,MAAM,EAAE,CAAC;IACTC,SAAS,EAAE,CAAC;IACZC,QAAQ,EAAE,CAAC;IACXC,OAAO,EAAE,CAAC;IACVC,QAAQ,EAAE,UAAU;IACpBC,MAAM,EAAE;EACV;AACF,CAAC,CAAC","ignoreList":[]}
|
|
@@ -46,9 +46,11 @@ function makeWebGPUCanvasContext(contextId, width, height) {
|
|
|
46
46
|
present: () => {}
|
|
47
47
|
});
|
|
48
48
|
}
|
|
49
|
+
let nextContextId = 1;
|
|
49
50
|
|
|
50
51
|
// @ts-expect-error - polyfill for RNWebGPU native module
|
|
51
52
|
window.RNWebGPU = {
|
|
53
|
+
allocateContextId: () => nextContextId++,
|
|
52
54
|
getNativeSurface,
|
|
53
55
|
// Unlike native, this can return null; Canvas.getContext() is typed
|
|
54
56
|
// `RNCanvasContext | null` and passes it through.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_utils","require","fabric","getNativeSurface","contextId","canvas","document","getElementById","contextIdToId","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,IAAAA,MAAA,GAAAC,OAAA;AAEA,MAAMC,MAAM,GAAG,IAAI;AAEnB,SAASC,gBAAgBA,CAACC,SAAiB,EAAE;EAC3C,MAAMC,MAAM,GAAGC,QAAQ,CAACC,cAAc,CACpC,IAAAC,oBAAa,EAACJ,SAAS,CACzB,CAAsB;;EAEtB;EACA;EACA,MAAM;IAAEK,YAAY,EAAEC,MAAM;IAAEC,WAAW,EAAEC;EAAM,CAAC,GAAGP,MAAM;EAE3D,OAAO;IACLQ,OAAO,EAAEC,MAAM,CAACV,SAAS,CAAC;IAC1BM,MAAM;IACNE,KAAK;IACLH,YAAY,EAAEC,MAAM;IACpBC,WAAW,EAAEC,KAAK;IAClB;IACAG,gBAAgB,EAAEV,MAAM,CAACU,gBAAgB,CAACC,IAAI,CAACX,MAAM,CAAC;IACtDY,mBAAmB,EAAEZ,MAAM,CAACY,mBAAmB,CAACD,IAAI,CAACX,MAAM,CAAC;IAC5Da,aAAa,EAAEb,MAAM,CAACa,aAAa,CAACF,IAAI,CAACX,MAAM,CAAC;IAChDc,iBAAiB,EAAEd,MAAM,CAACc,iBAAiB,CAACH,IAAI,CAACX,MAAM,CAAC;IACxDe,qBAAqB,EAAEf,MAAM,CAACe,qBAAqB,CAACJ,IAAI,CAACX,MAAM;EACjE,CAAC;AACH;AAEA,SAASgB,uBAAuBA,CAC9BjB,SAAiB,EACjBQ,KAAa,EACbF,MAAc,EACd;EACA,MAAML,MAAM,GAAGC,QAAQ,CAACC,cAAc,CACpC,IAAAC,oBAAa,EAACJ,SAAS,CACzB,CAAsB;EAEtB,MAAMkB,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,IACErB,MAAM,CAACuB,YAAY,CAAC,OAAO,CAAC,KAAKH,UAAU,IAC3CpB,MAAM,CAACuB,YAAY,CAAC,QAAQ,CAAC,KAAKD,WAAW,EAC7C;IACAtB,MAAM,CAACwB,YAAY,CAAC,OAAO,EAAEJ,UAAU,CAAC;IACxCpB,MAAM,CAACwB,YAAY,CAAC,QAAQ,EAAEF,WAAW,CAAC;EAC5C;EAEA,MAAMG,OAAO,GAAGzB,MAAM,CAAC0B,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;;
|
|
1
|
+
{"version":3,"names":["_utils","require","fabric","getNativeSurface","contextId","canvas","document","getElementById","contextIdToId","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","nextContextId","RNWebGPU","allocateContextId","MakeWebGPUCanvasContext","destroyContext","_contextId"],"sourceRoot":"../../src","sources":["WebPolyfillGPUModule.ts"],"mappings":";;AAAA,IAAAA,MAAA,GAAAC,OAAA;AAEA,MAAMC,MAAM,GAAG,IAAI;AAEnB,SAASC,gBAAgBA,CAACC,SAAiB,EAAE;EAC3C,MAAMC,MAAM,GAAGC,QAAQ,CAACC,cAAc,CACpC,IAAAC,oBAAa,EAACJ,SAAS,CACzB,CAAsB;;EAEtB;EACA;EACA,MAAM;IAAEK,YAAY,EAAEC,MAAM;IAAEC,WAAW,EAAEC;EAAM,CAAC,GAAGP,MAAM;EAE3D,OAAO;IACLQ,OAAO,EAAEC,MAAM,CAACV,SAAS,CAAC;IAC1BM,MAAM;IACNE,KAAK;IACLH,YAAY,EAAEC,MAAM;IACpBC,WAAW,EAAEC,KAAK;IAClB;IACAG,gBAAgB,EAAEV,MAAM,CAACU,gBAAgB,CAACC,IAAI,CAACX,MAAM,CAAC;IACtDY,mBAAmB,EAAEZ,MAAM,CAACY,mBAAmB,CAACD,IAAI,CAACX,MAAM,CAAC;IAC5Da,aAAa,EAAEb,MAAM,CAACa,aAAa,CAACF,IAAI,CAACX,MAAM,CAAC;IAChDc,iBAAiB,EAAEd,MAAM,CAACc,iBAAiB,CAACH,IAAI,CAACX,MAAM,CAAC;IACxDe,qBAAqB,EAAEf,MAAM,CAACe,qBAAqB,CAACJ,IAAI,CAACX,MAAM;EACjE,CAAC;AACH;AAEA,SAASgB,uBAAuBA,CAC9BjB,SAAiB,EACjBQ,KAAa,EACbF,MAAc,EACd;EACA,MAAML,MAAM,GAAGC,QAAQ,CAACC,cAAc,CACpC,IAAAC,oBAAa,EAACJ,SAAS,CACzB,CAAsB;EAEtB,MAAMkB,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,IACErB,MAAM,CAACuB,YAAY,CAAC,OAAO,CAAC,KAAKH,UAAU,IAC3CpB,MAAM,CAACuB,YAAY,CAAC,QAAQ,CAAC,KAAKD,WAAW,EAC7C;IACAtB,MAAM,CAACwB,YAAY,CAAC,OAAO,EAAEJ,UAAU,CAAC;IACxCpB,MAAM,CAACwB,YAAY,CAAC,QAAQ,EAAEF,WAAW,CAAC;EAC5C;EAEA,MAAMG,OAAO,GAAGzB,MAAM,CAAC0B,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,IAAIC,aAAa,GAAG,CAAC;;AAErB;AACAZ,MAAM,CAACa,QAAQ,GAAG;EAChBC,iBAAiB,EAAEA,CAAA,KAAMF,aAAa,EAAE;EACxChC,gBAAgB;EAChB;EACA;EACAmC,uBAAuB,EACrBjB,uBAAkE;EACpE;EACAkB,cAAc,EAAGC,UAAkB,IAAK,CAAC,CAAC;EAC1CtC;AACF,CAAC","ignoreList":[]}
|
|
@@ -15,8 +15,9 @@ exports.importDevice = exports.adoptTexture = void 0;
|
|
|
15
15
|
* ```
|
|
16
16
|
*
|
|
17
17
|
* This is only sound when the exporting library links the same single Dawn
|
|
18
|
-
* copy as react-native-webgpu
|
|
19
|
-
*
|
|
18
|
+
* copy as react-native-webgpu (react-native-skia does). The device stays on
|
|
19
|
+
* its owner's Dawn instance and its async operations are pumped there, so the
|
|
20
|
+
* two libraries do not have to share an instance.
|
|
20
21
|
*/
|
|
21
22
|
const importDevice = pointer => {
|
|
22
23
|
if (typeof RNWebGPU === "undefined") {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["importDevice","pointer","RNWebGPU","Error","exports","adoptTexture"],"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;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAVAG,OAAA,CAAAJ,YAAA,GAAAA,YAAA;AAWO,MAAMK,YAAY,GAAIJ,OAAe,IAAiB;EAC3D,IAAI,OAAOC,QAAQ,KAAK,WAAW,EAAE;IACnC,MAAM,IAAIC,KAAK,CACb,4EACF,CAAC;EACH;EACA,OAAOD,QAAQ,CAACG,YAAY,CAACJ,OAAO,CAAC;AACvC,CAAC;AAACG,OAAA,CAAAC,YAAA,GAAAA,YAAA","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["importDevice","pointer","RNWebGPU","Error","exports","adoptTexture"],"sourceRoot":"../../src","sources":["importDevice.ts"],"mappings":";;;;;;AAAA;AACA;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;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAVAG,OAAA,CAAAJ,YAAA,GAAAA,YAAA;AAWO,MAAMK,YAAY,GAAIJ,OAAe,IAAiB;EAC3D,IAAI,OAAOC,QAAQ,KAAK,WAAW,EAAE;IACnC,MAAM,IAAIC,KAAK,CACb,4EACF,CAAC;EACH;EACA,OAAOD,QAAQ,CAACG,YAAY,CAACJ,OAAO,CAAC;AACvC,CAAC;AAACG,OAAA,CAAAC,YAAA,GAAAA,YAAA","ignoreList":[]}
|
package/lib/commonjs/mock.js
CHANGED
|
@@ -107,7 +107,6 @@ const GPUMapMode = exports.GPUMapMode = {
|
|
|
107
107
|
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)";
|
|
108
108
|
// Strip the same props the real Canvas keeps off its outer View.
|
|
109
109
|
const Canvas = ({
|
|
110
|
-
opaque: _opaque,
|
|
111
110
|
android: _android,
|
|
112
111
|
ref,
|
|
113
112
|
...props
|
package/lib/commonjs/mock.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
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","
|
|
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","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":[]}
|