react-native-webgpu 0.5.11

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 (378) hide show
  1. package/LICENSE +20 -0
  2. package/README.md +319 -0
  3. package/android/CMakeLists.txt +108 -0
  4. package/android/build.gradle +138 -0
  5. package/android/cpp/AndroidPlatformContext.h +207 -0
  6. package/android/cpp/cpp-adapter.cpp +71 -0
  7. package/android/src/main/AndroidManifest.xml +3 -0
  8. package/android/src/main/java/com/webgpu/WebGPUAHBView.java +298 -0
  9. package/android/src/main/java/com/webgpu/WebGPUAPI.java +20 -0
  10. package/android/src/main/java/com/webgpu/WebGPUBaseView.java +61 -0
  11. package/android/src/main/java/com/webgpu/WebGPUModule.java +50 -0
  12. package/android/src/main/java/com/webgpu/WebGPUSurfaceView.java +41 -0
  13. package/android/src/main/java/com/webgpu/WebGPUSurfaceViewWithSC.java +79 -0
  14. package/android/src/main/java/com/webgpu/WebGPUTextureView.java +46 -0
  15. package/android/src/main/java/com/webgpu/WebGPUView.java +108 -0
  16. package/android/src/main/java/com/webgpu/WebGPUViewManager.java +38 -0
  17. package/android/src/main/java/com/webgpu/WebGPUViewPackage.java +50 -0
  18. package/android/src/newarch/com/webgpu/WebGPUViewManagerSpec.java +24 -0
  19. package/apple/ApplePlatformContext.h +31 -0
  20. package/apple/ApplePlatformContext.mm +157 -0
  21. package/apple/MetalView.h +13 -0
  22. package/apple/MetalView.mm +50 -0
  23. package/apple/RNWGUIKit.h +16 -0
  24. package/apple/WebGPUModule.h +13 -0
  25. package/apple/WebGPUModule.mm +89 -0
  26. package/apple/WebGPUView.h +12 -0
  27. package/apple/WebGPUView.mm +66 -0
  28. package/cpp/WGPULogger.h +100 -0
  29. package/cpp/dawn_logging.cpp +119 -0
  30. package/cpp/jsi/EnumMapper.h +45 -0
  31. package/cpp/jsi/JSIConverter.h +473 -0
  32. package/cpp/jsi/NativeObject.h +607 -0
  33. package/cpp/jsi/Promise.cpp +44 -0
  34. package/cpp/jsi/Promise.h +35 -0
  35. package/cpp/jsi/RuntimeAwareCache.cpp +7 -0
  36. package/cpp/jsi/RuntimeAwareCache.h +100 -0
  37. package/cpp/jsi/RuntimeLifecycleMonitor.cpp +72 -0
  38. package/cpp/jsi/RuntimeLifecycleMonitor.h +32 -0
  39. package/cpp/rnwgpu/ArrayBuffer.h +73 -0
  40. package/cpp/rnwgpu/PlatformContext.h +46 -0
  41. package/cpp/rnwgpu/RNWebGPUManager.cpp +225 -0
  42. package/cpp/rnwgpu/RNWebGPUManager.h +46 -0
  43. package/cpp/rnwgpu/SurfaceRegistry.h +230 -0
  44. package/cpp/rnwgpu/api/Canvas.h +57 -0
  45. package/cpp/rnwgpu/api/Convertors.h +761 -0
  46. package/cpp/rnwgpu/api/External.h +12 -0
  47. package/cpp/rnwgpu/api/GPU.cpp +127 -0
  48. package/cpp/rnwgpu/api/GPU.h +58 -0
  49. package/cpp/rnwgpu/api/GPUAdapter.cpp +191 -0
  50. package/cpp/rnwgpu/api/GPUAdapter.h +59 -0
  51. package/cpp/rnwgpu/api/GPUAdapterInfo.h +57 -0
  52. package/cpp/rnwgpu/api/GPUBindGroup.cpp +3 -0
  53. package/cpp/rnwgpu/api/GPUBindGroup.h +51 -0
  54. package/cpp/rnwgpu/api/GPUBindGroupLayout.h +52 -0
  55. package/cpp/rnwgpu/api/GPUBuffer.cpp +97 -0
  56. package/cpp/rnwgpu/api/GPUBuffer.h +87 -0
  57. package/cpp/rnwgpu/api/GPUCanvasContext.cpp +67 -0
  58. package/cpp/rnwgpu/api/GPUCanvasContext.h +66 -0
  59. package/cpp/rnwgpu/api/GPUCommandBuffer.h +45 -0
  60. package/cpp/rnwgpu/api/GPUCommandEncoder.cpp +179 -0
  61. package/cpp/rnwgpu/api/GPUCommandEncoder.h +111 -0
  62. package/cpp/rnwgpu/api/GPUCompilationInfo.h +79 -0
  63. package/cpp/rnwgpu/api/GPUCompilationMessage.h +36 -0
  64. package/cpp/rnwgpu/api/GPUComputePassEncoder.cpp +60 -0
  65. package/cpp/rnwgpu/api/GPUComputePassEncoder.h +85 -0
  66. package/cpp/rnwgpu/api/GPUComputePipeline.cpp +12 -0
  67. package/cpp/rnwgpu/api/GPUComputePipeline.h +60 -0
  68. package/cpp/rnwgpu/api/GPUDevice.cpp +492 -0
  69. package/cpp/rnwgpu/api/GPUDevice.h +259 -0
  70. package/cpp/rnwgpu/api/GPUDeviceLostInfo.cpp +7 -0
  71. package/cpp/rnwgpu/api/GPUDeviceLostInfo.h +40 -0
  72. package/cpp/rnwgpu/api/GPUError.h +35 -0
  73. package/cpp/rnwgpu/api/GPUExtent3D.h +66 -0
  74. package/cpp/rnwgpu/api/GPUExternalTexture.h +45 -0
  75. package/cpp/rnwgpu/api/GPUFeatures.h +203 -0
  76. package/cpp/rnwgpu/api/GPUInternalError.h +31 -0
  77. package/cpp/rnwgpu/api/GPUOrigin2D.h +55 -0
  78. package/cpp/rnwgpu/api/GPUOrigin3D.h +62 -0
  79. package/cpp/rnwgpu/api/GPUOutOfMemoryError.h +33 -0
  80. package/cpp/rnwgpu/api/GPUPipelineLayout.h +45 -0
  81. package/cpp/rnwgpu/api/GPUQuerySet.cpp +11 -0
  82. package/cpp/rnwgpu/api/GPUQuerySet.h +73 -0
  83. package/cpp/rnwgpu/api/GPUQueue.cpp +169 -0
  84. package/cpp/rnwgpu/api/GPUQueue.h +81 -0
  85. package/cpp/rnwgpu/api/GPURenderBundle.h +44 -0
  86. package/cpp/rnwgpu/api/GPURenderBundleEncoder.cpp +131 -0
  87. package/cpp/rnwgpu/api/GPURenderBundleEncoder.h +110 -0
  88. package/cpp/rnwgpu/api/GPURenderPassEncoder.cpp +165 -0
  89. package/cpp/rnwgpu/api/GPURenderPassEncoder.h +130 -0
  90. package/cpp/rnwgpu/api/GPURenderPipeline.cpp +13 -0
  91. package/cpp/rnwgpu/api/GPURenderPipeline.h +61 -0
  92. package/cpp/rnwgpu/api/GPUSampler.h +44 -0
  93. package/cpp/rnwgpu/api/GPUShaderModule.cpp +51 -0
  94. package/cpp/rnwgpu/api/GPUShaderModule.h +66 -0
  95. package/cpp/rnwgpu/api/GPUSupportedLimits.cpp +129 -0
  96. package/cpp/rnwgpu/api/GPUSupportedLimits.h +131 -0
  97. package/cpp/rnwgpu/api/GPUTexture.cpp +47 -0
  98. package/cpp/rnwgpu/api/GPUTexture.h +162 -0
  99. package/cpp/rnwgpu/api/GPUTextureView.h +44 -0
  100. package/cpp/rnwgpu/api/GPUUncapturedErrorEvent.h +71 -0
  101. package/cpp/rnwgpu/api/GPUValidationError.h +32 -0
  102. package/cpp/rnwgpu/api/ImageBitmap.h +40 -0
  103. package/cpp/rnwgpu/api/RNWebGPU.h +199 -0
  104. package/cpp/rnwgpu/api/descriptors/GPUBindGroupDescriptor.h +65 -0
  105. package/cpp/rnwgpu/api/descriptors/GPUBindGroupEntry.h +78 -0
  106. package/cpp/rnwgpu/api/descriptors/GPUBindGroupLayoutDescriptor.h +57 -0
  107. package/cpp/rnwgpu/api/descriptors/GPUBindGroupLayoutEntry.h +98 -0
  108. package/cpp/rnwgpu/api/descriptors/GPUBlendComponent.h +58 -0
  109. package/cpp/rnwgpu/api/descriptors/GPUBlendState.h +53 -0
  110. package/cpp/rnwgpu/api/descriptors/GPUBufferBinding.h +57 -0
  111. package/cpp/rnwgpu/api/descriptors/GPUBufferBindingLayout.h +57 -0
  112. package/cpp/rnwgpu/api/descriptors/GPUBufferDescriptor.h +60 -0
  113. package/cpp/rnwgpu/api/descriptors/GPUBufferUsage.h +39 -0
  114. package/cpp/rnwgpu/api/descriptors/GPUCanvasConfiguration.h +76 -0
  115. package/cpp/rnwgpu/api/descriptors/GPUColor.h +67 -0
  116. package/cpp/rnwgpu/api/descriptors/GPUColorTargetState.h +59 -0
  117. package/cpp/rnwgpu/api/descriptors/GPUColorWrite.h +29 -0
  118. package/cpp/rnwgpu/api/descriptors/GPUCommandBufferDescriptor.h +46 -0
  119. package/cpp/rnwgpu/api/descriptors/GPUCommandEncoderDescriptor.h +46 -0
  120. package/cpp/rnwgpu/api/descriptors/GPUComputePassDescriptor.h +57 -0
  121. package/cpp/rnwgpu/api/descriptors/GPUComputePassTimestampWrites.h +59 -0
  122. package/cpp/rnwgpu/api/descriptors/GPUComputePipelineDescriptor.h +68 -0
  123. package/cpp/rnwgpu/api/descriptors/GPUDepthStencilState.h +104 -0
  124. package/cpp/rnwgpu/api/descriptors/GPUDeviceDescriptor.h +100 -0
  125. package/cpp/rnwgpu/api/descriptors/GPUExternalTextureBindingLayout.h +39 -0
  126. package/cpp/rnwgpu/api/descriptors/GPUExternalTextureDescriptor.h +80 -0
  127. package/cpp/rnwgpu/api/descriptors/GPUFragmentState.h +74 -0
  128. package/cpp/rnwgpu/api/descriptors/GPUImageCopyBuffer.h +63 -0
  129. package/cpp/rnwgpu/api/descriptors/GPUImageCopyExternalImage.h +63 -0
  130. package/cpp/rnwgpu/api/descriptors/GPUImageCopyTexture.h +66 -0
  131. package/cpp/rnwgpu/api/descriptors/GPUImageCopyTextureTagged.h +82 -0
  132. package/cpp/rnwgpu/api/descriptors/GPUImageDataLayout.h +55 -0
  133. package/cpp/rnwgpu/api/descriptors/GPUMapMode.h +22 -0
  134. package/cpp/rnwgpu/api/descriptors/GPUMultisampleState.h +55 -0
  135. package/cpp/rnwgpu/api/descriptors/GPUPipelineLayoutDescriptor.h +58 -0
  136. package/cpp/rnwgpu/api/descriptors/GPUPrimitiveState.h +70 -0
  137. package/cpp/rnwgpu/api/descriptors/GPUProgrammableStage.h +62 -0
  138. package/cpp/rnwgpu/api/descriptors/GPUQuerySetDescriptor.h +56 -0
  139. package/cpp/rnwgpu/api/descriptors/GPUQueueDescriptor.h +44 -0
  140. package/cpp/rnwgpu/api/descriptors/GPURenderBundleDescriptor.h +46 -0
  141. package/cpp/rnwgpu/api/descriptors/GPURenderBundleEncoderDescriptor.h +81 -0
  142. package/cpp/rnwgpu/api/descriptors/GPURenderPassColorAttachment.h +82 -0
  143. package/cpp/rnwgpu/api/descriptors/GPURenderPassDepthStencilAttachment.h +102 -0
  144. package/cpp/rnwgpu/api/descriptors/GPURenderPassDescriptor.h +93 -0
  145. package/cpp/rnwgpu/api/descriptors/GPURenderPassTimestampWrites.h +59 -0
  146. package/cpp/rnwgpu/api/descriptors/GPURenderPipelineDescriptor.h +104 -0
  147. package/cpp/rnwgpu/api/descriptors/GPURequestAdapterOptions.h +52 -0
  148. package/cpp/rnwgpu/api/descriptors/GPUSamplerBindingLayout.h +46 -0
  149. package/cpp/rnwgpu/api/descriptors/GPUSamplerDescriptor.h +111 -0
  150. package/cpp/rnwgpu/api/descriptors/GPUShaderModuleCompilationHint.h +61 -0
  151. package/cpp/rnwgpu/api/descriptors/GPUShaderModuleDescriptor.h +63 -0
  152. package/cpp/rnwgpu/api/descriptors/GPUShaderStage.h +25 -0
  153. package/cpp/rnwgpu/api/descriptors/GPUStencilFaceState.h +65 -0
  154. package/cpp/rnwgpu/api/descriptors/GPUStorageTextureBindingLayout.h +60 -0
  155. package/cpp/rnwgpu/api/descriptors/GPUTextureBindingLayout.h +60 -0
  156. package/cpp/rnwgpu/api/descriptors/GPUTextureDescriptor.h +92 -0
  157. package/cpp/rnwgpu/api/descriptors/GPUTextureUsage.h +29 -0
  158. package/cpp/rnwgpu/api/descriptors/GPUTextureViewDescriptor.h +92 -0
  159. package/cpp/rnwgpu/api/descriptors/GPUUncapturedErrorEventInit.h +65 -0
  160. package/cpp/rnwgpu/api/descriptors/GPUVertexAttribute.h +54 -0
  161. package/cpp/rnwgpu/api/descriptors/GPUVertexBufferLayout.h +63 -0
  162. package/cpp/rnwgpu/api/descriptors/GPUVertexState.h +74 -0
  163. package/cpp/rnwgpu/api/descriptors/Unions.h +1969 -0
  164. package/cpp/rnwgpu/async/AsyncDispatcher.h +28 -0
  165. package/cpp/rnwgpu/async/AsyncRunner.cpp +215 -0
  166. package/cpp/rnwgpu/async/AsyncRunner.h +53 -0
  167. package/cpp/rnwgpu/async/AsyncTaskHandle.cpp +181 -0
  168. package/cpp/rnwgpu/async/AsyncTaskHandle.h +55 -0
  169. package/cpp/rnwgpu/async/JSIMicrotaskDispatcher.cpp +23 -0
  170. package/cpp/rnwgpu/async/JSIMicrotaskDispatcher.h +22 -0
  171. package/cpp/webgpu/webgpu.h +4918 -0
  172. package/cpp/webgpu/webgpu_cpp.h +10294 -0
  173. package/cpp/webgpu/webgpu_cpp_chained_struct.h +57 -0
  174. package/cpp/webgpu/webgpu_cpp_print.h +2755 -0
  175. package/cpp/webgpu/webgpu_enum_class_bitmasks.h +161 -0
  176. package/lib/commonjs/Canvas.js +55 -0
  177. package/lib/commonjs/Canvas.js.map +1 -0
  178. package/lib/commonjs/NativeWebGPUModule.js +10 -0
  179. package/lib/commonjs/NativeWebGPUModule.js.map +1 -0
  180. package/lib/commonjs/Offscreen.js +103 -0
  181. package/lib/commonjs/Offscreen.js.map +1 -0
  182. package/lib/commonjs/WebGPUViewNativeComponent.js +10 -0
  183. package/lib/commonjs/WebGPUViewNativeComponent.js.map +1 -0
  184. package/lib/commonjs/WebGPUViewNativeComponent.web.js +103 -0
  185. package/lib/commonjs/WebGPUViewNativeComponent.web.js.map +1 -0
  186. package/lib/commonjs/WebPolyfillGPUModule.js +40 -0
  187. package/lib/commonjs/WebPolyfillGPUModule.js.map +1 -0
  188. package/lib/commonjs/external/ModuleProxy.js +36 -0
  189. package/lib/commonjs/external/ModuleProxy.js.map +1 -0
  190. package/lib/commonjs/external/index.js +17 -0
  191. package/lib/commonjs/external/index.js.map +1 -0
  192. package/lib/commonjs/external/reanimated/ReanimatedProxy.js +18 -0
  193. package/lib/commonjs/external/reanimated/ReanimatedProxy.js.map +1 -0
  194. package/lib/commonjs/external/reanimated/index.js +21 -0
  195. package/lib/commonjs/external/reanimated/index.js.map +1 -0
  196. package/lib/commonjs/external/reanimated/registerWebGPUForReanimated.js +49 -0
  197. package/lib/commonjs/external/reanimated/registerWebGPUForReanimated.js.map +1 -0
  198. package/lib/commonjs/hooks.js +83 -0
  199. package/lib/commonjs/hooks.js.map +1 -0
  200. package/lib/commonjs/index.js +17 -0
  201. package/lib/commonjs/index.js.map +1 -0
  202. package/lib/commonjs/main/index.js +91 -0
  203. package/lib/commonjs/main/index.js.map +1 -0
  204. package/lib/commonjs/main/index.web.js +51 -0
  205. package/lib/commonjs/main/index.web.js.map +1 -0
  206. package/lib/commonjs/types.js +2 -0
  207. package/lib/commonjs/types.js.map +1 -0
  208. package/lib/commonjs/utils.js +11 -0
  209. package/lib/commonjs/utils.js.map +1 -0
  210. package/lib/module/Canvas.js +46 -0
  211. package/lib/module/Canvas.js.map +1 -0
  212. package/lib/module/NativeWebGPUModule.js +4 -0
  213. package/lib/module/NativeWebGPUModule.js.map +1 -0
  214. package/lib/module/Offscreen.js +96 -0
  215. package/lib/module/Offscreen.js.map +1 -0
  216. package/lib/module/WebGPUViewNativeComponent.js +4 -0
  217. package/lib/module/WebGPUViewNativeComponent.js.map +1 -0
  218. package/lib/module/WebGPUViewNativeComponent.web.js +96 -0
  219. package/lib/module/WebGPUViewNativeComponent.web.js.map +1 -0
  220. package/lib/module/WebPolyfillGPUModule.js +38 -0
  221. package/lib/module/WebPolyfillGPUModule.js.map +1 -0
  222. package/lib/module/external/ModuleProxy.js +28 -0
  223. package/lib/module/external/ModuleProxy.js.map +1 -0
  224. package/lib/module/external/index.js +2 -0
  225. package/lib/module/external/index.js.map +1 -0
  226. package/lib/module/external/reanimated/ReanimatedProxy.js +12 -0
  227. package/lib/module/external/reanimated/ReanimatedProxy.js.map +1 -0
  228. package/lib/module/external/reanimated/index.js +3 -0
  229. package/lib/module/external/reanimated/index.js.map +1 -0
  230. package/lib/module/external/reanimated/registerWebGPUForReanimated.js +42 -0
  231. package/lib/module/external/reanimated/registerWebGPUForReanimated.js.map +1 -0
  232. package/lib/module/hooks.js +70 -0
  233. package/lib/module/hooks.js.map +1 -0
  234. package/lib/module/index.js +5 -0
  235. package/lib/module/index.js.map +1 -0
  236. package/lib/module/main/index.js +33 -0
  237. package/lib/module/main/index.js.map +1 -0
  238. package/lib/module/main/index.web.js +8 -0
  239. package/lib/module/main/index.web.js.map +1 -0
  240. package/lib/module/types.js +2 -0
  241. package/lib/module/types.js.map +1 -0
  242. package/lib/module/utils.js +5 -0
  243. package/lib/module/utils.js.map +1 -0
  244. package/lib/typescript/babel.config.d.ts +3 -0
  245. package/lib/typescript/babel.config.d.ts.map +1 -0
  246. package/lib/typescript/eslint.config.d.mts +3 -0
  247. package/lib/typescript/eslint.config.d.mts.map +1 -0
  248. package/lib/typescript/jest.config.d.ts +9 -0
  249. package/lib/typescript/jest.config.d.ts.map +1 -0
  250. package/lib/typescript/lib/commonjs/Canvas.d.ts +7 -0
  251. package/lib/typescript/lib/commonjs/Canvas.d.ts.map +1 -0
  252. package/lib/typescript/lib/commonjs/NativeWebGPUModule.d.ts +5 -0
  253. package/lib/typescript/lib/commonjs/NativeWebGPUModule.d.ts.map +1 -0
  254. package/lib/typescript/lib/commonjs/Offscreen.d.ts +26 -0
  255. package/lib/typescript/lib/commonjs/Offscreen.d.ts.map +1 -0
  256. package/lib/typescript/lib/commonjs/WebGPUViewNativeComponent.d.ts +5 -0
  257. package/lib/typescript/lib/commonjs/WebGPUViewNativeComponent.d.ts.map +1 -0
  258. package/lib/typescript/lib/commonjs/WebGPUViewNativeComponent.web.d.ts +4 -0
  259. package/lib/typescript/lib/commonjs/WebGPUViewNativeComponent.web.d.ts.map +1 -0
  260. package/lib/typescript/lib/commonjs/WebPolyfillGPUModule.d.ts +2 -0
  261. package/lib/typescript/lib/commonjs/WebPolyfillGPUModule.d.ts.map +1 -0
  262. package/lib/typescript/lib/commonjs/external/ModuleProxy.d.ts +12 -0
  263. package/lib/typescript/lib/commonjs/external/ModuleProxy.d.ts.map +1 -0
  264. package/lib/typescript/lib/commonjs/external/index.d.ts +2 -0
  265. package/lib/typescript/lib/commonjs/external/index.d.ts.map +1 -0
  266. package/lib/typescript/lib/commonjs/external/reanimated/ReanimatedProxy.d.ts +6 -0
  267. package/lib/typescript/lib/commonjs/external/reanimated/ReanimatedProxy.d.ts.map +1 -0
  268. package/lib/typescript/lib/commonjs/external/reanimated/index.d.ts +4 -0
  269. package/lib/typescript/lib/commonjs/external/reanimated/index.d.ts.map +1 -0
  270. package/lib/typescript/lib/commonjs/external/reanimated/registerWebGPUForReanimated.d.ts +9 -0
  271. package/lib/typescript/lib/commonjs/external/reanimated/registerWebGPUForReanimated.d.ts.map +1 -0
  272. package/lib/typescript/lib/commonjs/hooks.d.ts +18 -0
  273. package/lib/typescript/lib/commonjs/hooks.d.ts.map +1 -0
  274. package/lib/typescript/lib/commonjs/index.d.ts +2 -0
  275. package/lib/typescript/lib/commonjs/index.d.ts.map +1 -0
  276. package/lib/typescript/lib/commonjs/main/index.d.ts +3 -0
  277. package/lib/typescript/lib/commonjs/main/index.d.ts.map +1 -0
  278. package/lib/typescript/lib/commonjs/main/index.web.d.ts +2 -0
  279. package/lib/typescript/lib/commonjs/main/index.web.d.ts.map +1 -0
  280. package/lib/typescript/lib/commonjs/types.d.ts +1 -0
  281. package/lib/typescript/lib/commonjs/types.d.ts.map +1 -0
  282. package/lib/typescript/lib/commonjs/utils.d.ts +3 -0
  283. package/lib/typescript/lib/commonjs/utils.d.ts.map +1 -0
  284. package/lib/typescript/lib/module/Canvas.d.ts +8 -0
  285. package/lib/typescript/lib/module/Canvas.d.ts.map +1 -0
  286. package/lib/typescript/lib/module/NativeWebGPUModule.d.ts +3 -0
  287. package/lib/typescript/lib/module/NativeWebGPUModule.d.ts.map +1 -0
  288. package/lib/typescript/lib/module/Offscreen.d.ts +25 -0
  289. package/lib/typescript/lib/module/Offscreen.d.ts.map +1 -0
  290. package/lib/typescript/lib/module/WebGPUViewNativeComponent.d.ts +3 -0
  291. package/lib/typescript/lib/module/WebGPUViewNativeComponent.d.ts.map +1 -0
  292. package/lib/typescript/lib/module/WebGPUViewNativeComponent.web.d.ts +3 -0
  293. package/lib/typescript/lib/module/WebGPUViewNativeComponent.web.d.ts.map +1 -0
  294. package/lib/typescript/lib/module/WebPolyfillGPUModule.d.ts +2 -0
  295. package/lib/typescript/lib/module/WebPolyfillGPUModule.d.ts.map +1 -0
  296. package/lib/typescript/lib/module/external/ModuleProxy.d.ts +7 -0
  297. package/lib/typescript/lib/module/external/ModuleProxy.d.ts.map +1 -0
  298. package/lib/typescript/lib/module/external/index.d.ts +2 -0
  299. package/lib/typescript/lib/module/external/index.d.ts.map +1 -0
  300. package/lib/typescript/lib/module/external/reanimated/ReanimatedProxy.d.ts +5 -0
  301. package/lib/typescript/lib/module/external/reanimated/ReanimatedProxy.d.ts.map +1 -0
  302. package/lib/typescript/lib/module/external/reanimated/index.d.ts +3 -0
  303. package/lib/typescript/lib/module/external/reanimated/index.d.ts.map +1 -0
  304. package/lib/typescript/lib/module/external/reanimated/registerWebGPUForReanimated.d.ts +2 -0
  305. package/lib/typescript/lib/module/external/reanimated/registerWebGPUForReanimated.d.ts.map +1 -0
  306. package/lib/typescript/lib/module/hooks.d.ts +18 -0
  307. package/lib/typescript/lib/module/hooks.d.ts.map +1 -0
  308. package/lib/typescript/lib/module/index.d.ts +2 -0
  309. package/lib/typescript/lib/module/index.d.ts.map +1 -0
  310. package/lib/typescript/lib/module/main/index.d.ts +6 -0
  311. package/lib/typescript/lib/module/main/index.d.ts.map +1 -0
  312. package/lib/typescript/lib/module/main/index.web.d.ts +5 -0
  313. package/lib/typescript/lib/module/main/index.web.d.ts.map +1 -0
  314. package/lib/typescript/lib/module/types.d.ts +1 -0
  315. package/lib/typescript/lib/module/types.d.ts.map +1 -0
  316. package/lib/typescript/lib/module/utils.d.ts +2 -0
  317. package/lib/typescript/lib/module/utils.d.ts.map +1 -0
  318. package/lib/typescript/src/Canvas.d.ts +35 -0
  319. package/lib/typescript/src/Canvas.d.ts.map +1 -0
  320. package/lib/typescript/src/NativeWebGPUModule.d.ts +7 -0
  321. package/lib/typescript/src/NativeWebGPUModule.d.ts.map +1 -0
  322. package/lib/typescript/src/Offscreen.d.ts +30 -0
  323. package/lib/typescript/src/Offscreen.d.ts.map +1 -0
  324. package/lib/typescript/src/WebGPUViewNativeComponent.d.ts +9 -0
  325. package/lib/typescript/src/WebGPUViewNativeComponent.d.ts.map +1 -0
  326. package/lib/typescript/src/WebGPUViewNativeComponent.web.d.ts +9 -0
  327. package/lib/typescript/src/WebGPUViewNativeComponent.web.d.ts.map +1 -0
  328. package/lib/typescript/src/WebPolyfillGPUModule.d.ts +2 -0
  329. package/lib/typescript/src/WebPolyfillGPUModule.d.ts.map +1 -0
  330. package/lib/typescript/src/external/ModuleProxy.d.ts +11 -0
  331. package/lib/typescript/src/external/ModuleProxy.d.ts.map +1 -0
  332. package/lib/typescript/src/external/index.d.ts +2 -0
  333. package/lib/typescript/src/external/index.d.ts.map +1 -0
  334. package/lib/typescript/src/external/reanimated/ReanimatedProxy.d.ts +4 -0
  335. package/lib/typescript/src/external/reanimated/ReanimatedProxy.d.ts.map +1 -0
  336. package/lib/typescript/src/external/reanimated/index.d.ts +3 -0
  337. package/lib/typescript/src/external/reanimated/index.d.ts.map +1 -0
  338. package/lib/typescript/src/external/reanimated/registerWebGPUForReanimated.d.ts +8 -0
  339. package/lib/typescript/src/external/reanimated/registerWebGPUForReanimated.d.ts.map +1 -0
  340. package/lib/typescript/src/hooks.d.ts +27 -0
  341. package/lib/typescript/src/hooks.d.ts.map +1 -0
  342. package/lib/typescript/src/index.d.ts +18 -0
  343. package/lib/typescript/src/index.d.ts.map +1 -0
  344. package/lib/typescript/src/main/index.d.ts +6 -0
  345. package/lib/typescript/src/main/index.d.ts.map +1 -0
  346. package/lib/typescript/src/main/index.web.d.ts +6 -0
  347. package/lib/typescript/src/main/index.web.d.ts.map +1 -0
  348. package/lib/typescript/src/types.d.ts +19 -0
  349. package/lib/typescript/src/types.d.ts.map +1 -0
  350. package/lib/typescript/src/utils.d.ts +2 -0
  351. package/lib/typescript/src/utils.d.ts.map +1 -0
  352. package/libs/android/arm64-v8a/libwebgpu_dawn.so +0 -0
  353. package/libs/android/armeabi-v7a/libwebgpu_dawn.so +0 -0
  354. package/libs/android/x86/libwebgpu_dawn.so +0 -0
  355. package/libs/android/x86_64/libwebgpu_dawn.so +0 -0
  356. package/libs/apple/libwebgpu_dawn.xcframework/Info.plist +59 -0
  357. package/libs/apple/libwebgpu_dawn.xcframework/ios-arm64/libwebgpu_dawn.a +0 -0
  358. package/libs/apple/libwebgpu_dawn.xcframework/ios-arm64_x86_64-simulator/libwebgpu_dawn.a +0 -0
  359. package/libs/apple/libwebgpu_dawn.xcframework/macos-arm64_x86_64/libwebgpu_dawn.a +0 -0
  360. package/package.json +139 -0
  361. package/react-native-wgpu.podspec +47 -0
  362. package/src/Canvas.tsx +91 -0
  363. package/src/NativeWebGPUModule.ts +9 -0
  364. package/src/Offscreen.ts +113 -0
  365. package/src/WebGPUViewNativeComponent.ts +11 -0
  366. package/src/WebGPUViewNativeComponent.web.ts +113 -0
  367. package/src/WebPolyfillGPUModule.ts +53 -0
  368. package/src/external/ModuleProxy.ts +30 -0
  369. package/src/external/index.ts +1 -0
  370. package/src/external/reanimated/ReanimatedProxy.ts +19 -0
  371. package/src/external/reanimated/index.ts +2 -0
  372. package/src/external/reanimated/registerWebGPUForReanimated.ts +43 -0
  373. package/src/hooks.tsx +93 -0
  374. package/src/index.tsx +31 -0
  375. package/src/main/index.tsx +40 -0
  376. package/src/main/index.web.tsx +8 -0
  377. package/src/types.ts +20 -0
  378. package/src/utils.ts +4 -0
@@ -0,0 +1,111 @@
1
+ #pragma once
2
+
3
+ #include <memory>
4
+ #include <string>
5
+
6
+ #include "webgpu/webgpu_cpp.h"
7
+
8
+ #include "JSIConverter.h"
9
+ #include "WGPULogger.h"
10
+
11
+ namespace jsi = facebook::jsi;
12
+
13
+ namespace rnwgpu {
14
+
15
+ struct GPUSamplerDescriptor {
16
+ std::optional<wgpu::AddressMode> addressModeU; // GPUAddressMode
17
+ std::optional<wgpu::AddressMode> addressModeV; // GPUAddressMode
18
+ std::optional<wgpu::AddressMode> addressModeW; // GPUAddressMode
19
+ std::optional<wgpu::FilterMode> magFilter; // GPUFilterMode
20
+ std::optional<wgpu::FilterMode> minFilter; // GPUFilterMode
21
+ std::optional<wgpu::MipmapFilterMode> mipmapFilter; // GPUMipmapFilterMode
22
+ std::optional<double> lodMinClamp; // number
23
+ std::optional<double> lodMaxClamp; // number
24
+ std::optional<wgpu::CompareFunction> compare; // GPUCompareFunction
25
+ std::optional<double> maxAnisotropy; // number
26
+ std::optional<std::string> label; // string
27
+ };
28
+
29
+ } // namespace rnwgpu
30
+
31
+ namespace rnwgpu {
32
+
33
+ template <> struct JSIConverter<std::shared_ptr<rnwgpu::GPUSamplerDescriptor>> {
34
+ static std::shared_ptr<rnwgpu::GPUSamplerDescriptor>
35
+ fromJSI(jsi::Runtime &runtime, const jsi::Value &arg, bool outOfBounds) {
36
+ auto result = std::make_unique<rnwgpu::GPUSamplerDescriptor>();
37
+ if (!outOfBounds && arg.isObject()) {
38
+ auto value = arg.getObject(runtime);
39
+ if (value.hasProperty(runtime, "addressModeU")) {
40
+ auto prop = value.getProperty(runtime, "addressModeU");
41
+ result->addressModeU =
42
+ JSIConverter<std::optional<wgpu::AddressMode>>::fromJSI(
43
+ runtime, prop, false);
44
+ }
45
+ if (value.hasProperty(runtime, "addressModeV")) {
46
+ auto prop = value.getProperty(runtime, "addressModeV");
47
+ result->addressModeV =
48
+ JSIConverter<std::optional<wgpu::AddressMode>>::fromJSI(
49
+ runtime, prop, false);
50
+ }
51
+ if (value.hasProperty(runtime, "addressModeW")) {
52
+ auto prop = value.getProperty(runtime, "addressModeW");
53
+ result->addressModeW =
54
+ JSIConverter<std::optional<wgpu::AddressMode>>::fromJSI(
55
+ runtime, prop, false);
56
+ }
57
+ if (value.hasProperty(runtime, "magFilter")) {
58
+ auto prop = value.getProperty(runtime, "magFilter");
59
+ result->magFilter =
60
+ JSIConverter<std::optional<wgpu::FilterMode>>::fromJSI(runtime,
61
+ prop, false);
62
+ }
63
+ if (value.hasProperty(runtime, "minFilter")) {
64
+ auto prop = value.getProperty(runtime, "minFilter");
65
+ result->minFilter =
66
+ JSIConverter<std::optional<wgpu::FilterMode>>::fromJSI(runtime,
67
+ prop, false);
68
+ }
69
+ if (value.hasProperty(runtime, "mipmapFilter")) {
70
+ auto prop = value.getProperty(runtime, "mipmapFilter");
71
+ result->mipmapFilter =
72
+ JSIConverter<std::optional<wgpu::MipmapFilterMode>>::fromJSI(
73
+ runtime, prop, false);
74
+ }
75
+ if (value.hasProperty(runtime, "lodMinClamp")) {
76
+ auto prop = value.getProperty(runtime, "lodMinClamp");
77
+ result->lodMinClamp =
78
+ JSIConverter<std::optional<double>>::fromJSI(runtime, prop, false);
79
+ }
80
+ if (value.hasProperty(runtime, "lodMaxClamp")) {
81
+ auto prop = value.getProperty(runtime, "lodMaxClamp");
82
+ result->lodMaxClamp =
83
+ JSIConverter<std::optional<double>>::fromJSI(runtime, prop, false);
84
+ }
85
+ if (value.hasProperty(runtime, "compare")) {
86
+ auto prop = value.getProperty(runtime, "compare");
87
+ result->compare =
88
+ JSIConverter<std::optional<wgpu::CompareFunction>>::fromJSI(
89
+ runtime, prop, false);
90
+ }
91
+ if (value.hasProperty(runtime, "maxAnisotropy")) {
92
+ auto prop = value.getProperty(runtime, "maxAnisotropy");
93
+ result->maxAnisotropy =
94
+ JSIConverter<std::optional<double>>::fromJSI(runtime, prop, false);
95
+ }
96
+ if (value.hasProperty(runtime, "label")) {
97
+ auto prop = value.getProperty(runtime, "label");
98
+ result->label = JSIConverter<std::optional<std::string>>::fromJSI(
99
+ runtime, prop, false);
100
+ }
101
+ }
102
+
103
+ return result;
104
+ }
105
+ static jsi::Value toJSI(jsi::Runtime &runtime,
106
+ std::shared_ptr<rnwgpu::GPUSamplerDescriptor> arg) {
107
+ throw std::runtime_error("Invalid GPUSamplerDescriptor::toJSI()");
108
+ }
109
+ };
110
+
111
+ } // namespace rnwgpu
@@ -0,0 +1,61 @@
1
+ #pragma once
2
+
3
+ #include <memory>
4
+ #include <string>
5
+
6
+ #include "webgpu/webgpu_cpp.h"
7
+
8
+ #include "JSIConverter.h"
9
+ #include "WGPULogger.h"
10
+
11
+ #include "GPUPipelineLayout.h"
12
+
13
+ namespace jsi = facebook::jsi;
14
+
15
+ namespace rnwgpu {
16
+
17
+ struct GPUShaderModuleCompilationHint {
18
+ std::string entryPoint; // string
19
+ std::optional<
20
+ std::variant<std::nullptr_t, std::shared_ptr<GPUPipelineLayout>>>
21
+ layout; // | GPUPipelineLayout | GPUAutoLayoutMode
22
+ };
23
+
24
+ } // namespace rnwgpu
25
+
26
+ namespace rnwgpu {
27
+
28
+ template <>
29
+ struct JSIConverter<std::shared_ptr<rnwgpu::GPUShaderModuleCompilationHint>> {
30
+ static std::shared_ptr<rnwgpu::GPUShaderModuleCompilationHint>
31
+ fromJSI(jsi::Runtime &runtime, const jsi::Value &arg, bool outOfBounds) {
32
+ auto result = std::make_unique<rnwgpu::GPUShaderModuleCompilationHint>();
33
+ if (!outOfBounds && arg.isObject()) {
34
+ auto value = arg.getObject(runtime);
35
+ if (value.hasProperty(runtime, "entryPoint")) {
36
+ auto prop = value.getProperty(runtime, "entryPoint");
37
+ result->entryPoint =
38
+ JSIConverter<std::string>::fromJSI(runtime, prop, false);
39
+ }
40
+ if (value.hasProperty(runtime, "layout")) {
41
+ auto prop = value.getProperty(runtime, "layout");
42
+ if (prop.isNull() || prop.isString()) {
43
+ result->layout = nullptr;
44
+ } else {
45
+ result->layout =
46
+ JSIConverter<std::shared_ptr<GPUPipelineLayout>>::fromJSI(
47
+ runtime, prop, false);
48
+ }
49
+ }
50
+ }
51
+
52
+ return result;
53
+ }
54
+ static jsi::Value
55
+ toJSI(jsi::Runtime &runtime,
56
+ std::shared_ptr<rnwgpu::GPUShaderModuleCompilationHint> arg) {
57
+ throw std::runtime_error("Invalid GPUShaderModuleCompilationHint::toJSI()");
58
+ }
59
+ };
60
+
61
+ } // namespace rnwgpu
@@ -0,0 +1,63 @@
1
+ #pragma once
2
+
3
+ #include <memory>
4
+ #include <string>
5
+ #include <vector>
6
+
7
+ #include "webgpu/webgpu_cpp.h"
8
+
9
+ #include "JSIConverter.h"
10
+ #include "WGPULogger.h"
11
+
12
+ #include "GPUShaderModuleCompilationHint.h"
13
+
14
+ namespace jsi = facebook::jsi;
15
+
16
+ namespace rnwgpu {
17
+
18
+ struct GPUShaderModuleDescriptor {
19
+ std::string code; // string
20
+ std::optional<std::vector<std::shared_ptr<GPUShaderModuleCompilationHint>>>
21
+ compilationHints; // Array<GPUShaderModuleCompilationHint>
22
+ std::optional<std::string> label; // string
23
+ };
24
+
25
+ } // namespace rnwgpu
26
+
27
+ namespace rnwgpu {
28
+
29
+ template <>
30
+ struct JSIConverter<std::shared_ptr<rnwgpu::GPUShaderModuleDescriptor>> {
31
+ static std::shared_ptr<rnwgpu::GPUShaderModuleDescriptor>
32
+ fromJSI(jsi::Runtime &runtime, const jsi::Value &arg, bool outOfBounds) {
33
+ auto result = std::make_unique<rnwgpu::GPUShaderModuleDescriptor>();
34
+ if (!outOfBounds && arg.isObject()) {
35
+ auto value = arg.getObject(runtime);
36
+ if (value.hasProperty(runtime, "code")) {
37
+ auto prop = value.getProperty(runtime, "code");
38
+ result->code = JSIConverter<std::string>::fromJSI(runtime, prop, false);
39
+ }
40
+ if (value.hasProperty(runtime, "compilationHints")) {
41
+ auto prop = value.getProperty(runtime, "compilationHints");
42
+ result->compilationHints = JSIConverter<std::optional<std::vector<
43
+ std::shared_ptr<GPUShaderModuleCompilationHint>>>>::fromJSI(runtime,
44
+ prop,
45
+ false);
46
+ }
47
+ if (value.hasProperty(runtime, "label")) {
48
+ auto prop = value.getProperty(runtime, "label");
49
+ result->label = JSIConverter<std::optional<std::string>>::fromJSI(
50
+ runtime, prop, false);
51
+ }
52
+ }
53
+
54
+ return result;
55
+ }
56
+ static jsi::Value
57
+ toJSI(jsi::Runtime &runtime,
58
+ std::shared_ptr<rnwgpu::GPUShaderModuleDescriptor> arg) {
59
+ throw std::runtime_error("Invalid GPUShaderModuleDescriptor::toJSI()");
60
+ }
61
+ };
62
+
63
+ } // namespace rnwgpu
@@ -0,0 +1,25 @@
1
+ #pragma once
2
+
3
+ #include <jsi/jsi.h>
4
+
5
+ #include "webgpu/webgpu_cpp.h"
6
+
7
+ namespace rnwgpu {
8
+
9
+ namespace jsi = facebook::jsi;
10
+
11
+ class GPUShaderStage {
12
+ public:
13
+ static jsi::Object create(jsi::Runtime &runtime) {
14
+ jsi::Object obj(runtime);
15
+ obj.setProperty(runtime, "VERTEX",
16
+ static_cast<double>(wgpu::ShaderStage::Vertex));
17
+ obj.setProperty(runtime, "FRAGMENT",
18
+ static_cast<double>(wgpu::ShaderStage::Fragment));
19
+ obj.setProperty(runtime, "COMPUTE",
20
+ static_cast<double>(wgpu::ShaderStage::Compute));
21
+ return obj;
22
+ }
23
+ };
24
+
25
+ } // namespace rnwgpu
@@ -0,0 +1,65 @@
1
+ #pragma once
2
+
3
+ #include <memory>
4
+
5
+ #include "webgpu/webgpu_cpp.h"
6
+
7
+ #include "JSIConverter.h"
8
+ #include "WGPULogger.h"
9
+
10
+ namespace jsi = facebook::jsi;
11
+
12
+ namespace rnwgpu {
13
+
14
+ struct GPUStencilFaceState {
15
+ std::optional<wgpu::CompareFunction> compare; // GPUCompareFunction
16
+ std::optional<wgpu::StencilOperation> failOp; // GPUStencilOperation
17
+ std::optional<wgpu::StencilOperation> depthFailOp; // GPUStencilOperation
18
+ std::optional<wgpu::StencilOperation> passOp; // GPUStencilOperation
19
+ };
20
+
21
+ } // namespace rnwgpu
22
+
23
+ namespace rnwgpu {
24
+
25
+ template <> struct JSIConverter<std::shared_ptr<rnwgpu::GPUStencilFaceState>> {
26
+ static std::shared_ptr<rnwgpu::GPUStencilFaceState>
27
+ fromJSI(jsi::Runtime &runtime, const jsi::Value &arg, bool outOfBounds) {
28
+ auto result = std::make_unique<rnwgpu::GPUStencilFaceState>();
29
+ if (!outOfBounds && arg.isObject()) {
30
+ auto value = arg.getObject(runtime);
31
+ if (value.hasProperty(runtime, "compare")) {
32
+ auto prop = value.getProperty(runtime, "compare");
33
+ result->compare =
34
+ JSIConverter<std::optional<wgpu::CompareFunction>>::fromJSI(
35
+ runtime, prop, false);
36
+ }
37
+ if (value.hasProperty(runtime, "failOp")) {
38
+ auto prop = value.getProperty(runtime, "failOp");
39
+ result->failOp =
40
+ JSIConverter<std::optional<wgpu::StencilOperation>>::fromJSI(
41
+ runtime, prop, false);
42
+ }
43
+ if (value.hasProperty(runtime, "depthFailOp")) {
44
+ auto prop = value.getProperty(runtime, "depthFailOp");
45
+ result->depthFailOp =
46
+ JSIConverter<std::optional<wgpu::StencilOperation>>::fromJSI(
47
+ runtime, prop, false);
48
+ }
49
+ if (value.hasProperty(runtime, "passOp")) {
50
+ auto prop = value.getProperty(runtime, "passOp");
51
+ result->passOp =
52
+ JSIConverter<std::optional<wgpu::StencilOperation>>::fromJSI(
53
+ runtime, prop, false);
54
+ }
55
+ }
56
+
57
+ return result;
58
+ }
59
+ static jsi::Value toJSI(jsi::Runtime &runtime,
60
+ std::shared_ptr<rnwgpu::GPUStencilFaceState> arg) {
61
+ throw std::runtime_error("Invalid GPUStencilFaceState::toJSI()");
62
+ }
63
+ };
64
+
65
+ } // namespace rnwgpu
@@ -0,0 +1,60 @@
1
+ #pragma once
2
+
3
+ #include <memory>
4
+
5
+ #include "webgpu/webgpu_cpp.h"
6
+
7
+ #include "JSIConverter.h"
8
+ #include "WGPULogger.h"
9
+
10
+ namespace jsi = facebook::jsi;
11
+
12
+ namespace rnwgpu {
13
+
14
+ struct GPUStorageTextureBindingLayout {
15
+ std::optional<wgpu::StorageTextureAccess> access; // GPUStorageTextureAccess
16
+ wgpu::TextureFormat format; // GPUTextureFormat
17
+ std::optional<wgpu::TextureViewDimension>
18
+ viewDimension; // GPUTextureViewDimension
19
+ };
20
+
21
+ } // namespace rnwgpu
22
+
23
+ namespace rnwgpu {
24
+
25
+ template <>
26
+ struct JSIConverter<std::shared_ptr<rnwgpu::GPUStorageTextureBindingLayout>> {
27
+ static std::shared_ptr<rnwgpu::GPUStorageTextureBindingLayout>
28
+ fromJSI(jsi::Runtime &runtime, const jsi::Value &arg, bool outOfBounds) {
29
+ auto result = std::make_unique<rnwgpu::GPUStorageTextureBindingLayout>();
30
+ if (!outOfBounds && arg.isObject()) {
31
+ auto value = arg.getObject(runtime);
32
+ if (value.hasProperty(runtime, "access")) {
33
+ auto prop = value.getProperty(runtime, "access");
34
+ result->access =
35
+ JSIConverter<std::optional<wgpu::StorageTextureAccess>>::fromJSI(
36
+ runtime, prop, false);
37
+ }
38
+ if (value.hasProperty(runtime, "format")) {
39
+ auto prop = value.getProperty(runtime, "format");
40
+ result->format =
41
+ JSIConverter<wgpu::TextureFormat>::fromJSI(runtime, prop, false);
42
+ }
43
+ if (value.hasProperty(runtime, "viewDimension")) {
44
+ auto prop = value.getProperty(runtime, "viewDimension");
45
+ result->viewDimension =
46
+ JSIConverter<std::optional<wgpu::TextureViewDimension>>::fromJSI(
47
+ runtime, prop, false);
48
+ }
49
+ }
50
+
51
+ return result;
52
+ }
53
+ static jsi::Value
54
+ toJSI(jsi::Runtime &runtime,
55
+ std::shared_ptr<rnwgpu::GPUStorageTextureBindingLayout> arg) {
56
+ throw std::runtime_error("Invalid GPUStorageTextureBindingLayout::toJSI()");
57
+ }
58
+ };
59
+
60
+ } // namespace rnwgpu
@@ -0,0 +1,60 @@
1
+ #pragma once
2
+
3
+ #include <memory>
4
+
5
+ #include "webgpu/webgpu_cpp.h"
6
+
7
+ #include "JSIConverter.h"
8
+ #include "WGPULogger.h"
9
+
10
+ namespace jsi = facebook::jsi;
11
+
12
+ namespace rnwgpu {
13
+
14
+ struct GPUTextureBindingLayout {
15
+ std::optional<wgpu::TextureSampleType> sampleType; // GPUTextureSampleType
16
+ std::optional<wgpu::TextureViewDimension>
17
+ viewDimension; // GPUTextureViewDimension
18
+ std::optional<bool> multisampled; // boolean
19
+ };
20
+
21
+ } // namespace rnwgpu
22
+
23
+ namespace rnwgpu {
24
+
25
+ template <>
26
+ struct JSIConverter<std::shared_ptr<rnwgpu::GPUTextureBindingLayout>> {
27
+ static std::shared_ptr<rnwgpu::GPUTextureBindingLayout>
28
+ fromJSI(jsi::Runtime &runtime, const jsi::Value &arg, bool outOfBounds) {
29
+ auto result = std::make_unique<rnwgpu::GPUTextureBindingLayout>();
30
+ if (!outOfBounds && arg.isObject()) {
31
+ auto value = arg.getObject(runtime);
32
+ if (value.hasProperty(runtime, "sampleType")) {
33
+ auto prop = value.getProperty(runtime, "sampleType");
34
+ result->sampleType =
35
+ JSIConverter<std::optional<wgpu::TextureSampleType>>::fromJSI(
36
+ runtime, prop, false);
37
+ }
38
+ if (value.hasProperty(runtime, "viewDimension")) {
39
+ auto prop = value.getProperty(runtime, "viewDimension");
40
+ result->viewDimension =
41
+ JSIConverter<std::optional<wgpu::TextureViewDimension>>::fromJSI(
42
+ runtime, prop, false);
43
+ }
44
+ if (value.hasProperty(runtime, "multisampled")) {
45
+ auto prop = value.getProperty(runtime, "multisampled");
46
+ result->multisampled =
47
+ JSIConverter<std::optional<bool>>::fromJSI(runtime, prop, false);
48
+ }
49
+ }
50
+
51
+ return result;
52
+ }
53
+ static jsi::Value
54
+ toJSI(jsi::Runtime &runtime,
55
+ std::shared_ptr<rnwgpu::GPUTextureBindingLayout> arg) {
56
+ throw std::runtime_error("Invalid GPUTextureBindingLayout::toJSI()");
57
+ }
58
+ };
59
+
60
+ } // namespace rnwgpu
@@ -0,0 +1,92 @@
1
+ #pragma once
2
+
3
+ #include <memory>
4
+ #include <string>
5
+ #include <vector>
6
+
7
+ #include "webgpu/webgpu_cpp.h"
8
+
9
+ #include "JSIConverter.h"
10
+ #include "WGPULogger.h"
11
+
12
+ #include "GPUExtent3D.h"
13
+
14
+ namespace jsi = facebook::jsi;
15
+
16
+ namespace rnwgpu {
17
+
18
+ struct GPUTextureDescriptor {
19
+ std::shared_ptr<GPUExtent3D> size; // GPUExtent3DStrict
20
+ std::optional<double> mipLevelCount; // GPUIntegerCoordinate
21
+ std::optional<double> sampleCount; // GPUSize32
22
+ std::optional<wgpu::TextureDimension> dimension; // GPUTextureDimension
23
+ wgpu::TextureFormat format; // GPUTextureFormat
24
+ double usage; // GPUTextureUsageFlags
25
+ std::optional<std::vector<wgpu::TextureFormat>>
26
+ viewFormats; // Iterable<GPUTextureFormat>
27
+ std::optional<std::string> label; // string
28
+ };
29
+
30
+ } // namespace rnwgpu
31
+
32
+ namespace rnwgpu {
33
+
34
+ template <> struct JSIConverter<std::shared_ptr<rnwgpu::GPUTextureDescriptor>> {
35
+ static std::shared_ptr<rnwgpu::GPUTextureDescriptor>
36
+ fromJSI(jsi::Runtime &runtime, const jsi::Value &arg, bool outOfBounds) {
37
+ auto result = std::make_unique<rnwgpu::GPUTextureDescriptor>();
38
+ if (!outOfBounds && arg.isObject()) {
39
+ auto value = arg.getObject(runtime);
40
+ if (value.hasProperty(runtime, "size")) {
41
+ auto prop = value.getProperty(runtime, "size");
42
+ result->size = JSIConverter<std::shared_ptr<GPUExtent3D>>::fromJSI(
43
+ runtime, prop, false);
44
+ }
45
+ if (value.hasProperty(runtime, "mipLevelCount")) {
46
+ auto prop = value.getProperty(runtime, "mipLevelCount");
47
+ result->mipLevelCount =
48
+ JSIConverter<std::optional<double>>::fromJSI(runtime, prop, false);
49
+ }
50
+ if (value.hasProperty(runtime, "sampleCount")) {
51
+ auto prop = value.getProperty(runtime, "sampleCount");
52
+ result->sampleCount =
53
+ JSIConverter<std::optional<double>>::fromJSI(runtime, prop, false);
54
+ }
55
+ if (value.hasProperty(runtime, "dimension")) {
56
+ auto prop = value.getProperty(runtime, "dimension");
57
+ result->dimension =
58
+ JSIConverter<std::optional<wgpu::TextureDimension>>::fromJSI(
59
+ runtime, prop, false);
60
+ }
61
+ if (value.hasProperty(runtime, "format")) {
62
+ auto prop = value.getProperty(runtime, "format");
63
+ result->format =
64
+ JSIConverter<wgpu::TextureFormat>::fromJSI(runtime, prop, false);
65
+ }
66
+ if (value.hasProperty(runtime, "usage")) {
67
+ auto prop = value.getProperty(runtime, "usage");
68
+ result->usage = JSIConverter<double>::fromJSI(runtime, prop, false);
69
+ }
70
+ if (value.hasProperty(runtime, "viewFormats")) {
71
+ auto prop = value.getProperty(runtime, "viewFormats");
72
+ result->viewFormats = JSIConverter<
73
+ std::optional<std::vector<wgpu::TextureFormat>>>::fromJSI(runtime,
74
+ prop,
75
+ false);
76
+ }
77
+ if (value.hasProperty(runtime, "label")) {
78
+ auto prop = value.getProperty(runtime, "label");
79
+ result->label = JSIConverter<std::optional<std::string>>::fromJSI(
80
+ runtime, prop, false);
81
+ }
82
+ }
83
+
84
+ return result;
85
+ }
86
+ static jsi::Value toJSI(jsi::Runtime &runtime,
87
+ std::shared_ptr<rnwgpu::GPUTextureDescriptor> arg) {
88
+ throw std::runtime_error("Invalid GPUTextureDescriptor::toJSI()");
89
+ }
90
+ };
91
+
92
+ } // namespace rnwgpu
@@ -0,0 +1,29 @@
1
+ #pragma once
2
+
3
+ #include <jsi/jsi.h>
4
+
5
+ #include "webgpu/webgpu_cpp.h"
6
+
7
+ namespace rnwgpu {
8
+
9
+ namespace jsi = facebook::jsi;
10
+
11
+ class GPUTextureUsage {
12
+ public:
13
+ static jsi::Object create(jsi::Runtime &runtime) {
14
+ jsi::Object obj(runtime);
15
+ obj.setProperty(runtime, "COPY_SRC",
16
+ static_cast<double>(wgpu::TextureUsage::CopySrc));
17
+ obj.setProperty(runtime, "COPY_DST",
18
+ static_cast<double>(wgpu::TextureUsage::CopyDst));
19
+ obj.setProperty(runtime, "TEXTURE_BINDING",
20
+ static_cast<double>(wgpu::TextureUsage::TextureBinding));
21
+ obj.setProperty(runtime, "STORAGE_BINDING",
22
+ static_cast<double>(wgpu::TextureUsage::StorageBinding));
23
+ obj.setProperty(runtime, "RENDER_ATTACHMENT",
24
+ static_cast<double>(wgpu::TextureUsage::RenderAttachment));
25
+ return obj;
26
+ }
27
+ };
28
+
29
+ } // namespace rnwgpu
@@ -0,0 +1,92 @@
1
+ #pragma once
2
+
3
+ #include <memory>
4
+ #include <string>
5
+
6
+ #include "webgpu/webgpu_cpp.h"
7
+
8
+ #include "JSIConverter.h"
9
+ #include "WGPULogger.h"
10
+
11
+ namespace jsi = facebook::jsi;
12
+
13
+ namespace rnwgpu {
14
+
15
+ struct GPUTextureViewDescriptor {
16
+ std::optional<wgpu::TextureFormat> format; // GPUTextureFormat
17
+ std::optional<wgpu::TextureViewDimension>
18
+ dimension; // GPUTextureViewDimension
19
+ std::optional<wgpu::TextureAspect> aspect; // GPUTextureAspect
20
+ std::optional<double> baseMipLevel; // GPUIntegerCoordinate
21
+ std::optional<double> mipLevelCount; // GPUIntegerCoordinate
22
+ std::optional<double> baseArrayLayer; // GPUIntegerCoordinate
23
+ std::optional<double> arrayLayerCount; // GPUIntegerCoordinate
24
+ std::optional<std::string> label; // string
25
+ };
26
+
27
+ } // namespace rnwgpu
28
+
29
+ namespace rnwgpu {
30
+
31
+ template <>
32
+ struct JSIConverter<std::shared_ptr<rnwgpu::GPUTextureViewDescriptor>> {
33
+ static std::shared_ptr<rnwgpu::GPUTextureViewDescriptor>
34
+ fromJSI(jsi::Runtime &runtime, const jsi::Value &arg, bool outOfBounds) {
35
+ auto result = std::make_unique<rnwgpu::GPUTextureViewDescriptor>();
36
+ if (!outOfBounds && arg.isObject()) {
37
+ auto value = arg.getObject(runtime);
38
+ if (value.hasProperty(runtime, "format")) {
39
+ auto prop = value.getProperty(runtime, "format");
40
+ result->format =
41
+ JSIConverter<std::optional<wgpu::TextureFormat>>::fromJSI(
42
+ runtime, prop, false);
43
+ }
44
+ if (value.hasProperty(runtime, "dimension")) {
45
+ auto prop = value.getProperty(runtime, "dimension");
46
+ result->dimension =
47
+ JSIConverter<std::optional<wgpu::TextureViewDimension>>::fromJSI(
48
+ runtime, prop, false);
49
+ }
50
+ if (value.hasProperty(runtime, "aspect")) {
51
+ auto prop = value.getProperty(runtime, "aspect");
52
+ result->aspect =
53
+ JSIConverter<std::optional<wgpu::TextureAspect>>::fromJSI(
54
+ runtime, prop, false);
55
+ }
56
+ if (value.hasProperty(runtime, "baseMipLevel")) {
57
+ auto prop = value.getProperty(runtime, "baseMipLevel");
58
+ result->baseMipLevel =
59
+ JSIConverter<std::optional<double>>::fromJSI(runtime, prop, false);
60
+ }
61
+ if (value.hasProperty(runtime, "mipLevelCount")) {
62
+ auto prop = value.getProperty(runtime, "mipLevelCount");
63
+ result->mipLevelCount =
64
+ JSIConverter<std::optional<double>>::fromJSI(runtime, prop, false);
65
+ }
66
+ if (value.hasProperty(runtime, "baseArrayLayer")) {
67
+ auto prop = value.getProperty(runtime, "baseArrayLayer");
68
+ result->baseArrayLayer =
69
+ JSIConverter<std::optional<double>>::fromJSI(runtime, prop, false);
70
+ }
71
+ if (value.hasProperty(runtime, "arrayLayerCount")) {
72
+ auto prop = value.getProperty(runtime, "arrayLayerCount");
73
+ result->arrayLayerCount =
74
+ JSIConverter<std::optional<double>>::fromJSI(runtime, prop, false);
75
+ }
76
+ if (value.hasProperty(runtime, "label")) {
77
+ auto prop = value.getProperty(runtime, "label");
78
+ result->label = JSIConverter<std::optional<std::string>>::fromJSI(
79
+ runtime, prop, false);
80
+ }
81
+ }
82
+
83
+ return result;
84
+ }
85
+ static jsi::Value
86
+ toJSI(jsi::Runtime &runtime,
87
+ std::shared_ptr<rnwgpu::GPUTextureViewDescriptor> arg) {
88
+ throw std::runtime_error("Invalid GPUTextureViewDescriptor::toJSI()");
89
+ }
90
+ };
91
+
92
+ } // namespace rnwgpu