react-native-wgpu 0.5.13 → 0.5.14

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 (405) hide show
  1. package/README.md +13 -386
  2. package/lib/commonjs/index.js +7 -4
  3. package/lib/commonjs/index.js.map +1 -1
  4. package/lib/module/index.js +4 -4
  5. package/lib/module/index.js.map +1 -1
  6. package/lib/typescript/webgpu/src/Canvas.d.ts.map +1 -0
  7. package/lib/typescript/webgpu/src/NativeWebGPUModule.d.ts.map +1 -0
  8. package/lib/typescript/webgpu/src/Offscreen.d.ts.map +1 -0
  9. package/lib/typescript/webgpu/src/WebGPUViewNativeComponent.d.ts.map +1 -0
  10. package/lib/typescript/webgpu/src/external/ModuleProxy.d.ts.map +1 -0
  11. package/lib/typescript/webgpu/src/external/index.d.ts.map +1 -0
  12. package/lib/typescript/webgpu/src/external/reanimated/ReanimatedProxy.d.ts.map +1 -0
  13. package/lib/typescript/webgpu/src/external/reanimated/index.d.ts.map +1 -0
  14. package/lib/typescript/webgpu/src/external/reanimated/registerWebGPUForReanimated.d.ts.map +1 -0
  15. package/lib/typescript/webgpu/src/hooks.d.ts.map +1 -0
  16. package/lib/typescript/webgpu/src/index.d.ts.map +1 -0
  17. package/lib/typescript/webgpu/src/main/index.d.ts.map +1 -0
  18. package/lib/typescript/webgpu/src/types.d.ts.map +1 -0
  19. package/lib/typescript/{eslint.config.d.mts.map → webgpu-shim/eslint.config.d.mts.map} +1 -1
  20. package/lib/typescript/{lib → webgpu-shim/lib}/commonjs/index.d.ts.map +1 -1
  21. package/lib/typescript/webgpu-shim/lib/module/index.d.ts +2 -0
  22. package/lib/typescript/{lib → webgpu-shim/lib}/module/index.d.ts.map +1 -1
  23. package/lib/typescript/webgpu-shim/src/index.d.ts +2 -0
  24. package/lib/typescript/webgpu-shim/src/index.d.ts.map +1 -0
  25. package/package.json +12 -81
  26. package/src/index.ts +9 -0
  27. package/LICENSE +0 -20
  28. package/android/CMakeLists.txt +0 -110
  29. package/android/build.gradle +0 -138
  30. package/android/cpp/AndroidPlatformContext.h +0 -328
  31. package/android/cpp/cpp-adapter.cpp +0 -71
  32. package/android/src/main/AndroidManifest.xml +0 -3
  33. package/android/src/main/java/com/webgpu/WebGPUAHBView.java +0 -298
  34. package/android/src/main/java/com/webgpu/WebGPUAPI.java +0 -20
  35. package/android/src/main/java/com/webgpu/WebGPUBaseView.java +0 -61
  36. package/android/src/main/java/com/webgpu/WebGPUModule.java +0 -50
  37. package/android/src/main/java/com/webgpu/WebGPUSurfaceView.java +0 -41
  38. package/android/src/main/java/com/webgpu/WebGPUSurfaceViewWithSC.java +0 -79
  39. package/android/src/main/java/com/webgpu/WebGPUTextureView.java +0 -46
  40. package/android/src/main/java/com/webgpu/WebGPUView.java +0 -108
  41. package/android/src/main/java/com/webgpu/WebGPUViewManager.java +0 -38
  42. package/android/src/main/java/com/webgpu/WebGPUViewPackage.java +0 -50
  43. package/android/src/newarch/com/webgpu/WebGPUViewManagerSpec.java +0 -24
  44. package/apple/ApplePlatformContext.h +0 -44
  45. package/apple/ApplePlatformContext.mm +0 -302
  46. package/apple/AppleVideoPlayer.h +0 -31
  47. package/apple/AppleVideoPlayer.mm +0 -314
  48. package/apple/MetalView.h +0 -13
  49. package/apple/MetalView.mm +0 -50
  50. package/apple/RNWGUIKit.h +0 -16
  51. package/apple/WebGPUModule.h +0 -13
  52. package/apple/WebGPUModule.mm +0 -89
  53. package/apple/WebGPUView.h +0 -12
  54. package/apple/WebGPUView.mm +0 -66
  55. package/cpp/WGPULogger.h +0 -100
  56. package/cpp/dawn_logging.cpp +0 -119
  57. package/cpp/jsi/EnumMapper.h +0 -45
  58. package/cpp/jsi/JSIConverter.h +0 -473
  59. package/cpp/jsi/NativeObject.h +0 -607
  60. package/cpp/jsi/Promise.cpp +0 -44
  61. package/cpp/jsi/Promise.h +0 -35
  62. package/cpp/jsi/RuntimeAwareCache.cpp +0 -7
  63. package/cpp/jsi/RuntimeAwareCache.h +0 -100
  64. package/cpp/jsi/RuntimeLifecycleMonitor.cpp +0 -72
  65. package/cpp/jsi/RuntimeLifecycleMonitor.h +0 -32
  66. package/cpp/rnwgpu/ArrayBuffer.h +0 -117
  67. package/cpp/rnwgpu/PlatformContext.h +0 -127
  68. package/cpp/rnwgpu/RNWebGPUManager.cpp +0 -237
  69. package/cpp/rnwgpu/RNWebGPUManager.h +0 -46
  70. package/cpp/rnwgpu/SurfaceRegistry.h +0 -230
  71. package/cpp/rnwgpu/api/Canvas.h +0 -57
  72. package/cpp/rnwgpu/api/Convertors.h +0 -783
  73. package/cpp/rnwgpu/api/External.h +0 -12
  74. package/cpp/rnwgpu/api/GPU.cpp +0 -154
  75. package/cpp/rnwgpu/api/GPU.h +0 -58
  76. package/cpp/rnwgpu/api/GPUAdapter.cpp +0 -267
  77. package/cpp/rnwgpu/api/GPUAdapter.h +0 -59
  78. package/cpp/rnwgpu/api/GPUAdapterInfo.h +0 -57
  79. package/cpp/rnwgpu/api/GPUBindGroup.cpp +0 -3
  80. package/cpp/rnwgpu/api/GPUBindGroup.h +0 -51
  81. package/cpp/rnwgpu/api/GPUBindGroupLayout.h +0 -52
  82. package/cpp/rnwgpu/api/GPUBuffer.cpp +0 -97
  83. package/cpp/rnwgpu/api/GPUBuffer.h +0 -87
  84. package/cpp/rnwgpu/api/GPUCanvasContext.cpp +0 -67
  85. package/cpp/rnwgpu/api/GPUCanvasContext.h +0 -66
  86. package/cpp/rnwgpu/api/GPUCommandBuffer.h +0 -45
  87. package/cpp/rnwgpu/api/GPUCommandEncoder.cpp +0 -179
  88. package/cpp/rnwgpu/api/GPUCommandEncoder.h +0 -111
  89. package/cpp/rnwgpu/api/GPUCompilationInfo.h +0 -79
  90. package/cpp/rnwgpu/api/GPUCompilationMessage.h +0 -36
  91. package/cpp/rnwgpu/api/GPUComputePassEncoder.cpp +0 -60
  92. package/cpp/rnwgpu/api/GPUComputePassEncoder.h +0 -85
  93. package/cpp/rnwgpu/api/GPUComputePipeline.cpp +0 -12
  94. package/cpp/rnwgpu/api/GPUComputePipeline.h +0 -60
  95. package/cpp/rnwgpu/api/GPUDevice.cpp +0 -545
  96. package/cpp/rnwgpu/api/GPUDevice.h +0 -265
  97. package/cpp/rnwgpu/api/GPUDeviceLostInfo.cpp +0 -7
  98. package/cpp/rnwgpu/api/GPUDeviceLostInfo.h +0 -40
  99. package/cpp/rnwgpu/api/GPUError.h +0 -35
  100. package/cpp/rnwgpu/api/GPUExtent3D.h +0 -66
  101. package/cpp/rnwgpu/api/GPUExternalTexture.cpp +0 -335
  102. package/cpp/rnwgpu/api/GPUExternalTexture.h +0 -90
  103. package/cpp/rnwgpu/api/GPUFeatures.h +0 -206
  104. package/cpp/rnwgpu/api/GPUInternalError.h +0 -31
  105. package/cpp/rnwgpu/api/GPUOrigin2D.h +0 -55
  106. package/cpp/rnwgpu/api/GPUOrigin3D.h +0 -62
  107. package/cpp/rnwgpu/api/GPUOutOfMemoryError.h +0 -33
  108. package/cpp/rnwgpu/api/GPUPipelineLayout.h +0 -45
  109. package/cpp/rnwgpu/api/GPUQuerySet.cpp +0 -11
  110. package/cpp/rnwgpu/api/GPUQuerySet.h +0 -73
  111. package/cpp/rnwgpu/api/GPUQueue.cpp +0 -169
  112. package/cpp/rnwgpu/api/GPUQueue.h +0 -81
  113. package/cpp/rnwgpu/api/GPURenderBundle.h +0 -44
  114. package/cpp/rnwgpu/api/GPURenderBundleEncoder.cpp +0 -131
  115. package/cpp/rnwgpu/api/GPURenderBundleEncoder.h +0 -110
  116. package/cpp/rnwgpu/api/GPURenderPassEncoder.cpp +0 -165
  117. package/cpp/rnwgpu/api/GPURenderPassEncoder.h +0 -130
  118. package/cpp/rnwgpu/api/GPURenderPipeline.cpp +0 -13
  119. package/cpp/rnwgpu/api/GPURenderPipeline.h +0 -61
  120. package/cpp/rnwgpu/api/GPUSampler.h +0 -44
  121. package/cpp/rnwgpu/api/GPUShaderModule.cpp +0 -50
  122. package/cpp/rnwgpu/api/GPUShaderModule.h +0 -66
  123. package/cpp/rnwgpu/api/GPUSharedTextureMemory.cpp +0 -80
  124. package/cpp/rnwgpu/api/GPUSharedTextureMemory.h +0 -71
  125. package/cpp/rnwgpu/api/GPUSupportedLimits.cpp +0 -129
  126. package/cpp/rnwgpu/api/GPUSupportedLimits.h +0 -131
  127. package/cpp/rnwgpu/api/GPUTexture.cpp +0 -47
  128. package/cpp/rnwgpu/api/GPUTexture.h +0 -162
  129. package/cpp/rnwgpu/api/GPUTextureView.h +0 -44
  130. package/cpp/rnwgpu/api/GPUUncapturedErrorEvent.h +0 -71
  131. package/cpp/rnwgpu/api/GPUValidationError.h +0 -32
  132. package/cpp/rnwgpu/api/ImageBitmap.h +0 -48
  133. package/cpp/rnwgpu/api/RNWebGPU.h +0 -241
  134. package/cpp/rnwgpu/api/RnFeatures.h +0 -53
  135. package/cpp/rnwgpu/api/VideoFrame.h +0 -76
  136. package/cpp/rnwgpu/api/VideoPlayer.h +0 -69
  137. package/cpp/rnwgpu/api/descriptors/GPUBindGroupDescriptor.h +0 -65
  138. package/cpp/rnwgpu/api/descriptors/GPUBindGroupEntry.h +0 -81
  139. package/cpp/rnwgpu/api/descriptors/GPUBindGroupLayoutDescriptor.h +0 -57
  140. package/cpp/rnwgpu/api/descriptors/GPUBindGroupLayoutEntry.h +0 -98
  141. package/cpp/rnwgpu/api/descriptors/GPUBlendComponent.h +0 -58
  142. package/cpp/rnwgpu/api/descriptors/GPUBlendState.h +0 -53
  143. package/cpp/rnwgpu/api/descriptors/GPUBufferBinding.h +0 -57
  144. package/cpp/rnwgpu/api/descriptors/GPUBufferBindingLayout.h +0 -57
  145. package/cpp/rnwgpu/api/descriptors/GPUBufferDescriptor.h +0 -60
  146. package/cpp/rnwgpu/api/descriptors/GPUBufferUsage.h +0 -39
  147. package/cpp/rnwgpu/api/descriptors/GPUCanvasConfiguration.h +0 -76
  148. package/cpp/rnwgpu/api/descriptors/GPUColor.h +0 -67
  149. package/cpp/rnwgpu/api/descriptors/GPUColorTargetState.h +0 -59
  150. package/cpp/rnwgpu/api/descriptors/GPUColorWrite.h +0 -29
  151. package/cpp/rnwgpu/api/descriptors/GPUCommandBufferDescriptor.h +0 -46
  152. package/cpp/rnwgpu/api/descriptors/GPUCommandEncoderDescriptor.h +0 -46
  153. package/cpp/rnwgpu/api/descriptors/GPUComputePassDescriptor.h +0 -57
  154. package/cpp/rnwgpu/api/descriptors/GPUComputePassTimestampWrites.h +0 -59
  155. package/cpp/rnwgpu/api/descriptors/GPUComputePipelineDescriptor.h +0 -68
  156. package/cpp/rnwgpu/api/descriptors/GPUDawnTogglesDescriptor.h +0 -57
  157. package/cpp/rnwgpu/api/descriptors/GPUDepthStencilState.h +0 -104
  158. package/cpp/rnwgpu/api/descriptors/GPUDeviceDescriptor.h +0 -115
  159. package/cpp/rnwgpu/api/descriptors/GPUExternalTextureBindingLayout.h +0 -39
  160. package/cpp/rnwgpu/api/descriptors/GPUExternalTextureDescriptor.h +0 -82
  161. package/cpp/rnwgpu/api/descriptors/GPUFragmentState.h +0 -74
  162. package/cpp/rnwgpu/api/descriptors/GPUImageCopyBuffer.h +0 -63
  163. package/cpp/rnwgpu/api/descriptors/GPUImageCopyExternalImage.h +0 -63
  164. package/cpp/rnwgpu/api/descriptors/GPUImageCopyTexture.h +0 -66
  165. package/cpp/rnwgpu/api/descriptors/GPUImageCopyTextureTagged.h +0 -82
  166. package/cpp/rnwgpu/api/descriptors/GPUImageDataLayout.h +0 -55
  167. package/cpp/rnwgpu/api/descriptors/GPUMapMode.h +0 -22
  168. package/cpp/rnwgpu/api/descriptors/GPUMultisampleState.h +0 -55
  169. package/cpp/rnwgpu/api/descriptors/GPUPipelineLayoutDescriptor.h +0 -58
  170. package/cpp/rnwgpu/api/descriptors/GPUPrimitiveState.h +0 -70
  171. package/cpp/rnwgpu/api/descriptors/GPUProgrammableStage.h +0 -62
  172. package/cpp/rnwgpu/api/descriptors/GPUQuerySetDescriptor.h +0 -56
  173. package/cpp/rnwgpu/api/descriptors/GPUQueueDescriptor.h +0 -44
  174. package/cpp/rnwgpu/api/descriptors/GPURenderBundleDescriptor.h +0 -46
  175. package/cpp/rnwgpu/api/descriptors/GPURenderBundleEncoderDescriptor.h +0 -81
  176. package/cpp/rnwgpu/api/descriptors/GPURenderPassColorAttachment.h +0 -82
  177. package/cpp/rnwgpu/api/descriptors/GPURenderPassDepthStencilAttachment.h +0 -102
  178. package/cpp/rnwgpu/api/descriptors/GPURenderPassDescriptor.h +0 -93
  179. package/cpp/rnwgpu/api/descriptors/GPURenderPassTimestampWrites.h +0 -59
  180. package/cpp/rnwgpu/api/descriptors/GPURenderPipelineDescriptor.h +0 -104
  181. package/cpp/rnwgpu/api/descriptors/GPURequestAdapterOptions.h +0 -52
  182. package/cpp/rnwgpu/api/descriptors/GPUSamplerBindingLayout.h +0 -46
  183. package/cpp/rnwgpu/api/descriptors/GPUSamplerDescriptor.h +0 -111
  184. package/cpp/rnwgpu/api/descriptors/GPUShaderModuleCompilationHint.h +0 -61
  185. package/cpp/rnwgpu/api/descriptors/GPUShaderModuleDescriptor.h +0 -63
  186. package/cpp/rnwgpu/api/descriptors/GPUShaderStage.h +0 -25
  187. package/cpp/rnwgpu/api/descriptors/GPUSharedTextureMemoryDescriptor.h +0 -62
  188. package/cpp/rnwgpu/api/descriptors/GPUStencilFaceState.h +0 -65
  189. package/cpp/rnwgpu/api/descriptors/GPUStorageTextureBindingLayout.h +0 -60
  190. package/cpp/rnwgpu/api/descriptors/GPUTextureBindingLayout.h +0 -60
  191. package/cpp/rnwgpu/api/descriptors/GPUTextureDescriptor.h +0 -92
  192. package/cpp/rnwgpu/api/descriptors/GPUTextureUsage.h +0 -29
  193. package/cpp/rnwgpu/api/descriptors/GPUTextureViewDescriptor.h +0 -92
  194. package/cpp/rnwgpu/api/descriptors/GPUUncapturedErrorEventInit.h +0 -65
  195. package/cpp/rnwgpu/api/descriptors/GPUVertexAttribute.h +0 -54
  196. package/cpp/rnwgpu/api/descriptors/GPUVertexBufferLayout.h +0 -63
  197. package/cpp/rnwgpu/api/descriptors/GPUVertexState.h +0 -74
  198. package/cpp/rnwgpu/api/descriptors/Unions.h +0 -1979
  199. package/cpp/rnwgpu/async/AsyncDispatcher.h +0 -28
  200. package/cpp/rnwgpu/async/AsyncRunner.cpp +0 -215
  201. package/cpp/rnwgpu/async/AsyncRunner.h +0 -53
  202. package/cpp/rnwgpu/async/AsyncTaskHandle.cpp +0 -181
  203. package/cpp/rnwgpu/async/AsyncTaskHandle.h +0 -55
  204. package/cpp/rnwgpu/async/JSIMicrotaskDispatcher.cpp +0 -23
  205. package/cpp/rnwgpu/async/JSIMicrotaskDispatcher.h +0 -22
  206. package/cpp/webgpu/webgpu.h +0 -4979
  207. package/cpp/webgpu/webgpu_cpp.h +0 -10059
  208. package/cpp/webgpu/webgpu_cpp_chained_struct.h +0 -57
  209. package/cpp/webgpu/webgpu_cpp_print.h +0 -2844
  210. package/cpp/webgpu/webgpu_enum_class_bitmasks.h +0 -161
  211. package/lib/commonjs/Canvas.js +0 -55
  212. package/lib/commonjs/Canvas.js.map +0 -1
  213. package/lib/commonjs/NativeWebGPUModule.js +0 -10
  214. package/lib/commonjs/NativeWebGPUModule.js.map +0 -1
  215. package/lib/commonjs/Offscreen.js +0 -103
  216. package/lib/commonjs/Offscreen.js.map +0 -1
  217. package/lib/commonjs/WebGPUViewNativeComponent.js +0 -10
  218. package/lib/commonjs/WebGPUViewNativeComponent.js.map +0 -1
  219. package/lib/commonjs/WebGPUViewNativeComponent.web.js +0 -103
  220. package/lib/commonjs/WebGPUViewNativeComponent.web.js.map +0 -1
  221. package/lib/commonjs/WebPolyfillGPUModule.js +0 -40
  222. package/lib/commonjs/WebPolyfillGPUModule.js.map +0 -1
  223. package/lib/commonjs/external/ModuleProxy.js +0 -36
  224. package/lib/commonjs/external/ModuleProxy.js.map +0 -1
  225. package/lib/commonjs/external/index.js +0 -17
  226. package/lib/commonjs/external/index.js.map +0 -1
  227. package/lib/commonjs/external/reanimated/ReanimatedProxy.js +0 -18
  228. package/lib/commonjs/external/reanimated/ReanimatedProxy.js.map +0 -1
  229. package/lib/commonjs/external/reanimated/index.js +0 -21
  230. package/lib/commonjs/external/reanimated/index.js.map +0 -1
  231. package/lib/commonjs/external/reanimated/registerWebGPUForReanimated.js +0 -49
  232. package/lib/commonjs/external/reanimated/registerWebGPUForReanimated.js.map +0 -1
  233. package/lib/commonjs/hooks.js +0 -83
  234. package/lib/commonjs/hooks.js.map +0 -1
  235. package/lib/commonjs/main/index.js +0 -91
  236. package/lib/commonjs/main/index.js.map +0 -1
  237. package/lib/commonjs/main/index.web.js +0 -51
  238. package/lib/commonjs/main/index.web.js.map +0 -1
  239. package/lib/commonjs/types.js +0 -2
  240. package/lib/commonjs/types.js.map +0 -1
  241. package/lib/commonjs/utils.js +0 -11
  242. package/lib/commonjs/utils.js.map +0 -1
  243. package/lib/module/Canvas.js +0 -46
  244. package/lib/module/Canvas.js.map +0 -1
  245. package/lib/module/NativeWebGPUModule.js +0 -4
  246. package/lib/module/NativeWebGPUModule.js.map +0 -1
  247. package/lib/module/Offscreen.js +0 -96
  248. package/lib/module/Offscreen.js.map +0 -1
  249. package/lib/module/WebGPUViewNativeComponent.js +0 -4
  250. package/lib/module/WebGPUViewNativeComponent.js.map +0 -1
  251. package/lib/module/WebGPUViewNativeComponent.web.js +0 -96
  252. package/lib/module/WebGPUViewNativeComponent.web.js.map +0 -1
  253. package/lib/module/WebPolyfillGPUModule.js +0 -38
  254. package/lib/module/WebPolyfillGPUModule.js.map +0 -1
  255. package/lib/module/external/ModuleProxy.js +0 -28
  256. package/lib/module/external/ModuleProxy.js.map +0 -1
  257. package/lib/module/external/index.js +0 -2
  258. package/lib/module/external/index.js.map +0 -1
  259. package/lib/module/external/reanimated/ReanimatedProxy.js +0 -12
  260. package/lib/module/external/reanimated/ReanimatedProxy.js.map +0 -1
  261. package/lib/module/external/reanimated/index.js +0 -3
  262. package/lib/module/external/reanimated/index.js.map +0 -1
  263. package/lib/module/external/reanimated/registerWebGPUForReanimated.js +0 -42
  264. package/lib/module/external/reanimated/registerWebGPUForReanimated.js.map +0 -1
  265. package/lib/module/hooks.js +0 -70
  266. package/lib/module/hooks.js.map +0 -1
  267. package/lib/module/main/index.js +0 -33
  268. package/lib/module/main/index.js.map +0 -1
  269. package/lib/module/main/index.web.js +0 -8
  270. package/lib/module/main/index.web.js.map +0 -1
  271. package/lib/module/types.js +0 -2
  272. package/lib/module/types.js.map +0 -1
  273. package/lib/module/utils.js +0 -5
  274. package/lib/module/utils.js.map +0 -1
  275. package/lib/typescript/babel.config.d.ts +0 -3
  276. package/lib/typescript/babel.config.d.ts.map +0 -1
  277. package/lib/typescript/jest.config.d.ts +0 -9
  278. package/lib/typescript/jest.config.d.ts.map +0 -1
  279. package/lib/typescript/lib/commonjs/Canvas.d.ts +0 -7
  280. package/lib/typescript/lib/commonjs/Canvas.d.ts.map +0 -1
  281. package/lib/typescript/lib/commonjs/NativeWebGPUModule.d.ts +0 -5
  282. package/lib/typescript/lib/commonjs/NativeWebGPUModule.d.ts.map +0 -1
  283. package/lib/typescript/lib/commonjs/Offscreen.d.ts +0 -26
  284. package/lib/typescript/lib/commonjs/Offscreen.d.ts.map +0 -1
  285. package/lib/typescript/lib/commonjs/WebGPUViewNativeComponent.d.ts +0 -5
  286. package/lib/typescript/lib/commonjs/WebGPUViewNativeComponent.d.ts.map +0 -1
  287. package/lib/typescript/lib/commonjs/WebGPUViewNativeComponent.web.d.ts +0 -4
  288. package/lib/typescript/lib/commonjs/WebGPUViewNativeComponent.web.d.ts.map +0 -1
  289. package/lib/typescript/lib/commonjs/WebPolyfillGPUModule.d.ts +0 -2
  290. package/lib/typescript/lib/commonjs/WebPolyfillGPUModule.d.ts.map +0 -1
  291. package/lib/typescript/lib/commonjs/external/ModuleProxy.d.ts +0 -12
  292. package/lib/typescript/lib/commonjs/external/ModuleProxy.d.ts.map +0 -1
  293. package/lib/typescript/lib/commonjs/external/index.d.ts.map +0 -1
  294. package/lib/typescript/lib/commonjs/external/reanimated/ReanimatedProxy.d.ts +0 -6
  295. package/lib/typescript/lib/commonjs/external/reanimated/ReanimatedProxy.d.ts.map +0 -1
  296. package/lib/typescript/lib/commonjs/external/reanimated/index.d.ts +0 -4
  297. package/lib/typescript/lib/commonjs/external/reanimated/index.d.ts.map +0 -1
  298. package/lib/typescript/lib/commonjs/external/reanimated/registerWebGPUForReanimated.d.ts +0 -9
  299. package/lib/typescript/lib/commonjs/external/reanimated/registerWebGPUForReanimated.d.ts.map +0 -1
  300. package/lib/typescript/lib/commonjs/hooks.d.ts +0 -18
  301. package/lib/typescript/lib/commonjs/hooks.d.ts.map +0 -1
  302. package/lib/typescript/lib/commonjs/index.d.ts +0 -2
  303. package/lib/typescript/lib/commonjs/main/index.d.ts +0 -3
  304. package/lib/typescript/lib/commonjs/main/index.d.ts.map +0 -1
  305. package/lib/typescript/lib/commonjs/main/index.web.d.ts +0 -2
  306. package/lib/typescript/lib/commonjs/main/index.web.d.ts.map +0 -1
  307. package/lib/typescript/lib/commonjs/types.d.ts +0 -1
  308. package/lib/typescript/lib/commonjs/types.d.ts.map +0 -1
  309. package/lib/typescript/lib/commonjs/utils.d.ts +0 -3
  310. package/lib/typescript/lib/commonjs/utils.d.ts.map +0 -1
  311. package/lib/typescript/lib/module/Canvas.d.ts +0 -8
  312. package/lib/typescript/lib/module/Canvas.d.ts.map +0 -1
  313. package/lib/typescript/lib/module/NativeWebGPUModule.d.ts +0 -3
  314. package/lib/typescript/lib/module/NativeWebGPUModule.d.ts.map +0 -1
  315. package/lib/typescript/lib/module/Offscreen.d.ts +0 -25
  316. package/lib/typescript/lib/module/Offscreen.d.ts.map +0 -1
  317. package/lib/typescript/lib/module/WebGPUViewNativeComponent.d.ts +0 -3
  318. package/lib/typescript/lib/module/WebGPUViewNativeComponent.d.ts.map +0 -1
  319. package/lib/typescript/lib/module/WebGPUViewNativeComponent.web.d.ts +0 -3
  320. package/lib/typescript/lib/module/WebGPUViewNativeComponent.web.d.ts.map +0 -1
  321. package/lib/typescript/lib/module/WebPolyfillGPUModule.d.ts +0 -2
  322. package/lib/typescript/lib/module/WebPolyfillGPUModule.d.ts.map +0 -1
  323. package/lib/typescript/lib/module/external/ModuleProxy.d.ts +0 -7
  324. package/lib/typescript/lib/module/external/ModuleProxy.d.ts.map +0 -1
  325. package/lib/typescript/lib/module/external/index.d.ts.map +0 -1
  326. package/lib/typescript/lib/module/external/reanimated/ReanimatedProxy.d.ts +0 -5
  327. package/lib/typescript/lib/module/external/reanimated/ReanimatedProxy.d.ts.map +0 -1
  328. package/lib/typescript/lib/module/external/reanimated/index.d.ts.map +0 -1
  329. package/lib/typescript/lib/module/external/reanimated/registerWebGPUForReanimated.d.ts +0 -2
  330. package/lib/typescript/lib/module/external/reanimated/registerWebGPUForReanimated.d.ts.map +0 -1
  331. package/lib/typescript/lib/module/hooks.d.ts +0 -18
  332. package/lib/typescript/lib/module/hooks.d.ts.map +0 -1
  333. package/lib/typescript/lib/module/index.d.ts +0 -2
  334. package/lib/typescript/lib/module/main/index.d.ts.map +0 -1
  335. package/lib/typescript/lib/module/main/index.web.d.ts +0 -5
  336. package/lib/typescript/lib/module/main/index.web.d.ts.map +0 -1
  337. package/lib/typescript/lib/module/types.d.ts +0 -1
  338. package/lib/typescript/lib/module/types.d.ts.map +0 -1
  339. package/lib/typescript/lib/module/utils.d.ts +0 -2
  340. package/lib/typescript/lib/module/utils.d.ts.map +0 -1
  341. package/lib/typescript/src/Canvas.d.ts.map +0 -1
  342. package/lib/typescript/src/NativeWebGPUModule.d.ts.map +0 -1
  343. package/lib/typescript/src/Offscreen.d.ts.map +0 -1
  344. package/lib/typescript/src/WebGPUViewNativeComponent.d.ts.map +0 -1
  345. package/lib/typescript/src/WebGPUViewNativeComponent.web.d.ts +0 -9
  346. package/lib/typescript/src/WebGPUViewNativeComponent.web.d.ts.map +0 -1
  347. package/lib/typescript/src/WebPolyfillGPUModule.d.ts +0 -2
  348. package/lib/typescript/src/WebPolyfillGPUModule.d.ts.map +0 -1
  349. package/lib/typescript/src/external/ModuleProxy.d.ts.map +0 -1
  350. package/lib/typescript/src/external/index.d.ts +0 -2
  351. package/lib/typescript/src/external/index.d.ts.map +0 -1
  352. package/lib/typescript/src/external/reanimated/ReanimatedProxy.d.ts.map +0 -1
  353. package/lib/typescript/src/external/reanimated/index.d.ts +0 -3
  354. package/lib/typescript/src/external/reanimated/index.d.ts.map +0 -1
  355. package/lib/typescript/src/external/reanimated/registerWebGPUForReanimated.d.ts.map +0 -1
  356. package/lib/typescript/src/hooks.d.ts.map +0 -1
  357. package/lib/typescript/src/index.d.ts.map +0 -1
  358. package/lib/typescript/src/main/index.d.ts +0 -6
  359. package/lib/typescript/src/main/index.d.ts.map +0 -1
  360. package/lib/typescript/src/main/index.web.d.ts +0 -6
  361. package/lib/typescript/src/main/index.web.d.ts.map +0 -1
  362. package/lib/typescript/src/types.d.ts.map +0 -1
  363. package/lib/typescript/src/utils.d.ts +0 -2
  364. package/lib/typescript/src/utils.d.ts.map +0 -1
  365. package/libs/android/arm64-v8a/libwebgpu_dawn.so +0 -0
  366. package/libs/android/armeabi-v7a/libwebgpu_dawn.so +0 -0
  367. package/libs/android/x86/libwebgpu_dawn.so +0 -0
  368. package/libs/android/x86_64/libwebgpu_dawn.so +0 -0
  369. package/libs/apple/libwebgpu_dawn.xcframework/Info.plist +0 -59
  370. package/libs/apple/libwebgpu_dawn.xcframework/ios-arm64/libwebgpu_dawn.a +0 -0
  371. package/libs/apple/libwebgpu_dawn.xcframework/ios-arm64_x86_64-simulator/libwebgpu_dawn.a +0 -0
  372. package/libs/apple/libwebgpu_dawn.xcframework/macos-arm64_x86_64/libwebgpu_dawn.a +0 -0
  373. package/react-native-wgpu.podspec +0 -47
  374. package/src/Canvas.tsx +0 -76
  375. package/src/NativeWebGPUModule.ts +0 -9
  376. package/src/Offscreen.ts +0 -113
  377. package/src/WebGPUViewNativeComponent.ts +0 -11
  378. package/src/WebGPUViewNativeComponent.web.ts +0 -113
  379. package/src/WebPolyfillGPUModule.ts +0 -53
  380. package/src/external/ModuleProxy.ts +0 -30
  381. package/src/external/index.ts +0 -1
  382. package/src/external/reanimated/ReanimatedProxy.ts +0 -19
  383. package/src/external/reanimated/index.ts +0 -2
  384. package/src/external/reanimated/registerWebGPUForReanimated.ts +0 -43
  385. package/src/hooks.tsx +0 -93
  386. package/src/index.tsx +0 -91
  387. package/src/main/index.tsx +0 -40
  388. package/src/main/index.web.tsx +0 -8
  389. package/src/types.ts +0 -102
  390. package/src/utils.ts +0 -4
  391. /package/lib/typescript/{src → webgpu/src}/Canvas.d.ts +0 -0
  392. /package/lib/typescript/{src → webgpu/src}/NativeWebGPUModule.d.ts +0 -0
  393. /package/lib/typescript/{src → webgpu/src}/Offscreen.d.ts +0 -0
  394. /package/lib/typescript/{src → webgpu/src}/WebGPUViewNativeComponent.d.ts +0 -0
  395. /package/lib/typescript/{src → webgpu/src}/external/ModuleProxy.d.ts +0 -0
  396. /package/lib/typescript/{lib/module → webgpu/src}/external/index.d.ts +0 -0
  397. /package/lib/typescript/{src → webgpu/src}/external/reanimated/ReanimatedProxy.d.ts +0 -0
  398. /package/lib/typescript/{lib/module → webgpu/src}/external/reanimated/index.d.ts +0 -0
  399. /package/lib/typescript/{src → webgpu/src}/external/reanimated/registerWebGPUForReanimated.d.ts +0 -0
  400. /package/lib/typescript/{src → webgpu/src}/hooks.d.ts +0 -0
  401. /package/lib/typescript/{src → webgpu/src}/index.d.ts +0 -0
  402. /package/lib/typescript/{lib/module → webgpu/src}/main/index.d.ts +0 -0
  403. /package/lib/typescript/{src → webgpu/src}/types.d.ts +0 -0
  404. /package/lib/typescript/{eslint.config.d.mts → webgpu-shim/eslint.config.d.mts} +0 -0
  405. /package/lib/typescript/{lib/commonjs/external → webgpu-shim/lib/commonjs}/index.d.ts +0 -0
@@ -1,545 +0,0 @@
1
- #include "GPUDevice.h"
2
-
3
- #include <memory>
4
- #include <string>
5
- #include <unordered_set>
6
- #include <utility>
7
- #include <vector>
8
-
9
- #include "Convertors.h"
10
- #include "JSIConverter.h"
11
-
12
- #include "GPUFeatures.h"
13
- #include "GPUInternalError.h"
14
- #include "GPUOutOfMemoryError.h"
15
- #include "GPUValidationError.h"
16
- #include "RnFeatures.h"
17
-
18
- namespace rnwgpu {
19
-
20
- void GPUDevice::notifyDeviceLost(wgpu::DeviceLostReason reason,
21
- std::string message) {
22
- if (_lostSettled) {
23
- return;
24
- }
25
-
26
- _lostSettled = true;
27
- _lostInfo = std::make_shared<GPUDeviceLostInfo>(reason, std::move(message));
28
-
29
- if (_lostResolve.has_value()) {
30
- auto resolve = std::move(*_lostResolve);
31
- _lostResolve.reset();
32
- resolve([info = _lostInfo](jsi::Runtime &runtime) mutable {
33
- return JSIConverter<std::shared_ptr<GPUDeviceLostInfo>>::toJSI(runtime,
34
- info);
35
- });
36
- }
37
-
38
- _lostHandle.reset();
39
- }
40
-
41
- void GPUDevice::forceLossForTesting() {
42
- // wgpu::StringView view("forceLossForTesting invoked from JS");
43
- _instance.ForceLoss(wgpu::DeviceLostReason::Unknown,
44
- "forceLossForTesting invoked from JS");
45
- }
46
-
47
- std::shared_ptr<GPUBuffer>
48
- GPUDevice::createBuffer(std::shared_ptr<GPUBufferDescriptor> descriptor) {
49
- wgpu::BufferDescriptor desc;
50
- Convertor conv;
51
- if (!conv(desc, descriptor)) {
52
- throw std::runtime_error(
53
- "GPUDevice::createBuffer(): Error with GPUBufferDescriptor");
54
- }
55
- auto result = _instance.CreateBuffer(&desc);
56
- return std::make_shared<GPUBuffer>(result, _async,
57
- descriptor->label.value_or(""));
58
- }
59
-
60
- std::shared_ptr<GPUSupportedLimits> GPUDevice::getLimits() {
61
- wgpu::Limits limits{};
62
- if (!_instance.GetLimits(&limits)) {
63
- throw std::runtime_error("failed to get device limits");
64
- }
65
- return std::make_shared<GPUSupportedLimits>(limits);
66
- }
67
-
68
- std::shared_ptr<GPUQueue> GPUDevice::getQueue() {
69
- auto result = _instance.GetQueue();
70
- return std::make_shared<GPUQueue>(result, _async, _label);
71
- }
72
-
73
- std::shared_ptr<GPUCommandEncoder> GPUDevice::createCommandEncoder(
74
- std::optional<std::shared_ptr<GPUCommandEncoderDescriptor>> descriptor) {
75
- wgpu::CommandEncoderDescriptor desc;
76
- Convertor conv;
77
- if (!conv(desc, descriptor)) {
78
- throw std::runtime_error("Error with GPUCommandEncoderDescriptor");
79
- }
80
- auto result = _instance.CreateCommandEncoder(&desc);
81
- return std::make_shared<GPUCommandEncoder>(
82
- result,
83
- descriptor.has_value() ? descriptor.value()->label.value_or("") : "");
84
- }
85
-
86
- void GPUDevice::destroy() {
87
- _instance.Destroy();
88
- notifyDeviceLost(wgpu::DeviceLostReason::Destroyed, "device was destroyed");
89
- }
90
-
91
- std::shared_ptr<GPUTexture>
92
- GPUDevice::createTexture(std::shared_ptr<GPUTextureDescriptor> descriptor) {
93
- wgpu::TextureDescriptor desc;
94
- Convertor conv;
95
- if (!conv(desc, descriptor)) {
96
- throw std::runtime_error("Error with GPUTextureDescriptor");
97
- }
98
- auto texture = _instance.CreateTexture(&desc);
99
- return std::make_shared<GPUTexture>(texture, descriptor->label.value_or(""));
100
- }
101
-
102
- std::shared_ptr<GPUShaderModule> GPUDevice::createShaderModule(
103
- std::shared_ptr<GPUShaderModuleDescriptor> descriptor) {
104
- wgpu::ShaderSourceWGSL wgsl_desc{};
105
- wgpu::ShaderModuleDescriptor sm_desc{};
106
- Convertor conv;
107
- if (!conv(wgsl_desc.code, descriptor->code) ||
108
- !conv(sm_desc.label, descriptor->label)) {
109
- return {};
110
- }
111
- sm_desc.nextInChain = &wgsl_desc;
112
- if (descriptor->code.find('\0') != std::string::npos) {
113
- auto mod = _instance.CreateErrorShaderModule(
114
- &sm_desc, "The WGSL shader contains an illegal character '\\0'");
115
- return std::make_shared<GPUShaderModule>(mod, _async, sm_desc.label.data);
116
- }
117
- auto module = _instance.CreateShaderModule(&sm_desc);
118
- return std::make_shared<GPUShaderModule>(module, _async,
119
- descriptor->label.value_or(""));
120
- }
121
-
122
- std::shared_ptr<GPURenderPipeline> GPUDevice::createRenderPipeline(
123
- std::shared_ptr<GPURenderPipelineDescriptor> descriptor) {
124
- wgpu::RenderPipelineDescriptor desc{};
125
- Convertor conv;
126
- if (!conv(desc, descriptor)) {
127
- throw std::runtime_error("Error with GPURenderPipelineDescriptor");
128
- }
129
- // assert(desc.fragment != nullptr && "Fragment state must not be null");
130
- auto renderPipeline = _instance.CreateRenderPipeline(&desc);
131
- return std::make_shared<GPURenderPipeline>(renderPipeline,
132
- descriptor->label.value_or(""));
133
- }
134
-
135
- std::shared_ptr<GPUBindGroup>
136
- GPUDevice::createBindGroup(std::shared_ptr<GPUBindGroupDescriptor> descriptor) {
137
- Convertor conv;
138
- wgpu::BindGroupDescriptor desc{};
139
- if (!conv(desc.label, descriptor->label) ||
140
- !conv(desc.layout, descriptor->layout) ||
141
- !conv(desc.entries, desc.entryCount, descriptor->entries)) {
142
- throw std::runtime_error(
143
- "GPUBindGroup::createBindGroup(): Error with GPUBindGroupDescriptor");
144
- }
145
- auto bindGroup = _instance.CreateBindGroup(&desc);
146
- return std::make_shared<GPUBindGroup>(bindGroup,
147
- descriptor->label.value_or(""));
148
- }
149
-
150
- std::shared_ptr<GPUSampler> GPUDevice::createSampler(
151
- std::optional<std::shared_ptr<GPUSamplerDescriptor>> descriptor) {
152
- wgpu::SamplerDescriptor desc;
153
- Convertor conv;
154
- if (!conv(desc, descriptor)) {
155
- throw std::runtime_error("GPUDevice::createSampler(): Error with "
156
- "GPUSamplerDescriptor");
157
- }
158
- auto sampler = _instance.CreateSampler(&desc);
159
- return std::make_shared<GPUSampler>(
160
- sampler,
161
- descriptor.has_value() ? descriptor.value()->label.value_or("") : "");
162
- }
163
-
164
- std::shared_ptr<GPUComputePipeline> GPUDevice::createComputePipeline(
165
- std::shared_ptr<GPUComputePipelineDescriptor> descriptor) {
166
- wgpu::ComputePipelineDescriptor desc;
167
- Convertor conv;
168
- if (!conv(desc, descriptor)) {
169
- throw std::runtime_error("GPUDevice::createComputePipeline(): Error with "
170
- "GPUComputePipelineDescriptor");
171
- }
172
- auto computePipeline = _instance.CreateComputePipeline(&desc);
173
- return std::make_shared<GPUComputePipeline>(computePipeline,
174
- descriptor->label.value_or(""));
175
- }
176
-
177
- std::shared_ptr<GPUQuerySet>
178
- GPUDevice::createQuerySet(std::shared_ptr<GPUQuerySetDescriptor> descriptor) {
179
- wgpu::QuerySetDescriptor desc;
180
- Convertor conv;
181
- if (!conv(desc, descriptor)) {
182
- throw std::runtime_error("GPUDevice::createQuerySet(): Error with "
183
- "GPUQuerySetDescriptor");
184
- }
185
- auto querySet = _instance.CreateQuerySet(&desc);
186
- return std::make_shared<GPUQuerySet>(querySet,
187
- descriptor->label.value_or(""));
188
- }
189
-
190
- std::shared_ptr<GPURenderBundleEncoder> GPUDevice::createRenderBundleEncoder(
191
- std::shared_ptr<GPURenderBundleEncoderDescriptor> descriptor) {
192
- Convertor conv;
193
-
194
- wgpu::RenderBundleEncoderDescriptor desc{};
195
- if (!conv(desc.label, descriptor->label) ||
196
- !conv(desc.colorFormats, desc.colorFormatCount,
197
- descriptor->colorFormats) ||
198
- !conv(desc.depthStencilFormat, descriptor->depthStencilFormat) ||
199
- !conv(desc.sampleCount, descriptor->sampleCount) ||
200
- !conv(desc.depthReadOnly, descriptor->depthReadOnly) ||
201
- !conv(desc.stencilReadOnly, descriptor->stencilReadOnly)) {
202
- return {};
203
- }
204
- return std::make_shared<GPURenderBundleEncoder>(
205
- _instance.CreateRenderBundleEncoder(&desc),
206
- descriptor->label.value_or(""));
207
- }
208
-
209
- std::shared_ptr<GPUBindGroupLayout> GPUDevice::createBindGroupLayout(
210
- std::shared_ptr<GPUBindGroupLayoutDescriptor> descriptor) {
211
- Convertor conv;
212
-
213
- wgpu::BindGroupLayoutDescriptor desc{};
214
- if (!conv(desc.label, descriptor->label) ||
215
- !conv(desc.entries, desc.entryCount, descriptor->entries)) {
216
- return {};
217
- }
218
- return std::make_shared<GPUBindGroupLayout>(
219
- _instance.CreateBindGroupLayout(&desc), descriptor->label.value_or(""));
220
- }
221
-
222
- std::shared_ptr<GPUPipelineLayout> GPUDevice::createPipelineLayout(
223
- std::shared_ptr<GPUPipelineLayoutDescriptor> descriptor) {
224
- Convertor conv;
225
-
226
- wgpu::PipelineLayoutDescriptor desc{};
227
- if (!conv(desc.label, descriptor->label) ||
228
- !conv(desc.bindGroupLayouts, desc.bindGroupLayoutCount,
229
- descriptor->bindGroupLayouts)) {
230
- return {};
231
- }
232
- return std::make_shared<GPUPipelineLayout>(
233
- _instance.CreatePipelineLayout(&desc), descriptor->label.value_or(""));
234
- }
235
-
236
- std::shared_ptr<GPUExternalTexture> GPUDevice::importExternalTexture(
237
- std::shared_ptr<GPUExternalTextureDescriptor> descriptor) {
238
- // The import / begin-access / descriptor-build logic, plus the matching
239
- // EndAccess, all live on GPUExternalTexture so the begin/end lifecycle stays
240
- // in one translation unit (see GPUExternalTexture.cpp).
241
- return GPUExternalTexture::Create(_instance, std::move(descriptor));
242
- }
243
-
244
- std::shared_ptr<GPUSharedTextureMemory> GPUDevice::importSharedTextureMemory(
245
- std::shared_ptr<GPUSharedTextureMemoryDescriptor> descriptor) {
246
- if (!descriptor || descriptor->handle == nullptr) {
247
- throw std::runtime_error("GPUDevice::importSharedTextureMemory(): handle "
248
- "must be a non-null native pointer");
249
- }
250
-
251
- wgpu::SharedTextureMemoryDescriptor desc{};
252
- std::string label = descriptor->label.value_or("");
253
- if (!label.empty()) {
254
- desc.label = wgpu::StringView(label.c_str(), label.size());
255
- }
256
-
257
- #if defined(__APPLE__)
258
- wgpu::SharedTextureMemoryIOSurfaceDescriptor platformDesc{};
259
- platformDesc.ioSurface = descriptor->handle;
260
- // Default off: enabling it propagates StorageBinding into properties.usage,
261
- // which then forces memory.createTexture() (no-descriptor form) to validate
262
- // the format against storage capabilities. bgra8unorm (the standard
263
- // CVPixelBuffer format) only supports storage when the device opts into the
264
- // bgra8unorm-storage feature, so unconditionally setting this here breaks
265
- // the common sample-only case.
266
- platformDesc.allowStorageBinding = false;
267
- desc.nextInChain = &platformDesc;
268
- #elif defined(__ANDROID__)
269
- wgpu::SharedTextureMemoryAHardwareBufferDescriptor platformDesc{};
270
- platformDesc.handle = descriptor->handle;
271
- desc.nextInChain = &platformDesc;
272
- #else
273
- throw std::runtime_error(
274
- "GPUDevice::importSharedTextureMemory(): unsupported platform");
275
- #endif
276
-
277
- auto memory = _instance.ImportSharedTextureMemory(&desc);
278
- if (memory == nullptr) {
279
- throw std::runtime_error("GPUDevice::importSharedTextureMemory(): "
280
- "ImportSharedTextureMemory returned null - is the "
281
- "'shared-texture-memory-iosurface' (Apple) or "
282
- "'shared-texture-memory-ahardware-buffer' "
283
- "(Android) feature enabled on the device?");
284
- }
285
- return std::make_shared<GPUSharedTextureMemory>(std::move(memory),
286
- std::move(label));
287
- }
288
-
289
- async::AsyncTaskHandle GPUDevice::createComputePipelineAsync(
290
- std::shared_ptr<GPUComputePipelineDescriptor> descriptor) {
291
- wgpu::ComputePipelineDescriptor desc{};
292
- Convertor conv;
293
- if (!conv(desc, descriptor)) {
294
- throw std::runtime_error("GPUDevice::createComputePipeline(): Error with "
295
- "GPUComputePipelineDescriptor");
296
- }
297
-
298
- auto label = std::string(
299
- descriptor->label.has_value() ? descriptor->label.value() : "");
300
- auto pipelineHolder = std::make_shared<GPUComputePipeline>(nullptr, label);
301
-
302
- return _async->postTask([device = _instance, desc, descriptor,
303
- pipelineHolder](
304
- const async::AsyncTaskHandle::ResolveFunction
305
- &resolve,
306
- const async::AsyncTaskHandle::RejectFunction
307
- &reject) {
308
- (void)descriptor;
309
- device.CreateComputePipelineAsync(
310
- &desc, wgpu::CallbackMode::AllowProcessEvents,
311
- [pipelineHolder, resolve,
312
- reject](wgpu::CreatePipelineAsyncStatus status,
313
- wgpu::ComputePipeline pipeline, wgpu::StringView msg) {
314
- if (status == wgpu::CreatePipelineAsyncStatus::Success && pipeline) {
315
- pipelineHolder->_instance = pipeline;
316
- resolve([pipelineHolder](jsi::Runtime &runtime) mutable {
317
- return JSIConverter<std::shared_ptr<GPUComputePipeline>>::toJSI(
318
- runtime, pipelineHolder);
319
- });
320
- } else {
321
- std::string error =
322
- msg.length ? std::string(msg.data, msg.length)
323
- : "Failed to create compute pipeline";
324
- reject(std::move(error));
325
- }
326
- });
327
- });
328
- }
329
-
330
- async::AsyncTaskHandle GPUDevice::createRenderPipelineAsync(
331
- std::shared_ptr<GPURenderPipelineDescriptor> descriptor) {
332
- wgpu::RenderPipelineDescriptor desc{};
333
- Convertor conv;
334
- if (!conv(desc, descriptor)) {
335
- throw std::runtime_error(
336
- "GPUDevice::createRenderPipelineAsync(): Error with "
337
- "GPURenderPipelineDescriptor");
338
- }
339
-
340
- auto label = std::string(
341
- descriptor->label.has_value() ? descriptor->label.value() : "");
342
- auto pipelineHolder = std::make_shared<GPURenderPipeline>(nullptr, label);
343
-
344
- return _async->postTask([device = _instance, desc, descriptor,
345
- pipelineHolder](
346
- const async::AsyncTaskHandle::ResolveFunction
347
- &resolve,
348
- const async::AsyncTaskHandle::RejectFunction
349
- &reject) {
350
- (void)descriptor;
351
- device.CreateRenderPipelineAsync(
352
- &desc, wgpu::CallbackMode::AllowProcessEvents,
353
- [pipelineHolder, resolve,
354
- reject](wgpu::CreatePipelineAsyncStatus status,
355
- wgpu::RenderPipeline pipeline, wgpu::StringView msg) {
356
- if (status == wgpu::CreatePipelineAsyncStatus::Success && pipeline) {
357
- pipelineHolder->_instance = pipeline;
358
- resolve([pipelineHolder](jsi::Runtime &runtime) mutable {
359
- return JSIConverter<std::shared_ptr<GPURenderPipeline>>::toJSI(
360
- runtime, pipelineHolder);
361
- });
362
- } else {
363
- std::string error =
364
- msg.length ? std::string(msg.data, msg.length)
365
- : "Failed to create render pipeline";
366
- reject(std::move(error));
367
- }
368
- });
369
- });
370
- }
371
-
372
- void GPUDevice::pushErrorScope(wgpu::ErrorFilter filter) {
373
- _instance.PushErrorScope(filter);
374
- }
375
-
376
- async::AsyncTaskHandle GPUDevice::popErrorScope() {
377
- auto device = _instance;
378
-
379
- return _async->postTask([device](const async::AsyncTaskHandle::ResolveFunction
380
- &resolve,
381
- const async::AsyncTaskHandle::RejectFunction
382
- &reject) {
383
- device.PopErrorScope(
384
- wgpu::CallbackMode::AllowProcessEvents,
385
- [resolve, reject](wgpu::PopErrorScopeStatus status,
386
- wgpu::ErrorType type, wgpu::StringView message) {
387
- if (status == wgpu::PopErrorScopeStatus::Error ||
388
- status == wgpu::PopErrorScopeStatus::CallbackCancelled) {
389
- reject("PopErrorScope failed");
390
- return;
391
- }
392
-
393
- std::string messageString =
394
- message.length ? std::string(message.data, message.length) : "";
395
-
396
- switch (type) {
397
- case wgpu::ErrorType::NoError:
398
- resolve([](jsi::Runtime &runtime) mutable {
399
- return jsi::Value::null();
400
- });
401
- break;
402
- case wgpu::ErrorType::Validation: {
403
- auto error = std::make_shared<GPUValidationError>(messageString);
404
- resolve([error](jsi::Runtime &runtime) mutable {
405
- return JSIConverter<std::shared_ptr<GPUValidationError>>::toJSI(
406
- runtime, error);
407
- });
408
- break;
409
- }
410
- case wgpu::ErrorType::OutOfMemory: {
411
- auto error = std::make_shared<GPUOutOfMemoryError>(messageString);
412
- resolve([error](jsi::Runtime &runtime) mutable {
413
- return JSIConverter<std::shared_ptr<GPUOutOfMemoryError>>::toJSI(
414
- runtime, error);
415
- });
416
- break;
417
- }
418
- case wgpu::ErrorType::Internal:
419
- case wgpu::ErrorType::Unknown: {
420
- auto error = std::make_shared<GPUInternalError>(messageString);
421
- resolve([error](jsi::Runtime &runtime) mutable {
422
- return JSIConverter<std::shared_ptr<GPUInternalError>>::toJSI(
423
- runtime, error);
424
- });
425
- break;
426
- }
427
- default:
428
- reject("Unhandled GPU error type");
429
- return;
430
- }
431
- });
432
- });
433
- }
434
-
435
- std::unordered_set<std::string> GPUDevice::getFeatures() {
436
- wgpu::SupportedFeatures supportedFeatures;
437
- _instance.GetFeatures(&supportedFeatures);
438
- std::unordered_set<std::string> result;
439
- std::unordered_set<wgpu::FeatureName> enabled;
440
- for (size_t i = 0; i < supportedFeatures.featureCount; ++i) {
441
- auto feature = supportedFeatures.features[i];
442
- enabled.insert(feature);
443
- std::string name;
444
- convertEnumToJSUnion(feature, &name);
445
- result.insert(name);
446
- }
447
- maybeSynthesizeRnNativeTextureFeature(enabled, result);
448
- return result;
449
- }
450
-
451
- async::AsyncTaskHandle GPUDevice::getLost() {
452
- if (_lostHandle.has_value()) {
453
- return *_lostHandle;
454
- }
455
-
456
- if (_lostSettled && _lostInfo) {
457
- return _async->postTask(
458
- [info = _lostInfo](
459
- const async::AsyncTaskHandle::ResolveFunction &resolve,
460
- const async::AsyncTaskHandle::RejectFunction & /*reject*/) {
461
- resolve([info](jsi::Runtime &runtime) mutable {
462
- return JSIConverter<std::shared_ptr<GPUDeviceLostInfo>>::toJSI(
463
- runtime, info);
464
- });
465
- },
466
- false);
467
- }
468
-
469
- auto handle = _async->postTask(
470
- [this](const async::AsyncTaskHandle::ResolveFunction &resolve,
471
- const async::AsyncTaskHandle::RejectFunction & /*reject*/) {
472
- if (_lostSettled && _lostInfo) {
473
- resolve([info = _lostInfo](jsi::Runtime &runtime) mutable {
474
- return JSIConverter<std::shared_ptr<GPUDeviceLostInfo>>::toJSI(
475
- runtime, info);
476
- });
477
- return;
478
- }
479
-
480
- _lostResolve = resolve;
481
- },
482
- false);
483
-
484
- _lostHandle = handle;
485
- return handle;
486
- }
487
- void GPUDevice::addEventListener(std::string type, jsi::Function callback) {
488
- auto funcPtr = std::make_shared<jsi::Function>(std::move(callback));
489
- _eventListeners[type].push_back(funcPtr);
490
- }
491
-
492
- void GPUDevice::removeEventListener(std::string type, jsi::Function callback) {
493
- // Note: Since jsi::Function doesn't support equality comparison,
494
- // we cannot reliably remove a specific listener. This is a no-op.
495
- // Most use cases (like BabylonJS) only need addEventListener to work.
496
- (void)type;
497
- (void)callback;
498
- }
499
-
500
- void GPUDevice::notifyUncapturedError(wgpu::ErrorType type,
501
- std::string message) {
502
- auto it = _eventListeners.find("uncapturederror");
503
- if (it == _eventListeners.end() || it->second.empty()) {
504
- return;
505
- }
506
-
507
- auto runtime = getCreationRuntime();
508
- if (runtime == nullptr) {
509
- return;
510
- }
511
-
512
- // Create the appropriate error object based on type
513
- GPUErrorVariant error;
514
- switch (type) {
515
- case wgpu::ErrorType::Validation:
516
- error = std::make_shared<GPUValidationError>(message);
517
- break;
518
- case wgpu::ErrorType::OutOfMemory:
519
- error = std::make_shared<GPUOutOfMemoryError>(message);
520
- break;
521
- case wgpu::ErrorType::Internal:
522
- case wgpu::ErrorType::Unknown:
523
- default:
524
- error = std::make_shared<GPUInternalError>(message);
525
- break;
526
- }
527
-
528
- // Create the event object
529
- auto event = std::make_shared<GPUUncapturedErrorEvent>(std::move(error));
530
- auto eventValue =
531
- JSIConverter<std::shared_ptr<GPUUncapturedErrorEvent>>::toJSI(*runtime,
532
- event);
533
-
534
- // Call all registered listeners
535
- for (const auto &listener : it->second) {
536
- try {
537
- listener->call(*runtime, eventValue);
538
- } catch (const std::exception &e) {
539
- // Log but don't throw - we don't want one listener to break others
540
- fprintf(stderr, "Error in uncapturederror listener: %s\n", e.what());
541
- }
542
- }
543
- }
544
-
545
- } // namespace rnwgpu