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.
Files changed (105) hide show
  1. package/android/cpp/AndroidColorSpace.h +107 -0
  2. package/android/cpp/AndroidPlatformContext.h +100 -9
  3. package/android/cpp/AndroidVideoPlayer.h +46 -1
  4. package/android/cpp/cpp-adapter.cpp +53 -1
  5. package/android/src/main/java/com/webgpu/SyncFences.java +88 -0
  6. package/android/src/main/java/com/webgpu/ViewSnapshot.java +66 -23
  7. package/android/src/main/java/com/webgpu/WebGPUModule.java +69 -5
  8. package/android/src/main/java/com/webgpu/WebGPUVideoPlayer.java +109 -0
  9. package/apple/ApplePlatformContext.h +5 -5
  10. package/apple/ApplePlatformContext.mm +75 -3
  11. package/apple/AppleVideoPlayer.mm +68 -35
  12. package/cpp/dawn/common/ExternalTextureParams.h +67 -0
  13. package/cpp/rnwgpu/PlatformContext.h +65 -16
  14. package/cpp/rnwgpu/SurfaceRegistry.h +39 -5
  15. package/cpp/rnwgpu/api/GPUAdapter.cpp +35 -0
  16. package/cpp/rnwgpu/api/GPUExternalTexture.cpp +172 -156
  17. package/cpp/rnwgpu/api/GPUExternalTexture.h +2 -19
  18. package/cpp/rnwgpu/api/GPUQueue.cpp +98 -3
  19. package/cpp/rnwgpu/api/RNWebGPU.h +12 -3
  20. package/cpp/rnwgpu/api/VideoFrameBlit.h +39 -24
  21. package/cpp/rnwgpu/api/descriptors/GPUExternalTextureDescriptor.h +10 -3
  22. package/lib/commonjs/Canvas.js +36 -6
  23. package/lib/commonjs/Canvas.js.map +1 -1
  24. package/lib/commonjs/WebPolyfillGPUModule.js +6 -3
  25. package/lib/commonjs/WebPolyfillGPUModule.js.map +1 -1
  26. package/lib/commonjs/constants.js +6 -3
  27. package/lib/commonjs/constants.js.map +1 -1
  28. package/lib/commonjs/index.js +1 -0
  29. package/lib/commonjs/index.js.map +1 -1
  30. package/lib/commonjs/install.js +9 -22
  31. package/lib/commonjs/install.js.map +1 -1
  32. package/lib/commonjs/main/index.js +8 -7
  33. package/lib/commonjs/main/index.js.map +1 -1
  34. package/lib/commonjs/main/index.web.js +1 -1
  35. package/lib/commonjs/main/installNative.js +20 -0
  36. package/lib/commonjs/main/installNative.js.map +1 -0
  37. package/lib/commonjs/main/installNative.web.js +4 -0
  38. package/lib/commonjs/main/installNative.web.js.map +1 -0
  39. package/lib/commonjs/mock.js +60 -13
  40. package/lib/commonjs/mock.js.map +1 -1
  41. package/lib/module/Canvas.js +37 -7
  42. package/lib/module/Canvas.js.map +1 -1
  43. package/lib/module/WebPolyfillGPUModule.js +6 -3
  44. package/lib/module/WebPolyfillGPUModule.js.map +1 -1
  45. package/lib/module/constants.js +6 -3
  46. package/lib/module/constants.js.map +1 -1
  47. package/lib/module/index.js +8 -1
  48. package/lib/module/index.js.map +1 -1
  49. package/lib/module/install.js +8 -20
  50. package/lib/module/install.js.map +1 -1
  51. package/lib/module/main/index.js +6 -7
  52. package/lib/module/main/index.js.map +1 -1
  53. package/lib/module/main/index.web.js +1 -1
  54. package/lib/module/main/index.web.js.map +1 -1
  55. package/lib/module/main/installNative.js +18 -0
  56. package/lib/module/main/installNative.js.map +1 -0
  57. package/lib/module/main/installNative.web.js +6 -0
  58. package/lib/module/main/installNative.web.js.map +1 -0
  59. package/lib/module/mock.js +55 -1
  60. package/lib/module/mock.js.map +1 -1
  61. package/lib/typescript/lib/commonjs/Canvas.d.ts.map +1 -1
  62. package/lib/typescript/lib/commonjs/install.d.ts +41 -3
  63. package/lib/typescript/lib/commonjs/install.d.ts.map +1 -1
  64. package/lib/typescript/lib/commonjs/main/installNative.d.ts +2 -0
  65. package/lib/typescript/lib/commonjs/main/installNative.d.ts.map +1 -0
  66. package/lib/typescript/lib/commonjs/main/installNative.web.d.ts +2 -0
  67. package/lib/typescript/lib/commonjs/main/installNative.web.d.ts.map +1 -0
  68. package/lib/typescript/lib/commonjs/mock.d.ts +39 -0
  69. package/lib/typescript/lib/commonjs/mock.d.ts.map +1 -1
  70. package/lib/typescript/lib/module/Canvas.d.ts.map +1 -1
  71. package/lib/typescript/lib/module/install.d.ts +0 -1
  72. package/lib/typescript/lib/module/install.d.ts.map +1 -1
  73. package/lib/typescript/lib/module/main/installNative.d.ts +2 -0
  74. package/lib/typescript/lib/module/main/installNative.d.ts.map +1 -0
  75. package/lib/typescript/lib/module/main/installNative.web.d.ts +2 -0
  76. package/lib/typescript/lib/module/main/installNative.web.d.ts.map +1 -0
  77. package/lib/typescript/lib/module/mock.d.ts +39 -1
  78. package/lib/typescript/lib/module/mock.d.ts.map +1 -1
  79. package/lib/typescript/src/Canvas.d.ts.map +1 -1
  80. package/lib/typescript/src/constants.d.ts.map +1 -1
  81. package/lib/typescript/src/index.d.ts +2 -2
  82. package/lib/typescript/src/index.d.ts.map +1 -1
  83. package/lib/typescript/src/install.d.ts +0 -5
  84. package/lib/typescript/src/install.d.ts.map +1 -1
  85. package/lib/typescript/src/main/index.d.ts +1 -0
  86. package/lib/typescript/src/main/index.d.ts.map +1 -1
  87. package/lib/typescript/src/main/index.web.d.ts +1 -1
  88. package/lib/typescript/src/main/index.web.d.ts.map +1 -1
  89. package/lib/typescript/src/main/installNative.d.ts +2 -0
  90. package/lib/typescript/src/main/installNative.d.ts.map +1 -0
  91. package/lib/typescript/src/main/installNative.web.d.ts +2 -0
  92. package/lib/typescript/src/main/installNative.web.d.ts.map +1 -0
  93. package/lib/typescript/src/mock.d.ts +5 -1
  94. package/lib/typescript/src/mock.d.ts.map +1 -1
  95. package/package.json +1 -1
  96. package/src/Canvas.tsx +48 -29
  97. package/src/WebPolyfillGPUModule.ts +3 -1
  98. package/src/constants.ts +6 -3
  99. package/src/index.tsx +18 -10
  100. package/src/install.ts +9 -18
  101. package/src/main/index.tsx +7 -10
  102. package/src/main/index.web.tsx +1 -1
  103. package/src/main/installNative.ts +20 -0
  104. package/src/main/installNative.web.ts +5 -0
  105. package/src/mock.ts +60 -1
@@ -1,5 +1,6 @@
1
1
  #pragma once
2
2
 
3
+ #include <algorithm>
3
4
  #include <array>
4
5
  #include <cstring>
5
6
  #include <memory>
@@ -18,17 +19,29 @@
18
19
 
19
20
  namespace rnwgpu {
20
21
 
21
- // Renders a native video frame into a region of a regular texture. The frame
22
- // is imported as an external texture, so Dawn does the YUV to RGB conversion
23
- // and applies the rotation and the mirroring; a full-screen triangle then
24
- // samples it into the destination. This is what backs
25
- // GPUQueue.copyExternalImageToTexture for NativeVideoFrame sources.
22
+ // Renders a native frame into a region of a regular texture. The frame is
23
+ // imported as an external texture, so Dawn does the YUV to RGB conversion and
24
+ // applies the rotation and the mirroring; a full-screen triangle then samples
25
+ // it into the destination. This is what backs
26
+ // GPUQueue.copyExternalImageToTexture for NativeVideoFrame sources, and the
27
+ // zero-copy path of GPUQueue.drawElementImageToTexture, which draws the
28
+ // buffer the platform rendered a view into.
26
29
  //
27
30
  // One instance per device, shared by its GPUQueue wrappers (a new wrapper is
28
31
  // created on every `device.queue` access): it caches the shader, the layouts
29
32
  // and one pipeline per destination format.
30
33
  class VideoFrameBlit {
31
34
  public:
35
+ // What becomes of the frame's alpha channel.
36
+ enum class Alpha {
37
+ // The destination is opaque (a video frame): alpha is written as 1.
38
+ Opaque,
39
+ // The frame's premultiplied pixels are written as they are.
40
+ Premultiplied,
41
+ // The frame's premultiplied pixels are converted to straight alpha.
42
+ Straight,
43
+ };
44
+
32
45
  struct Request {
33
46
  std::shared_ptr<VideoFrame> frame;
34
47
  // The region of the upright frame (after rotation and mirroring) to copy.
@@ -39,6 +52,7 @@ public:
39
52
  bool flipY = false;
40
53
  double rotation = 0;
41
54
  bool mirrored = false;
55
+ Alpha alpha = Alpha::Opaque;
42
56
  // The destination region.
43
57
  wgpu::Texture texture;
44
58
  uint32_t mipLevel = 0;
@@ -123,17 +137,15 @@ public:
123
137
  static_cast<float>(request.originX) / static_cast<float>(frameWidth);
124
138
  const float offsetY =
125
139
  static_cast<float>(request.originY) / static_cast<float>(frameHeight);
126
- std::array<float, 20> uniforms = {};
127
- const std::vector<double> matrix = external->getYuvToRgbMatrix();
128
- for (size_t i = 0; i < 12 && i < matrix.size(); i++) {
129
- uniforms[i] = static_cast<float>(matrix[i]);
130
- }
131
- uniforms[12] = scaleX;
132
- uniforms[13] = request.flipY ? -scaleY : scaleY;
133
- uniforms[14] = offsetX;
134
- uniforms[15] = request.flipY ? offsetY + scaleY : offsetY;
140
+ std::array<float, 8> uniforms = {};
141
+ uniforms[0] = scaleX;
142
+ uniforms[1] = request.flipY ? -scaleY : scaleY;
143
+ uniforms[2] = offsetX;
144
+ uniforms[3] = request.flipY ? offsetY + scaleY : offsetY;
135
145
  const uint32_t decodeSrgb = isSrgb(format) ? 1u : 0u;
136
- std::memcpy(&uniforms[16], &decodeSrgb, sizeof(decodeSrgb));
146
+ std::memcpy(&uniforms[4], &decodeSrgb, sizeof(decodeSrgb));
147
+ const uint32_t alphaMode = static_cast<uint32_t>(request.alpha);
148
+ std::memcpy(&uniforms[5], &alphaMode, sizeof(alphaMode));
137
149
 
138
150
  wgpu::BufferDescriptor bufferDesc = {};
139
151
  bufferDesc.label = "copyExternalImageToTexture uniforms";
@@ -225,15 +237,11 @@ private:
225
237
 
226
238
  static constexpr const char *kShader = R"(
227
239
  struct Uniforms {
228
- // The rows of the 3x4 matrix mapping the sampled texel to R'G'B'
229
- // (GPUExternalTexture.yuvToRgbMatrix; the identity outside Android YUV).
230
- yuvToRgb0: vec4f,
231
- yuvToRgb1: vec4f,
232
- yuvToRgb2: vec4f,
233
240
  // uv = position01 * uvScale + uvOffset
234
241
  uvScale: vec2f,
235
242
  uvOffset: vec2f,
236
243
  // x: decode sRGB to linear, for an sRGB destination that re-encodes on write
244
+ // y: alpha, 0 opaque (written as 1), 1 premultiplied as sampled, 2 straight
237
245
  flags: vec4u,
238
246
  };
239
247
 
@@ -265,14 +273,21 @@ fn srgbToLinear(c: vec3f) -> vec3f {
265
273
  }
266
274
 
267
275
  @fragment fn fs(in: VsOut) -> @location(0) vec4f {
276
+ // The external texture converts YUV to RGB while sampling, on every platform.
268
277
  let sampled = textureSampleBaseClampToEdge(frame, frameSampler, in.uv);
269
- let texel = vec4f(sampled.rgb, 1.0);
270
- var rgb = vec3f(dot(u.yuvToRgb0, texel), dot(u.yuvToRgb1, texel), dot(u.yuvToRgb2, texel));
271
- rgb = clamp(rgb, vec3f(0.0), vec3f(1.0));
278
+ var rgb = clamp(sampled.rgb, vec3f(0.0), vec3f(1.0));
279
+ var alpha = 1.0;
280
+ if (u.flags.y != 0u) {
281
+ alpha = clamp(sampled.a, 0.0, 1.0);
282
+ }
283
+ // Unpremultiply in the encoded domain, as the CPU path does on the bytes.
284
+ if (u.flags.y == 2u && alpha > 0.0) {
285
+ rgb = clamp(rgb / alpha, vec3f(0.0), vec3f(1.0));
286
+ }
272
287
  if (u.flags.x == 1u) {
273
288
  rgb = srgbToLinear(rgb);
274
289
  }
275
- return vec4f(rgb, 1.0);
290
+ return vec4f(rgb, alpha);
276
291
  }
277
292
  )";
278
293
 
@@ -14,9 +14,9 @@ namespace jsi = facebook::jsi;
14
14
  namespace rnwgpu {
15
15
 
16
16
  // Mirror of GPUExternalTextureDescriptor from the WebGPU spec, but with our
17
- // VideoFrame as the (only) supported source. We don't expose colorSpace yet;
18
- // the C++ side picks dst-sRGB and identity gamut, which is the right default
19
- // for "render this video frame to a regular sRGB framebuffer".
17
+ // VideoFrame as the (only) supported source. `colorSpace` is the spec member:
18
+ // the color space of the RGB the shader samples, "srgb" (the default) or
19
+ // "display-p3"; the frame's own color space comes with the frame.
20
20
  //
21
21
  // `rotation` / `mirrored` are a non-spec extension: camera frames (e.g. from
22
22
  // VisionCamera) arrive in the sensor's native orientation, which differs
@@ -27,6 +27,7 @@ namespace rnwgpu {
27
27
  struct GPUExternalTextureDescriptor {
28
28
  std::shared_ptr<VideoFrame> source;
29
29
  std::optional<std::string> label;
30
+ std::optional<std::string> colorSpace;
30
31
  std::optional<double> rotation;
31
32
  std::optional<bool> mirrored;
32
33
  };
@@ -57,6 +58,12 @@ struct JSIConverter<std::shared_ptr<rnwgpu::GPUExternalTextureDescriptor>> {
57
58
  runtime, prop, false);
58
59
  }
59
60
  }
61
+ if (value.hasProperty(runtime, "colorSpace")) {
62
+ auto prop = value.getProperty(runtime, "colorSpace");
63
+ if (prop.isString()) {
64
+ result->colorSpace = prop.asString(runtime).utf8(runtime);
65
+ }
66
+ }
60
67
  if (value.hasProperty(runtime, "rotation")) {
61
68
  auto prop = value.getProperty(runtime, "rotation");
62
69
  if (prop.isNumber()) {
@@ -17,6 +17,36 @@ function generateContextId() {
17
17
  // Anything else reaching the native component would hit the generated
18
18
  // string-enum parser, which aborts on unknown values.
19
19
  const resolveSurfaceType = surfaceType => surfaceType === "SurfaceView" || surfaceType === "TextureView" || surfaceType === "HardwareBufferView" ? surfaceType : "auto";
20
+
21
+ // A view measured relative to itself gets its layout size, without the
22
+ // transforms getBoundingClientRect() includes; measureLayout() calls back
23
+ // synchronously on the new architecture. On the web react-native-web measures
24
+ // asynchronously, so the DOM node is read directly: clientWidth/clientHeight
25
+ // are layout values that ignore transforms too (unlike getBoundingClientRect)
26
+ // and are what browser WebGPU code sizes a canvas from.
27
+ const measureLayout = view => {
28
+ if (_reactNative.Platform.OS === "web") {
29
+ const {
30
+ clientWidth,
31
+ clientHeight
32
+ } = view;
33
+ return {
34
+ width: clientWidth,
35
+ height: clientHeight
36
+ };
37
+ }
38
+ let size = {
39
+ width: 0,
40
+ height: 0
41
+ };
42
+ view.measureLayout(view, (_left, _top, width, height) => {
43
+ size = {
44
+ width,
45
+ height
46
+ };
47
+ });
48
+ return size;
49
+ };
20
50
  const Canvas = ({
21
51
  opaque = true,
22
52
  android,
@@ -29,7 +59,10 @@ const Canvas = ({
29
59
  // native surface is still attached, this is a no-op and the native view's
30
60
  // own teardown retires the entry instead — which keeps StrictMode's
31
61
  // simulated unmount (which re-runs effects without unmounting native views)
32
- // from orphaning a live surface.
62
+ // from orphaning a live surface. When no surface is attached yet (StrictMode
63
+ // runs this cleanup right after mount, possibly before the UI thread got to
64
+ // it), a context kept from the first effect run keeps its surface entry,
65
+ // which the native view takes over when it attaches.
33
66
  (0, _react.useEffect)(() => {
34
67
  return () => {
35
68
  RNWebGPU.destroyContext(contextId);
@@ -47,13 +80,10 @@ const Canvas = ({
47
80
  if (!viewRef.current) {
48
81
  throw new Error("[WebGPU] Cannot get context before mount");
49
82
  }
50
- // getBoundingClientRect became stable in RN 0.83
51
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
52
- const view = viewRef.current;
53
- const size = "getBoundingClientRect" in view ? view.getBoundingClientRect() : view.unstable_getBoundingClientRect();
83
+ const size = measureLayout(viewRef.current);
54
84
  return RNWebGPU.MakeWebGPUCanvasContext(contextId, size.width, size.height);
55
85
  }
56
- }));
86
+ }), [contextId]);
57
87
  return /*#__PURE__*/_react.default.createElement(_reactNative.View, _extends({
58
88
  collapsable: false,
59
89
  ref: viewRef
@@ -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","CONTEXT_COUNTER","generateContextId","resolveSurfaceType","surfaceType","Canvas","opaque","android","ref","props","viewRef","useRef","contextId","_","useState","useEffect","RNWebGPU","destroyContext","useImperativeHandle","getContextId","getNativeSurface","getContext","contextName","Error","current","view","size","getBoundingClientRect","unstable_getBoundingClientRect","MakeWebGPUCanvasContext","width","height","createElement","View","collapsable","style","flex","androidSurfaceType","androidZOrderOnTop","zOrderOnTop","exports"],"sourceRoot":"../../src","sources":["Canvas.tsx"],"mappings":"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","ignoreList":[]}
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","CONTEXT_COUNTER","generateContextId","resolveSurfaceType","surfaceType","measureLayout","view","Platform","OS","clientWidth","clientHeight","width","height","size","_left","_top","Canvas","opaque","android","ref","props","viewRef","useRef","contextId","_","useState","useEffect","RNWebGPU","destroyContext","useImperativeHandle","getContextId","getNativeSurface","getContext","contextName","Error","current","MakeWebGPUCanvasContext","createElement","View","collapsable","style","flex","androidSurfaceType","androidZOrderOnTop","zOrderOnTop","exports"],"sourceRoot":"../../src","sources":["Canvas.tsx"],"mappings":"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","ignoreList":[]}
@@ -4,10 +4,13 @@ var _utils = require("./utils");
4
4
  const fabric = true;
5
5
  function getNativeSurface(contextId) {
6
6
  const canvas = document.getElementById((0, _utils.contextIdToId)(contextId));
7
+
8
+ // Layout size, like the native view size in dp: unlike
9
+ // getBoundingClientRect() it ignores CSS transforms.
7
10
  const {
8
- height,
9
- width
10
- } = canvas.getBoundingClientRect();
11
+ clientHeight: height,
12
+ clientWidth: width
13
+ } = canvas;
11
14
  return {
12
15
  surface: BigInt(contextId),
13
16
  height,
@@ -1 +1 @@
1
- {"version":3,"names":["_utils","require","fabric","getNativeSurface","contextId","canvas","document","getElementById","contextIdToId","height","width","getBoundingClientRect","surface","BigInt","clientHeight","clientWidth","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,MAAM;IAAEK,MAAM;IAAEC;EAAM,CAAC,GAAGL,MAAM,CAACM,qBAAqB,CAAC,CAAE;EAEzD,OAAO;IACLC,OAAO,EAAEC,MAAM,CAACT,SAAS,CAAC;IAC1BK,MAAM;IACNC,KAAK;IACLI,YAAY,EAAEL,MAAM;IACpBM,WAAW,EAAEL,KAAK;IAClB;IACAM,gBAAgB,EAAEX,MAAM,CAACW,gBAAgB,CAACC,IAAI,CAACZ,MAAM,CAAC;IACtDa,mBAAmB,EAAEb,MAAM,CAACa,mBAAmB,CAACD,IAAI,CAACZ,MAAM,CAAC;IAC5Dc,aAAa,EAAEd,MAAM,CAACc,aAAa,CAACF,IAAI,CAACZ,MAAM,CAAC;IAChDe,iBAAiB,EAAEf,MAAM,CAACe,iBAAiB,CAACH,IAAI,CAACZ,MAAM,CAAC;IACxDgB,qBAAqB,EAAEhB,MAAM,CAACgB,qBAAqB,CAACJ,IAAI,CAACZ,MAAM;EACjE,CAAC;AACH;AAEA,SAASiB,uBAAuBA,CAC9BlB,SAAiB,EACjBM,KAAa,EACbD,MAAc,EACd;EACA,MAAMJ,MAAM,GAAGC,QAAQ,CAACC,cAAc,CACpC,IAAAC,oBAAa,EAACJ,SAAS,CACzB,CAAsB;EAEtB,MAAMmB,GAAG,GAAGC,MAAM,CAACC,gBAAgB,IAAI,CAAC;EACxC,MAAMC,UAAU,GAAG,CAAChB,KAAK,GAAGa,GAAG,EAAEI,QAAQ,CAAC,CAAC;EAC3C,MAAMC,WAAW,GAAG,CAACnB,MAAM,GAAGc,GAAG,EAAEI,QAAQ,CAAC,CAAC;EAE7C,IACEtB,MAAM,CAACwB,YAAY,CAAC,OAAO,CAAC,KAAKH,UAAU,IAC3CrB,MAAM,CAACwB,YAAY,CAAC,QAAQ,CAAC,KAAKD,WAAW,EAC7C;IACAvB,MAAM,CAACyB,YAAY,CAAC,OAAO,EAAEJ,UAAU,CAAC;IACxCrB,MAAM,CAACyB,YAAY,CAAC,QAAQ,EAAEF,WAAW,CAAC;EAC5C;EAEA,MAAMG,OAAO,GAAG1B,MAAM,CAAC2B,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;EAChBjC,gBAAgB;EAChB;EACA;EACAkC,uBAAuB,EACrBf,uBAAkE;EACpE;EACAgB,cAAc,EAAGC,UAAkB,IAAK,CAAC,CAAC;EAC1CrC;AACF,CAAC","ignoreList":[]}
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;;AAEA;AACAX,MAAM,CAACY,QAAQ,GAAG;EAChBhC,gBAAgB;EAChB;EACA;EACAiC,uBAAuB,EACrBf,uBAAkE;EACpE;EACAgB,cAAc,EAAGC,UAAkB,IAAK,CAAC,CAAC;EAC1CpC;AACF,CAAC","ignoreList":[]}
@@ -28,9 +28,12 @@ exports.GPUTextureUsage = exports.GPUShaderStage = exports.GPUMapMode = exports.
28
28
  // device.createBuffer({ usage: GPUBufferUsage.COPY_DST | GPUBufferUsage.MAP_READ });
29
29
  // };
30
30
  //
31
- // These are read at module evaluation time. The package entry (`index.tsx`)
32
- // re-exports `./main` before `./constants`, and `./main` installs the native
33
- // module synchronously, so the globals always exist by the time this runs.
31
+ // These are read at module evaluation time, so the native module must be
32
+ // installed first: the package entry (`./index.tsx`) starts with a bare
33
+ // `import "./main/installNative"` (so does `./main`), which runs the install
34
+ // before this file is reached, directly or through `./install`. An import is
35
+ // evaluated before the body of the module that declares it, so installing in
36
+ // the body of `./main` left every flag undefined.
34
37
 
35
38
  const {
36
39
  GPUBufferUsage
@@ -1 +1 @@
1
- {"version":3,"names":["GPUBufferUsage","globalThis","exports","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;;AAEO,MAAM;EAAEA;AAAe,CAAC,GAAGC,UAAU;AAACC,OAAA,CAAAF,cAAA,GAAAA,cAAA;AAEtC,MAAM;EAAEG;AAAgB,CAAC,GAAGF,UAAU;AAACC,OAAA,CAAAC,eAAA,GAAAA,eAAA;AAEvC,MAAM;EAAEC;AAAe,CAAC,GAAGH,UAAU;AAACC,OAAA,CAAAE,cAAA,GAAAA,cAAA;AAEtC,MAAM;EAAEC;AAAc,CAAC,GAAGJ,UAAU;AAACC,OAAA,CAAAG,aAAA,GAAAA,aAAA;AAErC,MAAM;EAAEC;AAAW,CAAC,GAAGL,UAAU;AAACC,OAAA,CAAAI,UAAA,GAAAA,UAAA","ignoreList":[]}
1
+ {"version":3,"names":["GPUBufferUsage","globalThis","exports","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;;AAEO,MAAM;EAAEA;AAAe,CAAC,GAAGC,UAAU;AAACC,OAAA,CAAAF,cAAA,GAAAA,cAAA;AAEtC,MAAM;EAAEG;AAAgB,CAAC,GAAGF,UAAU;AAACC,OAAA,CAAAC,eAAA,GAAAA,eAAA;AAEvC,MAAM;EAAEC;AAAe,CAAC,GAAGH,UAAU;AAACC,OAAA,CAAAE,cAAA,GAAAA,cAAA;AAEtC,MAAM;EAAEC;AAAc,CAAC,GAAGJ,UAAU;AAACC,OAAA,CAAAG,aAAA,GAAAA,aAAA;AAErC,MAAM;EAAEC;AAAW,CAAC,GAAGL,UAAU;AAACC,OAAA,CAAAI,UAAA,GAAAA,UAAA","ignoreList":[]}
@@ -12,6 +12,7 @@ Object.defineProperty(exports, "installWebGPU", {
12
12
  return _install.installWebGPU;
13
13
  }
14
14
  });
15
+ require("./main/installNative");
15
16
  var _main = require("./main");
16
17
  Object.keys(_main).forEach(function (key) {
17
18
  if (key === "default" || key === "__esModule") return;
@@ -1 +1 @@
1
- {"version":3,"names":["_main","require","Object","keys","forEach","key","prototype","hasOwnProperty","call","_exportNames","exports","defineProperty","enumerable","get","_constants","_install"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":";;;;;;;;;;;;;;AAkBA,IAAAA,KAAA,GAAAC,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAH,KAAA,EAAAI,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,MAAAL,KAAA,CAAAK,GAAA;EAAAH,MAAA,CAAAS,cAAA,CAAAD,OAAA,EAAAL,GAAA;IAAAO,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAb,KAAA,CAAAK,GAAA;IAAA;EAAA;AAAA;AACA,IAAAS,UAAA,GAAAb,OAAA;AAAAC,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,QAAA,GAAAd,OAAA","ignoreList":[]}
1
+ {"version":3,"names":["require","_main","Object","keys","forEach","key","prototype","hasOwnProperty","call","_exportNames","exports","defineProperty","enumerable","get","_constants","_install"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":";;;;;;;;;;;;;;AAQAA,OAAA;AAmBA,IAAAC,KAAA,GAAAD,OAAA;AAAAE,MAAA,CAAAC,IAAA,CAAAF,KAAA,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,KAAA,CAAAI,GAAA;EAAAH,MAAA,CAAAS,cAAA,CAAAD,OAAA,EAAAL,GAAA;IAAAO,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAZ,KAAA,CAAAI,GAAA;IAAA;EAAA;AAAA;AACA,IAAAS,UAAA,GAAAd,OAAA;AAAAE,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,QAAA,GAAAf,OAAA","ignoreList":[]}
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.provideGPUForInstall = exports.installWebGPU = void 0;
6
+ exports.installWebGPU = void 0;
7
7
  var _constants = require("./constants");
8
8
  /// <reference types="@webgpu/types" />
9
9
 
@@ -19,23 +19,14 @@ const constants = {
19
19
  GPUMapMode: _constants.GPUMapMode
20
20
  };
21
21
 
22
- // The GPU instance destined for `navigator.gpu` on other runtimes, wrapped in
23
- // a holder object. It cannot be read at module evaluation: this module can be
24
- // evaluated before the native install has populated `RNWebGPU.gpu`, so
25
- // `main/index.tsx` fills the holder right after installing. The holder itself
26
- // is captured into the `installWebGPU` worklet closure; when a worklet is
27
- // serialized (always after startup, so after the holder is filled), the
28
- // Worklets custom serializer boxes the GPU object inside it, and unboxing on
29
- // the target runtime installs the GPU prototype there.
30
- const holder = {};
31
-
32
- /**
33
- * @internal Called once by `main/index.tsx` after the native install, so
34
- * `installWebGPU()` can put `navigator.gpu` on other runtimes.
35
- */
36
- const provideGPUForInstall = gpu => {
37
- holder.gpu = gpu;
38
- };
22
+ // The GPU instance destined for `navigator.gpu` on other runtimes, read from
23
+ // the native install like the flags above (the package entry runs the install
24
+ // before this module is evaluated). Undefined on web, where the RNWebGPU
25
+ // polyfill has no gpu and the browser already provides navigator.gpu. Captured
26
+ // into the `installWebGPU` worklet closure: when a worklet is serialized, the
27
+ // Worklets custom serializer boxes the GPU object, and unboxing on the target
28
+ // runtime installs the GPU prototype there.
29
+ const gpu = typeof RNWebGPU === "undefined" ? undefined : RNWebGPU.gpu;
39
30
 
40
31
  /**
41
32
  * Install WebGPU on the runtime that calls it.
@@ -80,7 +71,6 @@ const provideGPUForInstall = gpu => {
80
71
  * runtime that already has the globals (e.g. the main JS runtime) is a safe
81
72
  * no-op.
82
73
  */
83
- exports.provideGPUForInstall = provideGPUForInstall;
84
74
  const installWebGPU = () => {
85
75
  "worklet";
86
76
 
@@ -90,9 +80,6 @@ const installWebGPU = () => {
90
80
  g[key] = value;
91
81
  }
92
82
  }
93
- const {
94
- gpu
95
- } = holder;
96
83
  if (gpu !== undefined) {
97
84
  const nav = g.navigator;
98
85
  if (nav === undefined) {
@@ -1 +1 @@
1
- {"version":3,"names":["_constants","require","constants","GPUBufferUsage","GPUTextureUsage","GPUShaderStage","GPUColorWrite","GPUMapMode","holder","provideGPUForInstall","gpu","exports","installWebGPU","g","globalThis","key","value","Object","entries","undefined","nav","navigator","userAgent"],"sourceRoot":"../../src","sources":["install.ts"],"mappings":";;;;;;AACA,IAAAA,UAAA,GAAAC,OAAA;AADA;;AASA;AACA;AACA;AACA;AACA,MAAMC,SAAS,GAAG;EAChBC,cAAc,EAAdA,yBAAc;EACdC,eAAe,EAAfA,0BAAe;EACfC,cAAc,EAAdA,yBAAc;EACdC,aAAa,EAAbA,wBAAa;EACbC,UAAU,EAAVA;AACF,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAMC,MAAqB,GAAG,CAAC,CAAC;;AAEhC;AACA;AACA;AACA;AACO,MAAMC,oBAAoB,GAAIC,GAAQ,IAAK;EAChDF,MAAM,CAACE,GAAG,GAAGA,GAAG;AAClB,CAAC;;AAED;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;AA1CAC,OAAA,CAAAF,oBAAA,GAAAA,oBAAA;AA2CO,MAAMG,aAAa,GAAGA,CAAA,KAAM;EACjC,SAAS;;EACT,MAAMC,CAAC,GAAGC,UAAgD;EAC1D,KAAK,MAAM,CAACC,GAAG,EAAEC,KAAK,CAAC,IAAIC,MAAM,CAACC,OAAO,CAAChB,SAAS,CAAC,EAAE;IACpD,IAAIW,CAAC,CAACE,GAAG,CAAC,KAAKI,SAAS,EAAE;MACxBN,CAAC,CAACE,GAAG,CAAC,GAAGC,KAAK;IAChB;EACF;EACA,MAAM;IAAEN;EAAI,CAAC,GAAGF,MAAM;EACtB,IAAIE,GAAG,KAAKS,SAAS,EAAE;IACrB,MAAMC,GAAG,GAAGP,CAAC,CAACQ,SAA0D;IACxE,IAAID,GAAG,KAAKD,SAAS,EAAE;MACrBN,CAAC,CAACQ,SAAS,GAAG;QAAEX,GAAG;QAAEY,SAAS,EAAE;MAAe,CAAC;IAClD,CAAC,MAAM,IAAIF,GAAG,CAACV,GAAG,KAAKS,SAAS,EAAE;MAChCC,GAAG,CAACV,GAAG,GAAGA,GAAG;IACf;EACF;AACF,CAAC;AAACC,OAAA,CAAAC,aAAA,GAAAA,aAAA","ignoreList":[]}
1
+ {"version":3,"names":["_constants","require","constants","GPUBufferUsage","GPUTextureUsage","GPUShaderStage","GPUColorWrite","GPUMapMode","gpu","RNWebGPU","undefined","installWebGPU","g","globalThis","key","value","Object","entries","nav","navigator","userAgent","exports"],"sourceRoot":"../../src","sources":["install.ts"],"mappings":";;;;;;AACA,IAAAA,UAAA,GAAAC,OAAA;AADA;;AASA;AACA;AACA;AACA;AACA,MAAMC,SAAS,GAAG;EAChBC,cAAc,EAAdA,yBAAc;EACdC,eAAe,EAAfA,0BAAe;EACfC,cAAc,EAAdA,yBAAc;EACdC,aAAa,EAAbA,wBAAa;EACbC,UAAU,EAAVA;AACF,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAMC,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;AACO,MAAMG,aAAa,GAAGA,CAAA,KAAM;EACjC,SAAS;;EACT,MAAMC,CAAC,GAAGC,UAAgD;EAC1D,KAAK,MAAM,CAACC,GAAG,EAAEC,KAAK,CAAC,IAAIC,MAAM,CAACC,OAAO,CAACf,SAAS,CAAC,EAAE;IACpD,IAAIU,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;AAACa,OAAA,CAAAV,aAAA,GAAAA,aAAA","ignoreList":[]}
@@ -12,10 +12,9 @@ Object.defineProperty(exports, "WebGPUModule", {
12
12
  return _NativeWebGPUModule.default;
13
13
  }
14
14
  });
15
+ require("./installNative");
15
16
  var _reactNative = require("react-native");
16
17
  var _external = require("../external");
17
- var _install = require("../install");
18
- var _NativeWebGPUModule = _interopRequireDefault(require("../NativeWebGPUModule"));
19
18
  var _Canvas = require("../Canvas");
20
19
  Object.keys(_Canvas).forEach(function (key) {
21
20
  if (key === "default" || key === "__esModule") return;
@@ -112,7 +111,14 @@ Object.keys(_formats).forEach(function (key) {
112
111
  }
113
112
  });
114
113
  });
114
+ var _NativeWebGPUModule = _interopRequireDefault(require("../NativeWebGPUModule"));
115
115
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
116
+ // Must stay the FIRST import, and a bare one: it installs the native module
117
+ // (the RNWebGPU global and the WebGPU globals) before anything else here is
118
+ // evaluated; the package entry imports it first as well, see ./installNative.ts.
119
+ // An import with bindings could be deferred to its first use by
120
+ // `inlineRequires`; a bare import is not.
121
+
116
122
  // Resolve the `source` of drawElementImageToTexture to a React tag on the
117
123
  // main JS runtime, where findNodeHandle is available: it handles class
118
124
  // components and legacy host instances that the native fallback (a number or
@@ -144,7 +150,6 @@ const installDrawElementImageToTexture = () => {
144
150
  }, destination);
145
151
  };
146
152
  };
147
- const _installOk = _NativeWebGPUModule.default.install();
148
153
  (0, _external.registerWebGPUForReanimated)();
149
154
  if (typeof RNWebGPU !== "undefined") {
150
155
  if (!navigator) {
@@ -167,9 +172,5 @@ if (typeof RNWebGPU !== "undefined") {
167
172
  }
168
173
  global.createImageBitmap = global.createImageBitmap ?? RNWebGPU.createImageBitmap.bind(RNWebGPU);
169
174
  installDrawElementImageToTexture();
170
- // Let installWebGPU() put navigator.gpu on other runtimes (see install.ts).
171
- (0, _install.provideGPUForInstall)(RNWebGPU.gpu);
172
- } else {
173
- console.warn(`[react-native-webgpu] install() returned ${_installOk} but RNWebGPU global is not available`);
174
175
  }
175
176
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["_reactNative","require","_external","_install","_NativeWebGPUModule","_interopRequireDefault","_Canvas","Object","keys","forEach","key","prototype","hasOwnProperty","call","_exportNames","exports","defineProperty","enumerable","get","_Offscreen","_WebGPUViewNativeComponent","_hooks","_GPUDeviceProvider","_importDevice","_video","_formats","e","__esModule","default","resolveElementSource","source","instance","current","tag","findNodeHandle","undefined","Error","installDrawElementImageToTexture","GPUQueue","native","drawElementImageToTexture","destination","_installOk","WebGPUModule","install","registerWebGPUForReanimated","RNWebGPU","navigator","gpu","userAgent","global","createImageBitmap","bind","provideGPUForInstall","console","warn"],"sourceRoot":"../../../src","sources":["main/index.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["require","_reactNative","_external","_Canvas","Object","keys","forEach","key","prototype","hasOwnProperty","call","_exportNames","exports","defineProperty","enumerable","get","_Offscreen","_WebGPUViewNativeComponent","_hooks","_GPUDeviceProvider","_importDevice","_video","_formats","_NativeWebGPUModule","_interopRequireDefault","e","__esModule","default","resolveElementSource","source","instance","current","tag","findNodeHandle","undefined","Error","installDrawElementImageToTexture","GPUQueue","native","drawElementImageToTexture","destination","registerWebGPUForReanimated","RNWebGPU","navigator","gpu","userAgent","global","createImageBitmap","bind"],"sourceRoot":"../../../src","sources":["main/index.tsx"],"mappings":"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","ignoreList":[]}
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- require("../WebPolyfillGPUModule");
6
+ require("./installNative");
7
7
  var _Canvas = require("../Canvas");
8
8
  Object.keys(_Canvas).forEach(function (key) {
9
9
  if (key === "default" || key === "__esModule") return;
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+
3
+ var _NativeWebGPUModule = _interopRequireDefault(require("../NativeWebGPUModule"));
4
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
5
+ // Installs the native module: the RNWebGPU global, and the WebGPU globals of
6
+ // the main runtime (GPUBufferUsage, GPUTextureUsage, GPUShaderStage...).
7
+ //
8
+ // A module of its own, imported FIRST (as a bare import) by the package entry
9
+ // `../index.tsx` and by `./index.tsx`, because `../constants` reads those
10
+ // globals while it is evaluated, and every import of a module is evaluated
11
+ // before that module's body. Installing in the body of `./index.tsx` came too
12
+ // late: the flags exported by the package were all undefined.
13
+ const installOk = _NativeWebGPUModule.default.install();
14
+ if (typeof RNWebGPU === "undefined") {
15
+ // install() logs the reason natively (e.g. a null jsi::Runtime on iOS).
16
+ // Nothing works from here on (navigator.gpu, the flag constants, Canvas),
17
+ // so fail at import time rather than leave every export undefined.
18
+ 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.`);
19
+ }
20
+ //# sourceMappingURL=installNative.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_NativeWebGPUModule","_interopRequireDefault","require","e","__esModule","default","installOk","WebGPUModule","install","RNWebGPU","Error"],"sourceRoot":"../../../src","sources":["main/installNative.ts"],"mappings":";;AAAA,IAAAA,mBAAA,GAAAC,sBAAA,CAAAC,OAAA;AAAiD,SAAAD,uBAAAE,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAEjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAMG,SAAS,GAAGC,2BAAY,CAACC,OAAO,CAAC,CAAC;AAExC,IAAI,OAAOC,QAAQ,KAAK,WAAW,EAAE;EACnC;EACA;EACA;EACA,MAAM,IAAIC,KAAK,CACb,iFAAiFJ,SAAS,+GAC5F,CAAC;AACH","ignoreList":[]}
@@ -0,0 +1,4 @@
1
+ "use strict";
2
+
3
+ require("../WebPolyfillGPUModule");
4
+ //# sourceMappingURL=installNative.web.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["require"],"sourceRoot":"../../../src","sources":["main/installNative.web.ts"],"mappings":";;AAIAA,OAAA","ignoreList":[]}
@@ -4,6 +4,11 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  var _exportNames = {
7
+ GPUBufferUsage: true,
8
+ GPUTextureUsage: true,
9
+ GPUShaderStage: true,
10
+ GPUColorWrite: true,
11
+ GPUMapMode: true,
7
12
  Canvas: true,
8
13
  useCanvasRef: true,
9
14
  useSurface: true,
@@ -16,21 +21,9 @@ var _exportNames = {
16
21
  installWebGPU: true,
17
22
  WebGPUModule: true
18
23
  };
19
- exports.warnIfNotHardwareAccelerated = exports.useSurface = exports.useMainDevice = exports.useDevice = exports.useCanvasRef = exports.installWebGPU = exports.importDevice = exports.adoptTexture = exports.WebGPUModule = exports.GPUDeviceProvider = exports.Canvas = void 0;
24
+ exports.warnIfNotHardwareAccelerated = exports.useSurface = exports.useMainDevice = exports.useDevice = exports.useCanvasRef = exports.installWebGPU = exports.importDevice = exports.adoptTexture = exports.WebGPUModule = exports.GPUTextureUsage = exports.GPUShaderStage = exports.GPUMapMode = exports.GPUDeviceProvider = exports.GPUColorWrite = exports.GPUBufferUsage = exports.Canvas = void 0;
20
25
  var _react = _interopRequireDefault(require("react"));
21
26
  var _reactNative = require("react-native");
22
- var _constants = require("./constants");
23
- Object.keys(_constants).forEach(function (key) {
24
- if (key === "default" || key === "__esModule") return;
25
- if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
26
- if (key in exports && exports[key] === _constants[key]) return;
27
- Object.defineProperty(exports, key, {
28
- enumerable: true,
29
- get: function () {
30
- return _constants[key];
31
- }
32
- });
33
- });
34
27
  var _formats = require("./formats");
35
28
  Object.keys(_formats).forEach(function (key) {
36
29
  if (key === "default" || key === "__esModule") return;
@@ -57,6 +50,60 @@ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e
57
50
  // missing native install (see `importDevice`/`adoptTexture` in
58
51
  // `./importDevice.ts`).
59
52
 
53
+ // The flag constants. The real package re-exports the globals the native
54
+ // module installs (`./constants.ts`); nothing installs them under Jest, so the
55
+ // mock defines the spec values itself and, like the native install, also puts
56
+ // them on globalThis for code that references the bare globals.
57
+ const GPUBufferUsage = exports.GPUBufferUsage = {
58
+ MAP_READ: 0x0001,
59
+ MAP_WRITE: 0x0002,
60
+ COPY_SRC: 0x0004,
61
+ COPY_DST: 0x0008,
62
+ INDEX: 0x0010,
63
+ VERTEX: 0x0020,
64
+ UNIFORM: 0x0040,
65
+ STORAGE: 0x0080,
66
+ INDIRECT: 0x0100,
67
+ QUERY_RESOLVE: 0x0200
68
+ };
69
+ const GPUTextureUsage = exports.GPUTextureUsage = {
70
+ COPY_SRC: 0x01,
71
+ COPY_DST: 0x02,
72
+ TEXTURE_BINDING: 0x04,
73
+ STORAGE_BINDING: 0x08,
74
+ RENDER_ATTACHMENT: 0x10,
75
+ TRANSIENT_ATTACHMENT: 0x20
76
+ };
77
+ const GPUShaderStage = exports.GPUShaderStage = {
78
+ VERTEX: 0x1,
79
+ FRAGMENT: 0x2,
80
+ COMPUTE: 0x4
81
+ };
82
+ const GPUColorWrite = exports.GPUColorWrite = {
83
+ RED: 0x1,
84
+ GREEN: 0x2,
85
+ BLUE: 0x4,
86
+ ALPHA: 0x8,
87
+ ALL: 0xf
88
+ };
89
+ const GPUMapMode = exports.GPUMapMode = {
90
+ READ: 0x1,
91
+ WRITE: 0x2
92
+ };
93
+ {
94
+ const g = globalThis;
95
+ for (const [key, value] of Object.entries({
96
+ GPUBufferUsage,
97
+ GPUTextureUsage,
98
+ GPUShaderStage,
99
+ GPUColorWrite,
100
+ GPUMapMode
101
+ })) {
102
+ if (g[key] === undefined) {
103
+ g[key] = value;
104
+ }
105
+ }
106
+ }
60
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)";
61
108
  // Strip the same props the real Canvas keeps off its outer View.
62
109
  const Canvas = ({