@shopify/react-native-skia 2.9.1-next.1 → 2.10.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 (273) hide show
  1. package/android/CMakeLists.txt +1 -5
  2. package/android/cpp/jni/JniWebGPUView.cpp +52 -7
  3. package/android/src/main/java/com/shopify/reactnative/skia/WebGPUSurfaceView.java +3 -1
  4. package/android/src/main/java/com/shopify/reactnative/skia/WebGPUTextureView.java +11 -5
  5. package/android/src/main/java/com/shopify/reactnative/skia/WebGPUView.java +10 -7
  6. package/android/src/main/java/com/shopify/reactnative/skia/WebGPUViewAPI.java +7 -2
  7. package/android/src/main/java/com/shopify/reactnative/skia/WebGPUViewManager.java +1 -1
  8. package/apple/WebGPUMetalView.mm +49 -6
  9. package/cpp/api/JsiNativeBuffer.h +15 -10
  10. package/cpp/api/JsiSkAnimatedImage.h +21 -19
  11. package/cpp/api/JsiSkAnimatedImageFactory.h +13 -14
  12. package/cpp/api/JsiSkApi.h +246 -92
  13. package/cpp/api/JsiSkCanvas.h +76 -58
  14. package/cpp/api/JsiSkColor.h +7 -5
  15. package/cpp/api/JsiSkColorFilter.h +15 -8
  16. package/cpp/api/JsiSkColorFilterFactory.h +45 -45
  17. package/cpp/api/JsiSkContourMeasure.h +24 -21
  18. package/cpp/api/JsiSkContourMeasureIter.h +18 -21
  19. package/cpp/api/JsiSkData.h +13 -7
  20. package/cpp/api/JsiSkDataFactory.h +22 -21
  21. package/cpp/api/JsiSkFont.h +56 -44
  22. package/cpp/api/JsiSkFontMgr.h +22 -13
  23. package/cpp/api/JsiSkFontMgrFactory.h +12 -10
  24. package/cpp/api/JsiSkFontStyle.h +14 -12
  25. package/cpp/api/JsiSkImage.h +45 -34
  26. package/cpp/api/JsiSkImageFactory.h +47 -52
  27. package/cpp/api/JsiSkImageFilter.h +21 -11
  28. package/cpp/api/JsiSkImageFilterFactory.h +96 -96
  29. package/cpp/api/JsiSkImageInfo.h +22 -19
  30. package/cpp/api/JsiSkMaskFilter.h +21 -11
  31. package/cpp/api/JsiSkMaskFilterFactory.h +16 -13
  32. package/cpp/api/JsiSkMatrix.h +31 -31
  33. package/cpp/api/JsiSkNativeObjects.h +419 -0
  34. package/cpp/api/JsiSkPaint.h +59 -39
  35. package/cpp/api/JsiSkParagraph.h +39 -32
  36. package/cpp/api/JsiSkParagraphBuilder.h +24 -21
  37. package/cpp/api/JsiSkParagraphBuilderFactory.h +13 -12
  38. package/cpp/api/JsiSkParagraphStyle.h +20 -10
  39. package/cpp/api/JsiSkPath.h +95 -70
  40. package/cpp/api/JsiSkPathBuilder.h +83 -67
  41. package/cpp/api/JsiSkPathBuilderFactory.h +16 -17
  42. package/cpp/api/JsiSkPathEffect.h +21 -11
  43. package/cpp/api/JsiSkPathEffectFactory.h +33 -32
  44. package/cpp/api/JsiSkPathFactory.h +79 -103
  45. package/cpp/api/JsiSkPicture.h +24 -13
  46. package/cpp/api/JsiSkPictureFactory.h +21 -26
  47. package/cpp/api/JsiSkPictureRecorder.h +21 -22
  48. package/cpp/api/JsiSkPoint.h +19 -22
  49. package/cpp/api/JsiSkRRect.h +22 -29
  50. package/cpp/api/JsiSkRSXform.h +26 -30
  51. package/cpp/api/JsiSkRect.h +28 -30
  52. package/cpp/api/JsiSkRuntimeEffect.h +39 -30
  53. package/cpp/api/JsiSkRuntimeEffectFactory.h +12 -12
  54. package/cpp/api/JsiSkRuntimeShaderBuilder.h +25 -18
  55. package/cpp/api/JsiSkSVG.h +13 -13
  56. package/cpp/api/JsiSkSVGFactory.h +17 -20
  57. package/cpp/api/JsiSkShader.h +15 -8
  58. package/cpp/api/JsiSkShaderFactory.h +41 -48
  59. package/cpp/api/JsiSkSkottie.h +49 -39
  60. package/cpp/api/JsiSkStrutStyle.h +18 -8
  61. package/cpp/api/JsiSkSurface.h +24 -24
  62. package/cpp/api/JsiSkSurfaceFactory.h +15 -16
  63. package/cpp/api/JsiSkTextBlob.h +15 -8
  64. package/cpp/api/JsiSkTextBlobFactory.h +25 -28
  65. package/cpp/api/JsiSkTextStyle.h +34 -24
  66. package/cpp/api/JsiSkTypeface.h +19 -12
  67. package/cpp/api/JsiSkTypefaceFactory.h +12 -12
  68. package/cpp/api/JsiSkTypefaceFontProvider.h +30 -25
  69. package/cpp/api/JsiSkTypefaceFontProviderFactory.h +14 -12
  70. package/cpp/api/JsiSkVertices.h +21 -18
  71. package/cpp/api/JsiSkiaContext.h +17 -17
  72. package/cpp/api/JsiSkottieFactory.h +16 -17
  73. package/cpp/api/JsiVideo.h +27 -25
  74. package/cpp/api/recorder/Convertor.h +31 -61
  75. package/cpp/api/recorder/DataTypes.h +8 -16
  76. package/cpp/api/recorder/JsiRecorder.h +83 -55
  77. package/cpp/api/recorder/RNRecorder.h +1 -1
  78. package/cpp/jsi/BoxedNativeObject.h +146 -0
  79. package/cpp/{jsi2 → jsi}/EnumMapper.h +4 -1
  80. package/cpp/{jsi2 → jsi}/NativeObject.h +120 -146
  81. package/cpp/jsi/RuntimeAwareCache.cpp +1 -1
  82. package/cpp/jsi/RuntimeAwareCache.h +26 -8
  83. package/cpp/jsi/ViewProperty.h +5 -11
  84. package/cpp/rnskia/RNSkJsiViewApi.h +20 -11
  85. package/cpp/rnskia/RNSkManager.cpp +29 -25
  86. package/cpp/rnskia/RNSkPictureView.h +1 -1
  87. package/cpp/rnwgpu/ArrayBuffer.h +5 -6
  88. package/cpp/rnwgpu/Canvas.h +4 -2
  89. package/cpp/rnwgpu/SurfaceRegistry.h +469 -131
  90. package/cpp/rnwgpu/api/GPU.cpp +4 -4
  91. package/cpp/rnwgpu/api/GPU.h +1 -1
  92. package/cpp/rnwgpu/api/GPUAdapter.cpp +12 -6
  93. package/cpp/rnwgpu/api/GPUAdapter.h +5 -4
  94. package/cpp/rnwgpu/api/GPUAdapterInfo.h +1 -1
  95. package/cpp/rnwgpu/api/GPUBindGroup.h +1 -1
  96. package/cpp/rnwgpu/api/GPUBindGroupLayout.h +1 -1
  97. package/cpp/rnwgpu/api/GPUBuffer.cpp +12 -2
  98. package/cpp/rnwgpu/api/GPUBuffer.h +4 -3
  99. package/cpp/rnwgpu/api/GPUCanvasContext.cpp +33 -19
  100. package/cpp/rnwgpu/api/GPUCanvasContext.h +4 -2
  101. package/cpp/rnwgpu/api/GPUCommandBuffer.h +1 -1
  102. package/cpp/rnwgpu/api/GPUCommandEncoder.h +1 -1
  103. package/cpp/rnwgpu/api/GPUCompilationInfo.h +1 -1
  104. package/cpp/rnwgpu/api/GPUCompilationMessage.h +1 -1
  105. package/cpp/rnwgpu/api/GPUComputePassEncoder.h +1 -1
  106. package/cpp/rnwgpu/api/GPUComputePipeline.h +1 -1
  107. package/cpp/rnwgpu/api/GPUDevice.cpp +38 -24
  108. package/cpp/rnwgpu/api/GPUDevice.h +12 -10
  109. package/cpp/rnwgpu/api/GPUDeviceLostInfo.h +1 -1
  110. package/cpp/rnwgpu/api/GPUError.h +1 -1
  111. package/cpp/rnwgpu/api/GPUExtent3D.h +1 -1
  112. package/cpp/rnwgpu/api/GPUExternalTexture.h +1 -1
  113. package/cpp/rnwgpu/api/GPUInternalError.h +1 -1
  114. package/cpp/rnwgpu/api/GPUOrigin2D.h +1 -1
  115. package/cpp/rnwgpu/api/GPUOrigin3D.h +1 -1
  116. package/cpp/rnwgpu/api/GPUOutOfMemoryError.h +1 -1
  117. package/cpp/rnwgpu/api/GPUPipelineLayout.h +1 -1
  118. package/cpp/rnwgpu/api/GPUQuerySet.h +1 -1
  119. package/cpp/rnwgpu/api/GPUQueue.cpp +6 -2
  120. package/cpp/rnwgpu/api/GPUQueue.h +4 -4
  121. package/cpp/rnwgpu/api/GPURenderBundle.h +1 -1
  122. package/cpp/rnwgpu/api/GPURenderBundleEncoder.h +1 -1
  123. package/cpp/rnwgpu/api/GPURenderPassEncoder.h +1 -1
  124. package/cpp/rnwgpu/api/GPURenderPipeline.h +1 -1
  125. package/cpp/rnwgpu/api/GPUSampler.h +1 -1
  126. package/cpp/rnwgpu/api/GPUShaderModule.cpp +8 -3
  127. package/cpp/rnwgpu/api/GPUShaderModule.h +4 -4
  128. package/cpp/rnwgpu/api/GPUSharedFence.h +1 -1
  129. package/cpp/rnwgpu/api/GPUSharedTextureMemory.h +1 -1
  130. package/cpp/rnwgpu/api/GPUSupportedLimits.h +1 -1
  131. package/cpp/rnwgpu/api/GPUTexture.h +1 -1
  132. package/cpp/rnwgpu/api/GPUTextureView.h +1 -1
  133. package/cpp/rnwgpu/api/GPUUncapturedErrorEvent.h +1 -1
  134. package/cpp/rnwgpu/api/GPUValidationError.h +1 -1
  135. package/cpp/rnwgpu/api/ImageBitmap.h +1 -1
  136. package/cpp/rnwgpu/api/RNWebGPU.h +21 -1
  137. package/cpp/rnwgpu/api/descriptors/GPUBindGroupDescriptor.h +1 -1
  138. package/cpp/rnwgpu/api/descriptors/GPUBindGroupEntry.h +1 -1
  139. package/cpp/rnwgpu/api/descriptors/GPUBindGroupLayoutDescriptor.h +1 -1
  140. package/cpp/rnwgpu/api/descriptors/GPUBindGroupLayoutEntry.h +1 -1
  141. package/cpp/rnwgpu/api/descriptors/GPUBlendComponent.h +1 -1
  142. package/cpp/rnwgpu/api/descriptors/GPUBlendState.h +1 -1
  143. package/cpp/rnwgpu/api/descriptors/GPUBufferBinding.h +1 -1
  144. package/cpp/rnwgpu/api/descriptors/GPUBufferBindingLayout.h +1 -1
  145. package/cpp/rnwgpu/api/descriptors/GPUBufferDescriptor.h +1 -1
  146. package/cpp/rnwgpu/api/descriptors/GPUCanvasConfiguration.h +1 -1
  147. package/cpp/rnwgpu/api/descriptors/GPUColor.h +1 -1
  148. package/cpp/rnwgpu/api/descriptors/GPUColorTargetState.h +1 -1
  149. package/cpp/rnwgpu/api/descriptors/GPUCommandBufferDescriptor.h +1 -1
  150. package/cpp/rnwgpu/api/descriptors/GPUCommandEncoderDescriptor.h +1 -1
  151. package/cpp/rnwgpu/api/descriptors/GPUComputePassDescriptor.h +1 -1
  152. package/cpp/rnwgpu/api/descriptors/GPUComputePassTimestampWrites.h +1 -1
  153. package/cpp/rnwgpu/api/descriptors/GPUComputePipelineDescriptor.h +1 -1
  154. package/cpp/rnwgpu/api/descriptors/GPUDawnTogglesDescriptor.h +1 -1
  155. package/cpp/rnwgpu/api/descriptors/GPUDepthStencilState.h +1 -1
  156. package/cpp/rnwgpu/api/descriptors/GPUDeviceDescriptor.h +1 -1
  157. package/cpp/rnwgpu/api/descriptors/GPUExternalTextureBindingLayout.h +1 -1
  158. package/cpp/rnwgpu/api/descriptors/GPUExternalTextureDescriptor.h +1 -1
  159. package/cpp/rnwgpu/api/descriptors/GPUFragmentState.h +1 -1
  160. package/cpp/rnwgpu/api/descriptors/GPUImageCopyBuffer.h +1 -1
  161. package/cpp/rnwgpu/api/descriptors/GPUImageCopyExternalImage.h +1 -1
  162. package/cpp/rnwgpu/api/descriptors/GPUImageCopyTexture.h +1 -1
  163. package/cpp/rnwgpu/api/descriptors/GPUImageCopyTextureTagged.h +1 -1
  164. package/cpp/rnwgpu/api/descriptors/GPUImageDataLayout.h +1 -1
  165. package/cpp/rnwgpu/api/descriptors/GPUMultisampleState.h +1 -1
  166. package/cpp/rnwgpu/api/descriptors/GPUPipelineLayoutDescriptor.h +1 -1
  167. package/cpp/rnwgpu/api/descriptors/GPUPrimitiveState.h +1 -1
  168. package/cpp/rnwgpu/api/descriptors/GPUProgrammableStage.h +1 -1
  169. package/cpp/rnwgpu/api/descriptors/GPUQuerySetDescriptor.h +1 -1
  170. package/cpp/rnwgpu/api/descriptors/GPUQueueDescriptor.h +1 -1
  171. package/cpp/rnwgpu/api/descriptors/GPURenderBundleDescriptor.h +1 -1
  172. package/cpp/rnwgpu/api/descriptors/GPURenderBundleEncoderDescriptor.h +1 -1
  173. package/cpp/rnwgpu/api/descriptors/GPURenderPassColorAttachment.h +1 -1
  174. package/cpp/rnwgpu/api/descriptors/GPURenderPassDepthStencilAttachment.h +1 -1
  175. package/cpp/rnwgpu/api/descriptors/GPURenderPassDescriptor.h +1 -1
  176. package/cpp/rnwgpu/api/descriptors/GPURenderPassTimestampWrites.h +1 -1
  177. package/cpp/rnwgpu/api/descriptors/GPURenderPipelineDescriptor.h +1 -1
  178. package/cpp/rnwgpu/api/descriptors/GPURequestAdapterOptions.h +1 -1
  179. package/cpp/rnwgpu/api/descriptors/GPUSamplerBindingLayout.h +1 -1
  180. package/cpp/rnwgpu/api/descriptors/GPUSamplerDescriptor.h +1 -1
  181. package/cpp/rnwgpu/api/descriptors/GPUShaderModuleCompilationHint.h +1 -1
  182. package/cpp/rnwgpu/api/descriptors/GPUShaderModuleDescriptor.h +1 -1
  183. package/cpp/rnwgpu/api/descriptors/GPUSharedFenceDescriptor.h +1 -1
  184. package/cpp/rnwgpu/api/descriptors/GPUSharedFenceState.h +1 -1
  185. package/cpp/rnwgpu/api/descriptors/GPUSharedTextureMemoryDescriptor.h +1 -1
  186. package/cpp/rnwgpu/api/descriptors/GPUStencilFaceState.h +1 -1
  187. package/cpp/rnwgpu/api/descriptors/GPUStorageTextureBindingLayout.h +1 -1
  188. package/cpp/rnwgpu/api/descriptors/GPUTextureBindingLayout.h +1 -1
  189. package/cpp/rnwgpu/api/descriptors/GPUTextureDescriptor.h +1 -1
  190. package/cpp/rnwgpu/api/descriptors/GPUTextureViewDescriptor.h +1 -1
  191. package/cpp/rnwgpu/api/descriptors/GPUUncapturedErrorEventInit.h +1 -1
  192. package/cpp/rnwgpu/api/descriptors/GPUVertexAttribute.h +1 -1
  193. package/cpp/rnwgpu/api/descriptors/GPUVertexBufferLayout.h +1 -1
  194. package/cpp/rnwgpu/api/descriptors/GPUVertexState.h +1 -1
  195. package/cpp/rnwgpu/api/descriptors/Unions.h +1 -1
  196. package/cpp/rnwgpu/async/AsyncTaskHandle.cpp +20 -21
  197. package/cpp/rnwgpu/async/RuntimeContext.cpp +5 -0
  198. package/cpp/rnwgpu/async/RuntimeContext.h +15 -2
  199. package/lib/commonjs/external/reanimated/renderHelpers.d.ts +15 -0
  200. package/lib/commonjs/external/reanimated/renderHelpers.js +30 -1
  201. package/lib/commonjs/external/reanimated/renderHelpers.js.map +1 -1
  202. package/lib/commonjs/skia/NativeSetup.js +4 -0
  203. package/lib/commonjs/skia/NativeSetup.js.map +1 -1
  204. package/lib/commonjs/skia/SkiaWorkletSerialization.d.ts +1 -0
  205. package/lib/commonjs/skia/SkiaWorkletSerialization.js +66 -0
  206. package/lib/commonjs/skia/SkiaWorkletSerialization.js.map +1 -0
  207. package/lib/commonjs/sksg/Container.native.js +20 -1
  208. package/lib/commonjs/sksg/Container.native.js.map +1 -1
  209. package/lib/commonjs/views/WebGPUCanvas.d.ts +1 -0
  210. package/lib/commonjs/views/WebGPUCanvas.js +13 -0
  211. package/lib/commonjs/views/WebGPUCanvas.js.map +1 -1
  212. package/lib/module/external/reanimated/renderHelpers.d.ts +15 -0
  213. package/lib/module/external/reanimated/renderHelpers.js +29 -0
  214. package/lib/module/external/reanimated/renderHelpers.js.map +1 -1
  215. package/lib/module/skia/NativeSetup.js +4 -0
  216. package/lib/module/skia/NativeSetup.js.map +1 -1
  217. package/lib/module/skia/SkiaWorkletSerialization.d.ts +1 -0
  218. package/lib/module/skia/SkiaWorkletSerialization.js +59 -0
  219. package/lib/module/skia/SkiaWorkletSerialization.js.map +1 -0
  220. package/lib/module/sksg/Container.native.js +21 -2
  221. package/lib/module/sksg/Container.native.js.map +1 -1
  222. package/lib/module/views/WebGPUCanvas.d.ts +1 -0
  223. package/lib/module/views/WebGPUCanvas.js +14 -1
  224. package/lib/module/views/WebGPUCanvas.js.map +1 -1
  225. package/lib/typescript/lib/commonjs/external/reanimated/renderHelpers.d.ts +2 -0
  226. package/lib/typescript/lib/commonjs/skia/SkiaWorkletSerialization.d.ts +2 -0
  227. package/lib/typescript/lib/module/external/reanimated/renderHelpers.d.ts +15 -0
  228. package/lib/typescript/lib/module/skia/SkiaWorkletSerialization.d.ts +1 -0
  229. package/lib/typescript/src/external/reanimated/renderHelpers.d.ts +15 -0
  230. package/lib/typescript/src/skia/SkiaWorkletSerialization.d.ts +1 -0
  231. package/lib/typescript/src/views/WebGPUCanvas.d.ts +1 -0
  232. package/package.json +12 -8
  233. package/react-native-skia.podspec +1 -2
  234. package/src/external/reanimated/renderHelpers.ts +30 -0
  235. package/src/skia/NativeSetup.ts +5 -0
  236. package/src/skia/SkiaWorkletSerialization.ts +67 -0
  237. package/src/sksg/Container.native.ts +40 -2
  238. package/src/views/WebGPUCanvas.tsx +17 -1
  239. package/cpp/api/JsiSkHostObjects.h +0 -257
  240. package/cpp/dawn/include/dawn/dawn_proc.h +0 -53
  241. package/cpp/dawn/include/dawn/dawn_proc_table.h +0 -330
  242. package/cpp/dawn/include/dawn/dawn_thread_dispatch_proc.h +0 -47
  243. package/cpp/dawn/include/dawn/dawn_version.h +0 -41
  244. package/cpp/dawn/include/dawn/native/D3D11Backend.h +0 -65
  245. package/cpp/dawn/include/dawn/native/D3D12Backend.h +0 -86
  246. package/cpp/dawn/include/dawn/native/D3DBackend.h +0 -56
  247. package/cpp/dawn/include/dawn/native/DawnNative.h +0 -369
  248. package/cpp/dawn/include/dawn/native/MetalBackend.h +0 -56
  249. package/cpp/dawn/include/dawn/native/NullBackend.h +0 -39
  250. package/cpp/dawn/include/dawn/native/OpenGLBackend.h +0 -89
  251. package/cpp/dawn/include/dawn/native/VulkanBackend.h +0 -183
  252. package/cpp/dawn/include/dawn/native/WebGPUBackend.h +0 -49
  253. package/cpp/dawn/include/dawn/native/dawn_native_export.h +0 -49
  254. package/cpp/dawn/include/dawn/platform/DawnPlatform.h +0 -210
  255. package/cpp/dawn/include/dawn/platform/dawn_platform_export.h +0 -49
  256. package/cpp/dawn/include/dawn/replay/Replay.h +0 -99
  257. package/cpp/dawn/include/dawn/replay/dawn_replay_export.h +0 -49
  258. package/cpp/dawn/include/dawn/webgpu_cpp_print.h +0 -2844
  259. package/cpp/dawn/include/tint/tint.h +0 -90
  260. package/cpp/dawn/include/webgpu/webgpu.h +0 -4987
  261. package/cpp/dawn/include/webgpu/webgpu_cpp.h +0 -10080
  262. package/cpp/dawn/include/webgpu/webgpu_cpp_chained_struct.h +0 -57
  263. package/cpp/dawn/include/webgpu/webgpu_enum_class_bitmasks.h +0 -161
  264. package/cpp/dawn/include/webgpu/webgpu_glfw.h +0 -88
  265. package/cpp/jsi/JsiHostObject.cpp +0 -137
  266. package/cpp/jsi/JsiHostObject.h +0 -385
  267. package/cpp/skia/src/gpu/graphite/ContextOptionsPriv.h +0 -45
  268. package/cpp/skia/src/gpu/graphite/ResourceTypes.h +0 -360
  269. package/cpp/skia/src/gpu/graphite/TextureProxyView.h +0 -105
  270. package/libs/.graphite +0 -1
  271. /package/cpp/{jsi2 → jsi}/JSIConverter.h +0 -0
  272. /package/cpp/{jsi2 → jsi}/Promise.cpp +0 -0
  273. /package/cpp/{jsi2 → jsi}/Promise.h +0 -0
@@ -79,9 +79,13 @@ void GPUQueue::writeBuffer(std::shared_ptr<GPUBuffer> buffer,
79
79
  static_cast<size_t>(size64));
80
80
  }
81
81
 
82
- async::AsyncTaskHandle GPUQueue::onSubmittedWorkDone() {
82
+ async::AsyncTaskHandle GPUQueue::onSubmittedWorkDone(jsi::Runtime &runtime) {
83
83
  auto queue = _instance;
84
- return _async->postTask(
84
+ // Post to the CALLING runtime's context so the promise settles on the
85
+ // thread that requested it (see GPUBuffer::mapAsync).
86
+ auto context =
87
+ async::RuntimeContext::getOrCreate(runtime, _async->instance());
88
+ return context->postTask(
85
89
  [queue](const async::AsyncTaskHandle::ResolveFunction &resolve,
86
90
  const async::AsyncTaskHandle::RejectFunction &reject) {
87
91
  queue.OnSubmittedWorkDone(
@@ -6,7 +6,7 @@
6
6
 
7
7
  #include "descriptors/Unions.h"
8
8
 
9
- #include "jsi2/NativeObject.h"
9
+ #include "jsi/NativeObject.h"
10
10
 
11
11
  #include "rnwgpu/async/AsyncTaskHandle.h"
12
12
  #include "rnwgpu/async/RuntimeContext.h"
@@ -40,7 +40,7 @@ public:
40
40
  std::string getBrand() { return CLASS_NAME; }
41
41
 
42
42
  void submit(std::vector<std::shared_ptr<GPUCommandBuffer>> commandBuffers);
43
- async::AsyncTaskHandle onSubmittedWorkDone();
43
+ async::AsyncTaskHandle onSubmittedWorkDone(jsi::Runtime &runtime);
44
44
  void writeBuffer(std::shared_ptr<GPUBuffer> buffer, uint64_t bufferOffset,
45
45
  std::shared_ptr<ArrayBuffer> data,
46
46
  std::optional<uint64_t> dataOffsetElements,
@@ -63,8 +63,8 @@ public:
63
63
  static void definePrototype(jsi::Runtime &runtime, jsi::Object &prototype) {
64
64
  installGetter(runtime, prototype, "__brand", &GPUQueue::getBrand);
65
65
  installMethod(runtime, prototype, "submit", &GPUQueue::submit);
66
- installMethod(runtime, prototype, "onSubmittedWorkDone",
67
- &GPUQueue::onSubmittedWorkDone);
66
+ installMethodWithRuntime(runtime, prototype, "onSubmittedWorkDone",
67
+ &GPUQueue::onSubmittedWorkDone);
68
68
  installMethod(runtime, prototype, "writeBuffer", &GPUQueue::writeBuffer);
69
69
  installMethod(runtime, prototype, "writeTexture", &GPUQueue::writeTexture);
70
70
  installMethod(runtime, prototype, "copyExternalImageToTexture",
@@ -4,7 +4,7 @@
4
4
 
5
5
  #include "descriptors/Unions.h"
6
6
 
7
- #include "jsi2/NativeObject.h"
7
+ #include "jsi/NativeObject.h"
8
8
 
9
9
  #include "webgpu/webgpu_cpp.h"
10
10
 
@@ -8,7 +8,7 @@
8
8
 
9
9
  #include "descriptors/Unions.h"
10
10
 
11
- #include "jsi2/NativeObject.h"
11
+ #include "jsi/NativeObject.h"
12
12
 
13
13
  #include "webgpu/webgpu_cpp.h"
14
14
 
@@ -8,7 +8,7 @@
8
8
 
9
9
  #include "descriptors/Unions.h"
10
10
 
11
- #include "jsi2/NativeObject.h"
11
+ #include "jsi/NativeObject.h"
12
12
 
13
13
  #include "webgpu/webgpu_cpp.h"
14
14
 
@@ -5,7 +5,7 @@
5
5
 
6
6
  #include "descriptors/Unions.h"
7
7
 
8
- #include "jsi2/NativeObject.h"
8
+ #include "jsi/NativeObject.h"
9
9
 
10
10
  #include "webgpu/webgpu_cpp.h"
11
11
 
@@ -4,7 +4,7 @@
4
4
 
5
5
  #include "descriptors/Unions.h"
6
6
 
7
- #include "jsi2/NativeObject.h"
7
+ #include "jsi/NativeObject.h"
8
8
 
9
9
  #include "webgpu/webgpu_cpp.h"
10
10
 
@@ -3,14 +3,19 @@
3
3
  #include <memory>
4
4
  #include <utility>
5
5
 
6
- #include "jsi2/JSIConverter.h"
6
+ #include "jsi/JSIConverter.h"
7
7
 
8
8
  namespace rnwgpu {
9
9
 
10
- async::AsyncTaskHandle GPUShaderModule::getCompilationInfo() {
10
+ async::AsyncTaskHandle
11
+ GPUShaderModule::getCompilationInfo(jsi::Runtime &runtime) {
11
12
  auto module = _instance;
12
13
 
13
- return _async->postTask(
14
+ // Post to the CALLING runtime's context so the promise settles on the
15
+ // thread that requested it (see GPUBuffer::mapAsync).
16
+ auto context =
17
+ async::RuntimeContext::getOrCreate(runtime, _async->instance());
18
+ return context->postTask(
14
19
  [module](const async::AsyncTaskHandle::ResolveFunction &resolve,
15
20
  const async::AsyncTaskHandle::RejectFunction &reject) {
16
21
  auto result = std::make_shared<GPUCompilationInfo>();
@@ -5,7 +5,7 @@
5
5
 
6
6
  #include "descriptors/Unions.h"
7
7
 
8
- #include "jsi2/NativeObject.h"
8
+ #include "jsi/NativeObject.h"
9
9
 
10
10
  #include "rnwgpu/async/AsyncTaskHandle.h"
11
11
  #include "rnwgpu/async/RuntimeContext.h"
@@ -31,7 +31,7 @@ public:
31
31
  public:
32
32
  std::string getBrand() { return CLASS_NAME; }
33
33
 
34
- async::AsyncTaskHandle getCompilationInfo();
34
+ async::AsyncTaskHandle getCompilationInfo(jsi::Runtime &runtime);
35
35
 
36
36
  std::string getLabel() { return _label; }
37
37
  void setLabel(const std::string &label) {
@@ -41,8 +41,8 @@ public:
41
41
 
42
42
  static void definePrototype(jsi::Runtime &runtime, jsi::Object &prototype) {
43
43
  installGetter(runtime, prototype, "__brand", &GPUShaderModule::getBrand);
44
- installMethod(runtime, prototype, "getCompilationInfo",
45
- &GPUShaderModule::getCompilationInfo);
44
+ installMethodWithRuntime(runtime, prototype, "getCompilationInfo",
45
+ &GPUShaderModule::getCompilationInfo);
46
46
  installGetterSetter(runtime, prototype, "label", &GPUShaderModule::getLabel,
47
47
  &GPUShaderModule::setLabel);
48
48
  }
@@ -3,7 +3,7 @@
3
3
  #include <memory>
4
4
  #include <string>
5
5
 
6
- #include "jsi2/NativeObject.h"
6
+ #include "jsi/NativeObject.h"
7
7
 
8
8
  #include "webgpu/webgpu_cpp.h"
9
9
 
@@ -6,7 +6,7 @@
6
6
  #include <string>
7
7
  #include <vector>
8
8
 
9
- #include "jsi2/NativeObject.h"
9
+ #include "jsi/NativeObject.h"
10
10
 
11
11
  #include "webgpu/webgpu_cpp.h"
12
12
 
@@ -4,7 +4,7 @@
4
4
 
5
5
  #include "descriptors/Unions.h"
6
6
 
7
- #include "jsi2/NativeObject.h"
7
+ #include "jsi/NativeObject.h"
8
8
 
9
9
  #include "webgpu/webgpu_cpp.h"
10
10
 
@@ -6,7 +6,7 @@
6
6
 
7
7
  #include "descriptors/Unions.h"
8
8
 
9
- #include "jsi2/NativeObject.h"
9
+ #include "jsi/NativeObject.h"
10
10
 
11
11
  #include "webgpu/webgpu_cpp.h"
12
12
 
@@ -4,7 +4,7 @@
4
4
 
5
5
  #include "descriptors/Unions.h"
6
6
 
7
- #include "jsi2/NativeObject.h"
7
+ #include "jsi/NativeObject.h"
8
8
 
9
9
  #include "webgpu/webgpu_cpp.h"
10
10
 
@@ -4,7 +4,7 @@
4
4
  #include <string>
5
5
  #include <variant>
6
6
 
7
- #include "jsi2/NativeObject.h"
7
+ #include "jsi/NativeObject.h"
8
8
 
9
9
  #include "GPUError.h"
10
10
  #include "GPUInternalError.h"
@@ -2,7 +2,7 @@
2
2
 
3
3
  #include <string>
4
4
 
5
- #include "jsi2/NativeObject.h"
5
+ #include "jsi/NativeObject.h"
6
6
 
7
7
  namespace rnwgpu {
8
8
 
@@ -5,7 +5,7 @@
5
5
  #include <utility>
6
6
  #include <vector>
7
7
 
8
- #include "jsi2/NativeObject.h"
8
+ #include "jsi/NativeObject.h"
9
9
 
10
10
  namespace rnwgpu {
11
11
 
@@ -3,7 +3,7 @@
3
3
  #include <memory>
4
4
  #include <string>
5
5
 
6
- #include "jsi2/NativeObject.h"
6
+ #include "jsi/NativeObject.h"
7
7
 
8
8
  #include "GPU.h"
9
9
  #include "GPUCanvasContext.h"
@@ -45,11 +45,31 @@ public:
45
45
  nativeInfo.height);
46
46
  }
47
47
 
48
+ // Retires a canvas context from the JS side (Canvas unmount cleanup).
49
+ // Registry entries have two owners, split by whether a native surface is
50
+ // attached:
51
+ // - A native view currently owns a surface (or one is pending): its own
52
+ // teardown (WebGPUMetalView dealloc / WebGPUViewManager.onDropViewInstance)
53
+ // removes the entry. Skipping here keeps React StrictMode safe: its
54
+ // simulated unmount re-runs JS effects without unmounting native views,
55
+ // and removing the entry then would orphan the still-attached surface.
56
+ // - No native surface: the JS side is the last owner and removes the entry.
57
+ // The check-and-erase runs atomically under the registry lock
58
+ // (removeSurfaceInfoIfDetached), serialized against the UI thread's
59
+ // find-or-create + attach (SurfaceRegistry::attachSurface), so a concurrent
60
+ // attach can never be orphaned by this removal.
61
+ void destroyContext(int contextId) {
62
+ auto &registry = rnwgpu::SurfaceRegistry::getInstance();
63
+ registry.removeSurfaceInfoIfDetached(contextId);
64
+ }
65
+
48
66
  static void definePrototype(jsi::Runtime &runtime, jsi::Object &prototype) {
49
67
  installGetter(runtime, prototype, "fabric", &RNWebGPU::getFabric);
50
68
  installGetter(runtime, prototype, "gpu", &RNWebGPU::getGPU);
51
69
  installMethod(runtime, prototype, "getNativeSurface",
52
70
  &RNWebGPU::getNativeSurface);
71
+ installMethod(runtime, prototype, "destroyContext",
72
+ &RNWebGPU::destroyContext);
53
73
  installMethod(runtime, prototype, "MakeWebGPUCanvasContext",
54
74
  &RNWebGPU::MakeWebGPUCanvasContext);
55
75
  }
@@ -6,7 +6,7 @@
6
6
 
7
7
  #include "webgpu/webgpu_cpp.h"
8
8
 
9
- #include "jsi2/JSIConverter.h"
9
+ #include "jsi/JSIConverter.h"
10
10
 
11
11
  #include "GPUBindGroupEntry.h"
12
12
  #include "rnwgpu/api/GPUBindGroupLayout.h"
@@ -6,7 +6,7 @@
6
6
  #include "webgpu/webgpu_cpp.h"
7
7
 
8
8
  #include "GPUBufferBinding.h"
9
- #include "jsi2/JSIConverter.h"
9
+ #include "jsi/JSIConverter.h"
10
10
  #include "rnwgpu/api/GPUExternalTexture.h"
11
11
  #include "rnwgpu/api/GPUSampler.h"
12
12
  #include "rnwgpu/api/GPUTextureView.h"
@@ -6,7 +6,7 @@
6
6
 
7
7
  #include "webgpu/webgpu_cpp.h"
8
8
 
9
- #include "jsi2/JSIConverter.h"
9
+ #include "jsi/JSIConverter.h"
10
10
 
11
11
  #include "GPUBindGroupLayoutEntry.h"
12
12
 
@@ -4,7 +4,7 @@
4
4
 
5
5
  #include "webgpu/webgpu_cpp.h"
6
6
 
7
- #include "jsi2/JSIConverter.h"
7
+ #include "jsi/JSIConverter.h"
8
8
 
9
9
  #include "GPUBufferBindingLayout.h"
10
10
  #include "GPUExternalTextureBindingLayout.h"
@@ -4,7 +4,7 @@
4
4
 
5
5
  #include "webgpu/webgpu_cpp.h"
6
6
 
7
- #include "jsi2/JSIConverter.h"
7
+ #include "jsi/JSIConverter.h"
8
8
 
9
9
  namespace jsi = facebook::jsi;
10
10
 
@@ -4,7 +4,7 @@
4
4
 
5
5
  #include "webgpu/webgpu_cpp.h"
6
6
 
7
- #include "jsi2/JSIConverter.h"
7
+ #include "jsi/JSIConverter.h"
8
8
 
9
9
  #include "GPUBlendComponent.h"
10
10
 
@@ -4,7 +4,7 @@
4
4
 
5
5
  #include "webgpu/webgpu_cpp.h"
6
6
 
7
- #include "jsi2/JSIConverter.h"
7
+ #include "jsi/JSIConverter.h"
8
8
 
9
9
  #include "rnwgpu/api/GPUBuffer.h"
10
10
 
@@ -4,7 +4,7 @@
4
4
 
5
5
  #include "webgpu/webgpu_cpp.h"
6
6
 
7
- #include "jsi2/JSIConverter.h"
7
+ #include "jsi/JSIConverter.h"
8
8
 
9
9
  namespace jsi = facebook::jsi;
10
10
 
@@ -5,7 +5,7 @@
5
5
 
6
6
  #include "webgpu/webgpu_cpp.h"
7
7
 
8
- #include "jsi2/JSIConverter.h"
8
+ #include "jsi/JSIConverter.h"
9
9
 
10
10
  namespace jsi = facebook::jsi;
11
11
 
@@ -5,7 +5,7 @@
5
5
 
6
6
  #include "webgpu/webgpu_cpp.h"
7
7
 
8
- #include "jsi2/JSIConverter.h"
8
+ #include "jsi/JSIConverter.h"
9
9
 
10
10
  #include "rnwgpu/api/GPUDevice.h"
11
11
 
@@ -4,7 +4,7 @@
4
4
 
5
5
  #include "webgpu/webgpu_cpp.h"
6
6
 
7
- #include "jsi2/JSIConverter.h"
7
+ #include "jsi/JSIConverter.h"
8
8
 
9
9
  namespace jsi = facebook::jsi;
10
10
 
@@ -4,7 +4,7 @@
4
4
 
5
5
  #include "webgpu/webgpu_cpp.h"
6
6
 
7
- #include "jsi2/JSIConverter.h"
7
+ #include "jsi/JSIConverter.h"
8
8
 
9
9
  #include "GPUBlendState.h"
10
10
 
@@ -5,7 +5,7 @@
5
5
 
6
6
  #include "webgpu/webgpu_cpp.h"
7
7
 
8
- #include "jsi2/JSIConverter.h"
8
+ #include "jsi/JSIConverter.h"
9
9
 
10
10
  namespace jsi = facebook::jsi;
11
11
 
@@ -5,7 +5,7 @@
5
5
 
6
6
  #include "webgpu/webgpu_cpp.h"
7
7
 
8
- #include "jsi2/JSIConverter.h"
8
+ #include "jsi/JSIConverter.h"
9
9
 
10
10
  namespace jsi = facebook::jsi;
11
11
 
@@ -5,7 +5,7 @@
5
5
 
6
6
  #include "webgpu/webgpu_cpp.h"
7
7
 
8
- #include "jsi2/JSIConverter.h"
8
+ #include "jsi/JSIConverter.h"
9
9
 
10
10
  #include "GPUComputePassTimestampWrites.h"
11
11
 
@@ -4,7 +4,7 @@
4
4
 
5
5
  #include "webgpu/webgpu_cpp.h"
6
6
 
7
- #include "jsi2/JSIConverter.h"
7
+ #include "jsi/JSIConverter.h"
8
8
 
9
9
  #include "rnwgpu/api/GPUQuerySet.h"
10
10
 
@@ -5,7 +5,7 @@
5
5
 
6
6
  #include "webgpu/webgpu_cpp.h"
7
7
 
8
- #include "jsi2/JSIConverter.h"
8
+ #include "jsi/JSIConverter.h"
9
9
 
10
10
  #include "GPUProgrammableStage.h"
11
11
  #include "rnwgpu/api/GPUPipelineLayout.h"
@@ -6,7 +6,7 @@
6
6
 
7
7
  #include "webgpu/webgpu_cpp.h"
8
8
 
9
- #include "jsi2/JSIConverter.h"
9
+ #include "jsi/JSIConverter.h"
10
10
 
11
11
  namespace jsi = facebook::jsi;
12
12
 
@@ -4,7 +4,7 @@
4
4
 
5
5
  #include "webgpu/webgpu_cpp.h"
6
6
 
7
- #include "jsi2/JSIConverter.h"
7
+ #include "jsi/JSIConverter.h"
8
8
 
9
9
  #include "GPUStencilFaceState.h"
10
10
 
@@ -7,7 +7,7 @@
7
7
 
8
8
  #include "webgpu/webgpu_cpp.h"
9
9
 
10
- #include "jsi2/JSIConverter.h"
10
+ #include "jsi/JSIConverter.h"
11
11
 
12
12
  #include "GPUDawnTogglesDescriptor.h"
13
13
  #include "GPUQueueDescriptor.h"
@@ -4,7 +4,7 @@
4
4
 
5
5
  #include "webgpu/webgpu_cpp.h"
6
6
 
7
- #include "jsi2/JSIConverter.h"
7
+ #include "jsi/JSIConverter.h"
8
8
 
9
9
  namespace jsi = facebook::jsi;
10
10
 
@@ -7,7 +7,7 @@
7
7
 
8
8
  #include "webgpu/webgpu_cpp.h"
9
9
 
10
- #include "jsi2/JSIConverter.h"
10
+ #include "jsi/JSIConverter.h"
11
11
 
12
12
  namespace jsi = facebook::jsi;
13
13
 
@@ -8,7 +8,7 @@
8
8
 
9
9
  #include "webgpu/webgpu_cpp.h"
10
10
 
11
- #include "jsi2/JSIConverter.h"
11
+ #include "jsi/JSIConverter.h"
12
12
 
13
13
  #include "GPUColorTargetState.h"
14
14
  #include "rnwgpu/api/GPUShaderModule.h"
@@ -4,7 +4,7 @@
4
4
 
5
5
  #include "webgpu/webgpu_cpp.h"
6
6
 
7
- #include "jsi2/JSIConverter.h"
7
+ #include "jsi/JSIConverter.h"
8
8
 
9
9
  #include "rnwgpu/api/GPUBuffer.h"
10
10
 
@@ -7,8 +7,8 @@
7
7
 
8
8
  #include "webgpu/webgpu_cpp.h"
9
9
 
10
+ #include "jsi/JSIConverter.h"
10
11
  #include "rnwgpu/api/Convertors.h"
11
- #include "jsi2/JSIConverter.h"
12
12
 
13
13
  #include "rnwgpu/api/GPUOrigin2D.h"
14
14
  #include "rnwgpu/api/ImageBitmap.h"
@@ -4,7 +4,7 @@
4
4
 
5
5
  #include "webgpu/webgpu_cpp.h"
6
6
 
7
- #include "jsi2/JSIConverter.h"
7
+ #include "jsi/JSIConverter.h"
8
8
 
9
9
  #include "rnwgpu/api/GPUOrigin3D.h"
10
10
  #include "rnwgpu/api/GPUTexture.h"
@@ -4,7 +4,7 @@
4
4
 
5
5
  #include "webgpu/webgpu_cpp.h"
6
6
 
7
- #include "jsi2/JSIConverter.h"
7
+ #include "jsi/JSIConverter.h"
8
8
 
9
9
  #include "rnwgpu/api/External.h"
10
10
  #include "rnwgpu/api/GPUOrigin3D.h"
@@ -4,7 +4,7 @@
4
4
 
5
5
  #include "webgpu/webgpu_cpp.h"
6
6
 
7
- #include "jsi2/JSIConverter.h"
7
+ #include "jsi/JSIConverter.h"
8
8
 
9
9
  namespace jsi = facebook::jsi;
10
10
 
@@ -4,7 +4,7 @@
4
4
 
5
5
  #include "webgpu/webgpu_cpp.h"
6
6
 
7
- #include "jsi2/JSIConverter.h"
7
+ #include "jsi/JSIConverter.h"
8
8
 
9
9
  namespace jsi = facebook::jsi;
10
10
 
@@ -6,7 +6,7 @@
6
6
 
7
7
  #include "webgpu/webgpu_cpp.h"
8
8
 
9
- #include "jsi2/JSIConverter.h"
9
+ #include "jsi/JSIConverter.h"
10
10
 
11
11
  #include "rnwgpu/api/GPUBindGroupLayout.h"
12
12
 
@@ -4,7 +4,7 @@
4
4
 
5
5
  #include "webgpu/webgpu_cpp.h"
6
6
 
7
- #include "jsi2/JSIConverter.h"
7
+ #include "jsi/JSIConverter.h"
8
8
 
9
9
  namespace jsi = facebook::jsi;
10
10
 
@@ -6,7 +6,7 @@
6
6
 
7
7
  #include "webgpu/webgpu_cpp.h"
8
8
 
9
- #include "jsi2/JSIConverter.h"
9
+ #include "jsi/JSIConverter.h"
10
10
 
11
11
  #include "rnwgpu/api/GPUShaderModule.h"
12
12
 
@@ -5,7 +5,7 @@
5
5
 
6
6
  #include "webgpu/webgpu_cpp.h"
7
7
 
8
- #include "jsi2/JSIConverter.h"
8
+ #include "jsi/JSIConverter.h"
9
9
 
10
10
  namespace jsi = facebook::jsi;
11
11
 
@@ -5,7 +5,7 @@
5
5
 
6
6
  #include "webgpu/webgpu_cpp.h"
7
7
 
8
- #include "jsi2/JSIConverter.h"
8
+ #include "jsi/JSIConverter.h"
9
9
 
10
10
  namespace jsi = facebook::jsi;
11
11
 
@@ -5,7 +5,7 @@
5
5
 
6
6
  #include "webgpu/webgpu_cpp.h"
7
7
 
8
- #include "jsi2/JSIConverter.h"
8
+ #include "jsi/JSIConverter.h"
9
9
 
10
10
  namespace jsi = facebook::jsi;
11
11
 
@@ -6,7 +6,7 @@
6
6
 
7
7
  #include "webgpu/webgpu_cpp.h"
8
8
 
9
- #include "jsi2/JSIConverter.h"
9
+ #include "jsi/JSIConverter.h"
10
10
 
11
11
  namespace jsi = facebook::jsi;
12
12
 
@@ -4,7 +4,7 @@
4
4
 
5
5
  #include "webgpu/webgpu_cpp.h"
6
6
 
7
- #include "jsi2/JSIConverter.h"
7
+ #include "jsi/JSIConverter.h"
8
8
 
9
9
  #include "GPUColor.h"
10
10
  #include "rnwgpu/api/GPUTextureView.h"