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 +1 @@
1
- {"version":3,"names":["_react","_interopRequireDefault","require","_reactNative","_constants","Object","keys","forEach","key","prototype","hasOwnProperty","call","_exportNames","exports","defineProperty","enumerable","get","_formats","e","__esModule","default","NOT_AVAILABLE_UNDER_JEST","Canvas","opaque","_opaque","android","_android","ref","props","React","useImperativeHandle","getContextId","getContext","_contextName","getNativeSurface","Error","createElement","View","useCanvasRef","useRef","useSurface","surface","warnIfNotHardwareAccelerated","undefined","useDevice","adapter","device","GPUDeviceProvider","children","useMainDevice","importDevice","_pointer","adoptTexture","installWebGPU","WebGPUModule","install"],"sourceRoot":"../../src","sources":["mock.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_react","_interopRequireDefault","require","_reactNative","_formats","Object","keys","forEach","key","prototype","hasOwnProperty","call","_exportNames","exports","defineProperty","enumerable","get","e","__esModule","default","GPUBufferUsage","MAP_READ","MAP_WRITE","COPY_SRC","COPY_DST","INDEX","VERTEX","UNIFORM","STORAGE","INDIRECT","QUERY_RESOLVE","GPUTextureUsage","TEXTURE_BINDING","STORAGE_BINDING","RENDER_ATTACHMENT","TRANSIENT_ATTACHMENT","GPUShaderStage","FRAGMENT","COMPUTE","GPUColorWrite","RED","GREEN","BLUE","ALPHA","ALL","GPUMapMode","READ","WRITE","g","globalThis","value","entries","undefined","NOT_AVAILABLE_UNDER_JEST","Canvas","opaque","_opaque","android","_android","ref","props","React","useImperativeHandle","getContextId","getContext","_contextName","getNativeSurface","Error","createElement","View","useCanvasRef","useRef","useSurface","surface","warnIfNotHardwareAccelerated","useDevice","adapter","device","GPUDeviceProvider","children","useMainDevice","importDevice","_pointer","adoptTexture","installWebGPU","WebGPUModule","install"],"sourceRoot":"../../src","sources":["mock.ts"],"mappings":"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","ignoreList":[]}
@@ -1,6 +1,6 @@
1
1
  function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
2
2
  import React, { useEffect, useImperativeHandle, useRef, useState } from "react";
3
- import { View } from "react-native";
3
+ import { Platform, View } from "react-native";
4
4
  import WebGPUNativeView from "./WebGPUViewNativeComponent";
5
5
  let CONTEXT_COUNTER = 1;
6
6
  function generateContextId() {
@@ -9,6 +9,36 @@ function generateContextId() {
9
9
  // Anything else reaching the native component would hit the generated
10
10
  // string-enum parser, which aborts on unknown values.
11
11
  const resolveSurfaceType = surfaceType => surfaceType === "SurfaceView" || surfaceType === "TextureView" || surfaceType === "HardwareBufferView" ? surfaceType : "auto";
12
+
13
+ // A view measured relative to itself gets its layout size, without the
14
+ // transforms getBoundingClientRect() includes; measureLayout() calls back
15
+ // synchronously on the new architecture. On the web react-native-web measures
16
+ // asynchronously, so the DOM node is read directly: clientWidth/clientHeight
17
+ // are layout values that ignore transforms too (unlike getBoundingClientRect)
18
+ // and are what browser WebGPU code sizes a canvas from.
19
+ const measureLayout = view => {
20
+ if (Platform.OS === "web") {
21
+ const {
22
+ clientWidth,
23
+ clientHeight
24
+ } = view;
25
+ return {
26
+ width: clientWidth,
27
+ height: clientHeight
28
+ };
29
+ }
30
+ let size = {
31
+ width: 0,
32
+ height: 0
33
+ };
34
+ view.measureLayout(view, (_left, _top, width, height) => {
35
+ size = {
36
+ width,
37
+ height
38
+ };
39
+ });
40
+ return size;
41
+ };
12
42
  export const Canvas = ({
13
43
  opaque = true,
14
44
  android,
@@ -21,7 +51,10 @@ export const Canvas = ({
21
51
  // native surface is still attached, this is a no-op and the native view's
22
52
  // own teardown retires the entry instead — which keeps StrictMode's
23
53
  // simulated unmount (which re-runs effects without unmounting native views)
24
- // from orphaning a live surface.
54
+ // from orphaning a live surface. When no surface is attached yet (StrictMode
55
+ // runs this cleanup right after mount, possibly before the UI thread got to
56
+ // it), a context kept from the first effect run keeps its surface entry,
57
+ // which the native view takes over when it attaches.
25
58
  useEffect(() => {
26
59
  return () => {
27
60
  RNWebGPU.destroyContext(contextId);
@@ -39,13 +72,10 @@ export const Canvas = ({
39
72
  if (!viewRef.current) {
40
73
  throw new Error("[WebGPU] Cannot get context before mount");
41
74
  }
42
- // getBoundingClientRect became stable in RN 0.83
43
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
44
- const view = viewRef.current;
45
- const size = "getBoundingClientRect" in view ? view.getBoundingClientRect() : view.unstable_getBoundingClientRect();
75
+ const size = measureLayout(viewRef.current);
46
76
  return RNWebGPU.MakeWebGPUCanvasContext(contextId, size.width, size.height);
47
77
  }
48
- }));
78
+ }), [contextId]);
49
79
  return /*#__PURE__*/React.createElement(View, _extends({
50
80
  collapsable: false,
51
81
  ref: viewRef
@@ -1 +1 @@
1
- {"version":3,"names":["React","useEffect","useImperativeHandle","useRef","useState","View","WebGPUNativeView","CONTEXT_COUNTER","generateContextId","resolveSurfaceType","surfaceType","Canvas","opaque","android","ref","props","viewRef","contextId","_","RNWebGPU","destroyContext","getContextId","getNativeSurface","getContext","contextName","Error","current","view","size","getBoundingClientRect","unstable_getBoundingClientRect","MakeWebGPUCanvasContext","width","height","createElement","_extends","collapsable","style","flex","androidSurfaceType","androidZOrderOnTop","zOrderOnTop"],"sourceRoot":"../../src","sources":["Canvas.tsx"],"mappings":";AAAA,OAAOA,KAAK,IAAIC,SAAS,EAAEC,mBAAmB,EAAEC,MAAM,EAAEC,QAAQ,QAAQ,OAAO;AAE/E,SAASC,IAAI,QAAQ,cAAc;AAEnC,OAAOC,gBAAgB,MAAM,6BAA6B;AAE1D,IAAIC,eAAe,GAAG,CAAC;AACvB,SAASC,iBAAiBA,CAAA,EAAG;EAC3B,OAAOD,eAAe,EAAE;AAC1B;AAqEA;AACA;AACA,MAAME,kBAAkB,GACtBC,WAA2C,IAE3CA,WAAW,KAAK,aAAa,IAC7BA,WAAW,KAAK,aAAa,IAC7BA,WAAW,KAAK,oBAAoB,GAChCA,WAAW,GACX,MAAM;AAEZ,OAAO,MAAMC,MAAM,GAAGA,CAAC;EACrBC,MAAM,GAAG,IAAI;EACbC,OAAO;EACPC,GAAG;EACH,GAAGC;AACQ,CAAC,KAAK;EACjB,MAAMC,OAAO,GAAGb,MAAM,CAAC,IAAI,CAAC;EAC5B,MAAM,CAACc,SAAS,EAAEC,CAAC,CAAC,GAAGd,QAAQ,CAAC,MAAMI,iBAAiB,CAAC,CAAC,CAAC;EAC1D;EACA;EACA;EACA;EACA;EACAP,SAAS,CAAC,MAAM;IACd,OAAO,MAAM;MACXkB,QAAQ,CAACC,cAAc,CAACH,SAAS,CAAC;IACpC,CAAC;EACH,CAAC,EAAE,CAACA,SAAS,CAAC,CAAC;EACff,mBAAmB,CAACY,GAAG,EAAE,OAAO;IAC9BO,YAAY,EAAEA,CAAA,KAAMJ,SAAS;IAC7BK,gBAAgB,EAAEA,CAAA,KAAM;MACtB,OAAOH,QAAQ,CAACG,gBAAgB,CAACL,SAAS,CAAC;IAC7C,CAAC;IACDM,UAAUA,CAACC,WAAqB,EAA0B;MACxD,IAAIA,WAAW,KAAK,QAAQ,EAAE;QAC5B,MAAM,IAAIC,KAAK,CAAC,iCAAiCD,WAAW,EAAE,CAAC;MACjE;MACA,IAAI,CAACR,OAAO,CAACU,OAAO,EAAE;QACpB,MAAM,IAAID,KAAK,CAAC,0CAA0C,CAAC;MAC7D;MACA;MACA;MACA,MAAME,IAAI,GAAGX,OAAO,CAACU,OAAc;MACnC,MAAME,IAAI,GACR,uBAAuB,IAAID,IAAI,GAC3BA,IAAI,CAACE,qBAAqB,CAAC,CAAC,GAC5BF,IAAI,CAACG,8BAA8B,CAAC,CAAC;MAC3C,OAAOX,QAAQ,CAACY,uBAAuB,CACrCd,SAAS,EACTW,IAAI,CAACI,KAAK,EACVJ,IAAI,CAACK,MACP,CAAC;IACH;EACF,CAAC,CAAC,CAAC;EAEH,oBACEjC,KAAA,CAAAkC,aAAA,CAAC7B,IAAI,EAAA8B,QAAA;IAACC,WAAW,EAAE,KAAM;IAACtB,GAAG,EAAEE;EAAQ,GAAKD,KAAK,gBAC/Cf,KAAA,CAAAkC,aAAA,CAAC5B,gBAAgB;IACf+B,KAAK,EAAE;MAAEC,IAAI,EAAE;IAAE,CAAE;IACnBrB,SAAS,EAAEA,SAAU;IACrBL,MAAM,EAAEA,MAAO;IACf2B,kBAAkB,EAAE9B,kBAAkB,CAACI,OAAO,EAAEH,WAAW,CAAE;IAC7D8B,kBAAkB,EAAE,CAAC,CAAC3B,OAAO,EAAE4B;EAAY,CAC5C,CACG,CAAC;AAEX,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["React","useEffect","useImperativeHandle","useRef","useState","Platform","View","WebGPUNativeView","CONTEXT_COUNTER","generateContextId","resolveSurfaceType","surfaceType","measureLayout","view","OS","clientWidth","clientHeight","width","height","size","_left","_top","Canvas","opaque","android","ref","props","viewRef","contextId","_","RNWebGPU","destroyContext","getContextId","getNativeSurface","getContext","contextName","Error","current","MakeWebGPUCanvasContext","createElement","_extends","collapsable","style","flex","androidSurfaceType","androidZOrderOnTop","zOrderOnTop"],"sourceRoot":"../../src","sources":["Canvas.tsx"],"mappings":"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","ignoreList":[]}
@@ -2,10 +2,13 @@ import { contextIdToId } from "./utils";
2
2
  const fabric = true;
3
3
  function getNativeSurface(contextId) {
4
4
  const canvas = document.getElementById(contextIdToId(contextId));
5
+
6
+ // Layout size, like the native view size in dp: unlike
7
+ // getBoundingClientRect() it ignores CSS transforms.
5
8
  const {
6
- height,
7
- width
8
- } = canvas.getBoundingClientRect();
9
+ clientHeight: height,
10
+ clientWidth: width
11
+ } = canvas;
9
12
  return {
10
13
  surface: BigInt(contextId),
11
14
  height,
@@ -1 +1 @@
1
- {"version":3,"names":["contextIdToId","fabric","getNativeSurface","contextId","canvas","document","getElementById","height","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,SAASA,aAAa,QAAQ,SAAS;AAEvC,MAAMC,MAAM,GAAG,IAAI;AAEnB,SAASC,gBAAgBA,CAACC,SAAiB,EAAE;EAC3C,MAAMC,MAAM,GAAGC,QAAQ,CAACC,cAAc,CACpCN,aAAa,CAACG,SAAS,CACzB,CAAsB;EAEtB,MAAM;IAAEI,MAAM;IAAEC;EAAM,CAAC,GAAGJ,MAAM,CAACK,qBAAqB,CAAC,CAAE;EAEzD,OAAO;IACLC,OAAO,EAAEC,MAAM,CAACR,SAAS,CAAC;IAC1BI,MAAM;IACNC,KAAK;IACLI,YAAY,EAAEL,MAAM;IACpBM,WAAW,EAAEL,KAAK;IAClB;IACAM,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,EACjBK,KAAa,EACbD,MAAc,EACd;EACA,MAAMH,MAAM,GAAGC,QAAQ,CAACC,cAAc,CACpCN,aAAa,CAACG,SAAS,CACzB,CAAsB;EAEtB,MAAMkB,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,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":[]}
1
+ {"version":3,"names":["contextIdToId","fabric","getNativeSurface","contextId","canvas","document","getElementById","clientHeight","height","clientWidth","width","surface","BigInt","addEventListener","bind","removeEventListener","dispatchEvent","setPointerCapture","releasePointerCapture","makeWebGPUCanvasContext","dpr","window","devicePixelRatio","pixelWidth","toString","pixelHeight","getAttribute","setAttribute","context","getContext","Object","assign","present","RNWebGPU","MakeWebGPUCanvasContext","destroyContext","_contextId"],"sourceRoot":"../../src","sources":["WebPolyfillGPUModule.ts"],"mappings":"AAAA,SAASA,aAAa,QAAQ,SAAS;AAEvC,MAAMC,MAAM,GAAG,IAAI;AAEnB,SAASC,gBAAgBA,CAACC,SAAiB,EAAE;EAC3C,MAAMC,MAAM,GAAGC,QAAQ,CAACC,cAAc,CACpCN,aAAa,CAACG,SAAS,CACzB,CAAsB;;EAEtB;EACA;EACA,MAAM;IAAEI,YAAY,EAAEC,MAAM;IAAEC,WAAW,EAAEC;EAAM,CAAC,GAAGN,MAAM;EAE3D,OAAO;IACLO,OAAO,EAAEC,MAAM,CAACT,SAAS,CAAC;IAC1BK,MAAM;IACNE,KAAK;IACLH,YAAY,EAAEC,MAAM;IACpBC,WAAW,EAAEC,KAAK;IAClB;IACAG,gBAAgB,EAAET,MAAM,CAACS,gBAAgB,CAACC,IAAI,CAACV,MAAM,CAAC;IACtDW,mBAAmB,EAAEX,MAAM,CAACW,mBAAmB,CAACD,IAAI,CAACV,MAAM,CAAC;IAC5DY,aAAa,EAAEZ,MAAM,CAACY,aAAa,CAACF,IAAI,CAACV,MAAM,CAAC;IAChDa,iBAAiB,EAAEb,MAAM,CAACa,iBAAiB,CAACH,IAAI,CAACV,MAAM,CAAC;IACxDc,qBAAqB,EAAEd,MAAM,CAACc,qBAAqB,CAACJ,IAAI,CAACV,MAAM;EACjE,CAAC;AACH;AAEA,SAASe,uBAAuBA,CAC9BhB,SAAiB,EACjBO,KAAa,EACbF,MAAc,EACd;EACA,MAAMJ,MAAM,GAAGC,QAAQ,CAACC,cAAc,CACpCN,aAAa,CAACG,SAAS,CACzB,CAAsB;EAEtB,MAAMiB,GAAG,GAAGC,MAAM,CAACC,gBAAgB,IAAI,CAAC;EACxC,MAAMC,UAAU,GAAG,CAACb,KAAK,GAAGU,GAAG,EAAEI,QAAQ,CAAC,CAAC;EAC3C,MAAMC,WAAW,GAAG,CAACjB,MAAM,GAAGY,GAAG,EAAEI,QAAQ,CAAC,CAAC;EAE7C,IACEpB,MAAM,CAACsB,YAAY,CAAC,OAAO,CAAC,KAAKH,UAAU,IAC3CnB,MAAM,CAACsB,YAAY,CAAC,QAAQ,CAAC,KAAKD,WAAW,EAC7C;IACArB,MAAM,CAACuB,YAAY,CAAC,OAAO,EAAEJ,UAAU,CAAC;IACxCnB,MAAM,CAACuB,YAAY,CAAC,QAAQ,EAAEF,WAAW,CAAC;EAC5C;EAEA,MAAMG,OAAO,GAAGxB,MAAM,CAACyB,UAAU,CAAC,QAAQ,CAAC;EAC3C;EACA;EACA,IAAI,CAACD,OAAO,EAAE;IACZ,OAAO,IAAI;EACb;EACA;EACA;EACA,OAAOE,MAAM,CAACC,MAAM,CAACH,OAAO,EAAE;IAAEI,OAAO,EAAEA,CAAA,KAAM,CAAC;EAAE,CAAC,CAAC;AACtD;;AAEA;AACAX,MAAM,CAACY,QAAQ,GAAG;EAChB/B,gBAAgB;EAChB;EACA;EACAgC,uBAAuB,EACrBf,uBAAkE;EACpE;EACAgB,cAAc,EAAGC,UAAkB,IAAK,CAAC,CAAC;EAC1CnC;AACF,CAAC","ignoreList":[]}
@@ -22,9 +22,12 @@
22
22
  // device.createBuffer({ usage: GPUBufferUsage.COPY_DST | GPUBufferUsage.MAP_READ });
23
23
  // };
24
24
  //
25
- // These are read at module evaluation time. The package entry (`index.tsx`)
26
- // re-exports `./main` before `./constants`, and `./main` installs the native
27
- // module synchronously, so the globals always exist by the time this runs.
25
+ // These are read at module evaluation time, so the native module must be
26
+ // installed first: the package entry (`./index.tsx`) starts with a bare
27
+ // `import "./main/installNative"` (so does `./main`), which runs the install
28
+ // before this file is reached, directly or through `./install`. An import is
29
+ // evaluated before the body of the module that declares it, so installing in
30
+ // the body of `./main` left every flag undefined.
28
31
 
29
32
  export const {
30
33
  GPUBufferUsage
@@ -1 +1 @@
1
- {"version":3,"names":["GPUBufferUsage","globalThis","GPUTextureUsage","GPUShaderStage","GPUColorWrite","GPUMapMode"],"sourceRoot":"../../src","sources":["constants.ts"],"mappings":"AAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,OAAO,MAAM;EAAEA;AAAe,CAAC,GAAGC,UAAU;AAE5C,OAAO,MAAM;EAAEC;AAAgB,CAAC,GAAGD,UAAU;AAE7C,OAAO,MAAM;EAAEE;AAAe,CAAC,GAAGF,UAAU;AAE5C,OAAO,MAAM;EAAEG;AAAc,CAAC,GAAGH,UAAU;AAE3C,OAAO,MAAM;EAAEI;AAAW,CAAC,GAAGJ,UAAU","ignoreList":[]}
1
+ {"version":3,"names":["GPUBufferUsage","globalThis","GPUTextureUsage","GPUShaderStage","GPUColorWrite","GPUMapMode"],"sourceRoot":"../../src","sources":["constants.ts"],"mappings":"AAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,OAAO,MAAM;EAAEA;AAAe,CAAC,GAAGC,UAAU;AAE5C,OAAO,MAAM;EAAEC;AAAgB,CAAC,GAAGD,UAAU;AAE7C,OAAO,MAAM;EAAEE;AAAe,CAAC,GAAGF,UAAU;AAE5C,OAAO,MAAM;EAAEG;AAAc,CAAC,GAAGH,UAAU;AAE3C,OAAO,MAAM;EAAEI;AAAW,CAAC,GAAGJ,UAAU","ignoreList":[]}
@@ -1,5 +1,12 @@
1
1
  /// <reference types="@webgpu/types" />
2
-
2
+ // Must stay the FIRST import, and a bare one: it installs the native module
3
+ // (`./main/installNative.ts`; the web variant loads the RNWebGPU polyfill),
4
+ // and `./constants` reads the globals it installs while being evaluated.
5
+ // Putting it here, rather than relying on `./main` being exported before
6
+ // `./constants` below, makes the order of the `export *` lines irrelevant. A
7
+ // bare import is never deferred by `inlineRequires`, and `import/order --fix`
8
+ // never moves an import across one.
9
+ import "./main/installNative";
3
10
  export * from "./main";
4
11
  export * from "./constants";
5
12
  export { installWebGPU } from "./install";
@@ -1 +1 @@
1
- {"version":3,"names":["installWebGPU"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":"AAAA;;AAkBA,cAAc,QAAQ;AACtB,cAAc,aAAa;AAC3B,SAASA,aAAa,QAAQ,WAAW","ignoreList":[]}
1
+ {"version":3,"names":["installWebGPU"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,sBAAsB;AAmB7B,cAAc,QAAQ;AACtB,cAAc,aAAa;AAC3B,SAASA,aAAa,QAAQ,WAAW","ignoreList":[]}
@@ -13,23 +13,14 @@ const constants = {
13
13
  GPUMapMode
14
14
  };
15
15
 
16
- // The GPU instance destined for `navigator.gpu` on other runtimes, wrapped in
17
- // a holder object. It cannot be read at module evaluation: this module can be
18
- // evaluated before the native install has populated `RNWebGPU.gpu`, so
19
- // `main/index.tsx` fills the holder right after installing. The holder itself
20
- // is captured into the `installWebGPU` worklet closure; when a worklet is
21
- // serialized (always after startup, so after the holder is filled), the
22
- // Worklets custom serializer boxes the GPU object inside it, and unboxing on
23
- // the target runtime installs the GPU prototype there.
24
- const holder = {};
25
-
26
- /**
27
- * @internal Called once by `main/index.tsx` after the native install, so
28
- * `installWebGPU()` can put `navigator.gpu` on other runtimes.
29
- */
30
- export const provideGPUForInstall = gpu => {
31
- holder.gpu = gpu;
32
- };
16
+ // The GPU instance destined for `navigator.gpu` on other runtimes, read from
17
+ // the native install like the flags above (the package entry runs the install
18
+ // before this module is evaluated). Undefined on web, where the RNWebGPU
19
+ // polyfill has no gpu and the browser already provides navigator.gpu. Captured
20
+ // into the `installWebGPU` worklet closure: when a worklet is serialized, the
21
+ // Worklets custom serializer boxes the GPU object, and unboxing on the target
22
+ // runtime installs the GPU prototype there.
23
+ const gpu = typeof RNWebGPU === "undefined" ? undefined : RNWebGPU.gpu;
33
24
 
34
25
  /**
35
26
  * Install WebGPU on the runtime that calls it.
@@ -83,9 +74,6 @@ export const installWebGPU = () => {
83
74
  g[key] = value;
84
75
  }
85
76
  }
86
- const {
87
- gpu
88
- } = holder;
89
77
  if (gpu !== undefined) {
90
78
  const nav = g.navigator;
91
79
  if (nav === undefined) {
@@ -1 +1 @@
1
- {"version":3,"names":["GPUBufferUsage","GPUColorWrite","GPUMapMode","GPUShaderStage","GPUTextureUsage","constants","holder","provideGPUForInstall","gpu","installWebGPU","g","globalThis","key","value","Object","entries","undefined","nav","navigator","userAgent"],"sourceRoot":"../../src","sources":["install.ts"],"mappings":"AAAA;AACA,SACEA,cAAc,EACdC,aAAa,EACbC,UAAU,EACVC,cAAc,EACdC,eAAe,QACV,aAAa;;AAEpB;AACA;AACA;AACA;AACA,MAAMC,SAAS,GAAG;EAChBL,cAAc;EACdI,eAAe;EACfD,cAAc;EACdF,aAAa;EACbC;AACF,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAMI,MAAqB,GAAG,CAAC,CAAC;;AAEhC;AACA;AACA;AACA;AACA,OAAO,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;AACA,OAAO,MAAMC,aAAa,GAAGA,CAAA,KAAM;EACjC,SAAS;;EACT,MAAMC,CAAC,GAAGC,UAAgD;EAC1D,KAAK,MAAM,CAACC,GAAG,EAAEC,KAAK,CAAC,IAAIC,MAAM,CAACC,OAAO,CAACV,SAAS,CAAC,EAAE;IACpD,IAAIK,CAAC,CAACE,GAAG,CAAC,KAAKI,SAAS,EAAE;MACxBN,CAAC,CAACE,GAAG,CAAC,GAAGC,KAAK;IAChB;EACF;EACA,MAAM;IAAEL;EAAI,CAAC,GAAGF,MAAM;EACtB,IAAIE,GAAG,KAAKQ,SAAS,EAAE;IACrB,MAAMC,GAAG,GAAGP,CAAC,CAACQ,SAA0D;IACxE,IAAID,GAAG,KAAKD,SAAS,EAAE;MACrBN,CAAC,CAACQ,SAAS,GAAG;QAAEV,GAAG;QAAEW,SAAS,EAAE;MAAe,CAAC;IAClD,CAAC,MAAM,IAAIF,GAAG,CAACT,GAAG,KAAKQ,SAAS,EAAE;MAChCC,GAAG,CAACT,GAAG,GAAGA,GAAG;IACf;EACF;AACF,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["GPUBufferUsage","GPUColorWrite","GPUMapMode","GPUShaderStage","GPUTextureUsage","constants","gpu","RNWebGPU","undefined","installWebGPU","g","globalThis","key","value","Object","entries","nav","navigator","userAgent"],"sourceRoot":"../../src","sources":["install.ts"],"mappings":"AAAA;AACA,SACEA,cAAc,EACdC,aAAa,EACbC,UAAU,EACVC,cAAc,EACdC,eAAe,QACV,aAAa;;AAEpB;AACA;AACA;AACA;AACA,MAAMC,SAAS,GAAG;EAChBL,cAAc;EACdI,eAAe;EACfD,cAAc;EACdF,aAAa;EACbC;AACF,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAMI,GAAoB,GACxB,OAAOC,QAAQ,KAAK,WAAW,GAAGC,SAAS,GAAGD,QAAQ,CAACD,GAAG;;AAE5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMG,aAAa,GAAGA,CAAA,KAAM;EACjC,SAAS;;EACT,MAAMC,CAAC,GAAGC,UAAgD;EAC1D,KAAK,MAAM,CAACC,GAAG,EAAEC,KAAK,CAAC,IAAIC,MAAM,CAACC,OAAO,CAACV,SAAS,CAAC,EAAE;IACpD,IAAIK,CAAC,CAACE,GAAG,CAAC,KAAKJ,SAAS,EAAE;MACxBE,CAAC,CAACE,GAAG,CAAC,GAAGC,KAAK;IAChB;EACF;EACA,IAAIP,GAAG,KAAKE,SAAS,EAAE;IACrB,MAAMQ,GAAG,GAAGN,CAAC,CAACO,SAA0D;IACxE,IAAID,GAAG,KAAKR,SAAS,EAAE;MACrBE,CAAC,CAACO,SAAS,GAAG;QAAEX,GAAG;QAAEY,SAAS,EAAE;MAAe,CAAC;IAClD,CAAC,MAAM,IAAIF,GAAG,CAACV,GAAG,KAAKE,SAAS,EAAE;MAChCQ,GAAG,CAACV,GAAG,GAAGA,GAAG;IACf;EACF;AACF,CAAC","ignoreList":[]}
@@ -1,7 +1,11 @@
1
+ // Must stay the FIRST import, and a bare one: it installs the native module
2
+ // (the RNWebGPU global and the WebGPU globals) before anything else here is
3
+ // evaluated; the package entry imports it first as well, see ./installNative.ts.
4
+ // An import with bindings could be deferred to its first use by
5
+ // `inlineRequires`; a bare import is not.
6
+ import "./installNative";
1
7
  import { findNodeHandle } from "react-native";
2
8
  import { registerWebGPUForReanimated } from "../external";
3
- import { provideGPUForInstall } from "../install";
4
- import WebGPUModule from "../NativeWebGPUModule";
5
9
  // Resolve the `source` of drawElementImageToTexture to a React tag on the
6
10
  // main JS runtime, where findNodeHandle is available: it handles class
7
11
  // components and legacy host instances that the native fallback (a number or
@@ -42,7 +46,6 @@ export * from "../importDevice";
42
46
  export * from "../video";
43
47
  export * from "../formats";
44
48
  export { default as WebGPUModule } from "../NativeWebGPUModule";
45
- const _installOk = WebGPUModule.install();
46
49
  registerWebGPUForReanimated();
47
50
  if (typeof RNWebGPU !== "undefined") {
48
51
  if (!navigator) {
@@ -65,9 +68,5 @@ if (typeof RNWebGPU !== "undefined") {
65
68
  }
66
69
  global.createImageBitmap = global.createImageBitmap ?? RNWebGPU.createImageBitmap.bind(RNWebGPU);
67
70
  installDrawElementImageToTexture();
68
- // Let installWebGPU() put navigator.gpu on other runtimes (see install.ts).
69
- provideGPUForInstall(RNWebGPU.gpu);
70
- } else {
71
- console.warn(`[react-native-webgpu] install() returned ${_installOk} but RNWebGPU global is not available`);
72
71
  }
73
72
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["findNodeHandle","registerWebGPUForReanimated","provideGPUForInstall","WebGPUModule","resolveElementSource","source","instance","current","tag","undefined","Error","installDrawElementImageToTexture","GPUQueue","native","prototype","drawElementImageToTexture","destination","call","default","_installOk","install","RNWebGPU","navigator","gpu","userAgent","global","createImageBitmap","bind","console","warn"],"sourceRoot":"../../../src","sources":["main/index.tsx"],"mappings":"AAAA,SAASA,cAAc,QAAQ,cAAc;AAE7C,SAASC,2BAA2B,QAAQ,aAAa;AACzD,SAASC,oBAAoB,QAAQ,YAAY;AACjD,OAAOC,YAAY,MAAM,uBAAuB;AAGhD;AACA;AACA;AACA;AACA,MAAMC,oBAAoB,GAAIC,MAAqC,IAAK;EACtE,IAAI,OAAOA,MAAM,KAAK,QAAQ,EAAE;IAC9B,OAAOA,MAAM;EACf;EACA,MAAMC,QAAQ,GACZD,MAAM,KAAK,IAAI,IAAI,OAAOA,MAAM,KAAK,QAAQ,IAAI,SAAS,IAAIA,MAAM,GAChEA,MAAM,CAACE,OAAO,GACdF,MAAM;EACZ;EACA,MAAMG,GAAG,GAAGF,QAAQ,IAAI,IAAI,GAAG,IAAI,GAAGN,cAAc,CAACM,QAAe,CAAC;EACrE,IAAIE,GAAG,KAAK,IAAI,IAAIA,GAAG,KAAKC,SAAS,EAAE;IACrC,MAAM,IAAIC,KAAK,CACb,qEAAqE,GACnE,+DAA+D,GAC/D,sBACJ,CAAC;EACH;EACA,OAAOF,GAAG;AACZ,CAAC;AAED,MAAMG,gCAAgC,GAAGA,CAAA,KAAM;EAC7C,IAAI,OAAOC,QAAQ,KAAK,WAAW,EAAE;IACnC;EACF;EACA,MAAMC,MAAM,GAAGD,QAAQ,CAACE,SAAS,CAACC,yBAAyB;EAC3D,IAAI,OAAOF,MAAM,KAAK,UAAU,EAAE;IAChC;EACF;EACAD,QAAQ,CAACE,SAAS,CAACC,yBAAyB,GAAG,UAE7CV,MAAM,EACNW,WAAW,EACX;IACA,OAAOH,MAAM,CAACI,IAAI,CAChB,IAAI,EACJ;MAAE,GAAGZ,MAAM;MAAEA,MAAM,EAAED,oBAAoB,CAACC,MAAM,CAACA,MAAM;IAAE,CAAC,EAC1DW,WACF,CAAC;EACH,CAAC;AACH,CAAC;AAED,cAAc,WAAW;AACzB,cAAc,cAAc;AAC5B,cAAc,8BAA8B;AAC5C,cAAc,UAAU;AACxB,cAAc,sBAAsB;AACpC,cAAc,iBAAiB;AAC/B,cAAc,UAAU;AACxB,cAAc,YAAY;AAE1B,SAASE,OAAO,IAAIf,YAAY,QAAQ,uBAAuB;AAE/D,MAAMgB,UAAU,GAAGhB,YAAY,CAACiB,OAAO,CAAC,CAAC;AAEzCnB,2BAA2B,CAAC,CAAC;AAE7B,IAAI,OAAOoB,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;EACvEV,gCAAgC,CAAC,CAAC;EAClC;EACAT,oBAAoB,CAACmB,QAAQ,CAACE,GAAG,CAAC;AACpC,CAAC,MAAM;EACLK,OAAO,CAACC,IAAI,CACV,4CAA4CV,UAAU,uCACxD,CAAC;AACH","ignoreList":[]}
1
+ {"version":3,"names":["findNodeHandle","registerWebGPUForReanimated","resolveElementSource","source","instance","current","tag","undefined","Error","installDrawElementImageToTexture","GPUQueue","native","prototype","drawElementImageToTexture","destination","call","default","WebGPUModule","RNWebGPU","navigator","gpu","userAgent","global","createImageBitmap","bind"],"sourceRoot":"../../../src","sources":["main/index.tsx"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA,OAAO,iBAAiB;AAExB,SAASA,cAAc,QAAQ,cAAc;AAE7C,SAASC,2BAA2B,QAAQ,aAAa;AAGzD;AACA;AACA;AACA;AACA,MAAMC,oBAAoB,GAAIC,MAAqC,IAAK;EACtE,IAAI,OAAOA,MAAM,KAAK,QAAQ,EAAE;IAC9B,OAAOA,MAAM;EACf;EACA,MAAMC,QAAQ,GACZD,MAAM,KAAK,IAAI,IAAI,OAAOA,MAAM,KAAK,QAAQ,IAAI,SAAS,IAAIA,MAAM,GAChEA,MAAM,CAACE,OAAO,GACdF,MAAM;EACZ;EACA,MAAMG,GAAG,GAAGF,QAAQ,IAAI,IAAI,GAAG,IAAI,GAAGJ,cAAc,CAACI,QAAe,CAAC;EACrE,IAAIE,GAAG,KAAK,IAAI,IAAIA,GAAG,KAAKC,SAAS,EAAE;IACrC,MAAM,IAAIC,KAAK,CACb,qEAAqE,GACnE,+DAA+D,GAC/D,sBACJ,CAAC;EACH;EACA,OAAOF,GAAG;AACZ,CAAC;AAED,MAAMG,gCAAgC,GAAGA,CAAA,KAAM;EAC7C,IAAI,OAAOC,QAAQ,KAAK,WAAW,EAAE;IACnC;EACF;EACA,MAAMC,MAAM,GAAGD,QAAQ,CAACE,SAAS,CAACC,yBAAyB;EAC3D,IAAI,OAAOF,MAAM,KAAK,UAAU,EAAE;IAChC;EACF;EACAD,QAAQ,CAACE,SAAS,CAACC,yBAAyB,GAAG,UAE7CV,MAAM,EACNW,WAAW,EACX;IACA,OAAOH,MAAM,CAACI,IAAI,CAChB,IAAI,EACJ;MAAE,GAAGZ,MAAM;MAAEA,MAAM,EAAED,oBAAoB,CAACC,MAAM,CAACA,MAAM;IAAE,CAAC,EAC1DW,WACF,CAAC;EACH,CAAC;AACH,CAAC;AAED,cAAc,WAAW;AACzB,cAAc,cAAc;AAC5B,cAAc,8BAA8B;AAC5C,cAAc,UAAU;AACxB,cAAc,sBAAsB;AACpC,cAAc,iBAAiB;AAC/B,cAAc,UAAU;AACxB,cAAc,YAAY;AAE1B,SAASE,OAAO,IAAIC,YAAY,QAAQ,uBAAuB;AAE/DhB,2BAA2B,CAAC,CAAC;AAE7B,IAAI,OAAOiB,QAAQ,KAAK,WAAW,EAAE;EACnC,IAAI,CAACC,SAAS,EAAE;IACd;IACAA,SAAS,GAAG;MACVC,GAAG,EAAEF,QAAQ,CAACE,GAAG;MACjBC,SAAS,EAAE;IACb,CAAC;EACH,CAAC,MAAM;IACLF,SAAS,CAACC,GAAG,GAAGF,QAAQ,CAACE,GAAG;IAC5B,IAAI,OAAOD,SAAS,CAACE,SAAS,KAAK,QAAQ,EAAE;MAC3C,IAAI;QACF;QACA;QACAF,SAAS,CAACE,SAAS,GAAG,cAAc;MACtC,CAAC,CAAC,MAAM;QACN;MAAA;IAEJ;EACF;EACAC,MAAM,CAACC,iBAAiB,GACtBD,MAAM,CAACC,iBAAiB,IAAIL,QAAQ,CAACK,iBAAiB,CAACC,IAAI,CAACN,QAAQ,CAAC;EACvET,gCAAgC,CAAC,CAAC;AACpC","ignoreList":[]}
@@ -1,4 +1,4 @@
1
- import "../WebPolyfillGPUModule";
1
+ import "./installNative";
2
2
  export * from "../Canvas";
3
3
  export * from "../Offscreen";
4
4
  export * from "../WebGPUViewNativeComponent";
@@ -1 +1 @@
1
- {"version":3,"names":[],"sourceRoot":"../../../src","sources":["main/index.web.tsx"],"mappings":"AAAA,OAAO,yBAAyB;AAEhC,cAAc,WAAW;AACzB,cAAc,cAAc;AAC5B,cAAc,8BAA8B;AAC5C,cAAc,UAAU;AACxB,cAAc,sBAAsB;AACpC,cAAc,YAAY;AAC1B,cAAc,UAAU;;AAExB","ignoreList":[]}
1
+ {"version":3,"names":[],"sourceRoot":"../../../src","sources":["main/index.web.tsx"],"mappings":"AAAA,OAAO,iBAAiB;AAExB,cAAc,WAAW;AACzB,cAAc,cAAc;AAC5B,cAAc,8BAA8B;AAC5C,cAAc,UAAU;AACxB,cAAc,sBAAsB;AACpC,cAAc,YAAY;AAC1B,cAAc,UAAU;;AAExB","ignoreList":[]}
@@ -0,0 +1,18 @@
1
+ import WebGPUModule from "../NativeWebGPUModule";
2
+
3
+ // Installs the native module: the RNWebGPU global, and the WebGPU globals of
4
+ // the main runtime (GPUBufferUsage, GPUTextureUsage, GPUShaderStage...).
5
+ //
6
+ // A module of its own, imported FIRST (as a bare import) by the package entry
7
+ // `../index.tsx` and by `./index.tsx`, because `../constants` reads those
8
+ // globals while it is evaluated, and every import of a module is evaluated
9
+ // before that module's body. Installing in the body of `./index.tsx` came too
10
+ // late: the flags exported by the package were all undefined.
11
+ const installOk = WebGPUModule.install();
12
+ if (typeof RNWebGPU === "undefined") {
13
+ // install() logs the reason natively (e.g. a null jsi::Runtime on iOS).
14
+ // Nothing works from here on (navigator.gpu, the flag constants, Canvas),
15
+ // so fail at import time rather than leave every export undefined.
16
+ throw new Error(`[react-native-webgpu] the native module failed to install (install() returned ${installOk}): the RNWebGPU global is not available. Make sure the native dependencies are installed and rebuild the app.`);
17
+ }
18
+ //# sourceMappingURL=installNative.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["WebGPUModule","installOk","install","RNWebGPU","Error"],"sourceRoot":"../../../src","sources":["main/installNative.ts"],"mappings":"AAAA,OAAOA,YAAY,MAAM,uBAAuB;;AAEhD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAMC,SAAS,GAAGD,YAAY,CAACE,OAAO,CAAC,CAAC;AAExC,IAAI,OAAOC,QAAQ,KAAK,WAAW,EAAE;EACnC;EACA;EACA;EACA,MAAM,IAAIC,KAAK,CACb,iFAAiFH,SAAS,+GAC5F,CAAC;AACH","ignoreList":[]}
@@ -0,0 +1,6 @@
1
+ // Web counterpart of ./installNative.ts, so the package entry can import
2
+ // `./main/installNative` on every platform without reaching the TurboModule
3
+ // here. The browser provides the WebGPU globals (navigator.gpu, the flag
4
+ // constants); the polyfill provides the RNWebGPU global that Canvas relies on.
5
+ import "../WebPolyfillGPUModule";
6
+ //# sourceMappingURL=installNative.web.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":[],"sourceRoot":"../../../src","sources":["main/installNative.web.ts"],"mappings":"AAAA;AACA;AACA;AACA;AACA,OAAO,yBAAyB","ignoreList":[]}
@@ -12,8 +12,62 @@ import { View } from "react-native";
12
12
  // missing native install (see `importDevice`/`adoptTexture` in
13
13
  // `./importDevice.ts`).
14
14
 
15
- export * from "./constants";
16
15
  export * from "./formats";
16
+
17
+ // The flag constants. The real package re-exports the globals the native
18
+ // module installs (`./constants.ts`); nothing installs them under Jest, so the
19
+ // mock defines the spec values itself and, like the native install, also puts
20
+ // them on globalThis for code that references the bare globals.
21
+ export const GPUBufferUsage = {
22
+ MAP_READ: 0x0001,
23
+ MAP_WRITE: 0x0002,
24
+ COPY_SRC: 0x0004,
25
+ COPY_DST: 0x0008,
26
+ INDEX: 0x0010,
27
+ VERTEX: 0x0020,
28
+ UNIFORM: 0x0040,
29
+ STORAGE: 0x0080,
30
+ INDIRECT: 0x0100,
31
+ QUERY_RESOLVE: 0x0200
32
+ };
33
+ export const GPUTextureUsage = {
34
+ COPY_SRC: 0x01,
35
+ COPY_DST: 0x02,
36
+ TEXTURE_BINDING: 0x04,
37
+ STORAGE_BINDING: 0x08,
38
+ RENDER_ATTACHMENT: 0x10,
39
+ TRANSIENT_ATTACHMENT: 0x20
40
+ };
41
+ export const GPUShaderStage = {
42
+ VERTEX: 0x1,
43
+ FRAGMENT: 0x2,
44
+ COMPUTE: 0x4
45
+ };
46
+ export const GPUColorWrite = {
47
+ RED: 0x1,
48
+ GREEN: 0x2,
49
+ BLUE: 0x4,
50
+ ALPHA: 0x8,
51
+ ALL: 0xf
52
+ };
53
+ export const GPUMapMode = {
54
+ READ: 0x1,
55
+ WRITE: 0x2
56
+ };
57
+ {
58
+ const g = globalThis;
59
+ for (const [key, value] of Object.entries({
60
+ GPUBufferUsage,
61
+ GPUTextureUsage,
62
+ GPUShaderStage,
63
+ GPUColorWrite,
64
+ GPUMapMode
65
+ })) {
66
+ if (g[key] === undefined) {
67
+ g[key] = value;
68
+ }
69
+ }
70
+ }
17
71
  const NOT_AVAILABLE_UNDER_JEST = "is not available under Jest - react-native-webgpu has no native implementation in tests (see react-native-webgpu/jestSetup.js)";
18
72
  // Strip the same props the real Canvas keeps off its outer View.
19
73
  export const Canvas = ({
@@ -1 +1 @@
1
- {"version":3,"names":["React","View","NOT_AVAILABLE_UNDER_JEST","Canvas","opaque","_opaque","android","_android","ref","props","useImperativeHandle","getContextId","getContext","_contextName","getNativeSurface","Error","createElement","useCanvasRef","useRef","useSurface","surface","warnIfNotHardwareAccelerated","undefined","useDevice","adapter","device","GPUDeviceProvider","children","useMainDevice","importDevice","_pointer","adoptTexture","installWebGPU","WebGPUModule","install"],"sourceRoot":"../../src","sources":["mock.ts"],"mappings":"AAAA;AACA,OAAOA,KAAK,MAAM,OAAO;AAEzB,SAASC,IAAI,QAAQ,cAAc;AAInC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,cAAc,aAAa;AAC3B,cAAc,WAAW;AAEzB,MAAMC,wBAAwB,GAC5B,gIAAgI;AAWlI;AACA,OAAO,MAAMC,MAAM,GAAGA,CAAC;EACrBC,MAAM,EAAEC,OAAO;EACfC,OAAO,EAAEC,QAAQ;EACjBC,GAAG;EACH,GAAGC;AACQ,CAAC,KAAK;EACjBT,KAAK,CAACU,mBAAmB,CAACF,GAAG,EAAE,OAAO;IACpCG,YAAY,EAAEA,CAAA,KAAM,CAAC,CAAC;IACtBC,UAAU,EAAGC,YAAsB,IAA6B,IAAI;IACpEC,gBAAgB,EAAEA,CAAA,KAAoB;MACpC,MAAM,IAAIC,KAAK,CAAC,6BAA6Bb,wBAAwB,EAAE,CAAC;IAC1E;EACF,CAAC,CAAC,CAAC;EACH,oBAAOF,KAAK,CAACgB,aAAa,CAACf,IAAI,EAAEQ,KAAK,CAAC;AACzC,CAAC;AAED,OAAO,MAAMQ,YAAY,GAAGA,CAAA,KAAMjB,KAAK,CAACkB,MAAM,CAAC,IAAI,CAAC;AACpD,OAAO,MAAMC,UAAU,GAAGA,CAAA,MAAO;EAAEX,GAAG,EAAER,KAAK,CAACkB,MAAM,CAAC,IAAI,CAAC;EAAEE,OAAO,EAAE;AAAK,CAAC,CAAC;AAC5E,OAAO,MAAMC,4BAA4B,GAAGA,CAAA,KAAMC,SAAS;AAE3D,OAAO,MAAMC,SAAS,GAAGA,CAAA,MAAO;EAAEC,OAAO,EAAE,IAAI;EAAEC,MAAM,EAAE;AAAK,CAAC,CAAC;AAEhE,OAAO,MAAMC,iBAAiB,GAAGA,CAAC;EAAEC;AAAmC,CAAC,KACtEA,QAAQ,IAAI,IAAI;AAElB,OAAO,MAAMC,aAAa,GAAGA,CAAA,KAAa;EACxC,MAAM,IAAIb,KAAK,CAAC,mBAAmBb,wBAAwB,EAAE,CAAC;AAChE,CAAC;AAED,OAAO,MAAM2B,YAAY,GAAIC,QAAgB,IAAgB;EAC3D,MAAM,IAAIf,KAAK,CAAC,kBAAkBb,wBAAwB,EAAE,CAAC;AAC/D,CAAC;AAED,OAAO,MAAM6B,YAAY,GAAID,QAAgB,IAAiB;EAC5D,MAAM,IAAIf,KAAK,CAAC,kBAAkBb,wBAAwB,EAAE,CAAC;AAC/D,CAAC;AAED,OAAO,MAAM8B,aAAa,GAAGA,CAAA,KAAMV,SAAS;AAE5C,OAAO,MAAMW,YAAY,GAAG;EAAEC,OAAO,EAAEA,CAAA,KAAM;AAAM,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["React","View","GPUBufferUsage","MAP_READ","MAP_WRITE","COPY_SRC","COPY_DST","INDEX","VERTEX","UNIFORM","STORAGE","INDIRECT","QUERY_RESOLVE","GPUTextureUsage","TEXTURE_BINDING","STORAGE_BINDING","RENDER_ATTACHMENT","TRANSIENT_ATTACHMENT","GPUShaderStage","FRAGMENT","COMPUTE","GPUColorWrite","RED","GREEN","BLUE","ALPHA","ALL","GPUMapMode","READ","WRITE","g","globalThis","key","value","Object","entries","undefined","NOT_AVAILABLE_UNDER_JEST","Canvas","opaque","_opaque","android","_android","ref","props","useImperativeHandle","getContextId","getContext","_contextName","getNativeSurface","Error","createElement","useCanvasRef","useRef","useSurface","surface","warnIfNotHardwareAccelerated","useDevice","adapter","device","GPUDeviceProvider","children","useMainDevice","importDevice","_pointer","adoptTexture","installWebGPU","WebGPUModule","install"],"sourceRoot":"../../src","sources":["mock.ts"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"Canvas.d.ts","sourceRoot":"","sources":["../../../commonjs/Canvas.js"],"names":[],"mappings":";AAmBA;;;;;QAiDC"}
1
+ {"version":3,"file":"Canvas.d.ts","sourceRoot":"","sources":["../../../commonjs/Canvas.js"],"names":[],"mappings":";AAiDA;;;;;QAiDC"}
@@ -1,8 +1,46 @@
1
1
  export const __esModule: boolean;
2
2
  /**
3
- * @internal Called once by `main/index.tsx` after the native install, so
4
- * `installWebGPU()` can put `navigator.gpu` on other runtimes.
3
+ * Install WebGPU on the runtime that calls it.
4
+ *
5
+ * The native module sets up WebGPU on the main JS runtime, but worklet
6
+ * runtimes (Reanimated UI, dedicated worklet runtimes, Vision Camera frame
7
+ * processors) start without it: `navigator.gpu` and the flag constants
8
+ * (`GPUBufferUsage`, `GPUTextureUsage`, `GPUShaderStage`, `GPUColorWrite`,
9
+ * `GPUMapMode`) are all `undefined` there.
10
+ *
11
+ * Call `installWebGPU()` once at the top of a worklet to make them available:
12
+ *
13
+ * ```tsx
14
+ * import { installWebGPU } from "react-native-webgpu";
15
+ *
16
+ * const work = () => {
17
+ * "worklet";
18
+ * installWebGPU();
19
+ * navigator.gpu.requestAdapter().then((adapter) => {
20
+ * // ...
21
+ * });
22
+ * };
23
+ * ```
24
+ *
25
+ * Known limitations:
26
+ *
27
+ * - On react-native-worklets < 0.13.0, read `navigator` through
28
+ * `globalThis.navigator`: older versions of the Worklets Babel plugin do
29
+ * not treat a bare `navigator` as a known global, so they capture the main
30
+ * runtime's `navigator` object by closure instead of reading the one this
31
+ * function installed.
32
+ * - Spontaneous events are main-runtime only: on a device created on a
33
+ * worklet runtime, `device.lost` never settles (unless the device is
34
+ * already lost when read) and `uncapturederror` listeners never fire.
35
+ * Observe those on a device created on the main JS thread.
36
+ *
37
+ * Everything is captured into the worklet by closure: the constants like a
38
+ * shader string would be, and the GPU object through the Worklets custom
39
+ * serializer, which installs the native prototypes on the target runtime when
40
+ * it crosses. Promises returned by `requestAdapter`/`requestDevice` settle on
41
+ * the calling runtime (each runtime gets its own async pump). Calling it on a
42
+ * runtime that already has the globals (e.g. the main JS runtime) is a safe
43
+ * no-op.
5
44
  */
6
- export function provideGPUForInstall(gpu: any): void;
7
45
  export function installWebGPU(): void;
8
46
  //# sourceMappingURL=install.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"install.d.ts","sourceRoot":"","sources":["../../../commonjs/install.js"],"names":[],"mappings":";AA+BA;;;GAGG;AACH,qDAEC;AA8CD,sCAuBC"}
1
+ {"version":3,"file":"install.d.ts","sourceRoot":"","sources":["../../../commonjs/install.js"],"names":[],"mappings":";AA8BA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;AACH,sCAoBC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=installNative.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"installNative.d.ts","sourceRoot":"","sources":["../../../../commonjs/main/installNative.js"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=installNative.web.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"installNative.web.d.ts","sourceRoot":"","sources":["../../../../commonjs/main/installNative.web.js"],"names":[],"mappings":""}
@@ -1,4 +1,43 @@
1
1
  export const __esModule: boolean;
2
+ export namespace GPUBufferUsage {
3
+ let MAP_READ: number;
4
+ let MAP_WRITE: number;
5
+ let COPY_SRC: number;
6
+ let COPY_DST: number;
7
+ let INDEX: number;
8
+ let VERTEX: number;
9
+ let UNIFORM: number;
10
+ let STORAGE: number;
11
+ let INDIRECT: number;
12
+ let QUERY_RESOLVE: number;
13
+ }
14
+ export namespace GPUTextureUsage {
15
+ let COPY_SRC_1: number;
16
+ export { COPY_SRC_1 as COPY_SRC };
17
+ let COPY_DST_1: number;
18
+ export { COPY_DST_1 as COPY_DST };
19
+ export let TEXTURE_BINDING: number;
20
+ export let STORAGE_BINDING: number;
21
+ export let RENDER_ATTACHMENT: number;
22
+ export let TRANSIENT_ATTACHMENT: number;
23
+ }
24
+ export namespace GPUShaderStage {
25
+ let VERTEX_1: number;
26
+ export { VERTEX_1 as VERTEX };
27
+ export let FRAGMENT: number;
28
+ export let COMPUTE: number;
29
+ }
30
+ export namespace GPUColorWrite {
31
+ let RED: number;
32
+ let GREEN: number;
33
+ let BLUE: number;
34
+ let ALPHA: number;
35
+ let ALL: number;
36
+ }
37
+ export namespace GPUMapMode {
38
+ let READ: number;
39
+ let WRITE: number;
40
+ }
2
41
  export namespace WebGPUModule {
3
42
  function install(): boolean;
4
43
  }
@@ -1 +1 @@
1
- {"version":3,"file":"mock.d.ts","sourceRoot":"","sources":["../../../commonjs/mock.js"],"names":[],"mappings":";;IA8GW,4BAAW;;AAjDtB;;;;;QAcC;AAED,oCAAsD;AAEtD;;;EAGE;AAEF,0DAAoD;AAEpD;;;EAGE;AAEF;;QAEsB;AAEtB,uCAEC;AAED,mDAEC;AAED,mDAEC;AAED,2CAAqC"}
1
+ {"version":3,"file":"mock.d.ts","sourceRoot":"","sources":["../../../commonjs/mock.js"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IA6JW,4BAAW;;AAjDtB;;;;;QAcC;AAED,oCAAsD;AAEtD;;;EAGE;AAEF,0DAAoD;AAEpD;;;EAGE;AAEF;;QAEsB;AAEtB,uCAEC;AAED,mDAEC;AAED,mDAEC;AAED,2CAAqC"}
@@ -1 +1 @@
1
- {"version":3,"file":"Canvas.d.ts","sourceRoot":"","sources":["../../../module/Canvas.js"],"names":[],"mappings":"AAWO;;;;;2DAiDN;qBA1DoB,cAAc;kBADqC,OAAO"}
1
+ {"version":3,"file":"Canvas.d.ts","sourceRoot":"","sources":["../../../module/Canvas.js"],"names":[],"mappings":"AAyCO;;;;;2DAiDN;qBAxF8B,cAAc;kBAD2B,OAAO"}
@@ -1,3 +1,2 @@
1
- export function provideGPUForInstall(gpu: any): void;
2
1
  export function installWebGPU(): void;
3
2
  //# sourceMappingURL=install.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"install.d.ts","sourceRoot":"","sources":["../../../module/install.js"],"names":[],"mappings":"AA6BO,qDAEN;AA6CM,sCAuBN"}
1
+ {"version":3,"file":"install.d.ts","sourceRoot":"","sources":["../../../module/install.js"],"names":[],"mappings":"AAmEO,sCAoBN"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=installNative.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"installNative.d.ts","sourceRoot":"","sources":["../../../../module/main/installNative.js"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=installNative.web.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"installNative.web.d.ts","sourceRoot":"","sources":["../../../../module/main/installNative.web.js"],"names":[],"mappings":""}