react-native-wgpu 0.5.13 → 0.5.15

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 (409) hide show
  1. package/README.md +4 -398
  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/{src → webgpu/src}/Canvas.d.ts +9 -0
  7. package/lib/typescript/webgpu/src/Canvas.d.ts.map +1 -0
  8. package/lib/typescript/webgpu/src/NativeWebGPUModule.d.ts.map +1 -0
  9. package/lib/typescript/webgpu/src/Offscreen.d.ts.map +1 -0
  10. package/lib/typescript/webgpu/src/WebGPUViewNativeComponent.d.ts.map +1 -0
  11. package/lib/typescript/webgpu/src/constants.d.ts +6 -0
  12. package/lib/typescript/webgpu/src/constants.d.ts.map +1 -0
  13. package/lib/typescript/webgpu/src/external/ModuleProxy.d.ts.map +1 -0
  14. package/lib/typescript/webgpu/src/external/index.d.ts.map +1 -0
  15. package/lib/typescript/webgpu/src/external/reanimated/ReanimatedProxy.d.ts.map +1 -0
  16. package/lib/typescript/webgpu/src/external/reanimated/index.d.ts.map +1 -0
  17. package/lib/typescript/webgpu/src/external/reanimated/registerWebGPUForReanimated.d.ts.map +1 -0
  18. package/lib/typescript/webgpu/src/hooks.d.ts.map +1 -0
  19. package/lib/typescript/{src → webgpu/src}/index.d.ts +5 -2
  20. package/lib/typescript/webgpu/src/index.d.ts.map +1 -0
  21. package/lib/typescript/webgpu/src/install.d.ts +34 -0
  22. package/lib/typescript/webgpu/src/install.d.ts.map +1 -0
  23. package/lib/typescript/webgpu/src/main/index.d.ts.map +1 -0
  24. package/lib/typescript/{src → webgpu/src}/types.d.ts +34 -2
  25. package/lib/typescript/webgpu/src/types.d.ts.map +1 -0
  26. package/lib/typescript/{eslint.config.d.mts.map → webgpu-shim/eslint.config.d.mts.map} +1 -1
  27. package/lib/typescript/{lib → webgpu-shim/lib}/commonjs/index.d.ts.map +1 -1
  28. package/lib/typescript/webgpu-shim/lib/module/index.d.ts +2 -0
  29. package/lib/typescript/{lib → webgpu-shim/lib}/module/index.d.ts.map +1 -1
  30. package/lib/typescript/webgpu-shim/src/index.d.ts +2 -0
  31. package/lib/typescript/webgpu-shim/src/index.d.ts.map +1 -0
  32. package/package.json +12 -81
  33. package/src/index.ts +9 -0
  34. package/LICENSE +0 -20
  35. package/android/CMakeLists.txt +0 -110
  36. package/android/build.gradle +0 -138
  37. package/android/cpp/AndroidPlatformContext.h +0 -328
  38. package/android/cpp/cpp-adapter.cpp +0 -71
  39. package/android/src/main/AndroidManifest.xml +0 -3
  40. package/android/src/main/java/com/webgpu/WebGPUAHBView.java +0 -298
  41. package/android/src/main/java/com/webgpu/WebGPUAPI.java +0 -20
  42. package/android/src/main/java/com/webgpu/WebGPUBaseView.java +0 -61
  43. package/android/src/main/java/com/webgpu/WebGPUModule.java +0 -50
  44. package/android/src/main/java/com/webgpu/WebGPUSurfaceView.java +0 -41
  45. package/android/src/main/java/com/webgpu/WebGPUSurfaceViewWithSC.java +0 -79
  46. package/android/src/main/java/com/webgpu/WebGPUTextureView.java +0 -46
  47. package/android/src/main/java/com/webgpu/WebGPUView.java +0 -108
  48. package/android/src/main/java/com/webgpu/WebGPUViewManager.java +0 -38
  49. package/android/src/main/java/com/webgpu/WebGPUViewPackage.java +0 -50
  50. package/android/src/newarch/com/webgpu/WebGPUViewManagerSpec.java +0 -24
  51. package/apple/ApplePlatformContext.h +0 -44
  52. package/apple/ApplePlatformContext.mm +0 -302
  53. package/apple/AppleVideoPlayer.h +0 -31
  54. package/apple/AppleVideoPlayer.mm +0 -314
  55. package/apple/MetalView.h +0 -13
  56. package/apple/MetalView.mm +0 -50
  57. package/apple/RNWGUIKit.h +0 -16
  58. package/apple/WebGPUModule.h +0 -13
  59. package/apple/WebGPUModule.mm +0 -89
  60. package/apple/WebGPUView.h +0 -12
  61. package/apple/WebGPUView.mm +0 -66
  62. package/cpp/WGPULogger.h +0 -100
  63. package/cpp/dawn_logging.cpp +0 -119
  64. package/cpp/jsi/EnumMapper.h +0 -45
  65. package/cpp/jsi/JSIConverter.h +0 -473
  66. package/cpp/jsi/NativeObject.h +0 -607
  67. package/cpp/jsi/Promise.cpp +0 -44
  68. package/cpp/jsi/Promise.h +0 -35
  69. package/cpp/jsi/RuntimeAwareCache.cpp +0 -7
  70. package/cpp/jsi/RuntimeAwareCache.h +0 -100
  71. package/cpp/jsi/RuntimeLifecycleMonitor.cpp +0 -72
  72. package/cpp/jsi/RuntimeLifecycleMonitor.h +0 -32
  73. package/cpp/rnwgpu/ArrayBuffer.h +0 -117
  74. package/cpp/rnwgpu/PlatformContext.h +0 -127
  75. package/cpp/rnwgpu/RNWebGPUManager.cpp +0 -237
  76. package/cpp/rnwgpu/RNWebGPUManager.h +0 -46
  77. package/cpp/rnwgpu/SurfaceRegistry.h +0 -230
  78. package/cpp/rnwgpu/api/Canvas.h +0 -57
  79. package/cpp/rnwgpu/api/Convertors.h +0 -783
  80. package/cpp/rnwgpu/api/External.h +0 -12
  81. package/cpp/rnwgpu/api/GPU.cpp +0 -154
  82. package/cpp/rnwgpu/api/GPU.h +0 -58
  83. package/cpp/rnwgpu/api/GPUAdapter.cpp +0 -267
  84. package/cpp/rnwgpu/api/GPUAdapter.h +0 -59
  85. package/cpp/rnwgpu/api/GPUAdapterInfo.h +0 -57
  86. package/cpp/rnwgpu/api/GPUBindGroup.cpp +0 -3
  87. package/cpp/rnwgpu/api/GPUBindGroup.h +0 -51
  88. package/cpp/rnwgpu/api/GPUBindGroupLayout.h +0 -52
  89. package/cpp/rnwgpu/api/GPUBuffer.cpp +0 -97
  90. package/cpp/rnwgpu/api/GPUBuffer.h +0 -87
  91. package/cpp/rnwgpu/api/GPUCanvasContext.cpp +0 -67
  92. package/cpp/rnwgpu/api/GPUCanvasContext.h +0 -66
  93. package/cpp/rnwgpu/api/GPUCommandBuffer.h +0 -45
  94. package/cpp/rnwgpu/api/GPUCommandEncoder.cpp +0 -179
  95. package/cpp/rnwgpu/api/GPUCommandEncoder.h +0 -111
  96. package/cpp/rnwgpu/api/GPUCompilationInfo.h +0 -79
  97. package/cpp/rnwgpu/api/GPUCompilationMessage.h +0 -36
  98. package/cpp/rnwgpu/api/GPUComputePassEncoder.cpp +0 -60
  99. package/cpp/rnwgpu/api/GPUComputePassEncoder.h +0 -85
  100. package/cpp/rnwgpu/api/GPUComputePipeline.cpp +0 -12
  101. package/cpp/rnwgpu/api/GPUComputePipeline.h +0 -60
  102. package/cpp/rnwgpu/api/GPUDevice.cpp +0 -545
  103. package/cpp/rnwgpu/api/GPUDevice.h +0 -265
  104. package/cpp/rnwgpu/api/GPUDeviceLostInfo.cpp +0 -7
  105. package/cpp/rnwgpu/api/GPUDeviceLostInfo.h +0 -40
  106. package/cpp/rnwgpu/api/GPUError.h +0 -35
  107. package/cpp/rnwgpu/api/GPUExtent3D.h +0 -66
  108. package/cpp/rnwgpu/api/GPUExternalTexture.cpp +0 -335
  109. package/cpp/rnwgpu/api/GPUExternalTexture.h +0 -90
  110. package/cpp/rnwgpu/api/GPUFeatures.h +0 -206
  111. package/cpp/rnwgpu/api/GPUInternalError.h +0 -31
  112. package/cpp/rnwgpu/api/GPUOrigin2D.h +0 -55
  113. package/cpp/rnwgpu/api/GPUOrigin3D.h +0 -62
  114. package/cpp/rnwgpu/api/GPUOutOfMemoryError.h +0 -33
  115. package/cpp/rnwgpu/api/GPUPipelineLayout.h +0 -45
  116. package/cpp/rnwgpu/api/GPUQuerySet.cpp +0 -11
  117. package/cpp/rnwgpu/api/GPUQuerySet.h +0 -73
  118. package/cpp/rnwgpu/api/GPUQueue.cpp +0 -169
  119. package/cpp/rnwgpu/api/GPUQueue.h +0 -81
  120. package/cpp/rnwgpu/api/GPURenderBundle.h +0 -44
  121. package/cpp/rnwgpu/api/GPURenderBundleEncoder.cpp +0 -131
  122. package/cpp/rnwgpu/api/GPURenderBundleEncoder.h +0 -110
  123. package/cpp/rnwgpu/api/GPURenderPassEncoder.cpp +0 -165
  124. package/cpp/rnwgpu/api/GPURenderPassEncoder.h +0 -130
  125. package/cpp/rnwgpu/api/GPURenderPipeline.cpp +0 -13
  126. package/cpp/rnwgpu/api/GPURenderPipeline.h +0 -61
  127. package/cpp/rnwgpu/api/GPUSampler.h +0 -44
  128. package/cpp/rnwgpu/api/GPUShaderModule.cpp +0 -50
  129. package/cpp/rnwgpu/api/GPUShaderModule.h +0 -66
  130. package/cpp/rnwgpu/api/GPUSharedTextureMemory.cpp +0 -80
  131. package/cpp/rnwgpu/api/GPUSharedTextureMemory.h +0 -71
  132. package/cpp/rnwgpu/api/GPUSupportedLimits.cpp +0 -129
  133. package/cpp/rnwgpu/api/GPUSupportedLimits.h +0 -131
  134. package/cpp/rnwgpu/api/GPUTexture.cpp +0 -47
  135. package/cpp/rnwgpu/api/GPUTexture.h +0 -162
  136. package/cpp/rnwgpu/api/GPUTextureView.h +0 -44
  137. package/cpp/rnwgpu/api/GPUUncapturedErrorEvent.h +0 -71
  138. package/cpp/rnwgpu/api/GPUValidationError.h +0 -32
  139. package/cpp/rnwgpu/api/ImageBitmap.h +0 -48
  140. package/cpp/rnwgpu/api/RNWebGPU.h +0 -241
  141. package/cpp/rnwgpu/api/RnFeatures.h +0 -53
  142. package/cpp/rnwgpu/api/VideoFrame.h +0 -76
  143. package/cpp/rnwgpu/api/VideoPlayer.h +0 -69
  144. package/cpp/rnwgpu/api/descriptors/GPUBindGroupDescriptor.h +0 -65
  145. package/cpp/rnwgpu/api/descriptors/GPUBindGroupEntry.h +0 -81
  146. package/cpp/rnwgpu/api/descriptors/GPUBindGroupLayoutDescriptor.h +0 -57
  147. package/cpp/rnwgpu/api/descriptors/GPUBindGroupLayoutEntry.h +0 -98
  148. package/cpp/rnwgpu/api/descriptors/GPUBlendComponent.h +0 -58
  149. package/cpp/rnwgpu/api/descriptors/GPUBlendState.h +0 -53
  150. package/cpp/rnwgpu/api/descriptors/GPUBufferBinding.h +0 -57
  151. package/cpp/rnwgpu/api/descriptors/GPUBufferBindingLayout.h +0 -57
  152. package/cpp/rnwgpu/api/descriptors/GPUBufferDescriptor.h +0 -60
  153. package/cpp/rnwgpu/api/descriptors/GPUBufferUsage.h +0 -39
  154. package/cpp/rnwgpu/api/descriptors/GPUCanvasConfiguration.h +0 -76
  155. package/cpp/rnwgpu/api/descriptors/GPUColor.h +0 -67
  156. package/cpp/rnwgpu/api/descriptors/GPUColorTargetState.h +0 -59
  157. package/cpp/rnwgpu/api/descriptors/GPUColorWrite.h +0 -29
  158. package/cpp/rnwgpu/api/descriptors/GPUCommandBufferDescriptor.h +0 -46
  159. package/cpp/rnwgpu/api/descriptors/GPUCommandEncoderDescriptor.h +0 -46
  160. package/cpp/rnwgpu/api/descriptors/GPUComputePassDescriptor.h +0 -57
  161. package/cpp/rnwgpu/api/descriptors/GPUComputePassTimestampWrites.h +0 -59
  162. package/cpp/rnwgpu/api/descriptors/GPUComputePipelineDescriptor.h +0 -68
  163. package/cpp/rnwgpu/api/descriptors/GPUDawnTogglesDescriptor.h +0 -57
  164. package/cpp/rnwgpu/api/descriptors/GPUDepthStencilState.h +0 -104
  165. package/cpp/rnwgpu/api/descriptors/GPUDeviceDescriptor.h +0 -115
  166. package/cpp/rnwgpu/api/descriptors/GPUExternalTextureBindingLayout.h +0 -39
  167. package/cpp/rnwgpu/api/descriptors/GPUExternalTextureDescriptor.h +0 -82
  168. package/cpp/rnwgpu/api/descriptors/GPUFragmentState.h +0 -74
  169. package/cpp/rnwgpu/api/descriptors/GPUImageCopyBuffer.h +0 -63
  170. package/cpp/rnwgpu/api/descriptors/GPUImageCopyExternalImage.h +0 -63
  171. package/cpp/rnwgpu/api/descriptors/GPUImageCopyTexture.h +0 -66
  172. package/cpp/rnwgpu/api/descriptors/GPUImageCopyTextureTagged.h +0 -82
  173. package/cpp/rnwgpu/api/descriptors/GPUImageDataLayout.h +0 -55
  174. package/cpp/rnwgpu/api/descriptors/GPUMapMode.h +0 -22
  175. package/cpp/rnwgpu/api/descriptors/GPUMultisampleState.h +0 -55
  176. package/cpp/rnwgpu/api/descriptors/GPUPipelineLayoutDescriptor.h +0 -58
  177. package/cpp/rnwgpu/api/descriptors/GPUPrimitiveState.h +0 -70
  178. package/cpp/rnwgpu/api/descriptors/GPUProgrammableStage.h +0 -62
  179. package/cpp/rnwgpu/api/descriptors/GPUQuerySetDescriptor.h +0 -56
  180. package/cpp/rnwgpu/api/descriptors/GPUQueueDescriptor.h +0 -44
  181. package/cpp/rnwgpu/api/descriptors/GPURenderBundleDescriptor.h +0 -46
  182. package/cpp/rnwgpu/api/descriptors/GPURenderBundleEncoderDescriptor.h +0 -81
  183. package/cpp/rnwgpu/api/descriptors/GPURenderPassColorAttachment.h +0 -82
  184. package/cpp/rnwgpu/api/descriptors/GPURenderPassDepthStencilAttachment.h +0 -102
  185. package/cpp/rnwgpu/api/descriptors/GPURenderPassDescriptor.h +0 -93
  186. package/cpp/rnwgpu/api/descriptors/GPURenderPassTimestampWrites.h +0 -59
  187. package/cpp/rnwgpu/api/descriptors/GPURenderPipelineDescriptor.h +0 -104
  188. package/cpp/rnwgpu/api/descriptors/GPURequestAdapterOptions.h +0 -52
  189. package/cpp/rnwgpu/api/descriptors/GPUSamplerBindingLayout.h +0 -46
  190. package/cpp/rnwgpu/api/descriptors/GPUSamplerDescriptor.h +0 -111
  191. package/cpp/rnwgpu/api/descriptors/GPUShaderModuleCompilationHint.h +0 -61
  192. package/cpp/rnwgpu/api/descriptors/GPUShaderModuleDescriptor.h +0 -63
  193. package/cpp/rnwgpu/api/descriptors/GPUShaderStage.h +0 -25
  194. package/cpp/rnwgpu/api/descriptors/GPUSharedTextureMemoryDescriptor.h +0 -62
  195. package/cpp/rnwgpu/api/descriptors/GPUStencilFaceState.h +0 -65
  196. package/cpp/rnwgpu/api/descriptors/GPUStorageTextureBindingLayout.h +0 -60
  197. package/cpp/rnwgpu/api/descriptors/GPUTextureBindingLayout.h +0 -60
  198. package/cpp/rnwgpu/api/descriptors/GPUTextureDescriptor.h +0 -92
  199. package/cpp/rnwgpu/api/descriptors/GPUTextureUsage.h +0 -29
  200. package/cpp/rnwgpu/api/descriptors/GPUTextureViewDescriptor.h +0 -92
  201. package/cpp/rnwgpu/api/descriptors/GPUUncapturedErrorEventInit.h +0 -65
  202. package/cpp/rnwgpu/api/descriptors/GPUVertexAttribute.h +0 -54
  203. package/cpp/rnwgpu/api/descriptors/GPUVertexBufferLayout.h +0 -63
  204. package/cpp/rnwgpu/api/descriptors/GPUVertexState.h +0 -74
  205. package/cpp/rnwgpu/api/descriptors/Unions.h +0 -1979
  206. package/cpp/rnwgpu/async/AsyncDispatcher.h +0 -28
  207. package/cpp/rnwgpu/async/AsyncRunner.cpp +0 -215
  208. package/cpp/rnwgpu/async/AsyncRunner.h +0 -53
  209. package/cpp/rnwgpu/async/AsyncTaskHandle.cpp +0 -181
  210. package/cpp/rnwgpu/async/AsyncTaskHandle.h +0 -55
  211. package/cpp/rnwgpu/async/JSIMicrotaskDispatcher.cpp +0 -23
  212. package/cpp/rnwgpu/async/JSIMicrotaskDispatcher.h +0 -22
  213. package/cpp/webgpu/webgpu.h +0 -4979
  214. package/cpp/webgpu/webgpu_cpp.h +0 -10059
  215. package/cpp/webgpu/webgpu_cpp_chained_struct.h +0 -57
  216. package/cpp/webgpu/webgpu_cpp_print.h +0 -2844
  217. package/cpp/webgpu/webgpu_enum_class_bitmasks.h +0 -161
  218. package/lib/commonjs/Canvas.js +0 -55
  219. package/lib/commonjs/Canvas.js.map +0 -1
  220. package/lib/commonjs/NativeWebGPUModule.js +0 -10
  221. package/lib/commonjs/NativeWebGPUModule.js.map +0 -1
  222. package/lib/commonjs/Offscreen.js +0 -103
  223. package/lib/commonjs/Offscreen.js.map +0 -1
  224. package/lib/commonjs/WebGPUViewNativeComponent.js +0 -10
  225. package/lib/commonjs/WebGPUViewNativeComponent.js.map +0 -1
  226. package/lib/commonjs/WebGPUViewNativeComponent.web.js +0 -103
  227. package/lib/commonjs/WebGPUViewNativeComponent.web.js.map +0 -1
  228. package/lib/commonjs/WebPolyfillGPUModule.js +0 -40
  229. package/lib/commonjs/WebPolyfillGPUModule.js.map +0 -1
  230. package/lib/commonjs/external/ModuleProxy.js +0 -36
  231. package/lib/commonjs/external/ModuleProxy.js.map +0 -1
  232. package/lib/commonjs/external/index.js +0 -17
  233. package/lib/commonjs/external/index.js.map +0 -1
  234. package/lib/commonjs/external/reanimated/ReanimatedProxy.js +0 -18
  235. package/lib/commonjs/external/reanimated/ReanimatedProxy.js.map +0 -1
  236. package/lib/commonjs/external/reanimated/index.js +0 -21
  237. package/lib/commonjs/external/reanimated/index.js.map +0 -1
  238. package/lib/commonjs/external/reanimated/registerWebGPUForReanimated.js +0 -49
  239. package/lib/commonjs/external/reanimated/registerWebGPUForReanimated.js.map +0 -1
  240. package/lib/commonjs/hooks.js +0 -83
  241. package/lib/commonjs/hooks.js.map +0 -1
  242. package/lib/commonjs/main/index.js +0 -91
  243. package/lib/commonjs/main/index.js.map +0 -1
  244. package/lib/commonjs/main/index.web.js +0 -51
  245. package/lib/commonjs/main/index.web.js.map +0 -1
  246. package/lib/commonjs/types.js +0 -2
  247. package/lib/commonjs/types.js.map +0 -1
  248. package/lib/commonjs/utils.js +0 -11
  249. package/lib/commonjs/utils.js.map +0 -1
  250. package/lib/module/Canvas.js +0 -46
  251. package/lib/module/Canvas.js.map +0 -1
  252. package/lib/module/NativeWebGPUModule.js +0 -4
  253. package/lib/module/NativeWebGPUModule.js.map +0 -1
  254. package/lib/module/Offscreen.js +0 -96
  255. package/lib/module/Offscreen.js.map +0 -1
  256. package/lib/module/WebGPUViewNativeComponent.js +0 -4
  257. package/lib/module/WebGPUViewNativeComponent.js.map +0 -1
  258. package/lib/module/WebGPUViewNativeComponent.web.js +0 -96
  259. package/lib/module/WebGPUViewNativeComponent.web.js.map +0 -1
  260. package/lib/module/WebPolyfillGPUModule.js +0 -38
  261. package/lib/module/WebPolyfillGPUModule.js.map +0 -1
  262. package/lib/module/external/ModuleProxy.js +0 -28
  263. package/lib/module/external/ModuleProxy.js.map +0 -1
  264. package/lib/module/external/index.js +0 -2
  265. package/lib/module/external/index.js.map +0 -1
  266. package/lib/module/external/reanimated/ReanimatedProxy.js +0 -12
  267. package/lib/module/external/reanimated/ReanimatedProxy.js.map +0 -1
  268. package/lib/module/external/reanimated/index.js +0 -3
  269. package/lib/module/external/reanimated/index.js.map +0 -1
  270. package/lib/module/external/reanimated/registerWebGPUForReanimated.js +0 -42
  271. package/lib/module/external/reanimated/registerWebGPUForReanimated.js.map +0 -1
  272. package/lib/module/hooks.js +0 -70
  273. package/lib/module/hooks.js.map +0 -1
  274. package/lib/module/main/index.js +0 -33
  275. package/lib/module/main/index.js.map +0 -1
  276. package/lib/module/main/index.web.js +0 -8
  277. package/lib/module/main/index.web.js.map +0 -1
  278. package/lib/module/types.js +0 -2
  279. package/lib/module/types.js.map +0 -1
  280. package/lib/module/utils.js +0 -5
  281. package/lib/module/utils.js.map +0 -1
  282. package/lib/typescript/babel.config.d.ts +0 -3
  283. package/lib/typescript/babel.config.d.ts.map +0 -1
  284. package/lib/typescript/jest.config.d.ts +0 -9
  285. package/lib/typescript/jest.config.d.ts.map +0 -1
  286. package/lib/typescript/lib/commonjs/Canvas.d.ts +0 -7
  287. package/lib/typescript/lib/commonjs/Canvas.d.ts.map +0 -1
  288. package/lib/typescript/lib/commonjs/NativeWebGPUModule.d.ts +0 -5
  289. package/lib/typescript/lib/commonjs/NativeWebGPUModule.d.ts.map +0 -1
  290. package/lib/typescript/lib/commonjs/Offscreen.d.ts +0 -26
  291. package/lib/typescript/lib/commonjs/Offscreen.d.ts.map +0 -1
  292. package/lib/typescript/lib/commonjs/WebGPUViewNativeComponent.d.ts +0 -5
  293. package/lib/typescript/lib/commonjs/WebGPUViewNativeComponent.d.ts.map +0 -1
  294. package/lib/typescript/lib/commonjs/WebGPUViewNativeComponent.web.d.ts +0 -4
  295. package/lib/typescript/lib/commonjs/WebGPUViewNativeComponent.web.d.ts.map +0 -1
  296. package/lib/typescript/lib/commonjs/WebPolyfillGPUModule.d.ts +0 -2
  297. package/lib/typescript/lib/commonjs/WebPolyfillGPUModule.d.ts.map +0 -1
  298. package/lib/typescript/lib/commonjs/external/ModuleProxy.d.ts +0 -12
  299. package/lib/typescript/lib/commonjs/external/ModuleProxy.d.ts.map +0 -1
  300. package/lib/typescript/lib/commonjs/external/index.d.ts.map +0 -1
  301. package/lib/typescript/lib/commonjs/external/reanimated/ReanimatedProxy.d.ts +0 -6
  302. package/lib/typescript/lib/commonjs/external/reanimated/ReanimatedProxy.d.ts.map +0 -1
  303. package/lib/typescript/lib/commonjs/external/reanimated/index.d.ts +0 -4
  304. package/lib/typescript/lib/commonjs/external/reanimated/index.d.ts.map +0 -1
  305. package/lib/typescript/lib/commonjs/external/reanimated/registerWebGPUForReanimated.d.ts +0 -9
  306. package/lib/typescript/lib/commonjs/external/reanimated/registerWebGPUForReanimated.d.ts.map +0 -1
  307. package/lib/typescript/lib/commonjs/hooks.d.ts +0 -18
  308. package/lib/typescript/lib/commonjs/hooks.d.ts.map +0 -1
  309. package/lib/typescript/lib/commonjs/index.d.ts +0 -2
  310. package/lib/typescript/lib/commonjs/main/index.d.ts +0 -3
  311. package/lib/typescript/lib/commonjs/main/index.d.ts.map +0 -1
  312. package/lib/typescript/lib/commonjs/main/index.web.d.ts +0 -2
  313. package/lib/typescript/lib/commonjs/main/index.web.d.ts.map +0 -1
  314. package/lib/typescript/lib/commonjs/types.d.ts +0 -1
  315. package/lib/typescript/lib/commonjs/types.d.ts.map +0 -1
  316. package/lib/typescript/lib/commonjs/utils.d.ts +0 -3
  317. package/lib/typescript/lib/commonjs/utils.d.ts.map +0 -1
  318. package/lib/typescript/lib/module/Canvas.d.ts +0 -8
  319. package/lib/typescript/lib/module/Canvas.d.ts.map +0 -1
  320. package/lib/typescript/lib/module/NativeWebGPUModule.d.ts +0 -3
  321. package/lib/typescript/lib/module/NativeWebGPUModule.d.ts.map +0 -1
  322. package/lib/typescript/lib/module/Offscreen.d.ts +0 -25
  323. package/lib/typescript/lib/module/Offscreen.d.ts.map +0 -1
  324. package/lib/typescript/lib/module/WebGPUViewNativeComponent.d.ts +0 -3
  325. package/lib/typescript/lib/module/WebGPUViewNativeComponent.d.ts.map +0 -1
  326. package/lib/typescript/lib/module/WebGPUViewNativeComponent.web.d.ts +0 -3
  327. package/lib/typescript/lib/module/WebGPUViewNativeComponent.web.d.ts.map +0 -1
  328. package/lib/typescript/lib/module/WebPolyfillGPUModule.d.ts +0 -2
  329. package/lib/typescript/lib/module/WebPolyfillGPUModule.d.ts.map +0 -1
  330. package/lib/typescript/lib/module/external/ModuleProxy.d.ts +0 -7
  331. package/lib/typescript/lib/module/external/ModuleProxy.d.ts.map +0 -1
  332. package/lib/typescript/lib/module/external/index.d.ts.map +0 -1
  333. package/lib/typescript/lib/module/external/reanimated/ReanimatedProxy.d.ts +0 -5
  334. package/lib/typescript/lib/module/external/reanimated/ReanimatedProxy.d.ts.map +0 -1
  335. package/lib/typescript/lib/module/external/reanimated/index.d.ts.map +0 -1
  336. package/lib/typescript/lib/module/external/reanimated/registerWebGPUForReanimated.d.ts +0 -2
  337. package/lib/typescript/lib/module/external/reanimated/registerWebGPUForReanimated.d.ts.map +0 -1
  338. package/lib/typescript/lib/module/hooks.d.ts +0 -18
  339. package/lib/typescript/lib/module/hooks.d.ts.map +0 -1
  340. package/lib/typescript/lib/module/index.d.ts +0 -2
  341. package/lib/typescript/lib/module/main/index.d.ts.map +0 -1
  342. package/lib/typescript/lib/module/main/index.web.d.ts +0 -5
  343. package/lib/typescript/lib/module/main/index.web.d.ts.map +0 -1
  344. package/lib/typescript/lib/module/types.d.ts +0 -1
  345. package/lib/typescript/lib/module/types.d.ts.map +0 -1
  346. package/lib/typescript/lib/module/utils.d.ts +0 -2
  347. package/lib/typescript/lib/module/utils.d.ts.map +0 -1
  348. package/lib/typescript/src/Canvas.d.ts.map +0 -1
  349. package/lib/typescript/src/NativeWebGPUModule.d.ts.map +0 -1
  350. package/lib/typescript/src/Offscreen.d.ts.map +0 -1
  351. package/lib/typescript/src/WebGPUViewNativeComponent.d.ts.map +0 -1
  352. package/lib/typescript/src/WebGPUViewNativeComponent.web.d.ts +0 -9
  353. package/lib/typescript/src/WebGPUViewNativeComponent.web.d.ts.map +0 -1
  354. package/lib/typescript/src/WebPolyfillGPUModule.d.ts +0 -2
  355. package/lib/typescript/src/WebPolyfillGPUModule.d.ts.map +0 -1
  356. package/lib/typescript/src/external/ModuleProxy.d.ts.map +0 -1
  357. package/lib/typescript/src/external/index.d.ts +0 -2
  358. package/lib/typescript/src/external/index.d.ts.map +0 -1
  359. package/lib/typescript/src/external/reanimated/ReanimatedProxy.d.ts.map +0 -1
  360. package/lib/typescript/src/external/reanimated/index.d.ts +0 -3
  361. package/lib/typescript/src/external/reanimated/index.d.ts.map +0 -1
  362. package/lib/typescript/src/external/reanimated/registerWebGPUForReanimated.d.ts.map +0 -1
  363. package/lib/typescript/src/hooks.d.ts.map +0 -1
  364. package/lib/typescript/src/index.d.ts.map +0 -1
  365. package/lib/typescript/src/main/index.d.ts +0 -6
  366. package/lib/typescript/src/main/index.d.ts.map +0 -1
  367. package/lib/typescript/src/main/index.web.d.ts +0 -6
  368. package/lib/typescript/src/main/index.web.d.ts.map +0 -1
  369. package/lib/typescript/src/types.d.ts.map +0 -1
  370. package/lib/typescript/src/utils.d.ts +0 -2
  371. package/lib/typescript/src/utils.d.ts.map +0 -1
  372. package/libs/android/arm64-v8a/libwebgpu_dawn.so +0 -0
  373. package/libs/android/armeabi-v7a/libwebgpu_dawn.so +0 -0
  374. package/libs/android/x86/libwebgpu_dawn.so +0 -0
  375. package/libs/android/x86_64/libwebgpu_dawn.so +0 -0
  376. package/libs/apple/libwebgpu_dawn.xcframework/Info.plist +0 -59
  377. package/libs/apple/libwebgpu_dawn.xcframework/ios-arm64/libwebgpu_dawn.a +0 -0
  378. package/libs/apple/libwebgpu_dawn.xcframework/ios-arm64_x86_64-simulator/libwebgpu_dawn.a +0 -0
  379. package/libs/apple/libwebgpu_dawn.xcframework/macos-arm64_x86_64/libwebgpu_dawn.a +0 -0
  380. package/react-native-wgpu.podspec +0 -47
  381. package/src/Canvas.tsx +0 -76
  382. package/src/NativeWebGPUModule.ts +0 -9
  383. package/src/Offscreen.ts +0 -113
  384. package/src/WebGPUViewNativeComponent.ts +0 -11
  385. package/src/WebGPUViewNativeComponent.web.ts +0 -113
  386. package/src/WebPolyfillGPUModule.ts +0 -53
  387. package/src/external/ModuleProxy.ts +0 -30
  388. package/src/external/index.ts +0 -1
  389. package/src/external/reanimated/ReanimatedProxy.ts +0 -19
  390. package/src/external/reanimated/index.ts +0 -2
  391. package/src/external/reanimated/registerWebGPUForReanimated.ts +0 -43
  392. package/src/hooks.tsx +0 -93
  393. package/src/index.tsx +0 -91
  394. package/src/main/index.tsx +0 -40
  395. package/src/main/index.web.tsx +0 -8
  396. package/src/types.ts +0 -102
  397. package/src/utils.ts +0 -4
  398. /package/lib/typescript/{src → webgpu/src}/NativeWebGPUModule.d.ts +0 -0
  399. /package/lib/typescript/{src → webgpu/src}/Offscreen.d.ts +0 -0
  400. /package/lib/typescript/{src → webgpu/src}/WebGPUViewNativeComponent.d.ts +0 -0
  401. /package/lib/typescript/{src → webgpu/src}/external/ModuleProxy.d.ts +0 -0
  402. /package/lib/typescript/{lib/module → webgpu/src}/external/index.d.ts +0 -0
  403. /package/lib/typescript/{src → webgpu/src}/external/reanimated/ReanimatedProxy.d.ts +0 -0
  404. /package/lib/typescript/{lib/module → webgpu/src}/external/reanimated/index.d.ts +0 -0
  405. /package/lib/typescript/{src → webgpu/src}/external/reanimated/registerWebGPUForReanimated.d.ts +0 -0
  406. /package/lib/typescript/{src → webgpu/src}/hooks.d.ts +0 -0
  407. /package/lib/typescript/{lib/module → webgpu/src}/main/index.d.ts +0 -0
  408. /package/lib/typescript/{eslint.config.d.mts → webgpu-shim/eslint.config.d.mts} +0 -0
  409. /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