react-native-wgpu 0.5.13 → 0.5.14

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (405) hide show
  1. package/README.md +13 -386
  2. package/lib/commonjs/index.js +7 -4
  3. package/lib/commonjs/index.js.map +1 -1
  4. package/lib/module/index.js +4 -4
  5. package/lib/module/index.js.map +1 -1
  6. package/lib/typescript/webgpu/src/Canvas.d.ts.map +1 -0
  7. package/lib/typescript/webgpu/src/NativeWebGPUModule.d.ts.map +1 -0
  8. package/lib/typescript/webgpu/src/Offscreen.d.ts.map +1 -0
  9. package/lib/typescript/webgpu/src/WebGPUViewNativeComponent.d.ts.map +1 -0
  10. package/lib/typescript/webgpu/src/external/ModuleProxy.d.ts.map +1 -0
  11. package/lib/typescript/webgpu/src/external/index.d.ts.map +1 -0
  12. package/lib/typescript/webgpu/src/external/reanimated/ReanimatedProxy.d.ts.map +1 -0
  13. package/lib/typescript/webgpu/src/external/reanimated/index.d.ts.map +1 -0
  14. package/lib/typescript/webgpu/src/external/reanimated/registerWebGPUForReanimated.d.ts.map +1 -0
  15. package/lib/typescript/webgpu/src/hooks.d.ts.map +1 -0
  16. package/lib/typescript/webgpu/src/index.d.ts.map +1 -0
  17. package/lib/typescript/webgpu/src/main/index.d.ts.map +1 -0
  18. package/lib/typescript/webgpu/src/types.d.ts.map +1 -0
  19. package/lib/typescript/{eslint.config.d.mts.map → webgpu-shim/eslint.config.d.mts.map} +1 -1
  20. package/lib/typescript/{lib → webgpu-shim/lib}/commonjs/index.d.ts.map +1 -1
  21. package/lib/typescript/webgpu-shim/lib/module/index.d.ts +2 -0
  22. package/lib/typescript/{lib → webgpu-shim/lib}/module/index.d.ts.map +1 -1
  23. package/lib/typescript/webgpu-shim/src/index.d.ts +2 -0
  24. package/lib/typescript/webgpu-shim/src/index.d.ts.map +1 -0
  25. package/package.json +12 -81
  26. package/src/index.ts +9 -0
  27. package/LICENSE +0 -20
  28. package/android/CMakeLists.txt +0 -110
  29. package/android/build.gradle +0 -138
  30. package/android/cpp/AndroidPlatformContext.h +0 -328
  31. package/android/cpp/cpp-adapter.cpp +0 -71
  32. package/android/src/main/AndroidManifest.xml +0 -3
  33. package/android/src/main/java/com/webgpu/WebGPUAHBView.java +0 -298
  34. package/android/src/main/java/com/webgpu/WebGPUAPI.java +0 -20
  35. package/android/src/main/java/com/webgpu/WebGPUBaseView.java +0 -61
  36. package/android/src/main/java/com/webgpu/WebGPUModule.java +0 -50
  37. package/android/src/main/java/com/webgpu/WebGPUSurfaceView.java +0 -41
  38. package/android/src/main/java/com/webgpu/WebGPUSurfaceViewWithSC.java +0 -79
  39. package/android/src/main/java/com/webgpu/WebGPUTextureView.java +0 -46
  40. package/android/src/main/java/com/webgpu/WebGPUView.java +0 -108
  41. package/android/src/main/java/com/webgpu/WebGPUViewManager.java +0 -38
  42. package/android/src/main/java/com/webgpu/WebGPUViewPackage.java +0 -50
  43. package/android/src/newarch/com/webgpu/WebGPUViewManagerSpec.java +0 -24
  44. package/apple/ApplePlatformContext.h +0 -44
  45. package/apple/ApplePlatformContext.mm +0 -302
  46. package/apple/AppleVideoPlayer.h +0 -31
  47. package/apple/AppleVideoPlayer.mm +0 -314
  48. package/apple/MetalView.h +0 -13
  49. package/apple/MetalView.mm +0 -50
  50. package/apple/RNWGUIKit.h +0 -16
  51. package/apple/WebGPUModule.h +0 -13
  52. package/apple/WebGPUModule.mm +0 -89
  53. package/apple/WebGPUView.h +0 -12
  54. package/apple/WebGPUView.mm +0 -66
  55. package/cpp/WGPULogger.h +0 -100
  56. package/cpp/dawn_logging.cpp +0 -119
  57. package/cpp/jsi/EnumMapper.h +0 -45
  58. package/cpp/jsi/JSIConverter.h +0 -473
  59. package/cpp/jsi/NativeObject.h +0 -607
  60. package/cpp/jsi/Promise.cpp +0 -44
  61. package/cpp/jsi/Promise.h +0 -35
  62. package/cpp/jsi/RuntimeAwareCache.cpp +0 -7
  63. package/cpp/jsi/RuntimeAwareCache.h +0 -100
  64. package/cpp/jsi/RuntimeLifecycleMonitor.cpp +0 -72
  65. package/cpp/jsi/RuntimeLifecycleMonitor.h +0 -32
  66. package/cpp/rnwgpu/ArrayBuffer.h +0 -117
  67. package/cpp/rnwgpu/PlatformContext.h +0 -127
  68. package/cpp/rnwgpu/RNWebGPUManager.cpp +0 -237
  69. package/cpp/rnwgpu/RNWebGPUManager.h +0 -46
  70. package/cpp/rnwgpu/SurfaceRegistry.h +0 -230
  71. package/cpp/rnwgpu/api/Canvas.h +0 -57
  72. package/cpp/rnwgpu/api/Convertors.h +0 -783
  73. package/cpp/rnwgpu/api/External.h +0 -12
  74. package/cpp/rnwgpu/api/GPU.cpp +0 -154
  75. package/cpp/rnwgpu/api/GPU.h +0 -58
  76. package/cpp/rnwgpu/api/GPUAdapter.cpp +0 -267
  77. package/cpp/rnwgpu/api/GPUAdapter.h +0 -59
  78. package/cpp/rnwgpu/api/GPUAdapterInfo.h +0 -57
  79. package/cpp/rnwgpu/api/GPUBindGroup.cpp +0 -3
  80. package/cpp/rnwgpu/api/GPUBindGroup.h +0 -51
  81. package/cpp/rnwgpu/api/GPUBindGroupLayout.h +0 -52
  82. package/cpp/rnwgpu/api/GPUBuffer.cpp +0 -97
  83. package/cpp/rnwgpu/api/GPUBuffer.h +0 -87
  84. package/cpp/rnwgpu/api/GPUCanvasContext.cpp +0 -67
  85. package/cpp/rnwgpu/api/GPUCanvasContext.h +0 -66
  86. package/cpp/rnwgpu/api/GPUCommandBuffer.h +0 -45
  87. package/cpp/rnwgpu/api/GPUCommandEncoder.cpp +0 -179
  88. package/cpp/rnwgpu/api/GPUCommandEncoder.h +0 -111
  89. package/cpp/rnwgpu/api/GPUCompilationInfo.h +0 -79
  90. package/cpp/rnwgpu/api/GPUCompilationMessage.h +0 -36
  91. package/cpp/rnwgpu/api/GPUComputePassEncoder.cpp +0 -60
  92. package/cpp/rnwgpu/api/GPUComputePassEncoder.h +0 -85
  93. package/cpp/rnwgpu/api/GPUComputePipeline.cpp +0 -12
  94. package/cpp/rnwgpu/api/GPUComputePipeline.h +0 -60
  95. package/cpp/rnwgpu/api/GPUDevice.cpp +0 -545
  96. package/cpp/rnwgpu/api/GPUDevice.h +0 -265
  97. package/cpp/rnwgpu/api/GPUDeviceLostInfo.cpp +0 -7
  98. package/cpp/rnwgpu/api/GPUDeviceLostInfo.h +0 -40
  99. package/cpp/rnwgpu/api/GPUError.h +0 -35
  100. package/cpp/rnwgpu/api/GPUExtent3D.h +0 -66
  101. package/cpp/rnwgpu/api/GPUExternalTexture.cpp +0 -335
  102. package/cpp/rnwgpu/api/GPUExternalTexture.h +0 -90
  103. package/cpp/rnwgpu/api/GPUFeatures.h +0 -206
  104. package/cpp/rnwgpu/api/GPUInternalError.h +0 -31
  105. package/cpp/rnwgpu/api/GPUOrigin2D.h +0 -55
  106. package/cpp/rnwgpu/api/GPUOrigin3D.h +0 -62
  107. package/cpp/rnwgpu/api/GPUOutOfMemoryError.h +0 -33
  108. package/cpp/rnwgpu/api/GPUPipelineLayout.h +0 -45
  109. package/cpp/rnwgpu/api/GPUQuerySet.cpp +0 -11
  110. package/cpp/rnwgpu/api/GPUQuerySet.h +0 -73
  111. package/cpp/rnwgpu/api/GPUQueue.cpp +0 -169
  112. package/cpp/rnwgpu/api/GPUQueue.h +0 -81
  113. package/cpp/rnwgpu/api/GPURenderBundle.h +0 -44
  114. package/cpp/rnwgpu/api/GPURenderBundleEncoder.cpp +0 -131
  115. package/cpp/rnwgpu/api/GPURenderBundleEncoder.h +0 -110
  116. package/cpp/rnwgpu/api/GPURenderPassEncoder.cpp +0 -165
  117. package/cpp/rnwgpu/api/GPURenderPassEncoder.h +0 -130
  118. package/cpp/rnwgpu/api/GPURenderPipeline.cpp +0 -13
  119. package/cpp/rnwgpu/api/GPURenderPipeline.h +0 -61
  120. package/cpp/rnwgpu/api/GPUSampler.h +0 -44
  121. package/cpp/rnwgpu/api/GPUShaderModule.cpp +0 -50
  122. package/cpp/rnwgpu/api/GPUShaderModule.h +0 -66
  123. package/cpp/rnwgpu/api/GPUSharedTextureMemory.cpp +0 -80
  124. package/cpp/rnwgpu/api/GPUSharedTextureMemory.h +0 -71
  125. package/cpp/rnwgpu/api/GPUSupportedLimits.cpp +0 -129
  126. package/cpp/rnwgpu/api/GPUSupportedLimits.h +0 -131
  127. package/cpp/rnwgpu/api/GPUTexture.cpp +0 -47
  128. package/cpp/rnwgpu/api/GPUTexture.h +0 -162
  129. package/cpp/rnwgpu/api/GPUTextureView.h +0 -44
  130. package/cpp/rnwgpu/api/GPUUncapturedErrorEvent.h +0 -71
  131. package/cpp/rnwgpu/api/GPUValidationError.h +0 -32
  132. package/cpp/rnwgpu/api/ImageBitmap.h +0 -48
  133. package/cpp/rnwgpu/api/RNWebGPU.h +0 -241
  134. package/cpp/rnwgpu/api/RnFeatures.h +0 -53
  135. package/cpp/rnwgpu/api/VideoFrame.h +0 -76
  136. package/cpp/rnwgpu/api/VideoPlayer.h +0 -69
  137. package/cpp/rnwgpu/api/descriptors/GPUBindGroupDescriptor.h +0 -65
  138. package/cpp/rnwgpu/api/descriptors/GPUBindGroupEntry.h +0 -81
  139. package/cpp/rnwgpu/api/descriptors/GPUBindGroupLayoutDescriptor.h +0 -57
  140. package/cpp/rnwgpu/api/descriptors/GPUBindGroupLayoutEntry.h +0 -98
  141. package/cpp/rnwgpu/api/descriptors/GPUBlendComponent.h +0 -58
  142. package/cpp/rnwgpu/api/descriptors/GPUBlendState.h +0 -53
  143. package/cpp/rnwgpu/api/descriptors/GPUBufferBinding.h +0 -57
  144. package/cpp/rnwgpu/api/descriptors/GPUBufferBindingLayout.h +0 -57
  145. package/cpp/rnwgpu/api/descriptors/GPUBufferDescriptor.h +0 -60
  146. package/cpp/rnwgpu/api/descriptors/GPUBufferUsage.h +0 -39
  147. package/cpp/rnwgpu/api/descriptors/GPUCanvasConfiguration.h +0 -76
  148. package/cpp/rnwgpu/api/descriptors/GPUColor.h +0 -67
  149. package/cpp/rnwgpu/api/descriptors/GPUColorTargetState.h +0 -59
  150. package/cpp/rnwgpu/api/descriptors/GPUColorWrite.h +0 -29
  151. package/cpp/rnwgpu/api/descriptors/GPUCommandBufferDescriptor.h +0 -46
  152. package/cpp/rnwgpu/api/descriptors/GPUCommandEncoderDescriptor.h +0 -46
  153. package/cpp/rnwgpu/api/descriptors/GPUComputePassDescriptor.h +0 -57
  154. package/cpp/rnwgpu/api/descriptors/GPUComputePassTimestampWrites.h +0 -59
  155. package/cpp/rnwgpu/api/descriptors/GPUComputePipelineDescriptor.h +0 -68
  156. package/cpp/rnwgpu/api/descriptors/GPUDawnTogglesDescriptor.h +0 -57
  157. package/cpp/rnwgpu/api/descriptors/GPUDepthStencilState.h +0 -104
  158. package/cpp/rnwgpu/api/descriptors/GPUDeviceDescriptor.h +0 -115
  159. package/cpp/rnwgpu/api/descriptors/GPUExternalTextureBindingLayout.h +0 -39
  160. package/cpp/rnwgpu/api/descriptors/GPUExternalTextureDescriptor.h +0 -82
  161. package/cpp/rnwgpu/api/descriptors/GPUFragmentState.h +0 -74
  162. package/cpp/rnwgpu/api/descriptors/GPUImageCopyBuffer.h +0 -63
  163. package/cpp/rnwgpu/api/descriptors/GPUImageCopyExternalImage.h +0 -63
  164. package/cpp/rnwgpu/api/descriptors/GPUImageCopyTexture.h +0 -66
  165. package/cpp/rnwgpu/api/descriptors/GPUImageCopyTextureTagged.h +0 -82
  166. package/cpp/rnwgpu/api/descriptors/GPUImageDataLayout.h +0 -55
  167. package/cpp/rnwgpu/api/descriptors/GPUMapMode.h +0 -22
  168. package/cpp/rnwgpu/api/descriptors/GPUMultisampleState.h +0 -55
  169. package/cpp/rnwgpu/api/descriptors/GPUPipelineLayoutDescriptor.h +0 -58
  170. package/cpp/rnwgpu/api/descriptors/GPUPrimitiveState.h +0 -70
  171. package/cpp/rnwgpu/api/descriptors/GPUProgrammableStage.h +0 -62
  172. package/cpp/rnwgpu/api/descriptors/GPUQuerySetDescriptor.h +0 -56
  173. package/cpp/rnwgpu/api/descriptors/GPUQueueDescriptor.h +0 -44
  174. package/cpp/rnwgpu/api/descriptors/GPURenderBundleDescriptor.h +0 -46
  175. package/cpp/rnwgpu/api/descriptors/GPURenderBundleEncoderDescriptor.h +0 -81
  176. package/cpp/rnwgpu/api/descriptors/GPURenderPassColorAttachment.h +0 -82
  177. package/cpp/rnwgpu/api/descriptors/GPURenderPassDepthStencilAttachment.h +0 -102
  178. package/cpp/rnwgpu/api/descriptors/GPURenderPassDescriptor.h +0 -93
  179. package/cpp/rnwgpu/api/descriptors/GPURenderPassTimestampWrites.h +0 -59
  180. package/cpp/rnwgpu/api/descriptors/GPURenderPipelineDescriptor.h +0 -104
  181. package/cpp/rnwgpu/api/descriptors/GPURequestAdapterOptions.h +0 -52
  182. package/cpp/rnwgpu/api/descriptors/GPUSamplerBindingLayout.h +0 -46
  183. package/cpp/rnwgpu/api/descriptors/GPUSamplerDescriptor.h +0 -111
  184. package/cpp/rnwgpu/api/descriptors/GPUShaderModuleCompilationHint.h +0 -61
  185. package/cpp/rnwgpu/api/descriptors/GPUShaderModuleDescriptor.h +0 -63
  186. package/cpp/rnwgpu/api/descriptors/GPUShaderStage.h +0 -25
  187. package/cpp/rnwgpu/api/descriptors/GPUSharedTextureMemoryDescriptor.h +0 -62
  188. package/cpp/rnwgpu/api/descriptors/GPUStencilFaceState.h +0 -65
  189. package/cpp/rnwgpu/api/descriptors/GPUStorageTextureBindingLayout.h +0 -60
  190. package/cpp/rnwgpu/api/descriptors/GPUTextureBindingLayout.h +0 -60
  191. package/cpp/rnwgpu/api/descriptors/GPUTextureDescriptor.h +0 -92
  192. package/cpp/rnwgpu/api/descriptors/GPUTextureUsage.h +0 -29
  193. package/cpp/rnwgpu/api/descriptors/GPUTextureViewDescriptor.h +0 -92
  194. package/cpp/rnwgpu/api/descriptors/GPUUncapturedErrorEventInit.h +0 -65
  195. package/cpp/rnwgpu/api/descriptors/GPUVertexAttribute.h +0 -54
  196. package/cpp/rnwgpu/api/descriptors/GPUVertexBufferLayout.h +0 -63
  197. package/cpp/rnwgpu/api/descriptors/GPUVertexState.h +0 -74
  198. package/cpp/rnwgpu/api/descriptors/Unions.h +0 -1979
  199. package/cpp/rnwgpu/async/AsyncDispatcher.h +0 -28
  200. package/cpp/rnwgpu/async/AsyncRunner.cpp +0 -215
  201. package/cpp/rnwgpu/async/AsyncRunner.h +0 -53
  202. package/cpp/rnwgpu/async/AsyncTaskHandle.cpp +0 -181
  203. package/cpp/rnwgpu/async/AsyncTaskHandle.h +0 -55
  204. package/cpp/rnwgpu/async/JSIMicrotaskDispatcher.cpp +0 -23
  205. package/cpp/rnwgpu/async/JSIMicrotaskDispatcher.h +0 -22
  206. package/cpp/webgpu/webgpu.h +0 -4979
  207. package/cpp/webgpu/webgpu_cpp.h +0 -10059
  208. package/cpp/webgpu/webgpu_cpp_chained_struct.h +0 -57
  209. package/cpp/webgpu/webgpu_cpp_print.h +0 -2844
  210. package/cpp/webgpu/webgpu_enum_class_bitmasks.h +0 -161
  211. package/lib/commonjs/Canvas.js +0 -55
  212. package/lib/commonjs/Canvas.js.map +0 -1
  213. package/lib/commonjs/NativeWebGPUModule.js +0 -10
  214. package/lib/commonjs/NativeWebGPUModule.js.map +0 -1
  215. package/lib/commonjs/Offscreen.js +0 -103
  216. package/lib/commonjs/Offscreen.js.map +0 -1
  217. package/lib/commonjs/WebGPUViewNativeComponent.js +0 -10
  218. package/lib/commonjs/WebGPUViewNativeComponent.js.map +0 -1
  219. package/lib/commonjs/WebGPUViewNativeComponent.web.js +0 -103
  220. package/lib/commonjs/WebGPUViewNativeComponent.web.js.map +0 -1
  221. package/lib/commonjs/WebPolyfillGPUModule.js +0 -40
  222. package/lib/commonjs/WebPolyfillGPUModule.js.map +0 -1
  223. package/lib/commonjs/external/ModuleProxy.js +0 -36
  224. package/lib/commonjs/external/ModuleProxy.js.map +0 -1
  225. package/lib/commonjs/external/index.js +0 -17
  226. package/lib/commonjs/external/index.js.map +0 -1
  227. package/lib/commonjs/external/reanimated/ReanimatedProxy.js +0 -18
  228. package/lib/commonjs/external/reanimated/ReanimatedProxy.js.map +0 -1
  229. package/lib/commonjs/external/reanimated/index.js +0 -21
  230. package/lib/commonjs/external/reanimated/index.js.map +0 -1
  231. package/lib/commonjs/external/reanimated/registerWebGPUForReanimated.js +0 -49
  232. package/lib/commonjs/external/reanimated/registerWebGPUForReanimated.js.map +0 -1
  233. package/lib/commonjs/hooks.js +0 -83
  234. package/lib/commonjs/hooks.js.map +0 -1
  235. package/lib/commonjs/main/index.js +0 -91
  236. package/lib/commonjs/main/index.js.map +0 -1
  237. package/lib/commonjs/main/index.web.js +0 -51
  238. package/lib/commonjs/main/index.web.js.map +0 -1
  239. package/lib/commonjs/types.js +0 -2
  240. package/lib/commonjs/types.js.map +0 -1
  241. package/lib/commonjs/utils.js +0 -11
  242. package/lib/commonjs/utils.js.map +0 -1
  243. package/lib/module/Canvas.js +0 -46
  244. package/lib/module/Canvas.js.map +0 -1
  245. package/lib/module/NativeWebGPUModule.js +0 -4
  246. package/lib/module/NativeWebGPUModule.js.map +0 -1
  247. package/lib/module/Offscreen.js +0 -96
  248. package/lib/module/Offscreen.js.map +0 -1
  249. package/lib/module/WebGPUViewNativeComponent.js +0 -4
  250. package/lib/module/WebGPUViewNativeComponent.js.map +0 -1
  251. package/lib/module/WebGPUViewNativeComponent.web.js +0 -96
  252. package/lib/module/WebGPUViewNativeComponent.web.js.map +0 -1
  253. package/lib/module/WebPolyfillGPUModule.js +0 -38
  254. package/lib/module/WebPolyfillGPUModule.js.map +0 -1
  255. package/lib/module/external/ModuleProxy.js +0 -28
  256. package/lib/module/external/ModuleProxy.js.map +0 -1
  257. package/lib/module/external/index.js +0 -2
  258. package/lib/module/external/index.js.map +0 -1
  259. package/lib/module/external/reanimated/ReanimatedProxy.js +0 -12
  260. package/lib/module/external/reanimated/ReanimatedProxy.js.map +0 -1
  261. package/lib/module/external/reanimated/index.js +0 -3
  262. package/lib/module/external/reanimated/index.js.map +0 -1
  263. package/lib/module/external/reanimated/registerWebGPUForReanimated.js +0 -42
  264. package/lib/module/external/reanimated/registerWebGPUForReanimated.js.map +0 -1
  265. package/lib/module/hooks.js +0 -70
  266. package/lib/module/hooks.js.map +0 -1
  267. package/lib/module/main/index.js +0 -33
  268. package/lib/module/main/index.js.map +0 -1
  269. package/lib/module/main/index.web.js +0 -8
  270. package/lib/module/main/index.web.js.map +0 -1
  271. package/lib/module/types.js +0 -2
  272. package/lib/module/types.js.map +0 -1
  273. package/lib/module/utils.js +0 -5
  274. package/lib/module/utils.js.map +0 -1
  275. package/lib/typescript/babel.config.d.ts +0 -3
  276. package/lib/typescript/babel.config.d.ts.map +0 -1
  277. package/lib/typescript/jest.config.d.ts +0 -9
  278. package/lib/typescript/jest.config.d.ts.map +0 -1
  279. package/lib/typescript/lib/commonjs/Canvas.d.ts +0 -7
  280. package/lib/typescript/lib/commonjs/Canvas.d.ts.map +0 -1
  281. package/lib/typescript/lib/commonjs/NativeWebGPUModule.d.ts +0 -5
  282. package/lib/typescript/lib/commonjs/NativeWebGPUModule.d.ts.map +0 -1
  283. package/lib/typescript/lib/commonjs/Offscreen.d.ts +0 -26
  284. package/lib/typescript/lib/commonjs/Offscreen.d.ts.map +0 -1
  285. package/lib/typescript/lib/commonjs/WebGPUViewNativeComponent.d.ts +0 -5
  286. package/lib/typescript/lib/commonjs/WebGPUViewNativeComponent.d.ts.map +0 -1
  287. package/lib/typescript/lib/commonjs/WebGPUViewNativeComponent.web.d.ts +0 -4
  288. package/lib/typescript/lib/commonjs/WebGPUViewNativeComponent.web.d.ts.map +0 -1
  289. package/lib/typescript/lib/commonjs/WebPolyfillGPUModule.d.ts +0 -2
  290. package/lib/typescript/lib/commonjs/WebPolyfillGPUModule.d.ts.map +0 -1
  291. package/lib/typescript/lib/commonjs/external/ModuleProxy.d.ts +0 -12
  292. package/lib/typescript/lib/commonjs/external/ModuleProxy.d.ts.map +0 -1
  293. package/lib/typescript/lib/commonjs/external/index.d.ts.map +0 -1
  294. package/lib/typescript/lib/commonjs/external/reanimated/ReanimatedProxy.d.ts +0 -6
  295. package/lib/typescript/lib/commonjs/external/reanimated/ReanimatedProxy.d.ts.map +0 -1
  296. package/lib/typescript/lib/commonjs/external/reanimated/index.d.ts +0 -4
  297. package/lib/typescript/lib/commonjs/external/reanimated/index.d.ts.map +0 -1
  298. package/lib/typescript/lib/commonjs/external/reanimated/registerWebGPUForReanimated.d.ts +0 -9
  299. package/lib/typescript/lib/commonjs/external/reanimated/registerWebGPUForReanimated.d.ts.map +0 -1
  300. package/lib/typescript/lib/commonjs/hooks.d.ts +0 -18
  301. package/lib/typescript/lib/commonjs/hooks.d.ts.map +0 -1
  302. package/lib/typescript/lib/commonjs/index.d.ts +0 -2
  303. package/lib/typescript/lib/commonjs/main/index.d.ts +0 -3
  304. package/lib/typescript/lib/commonjs/main/index.d.ts.map +0 -1
  305. package/lib/typescript/lib/commonjs/main/index.web.d.ts +0 -2
  306. package/lib/typescript/lib/commonjs/main/index.web.d.ts.map +0 -1
  307. package/lib/typescript/lib/commonjs/types.d.ts +0 -1
  308. package/lib/typescript/lib/commonjs/types.d.ts.map +0 -1
  309. package/lib/typescript/lib/commonjs/utils.d.ts +0 -3
  310. package/lib/typescript/lib/commonjs/utils.d.ts.map +0 -1
  311. package/lib/typescript/lib/module/Canvas.d.ts +0 -8
  312. package/lib/typescript/lib/module/Canvas.d.ts.map +0 -1
  313. package/lib/typescript/lib/module/NativeWebGPUModule.d.ts +0 -3
  314. package/lib/typescript/lib/module/NativeWebGPUModule.d.ts.map +0 -1
  315. package/lib/typescript/lib/module/Offscreen.d.ts +0 -25
  316. package/lib/typescript/lib/module/Offscreen.d.ts.map +0 -1
  317. package/lib/typescript/lib/module/WebGPUViewNativeComponent.d.ts +0 -3
  318. package/lib/typescript/lib/module/WebGPUViewNativeComponent.d.ts.map +0 -1
  319. package/lib/typescript/lib/module/WebGPUViewNativeComponent.web.d.ts +0 -3
  320. package/lib/typescript/lib/module/WebGPUViewNativeComponent.web.d.ts.map +0 -1
  321. package/lib/typescript/lib/module/WebPolyfillGPUModule.d.ts +0 -2
  322. package/lib/typescript/lib/module/WebPolyfillGPUModule.d.ts.map +0 -1
  323. package/lib/typescript/lib/module/external/ModuleProxy.d.ts +0 -7
  324. package/lib/typescript/lib/module/external/ModuleProxy.d.ts.map +0 -1
  325. package/lib/typescript/lib/module/external/index.d.ts.map +0 -1
  326. package/lib/typescript/lib/module/external/reanimated/ReanimatedProxy.d.ts +0 -5
  327. package/lib/typescript/lib/module/external/reanimated/ReanimatedProxy.d.ts.map +0 -1
  328. package/lib/typescript/lib/module/external/reanimated/index.d.ts.map +0 -1
  329. package/lib/typescript/lib/module/external/reanimated/registerWebGPUForReanimated.d.ts +0 -2
  330. package/lib/typescript/lib/module/external/reanimated/registerWebGPUForReanimated.d.ts.map +0 -1
  331. package/lib/typescript/lib/module/hooks.d.ts +0 -18
  332. package/lib/typescript/lib/module/hooks.d.ts.map +0 -1
  333. package/lib/typescript/lib/module/index.d.ts +0 -2
  334. package/lib/typescript/lib/module/main/index.d.ts.map +0 -1
  335. package/lib/typescript/lib/module/main/index.web.d.ts +0 -5
  336. package/lib/typescript/lib/module/main/index.web.d.ts.map +0 -1
  337. package/lib/typescript/lib/module/types.d.ts +0 -1
  338. package/lib/typescript/lib/module/types.d.ts.map +0 -1
  339. package/lib/typescript/lib/module/utils.d.ts +0 -2
  340. package/lib/typescript/lib/module/utils.d.ts.map +0 -1
  341. package/lib/typescript/src/Canvas.d.ts.map +0 -1
  342. package/lib/typescript/src/NativeWebGPUModule.d.ts.map +0 -1
  343. package/lib/typescript/src/Offscreen.d.ts.map +0 -1
  344. package/lib/typescript/src/WebGPUViewNativeComponent.d.ts.map +0 -1
  345. package/lib/typescript/src/WebGPUViewNativeComponent.web.d.ts +0 -9
  346. package/lib/typescript/src/WebGPUViewNativeComponent.web.d.ts.map +0 -1
  347. package/lib/typescript/src/WebPolyfillGPUModule.d.ts +0 -2
  348. package/lib/typescript/src/WebPolyfillGPUModule.d.ts.map +0 -1
  349. package/lib/typescript/src/external/ModuleProxy.d.ts.map +0 -1
  350. package/lib/typescript/src/external/index.d.ts +0 -2
  351. package/lib/typescript/src/external/index.d.ts.map +0 -1
  352. package/lib/typescript/src/external/reanimated/ReanimatedProxy.d.ts.map +0 -1
  353. package/lib/typescript/src/external/reanimated/index.d.ts +0 -3
  354. package/lib/typescript/src/external/reanimated/index.d.ts.map +0 -1
  355. package/lib/typescript/src/external/reanimated/registerWebGPUForReanimated.d.ts.map +0 -1
  356. package/lib/typescript/src/hooks.d.ts.map +0 -1
  357. package/lib/typescript/src/index.d.ts.map +0 -1
  358. package/lib/typescript/src/main/index.d.ts +0 -6
  359. package/lib/typescript/src/main/index.d.ts.map +0 -1
  360. package/lib/typescript/src/main/index.web.d.ts +0 -6
  361. package/lib/typescript/src/main/index.web.d.ts.map +0 -1
  362. package/lib/typescript/src/types.d.ts.map +0 -1
  363. package/lib/typescript/src/utils.d.ts +0 -2
  364. package/lib/typescript/src/utils.d.ts.map +0 -1
  365. package/libs/android/arm64-v8a/libwebgpu_dawn.so +0 -0
  366. package/libs/android/armeabi-v7a/libwebgpu_dawn.so +0 -0
  367. package/libs/android/x86/libwebgpu_dawn.so +0 -0
  368. package/libs/android/x86_64/libwebgpu_dawn.so +0 -0
  369. package/libs/apple/libwebgpu_dawn.xcframework/Info.plist +0 -59
  370. package/libs/apple/libwebgpu_dawn.xcframework/ios-arm64/libwebgpu_dawn.a +0 -0
  371. package/libs/apple/libwebgpu_dawn.xcframework/ios-arm64_x86_64-simulator/libwebgpu_dawn.a +0 -0
  372. package/libs/apple/libwebgpu_dawn.xcframework/macos-arm64_x86_64/libwebgpu_dawn.a +0 -0
  373. package/react-native-wgpu.podspec +0 -47
  374. package/src/Canvas.tsx +0 -76
  375. package/src/NativeWebGPUModule.ts +0 -9
  376. package/src/Offscreen.ts +0 -113
  377. package/src/WebGPUViewNativeComponent.ts +0 -11
  378. package/src/WebGPUViewNativeComponent.web.ts +0 -113
  379. package/src/WebPolyfillGPUModule.ts +0 -53
  380. package/src/external/ModuleProxy.ts +0 -30
  381. package/src/external/index.ts +0 -1
  382. package/src/external/reanimated/ReanimatedProxy.ts +0 -19
  383. package/src/external/reanimated/index.ts +0 -2
  384. package/src/external/reanimated/registerWebGPUForReanimated.ts +0 -43
  385. package/src/hooks.tsx +0 -93
  386. package/src/index.tsx +0 -91
  387. package/src/main/index.tsx +0 -40
  388. package/src/main/index.web.tsx +0 -8
  389. package/src/types.ts +0 -102
  390. package/src/utils.ts +0 -4
  391. /package/lib/typescript/{src → webgpu/src}/Canvas.d.ts +0 -0
  392. /package/lib/typescript/{src → webgpu/src}/NativeWebGPUModule.d.ts +0 -0
  393. /package/lib/typescript/{src → webgpu/src}/Offscreen.d.ts +0 -0
  394. /package/lib/typescript/{src → webgpu/src}/WebGPUViewNativeComponent.d.ts +0 -0
  395. /package/lib/typescript/{src → webgpu/src}/external/ModuleProxy.d.ts +0 -0
  396. /package/lib/typescript/{lib/module → webgpu/src}/external/index.d.ts +0 -0
  397. /package/lib/typescript/{src → webgpu/src}/external/reanimated/ReanimatedProxy.d.ts +0 -0
  398. /package/lib/typescript/{lib/module → webgpu/src}/external/reanimated/index.d.ts +0 -0
  399. /package/lib/typescript/{src → webgpu/src}/external/reanimated/registerWebGPUForReanimated.d.ts +0 -0
  400. /package/lib/typescript/{src → webgpu/src}/hooks.d.ts +0 -0
  401. /package/lib/typescript/{src → webgpu/src}/index.d.ts +0 -0
  402. /package/lib/typescript/{lib/module → webgpu/src}/main/index.d.ts +0 -0
  403. /package/lib/typescript/{src → webgpu/src}/types.d.ts +0 -0
  404. /package/lib/typescript/{eslint.config.d.mts → webgpu-shim/eslint.config.d.mts} +0 -0
  405. /package/lib/typescript/{lib/commonjs/external → webgpu-shim/lib/commonjs}/index.d.ts +0 -0
@@ -1,302 +0,0 @@
1
- #include "ApplePlatformContext.h"
2
-
3
- #include <TargetConditionals.h>
4
-
5
- #import <AVFoundation/AVFoundation.h>
6
- #import <CoreVideo/CoreVideo.h>
7
- #import <React/RCTBlobManager.h>
8
- #import <React/RCTBridge+Private.h>
9
- #import <ReactCommon/RCTTurboModule.h>
10
-
11
- #include "AppleVideoPlayer.h"
12
-
13
- #include "RNWebGPUManager.h"
14
- #include "WebGPUModule.h"
15
-
16
- namespace rnwgpu {
17
-
18
- void checkIfUsingSimulatorWithAPIValidation() {
19
- #if TARGET_OS_SIMULATOR
20
- NSDictionary *environment = [[NSProcessInfo processInfo] environment];
21
- NSString *metalDeviceWrapperType = environment[@"METAL_DEVICE_WRAPPER_TYPE"];
22
-
23
- if ([metalDeviceWrapperType isEqualToString:@"1"]) {
24
- throw std::runtime_error(
25
- "To use React Native WebGPU project on the iOS simulator, you need to "
26
- "disable the Metal validation API. In 'Edit Scheme,' uncheck 'Metal "
27
- "Validation.'");
28
- }
29
- #endif
30
- }
31
-
32
- ApplePlatformContext::ApplePlatformContext() {
33
- checkIfUsingSimulatorWithAPIValidation();
34
- }
35
-
36
- wgpu::Surface ApplePlatformContext::makeSurface(wgpu::Instance instance,
37
- void *surface, int width,
38
- int height) {
39
- wgpu::SurfaceSourceMetalLayer metalSurfaceDesc;
40
- metalSurfaceDesc.layer = surface;
41
- wgpu::SurfaceDescriptor surfaceDescriptor;
42
- surfaceDescriptor.nextInChain = &metalSurfaceDesc;
43
- return instance.CreateSurface(&surfaceDescriptor);
44
- }
45
-
46
- static std::span<const uint8_t> nsDataToSpan(NSData *data) {
47
- return {static_cast<const uint8_t *>(data.bytes), data.length};
48
- }
49
-
50
- ImageData ApplePlatformContext::createImageBitmap(std::string blobId,
51
- double offset, double size) {
52
- RCTBlobManager *blobManager =
53
- [[RCTBridge currentBridge] moduleForClass:RCTBlobManager.class];
54
- NSData *blobData =
55
- [blobManager resolve:[NSString stringWithUTF8String:blobId.c_str()]
56
- offset:(long)offset
57
- size:(long)size];
58
-
59
- if (!blobData) {
60
- throw std::runtime_error("Couldn't retrieve blob data");
61
- }
62
-
63
- return createImageBitmapFromData(nsDataToSpan(blobData));
64
- }
65
-
66
- void ApplePlatformContext::createImageBitmapAsync(
67
- std::string blobId, double offset, double size,
68
- std::function<void(ImageData)> onSuccess,
69
- std::function<void(std::string)> onError) {
70
- // Resolve blob on current thread (requires RCTBridge access)
71
- RCTBlobManager *blobManager =
72
- [[RCTBridge currentBridge] moduleForClass:RCTBlobManager.class];
73
- NSData *blobData =
74
- [blobManager resolve:[NSString stringWithUTF8String:blobId.c_str()]
75
- offset:(long)offset
76
- size:(long)size];
77
-
78
- if (!blobData) {
79
- onError("Couldn't retrieve blob data");
80
- return;
81
- }
82
-
83
- // blobData is alive during this synchronous call;
84
- // createImageBitmapFromDataAsync copies the span before dispatching
85
- createImageBitmapFromDataAsync(nsDataToSpan(blobData), std::move(onSuccess),
86
- std::move(onError));
87
- }
88
-
89
- ImageData
90
- ApplePlatformContext::createImageBitmapFromData(std::span<const uint8_t> data) {
91
- // This avoids a copy by assuming the UIImage/NSImage constructors
92
- // decode `nsData` eagerly before the memory for the wrapped `data`
93
- // is freed.
94
- //
95
- // Since we get the `CGImageRef` from `image` and then throw
96
- // it away, that's a fairly safe assumption.
97
- NSData *nsData =
98
- [NSData dataWithBytesNoCopy:const_cast<uint8_t *>(data.data())
99
- length:data.size()
100
- freeWhenDone:NO];
101
-
102
- #if !TARGET_OS_OSX
103
- UIImage *image = [UIImage imageWithData:nsData];
104
- #else
105
- NSImage *image = [[NSImage alloc] initWithData:nsData];
106
- #endif
107
- if (!image) {
108
- throw std::runtime_error("Couldn't decode image");
109
- }
110
-
111
- #if !TARGET_OS_OSX
112
- CGImageRef cgImage = image.CGImage;
113
- #else
114
- CGImageRef cgImage = [image CGImageForProposedRect:NULL
115
- context:NULL
116
- hints:NULL];
117
- #endif
118
- size_t width = CGImageGetWidth(cgImage);
119
- size_t height = CGImageGetHeight(cgImage);
120
- size_t bitsPerComponent = 8;
121
- size_t bytesPerRow = width * 4;
122
-
123
- ImageData result;
124
- result.width = static_cast<int>(width);
125
- result.height = static_cast<int>(height);
126
- result.data.resize(height * bytesPerRow);
127
- result.format = wgpu::TextureFormat::RGBA8Unorm;
128
-
129
- CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();
130
- CGContextRef context = CGBitmapContextCreate(
131
- result.data.data(), width, height, bitsPerComponent, bytesPerRow,
132
- colorSpace, kCGImageAlphaPremultipliedLast | kCGBitmapByteOrder32Big);
133
-
134
- CGContextDrawImage(context, CGRectMake(0, 0, width, height), cgImage);
135
-
136
- CGContextRelease(context);
137
- CGColorSpaceRelease(colorSpace);
138
-
139
- return result;
140
- }
141
-
142
- void ApplePlatformContext::createImageBitmapFromDataAsync(
143
- std::span<const uint8_t> data, std::function<void(ImageData)> onSuccess,
144
- std::function<void(std::string)> onError) {
145
- // Copy span data into shared_ptr so the dispatch_async block owns the memory
146
- auto ownedData =
147
- std::make_shared<std::vector<uint8_t>>(data.begin(), data.end());
148
-
149
- dispatch_async(dispatch_get_global_queue(QOS_CLASS_USER_INITIATED, 0), ^{
150
- @autoreleasepool {
151
- try {
152
- auto result = createImageBitmapFromData(*ownedData);
153
- onSuccess(std::move(result));
154
- } catch (const std::exception &e) {
155
- onError(e.what());
156
- }
157
- }
158
- });
159
- }
160
-
161
- VideoFrameHandle
162
- ApplePlatformContext::loadVideoFrame(const std::string &path) {
163
- NSString *nsPath = [NSString stringWithUTF8String:path.c_str()];
164
- NSURL *url = [nsPath hasPrefix:@"file://"]
165
- ? [NSURL URLWithString:nsPath]
166
- : [NSURL fileURLWithPath:nsPath];
167
- AVURLAsset *asset = [AVURLAsset assetWithURL:url];
168
-
169
- NSArray<AVAssetTrack *> *videoTracks =
170
- [asset tracksWithMediaType:AVMediaTypeVideo];
171
- if (videoTracks.count == 0) {
172
- throw std::runtime_error("loadVideoFrame: no video track in file");
173
- }
174
- AVAssetTrack *videoTrack = videoTracks.firstObject;
175
-
176
- NSError *error = nil;
177
- AVAssetReader *reader = [AVAssetReader assetReaderWithAsset:asset
178
- error:&error];
179
- if (error || !reader) {
180
- throw std::runtime_error(
181
- std::string("loadVideoFrame: AVAssetReader init failed: ") +
182
- [[error localizedDescription] UTF8String]);
183
- }
184
-
185
- NSDictionary *outputSettings = @{
186
- (NSString *)kCVPixelBufferPixelFormatTypeKey :
187
- @(kCVPixelFormatType_32BGRA),
188
- (NSString *)kCVPixelBufferIOSurfacePropertiesKey : @{},
189
- (NSString *)kCVPixelBufferMetalCompatibilityKey : @YES,
190
- };
191
- AVAssetReaderTrackOutput *output =
192
- [AVAssetReaderTrackOutput assetReaderTrackOutputWithTrack:videoTrack
193
- outputSettings:outputSettings];
194
- output.alwaysCopiesSampleData = NO;
195
- if (![reader canAddOutput:output]) {
196
- throw std::runtime_error("loadVideoFrame: cannot add output");
197
- }
198
- [reader addOutput:output];
199
-
200
- if (![reader startReading]) {
201
- throw std::runtime_error(
202
- std::string("loadVideoFrame: startReading failed: ") +
203
- [[reader.error localizedDescription] UTF8String]);
204
- }
205
-
206
- CMSampleBufferRef sampleBuffer = [output copyNextSampleBuffer];
207
- if (!sampleBuffer) {
208
- throw std::runtime_error("loadVideoFrame: no sample buffer");
209
- }
210
-
211
- CVPixelBufferRef pixelBuffer = CMSampleBufferGetImageBuffer(sampleBuffer);
212
- if (!pixelBuffer) {
213
- CFRelease(sampleBuffer);
214
- throw std::runtime_error("loadVideoFrame: no pixel buffer");
215
- }
216
-
217
- IOSurfaceRef ioSurface = CVPixelBufferGetIOSurface(pixelBuffer);
218
- if (!ioSurface) {
219
- CFRelease(sampleBuffer);
220
- throw std::runtime_error(
221
- "loadVideoFrame: pixel buffer is not IOSurface-backed");
222
- }
223
-
224
- // Retain the IOSurface so it survives past the sample buffer's lifetime.
225
- CFRetain(ioSurface);
226
-
227
- VideoFrameHandle handle;
228
- handle.handle = (void *)ioSurface;
229
- handle.width = static_cast<uint32_t>(CVPixelBufferGetWidth(pixelBuffer));
230
- handle.height = static_cast<uint32_t>(CVPixelBufferGetHeight(pixelBuffer));
231
- handle.deleter = [ioSurface]() { CFRelease(ioSurface); };
232
-
233
- CFRelease(sampleBuffer);
234
- [reader cancelReading];
235
-
236
- return handle;
237
- }
238
-
239
- std::unique_ptr<IVideoPlayer>
240
- ApplePlatformContext::createVideoPlayer(const std::string &path,
241
- VideoPixelFormat format) {
242
- return createAppleVideoPlayer(path, format);
243
- }
244
-
245
- std::string ApplePlatformContext::writeTestVideoFile() {
246
- return writeAppleTestVideoFile();
247
- }
248
-
249
- VideoFrameHandle ApplePlatformContext::wrapNativeBuffer(void *pointer) {
250
- return wrapCVPixelBuffer(static_cast<CVPixelBufferRef>(pointer));
251
- }
252
-
253
- VideoFrameHandle
254
- ApplePlatformContext::createTestVideoFrame(uint32_t width, uint32_t height) {
255
- NSDictionary *attrs = @{
256
- (NSString *)kCVPixelBufferIOSurfacePropertiesKey : @{},
257
- (NSString *)kCVPixelBufferMetalCompatibilityKey : @YES,
258
- };
259
- CVPixelBufferRef pixelBuffer = NULL;
260
- CVReturn err = CVPixelBufferCreate(
261
- kCFAllocatorDefault, width, height, kCVPixelFormatType_32BGRA,
262
- (__bridge CFDictionaryRef)attrs, &pixelBuffer);
263
- if (err != kCVReturnSuccess || !pixelBuffer) {
264
- throw std::runtime_error("createTestVideoFrame: CVPixelBufferCreate "
265
- "failed");
266
- }
267
-
268
- CVPixelBufferLockBaseAddress(pixelBuffer, 0);
269
- uint8_t *base =
270
- static_cast<uint8_t *>(CVPixelBufferGetBaseAddress(pixelBuffer));
271
- size_t rowBytes = CVPixelBufferGetBytesPerRow(pixelBuffer);
272
- for (uint32_t y = 0; y < height; ++y) {
273
- uint8_t *row = base + y * rowBytes;
274
- for (uint32_t x = 0; x < width; ++x) {
275
- // RGB gradient + diagonal stripes, in BGRA byte order.
276
- uint8_t r = static_cast<uint8_t>((x * 255) / std::max(width - 1, 1u));
277
- uint8_t g = static_cast<uint8_t>((y * 255) / std::max(height - 1, 1u));
278
- uint8_t b = static_cast<uint8_t>(((x + y) & 0x20) ? 220 : 30);
279
- row[x * 4 + 0] = b;
280
- row[x * 4 + 1] = g;
281
- row[x * 4 + 2] = r;
282
- row[x * 4 + 3] = 0xFF;
283
- }
284
- }
285
- CVPixelBufferUnlockBaseAddress(pixelBuffer, 0);
286
-
287
- IOSurfaceRef ioSurface = CVPixelBufferGetIOSurface(pixelBuffer);
288
- if (!ioSurface) {
289
- CFRelease(pixelBuffer);
290
- throw std::runtime_error(
291
- "createTestVideoFrame: pixel buffer is not IOSurface-backed");
292
- }
293
-
294
- VideoFrameHandle handle;
295
- handle.handle = (void *)ioSurface;
296
- handle.width = width;
297
- handle.height = height;
298
- handle.deleter = [pixelBuffer]() { CFRelease(pixelBuffer); };
299
- return handle;
300
- }
301
-
302
- } // namespace rnwgpu
@@ -1,31 +0,0 @@
1
- #pragma once
2
-
3
- #include "PlatformContext.h"
4
-
5
- #include <memory>
6
- #include <string>
7
-
8
- #ifdef __OBJC__
9
- #import <CoreVideo/CoreVideo.h>
10
- #endif
11
-
12
- namespace rnwgpu {
13
-
14
- // Factory: creates a new IVideoPlayer backed by AVPlayer +
15
- // AVPlayerItemVideoOutput. `format` selects the surface layout.
16
- std::unique_ptr<IVideoPlayer>
17
- createAppleVideoPlayer(const std::string &path, VideoPixelFormat format);
18
-
19
- // Generate a small procedurally-animated test video and write it to a
20
- // temporary file. Returns the absolute path. Used by the SharedTextureMemory
21
- // example so it doesn't need a bundled .mp4.
22
- std::string writeAppleTestVideoFile();
23
-
24
- #ifdef __OBJC__
25
- // Build a VideoFrameHandle from an existing CVPixelBuffer. CFRetains the
26
- // pixel buffer so the caller can release their reference immediately. Reads
27
- // IOSurface, dimensions, pixel format, and YUV matrix off the buffer.
28
- VideoFrameHandle wrapCVPixelBuffer(CVPixelBufferRef pixelBuffer);
29
- #endif
30
-
31
- } // namespace rnwgpu
@@ -1,314 +0,0 @@
1
- #include "AppleVideoPlayer.h"
2
-
3
- #import <AVFoundation/AVFoundation.h>
4
- #import <CoreVideo/CoreVideo.h>
5
-
6
- #include <stdexcept>
7
-
8
- namespace rnwgpu {
9
-
10
- namespace {
11
-
12
- // 3x4 row-major matrices mapping [Y, Cb, Cr, 1] to gamma-encoded R'G'B' (NOT
13
- // linear): YCbCr is derived from gamma-encoded RGB, so this conversion stays in
14
- // the encoded domain. The sRGB decode in srcTransferFunctionParameters
15
- // linearizes afterward (see GPUExternalTexture.cpp). Limited-range (video
16
- // range) means luma is 16..235, chroma is 16..240 (8-bit).
17
- // Reference: https://en.wikipedia.org/wiki/YCbCr (BT.601 / BT.709).
18
- static constexpr float kBT709LimitedToRgb[12] = {
19
- 1.164383f, 0.000000f, 1.792741f, -0.972945f, //
20
- 1.164383f, -0.213249f, -0.532909f, 0.301517f, //
21
- 1.164383f, 2.112402f, 0.000000f, -1.133402f, //
22
- };
23
- static constexpr float kBT601LimitedToRgb[12] = {
24
- 1.164383f, 0.000000f, 1.596027f, -0.874202f, //
25
- 1.164383f, -0.391762f, -0.812968f, 0.531668f, //
26
- 1.164383f, 2.017232f, 0.000000f, -1.085631f, //
27
- };
28
- static constexpr float kBT2020LimitedToRgb[12] = {
29
- 1.164383f, 0.000000f, 1.678674f, -0.915688f, //
30
- 1.164383f, -0.187326f, -0.650424f, 0.347459f, //
31
- 1.164383f, 2.141772f, 0.000000f, -1.148145f, //
32
- };
33
-
34
- // Pick the right YUV→RGB matrix from the pixel buffer's color attachments.
35
- // Falls back to BT.709 limited range (the right call for ≥720p H.264, which
36
- // is what AVPlayer hands us for Big Buck Bunny and most streamed media).
37
- static void fillYuvMatrix(CVPixelBufferRef pixelBuffer, float out[12]) {
38
- CFTypeRef matrixKey = CVBufferGetAttachment(
39
- pixelBuffer, kCVImageBufferYCbCrMatrixKey, nullptr);
40
- const float *src = kBT709LimitedToRgb;
41
- if (matrixKey) {
42
- auto matrix = (CFStringRef)matrixKey;
43
- if (CFEqual(matrix, kCVImageBufferYCbCrMatrix_ITU_R_601_4) ||
44
- CFEqual(matrix, kCVImageBufferYCbCrMatrix_SMPTE_240M_1995)) {
45
- src = kBT601LimitedToRgb;
46
- } else if (CFEqual(matrix, kCVImageBufferYCbCrMatrix_ITU_R_2020)) {
47
- src = kBT2020LimitedToRgb;
48
- }
49
- }
50
- for (int i = 0; i < 12; ++i) {
51
- out[i] = src[i];
52
- }
53
- }
54
-
55
- // Map a CVPixelBuffer's pixel format to our VideoPixelFormat enum.
56
- static VideoPixelFormat pixelFormatFromCVPixelBuffer(
57
- CVPixelBufferRef pixelBuffer) {
58
- OSType type = CVPixelBufferGetPixelFormatType(pixelBuffer);
59
- switch (type) {
60
- case kCVPixelFormatType_420YpCbCr8BiPlanarVideoRange:
61
- case kCVPixelFormatType_420YpCbCr8BiPlanarFullRange:
62
- return VideoPixelFormat::NV12;
63
- default:
64
- return VideoPixelFormat::BGRA8;
65
- }
66
- }
67
-
68
- class AppleVideoPlayer : public IVideoPlayer {
69
- public:
70
- AppleVideoPlayer(AVPlayer *player, AVPlayerItemVideoOutput *output,
71
- id loopObserver)
72
- : _player(player), _output(output), _loopObserver(loopObserver) {}
73
-
74
- ~AppleVideoPlayer() override {
75
- if (_loopObserver) {
76
- [[NSNotificationCenter defaultCenter] removeObserver:_loopObserver];
77
- _loopObserver = nil;
78
- }
79
- [_player pause];
80
- _player = nil;
81
- _output = nil;
82
- }
83
-
84
- VideoFrameHandle copyLatestFrame() override {
85
- CMTime currentTime = [_output itemTimeForHostTime:CACurrentMediaTime()];
86
- if (![_output hasNewPixelBufferForItemTime:currentTime]) {
87
- return {};
88
- }
89
- // copyPixelBufferForItemTime returns a +1 retained CVPixelBuffer; we then
90
- // hand it to wrapCVPixelBuffer which adds another retain. Balance with a
91
- // CFRelease here so we don't leak.
92
- CVPixelBufferRef pixelBuffer =
93
- [_output copyPixelBufferForItemTime:currentTime
94
- itemTimeForDisplay:nullptr];
95
- if (!pixelBuffer) {
96
- return {};
97
- }
98
- try {
99
- auto handle = wrapCVPixelBuffer(pixelBuffer);
100
- CFRelease(pixelBuffer);
101
- return handle;
102
- } catch (...) {
103
- CFRelease(pixelBuffer);
104
- throw;
105
- }
106
- }
107
-
108
- void play() override { [_player play]; }
109
- void pause() override { [_player pause]; }
110
-
111
- private:
112
- AVPlayer *_player;
113
- AVPlayerItemVideoOutput *_output;
114
- id _loopObserver;
115
- };
116
-
117
- } // namespace
118
-
119
- VideoFrameHandle wrapCVPixelBuffer(CVPixelBufferRef pixelBuffer) {
120
- if (!pixelBuffer) {
121
- throw std::runtime_error("wrapCVPixelBuffer: pointer is null");
122
- }
123
- IOSurfaceRef ioSurface = CVPixelBufferGetIOSurface(pixelBuffer);
124
- if (!ioSurface) {
125
- throw std::runtime_error(
126
- "wrapCVPixelBuffer: pixel buffer is not IOSurface-backed (was the "
127
- "camera/video pipeline configured for Metal/IOSurface output?)");
128
- }
129
-
130
- // Retain the pixel buffer so the caller can release theirs immediately.
131
- CFRetain(pixelBuffer);
132
-
133
- VideoFrameHandle handle;
134
- handle.handle = (void *)ioSurface;
135
- handle.width = static_cast<uint32_t>(CVPixelBufferGetWidth(pixelBuffer));
136
- handle.height = static_cast<uint32_t>(CVPixelBufferGetHeight(pixelBuffer));
137
- handle.pixelFormat = pixelFormatFromCVPixelBuffer(pixelBuffer);
138
- if (handle.pixelFormat == VideoPixelFormat::NV12) {
139
- fillYuvMatrix(pixelBuffer, handle.yuvToRgbMatrix);
140
- }
141
- handle.deleter = [pixelBuffer]() { CFRelease(pixelBuffer); };
142
- return handle;
143
- }
144
-
145
- std::unique_ptr<IVideoPlayer>
146
- createAppleVideoPlayer(const std::string &path, VideoPixelFormat format) {
147
- NSString *nsPath = [NSString stringWithUTF8String:path.c_str()];
148
- NSURL *url;
149
- if ([nsPath hasPrefix:@"http://"] || [nsPath hasPrefix:@"https://"] ||
150
- [nsPath hasPrefix:@"file://"]) {
151
- url = [NSURL URLWithString:nsPath];
152
- } else {
153
- url = [NSURL fileURLWithPath:nsPath];
154
- }
155
-
156
- AVPlayerItem *item = [AVPlayerItem playerItemWithURL:url];
157
- if (!item) {
158
- throw std::runtime_error("createAppleVideoPlayer: failed to create "
159
- "AVPlayerItem");
160
- }
161
-
162
- // NV12 (kCVPixelFormatType_420YpCbCr8BiPlanarVideoRange) lets us hand the
163
- // IOSurface straight to Dawn as a multi-planar texture for
164
- // importExternalTexture. BGRA is the "decode + convert" path for the
165
- // single-plane SharedTextureMemory demo.
166
- OSType pixelFormat = format == VideoPixelFormat::NV12
167
- ? kCVPixelFormatType_420YpCbCr8BiPlanarVideoRange
168
- : kCVPixelFormatType_32BGRA;
169
- NSDictionary *outputSettings = @{
170
- (NSString *)kCVPixelBufferPixelFormatTypeKey : @(pixelFormat),
171
- (NSString *)kCVPixelBufferIOSurfacePropertiesKey : @{},
172
- (NSString *)kCVPixelBufferMetalCompatibilityKey : @YES,
173
- };
174
- AVPlayerItemVideoOutput *output = [[AVPlayerItemVideoOutput alloc]
175
- initWithPixelBufferAttributes:outputSettings];
176
- [item addOutput:output];
177
-
178
- AVPlayer *player = [AVPlayer playerWithPlayerItem:item];
179
- player.actionAtItemEnd = AVPlayerActionAtItemEndNone;
180
-
181
- // Loop on end-of-stream by seeking back to zero.
182
- __weak AVPlayer *weakPlayer = player;
183
- id loopObserver = [[NSNotificationCenter defaultCenter]
184
- addObserverForName:AVPlayerItemDidPlayToEndTimeNotification
185
- object:item
186
- queue:[NSOperationQueue mainQueue]
187
- usingBlock:^(NSNotification * /*note*/) {
188
- [weakPlayer seekToTime:kCMTimeZero];
189
- [weakPlayer play];
190
- }];
191
-
192
- return std::make_unique<AppleVideoPlayer>(player, output, loopObserver);
193
- }
194
-
195
- std::string writeAppleTestVideoFile() {
196
- NSString *tmpDir = NSTemporaryDirectory();
197
- NSString *outputPath =
198
- [tmpDir stringByAppendingPathComponent:@"rnwgpu-test-video.mp4"];
199
- NSURL *outputURL = [NSURL fileURLWithPath:outputPath];
200
-
201
- // If the file already exists, reuse it. This makes the example zero-cost on
202
- // subsequent runs.
203
- if ([[NSFileManager defaultManager] fileExistsAtPath:outputPath]) {
204
- return [outputPath UTF8String];
205
- }
206
-
207
- NSError *error = nil;
208
- AVAssetWriter *writer = [AVAssetWriter assetWriterWithURL:outputURL
209
- fileType:AVFileTypeMPEG4
210
- error:&error];
211
- if (error || !writer) {
212
- throw std::runtime_error(
213
- std::string("writeTestVideoFile: AVAssetWriter init failed: ") +
214
- [[error localizedDescription] UTF8String]);
215
- }
216
-
217
- const int kWidth = 256;
218
- const int kHeight = 256;
219
- const int kFps = 30;
220
- const int kSeconds = 3;
221
- const int kTotalFrames = kFps * kSeconds;
222
-
223
- NSDictionary *videoSettings = @{
224
- AVVideoCodecKey : AVVideoCodecTypeH264,
225
- AVVideoWidthKey : @(kWidth),
226
- AVVideoHeightKey : @(kHeight),
227
- };
228
- AVAssetWriterInput *writerInput =
229
- [AVAssetWriterInput assetWriterInputWithMediaType:AVMediaTypeVideo
230
- outputSettings:videoSettings];
231
- writerInput.expectsMediaDataInRealTime = NO;
232
-
233
- NSDictionary *bufferAttrs = @{
234
- (NSString *)kCVPixelBufferPixelFormatTypeKey :
235
- @(kCVPixelFormatType_32BGRA),
236
- (NSString *)kCVPixelBufferWidthKey : @(kWidth),
237
- (NSString *)kCVPixelBufferHeightKey : @(kHeight),
238
- (NSString *)kCVPixelBufferIOSurfacePropertiesKey : @{},
239
- };
240
- AVAssetWriterInputPixelBufferAdaptor *adaptor =
241
- [AVAssetWriterInputPixelBufferAdaptor
242
- assetWriterInputPixelBufferAdaptorWithAssetWriterInput:writerInput
243
- sourcePixelBufferAttributes:bufferAttrs];
244
- [writer addInput:writerInput];
245
-
246
- if (![writer startWriting]) {
247
- throw std::runtime_error(
248
- std::string("writeTestVideoFile: startWriting failed: ") +
249
- [[writer.error localizedDescription] UTF8String]);
250
- }
251
- [writer startSessionAtSourceTime:kCMTimeZero];
252
-
253
- for (int i = 0; i < kTotalFrames; ++i) {
254
- // Spin briefly if the input is not ready (the adaptor pool fills up).
255
- while (!writerInput.isReadyForMoreMediaData) {
256
- [NSThread sleepForTimeInterval:0.005];
257
- }
258
-
259
- CVPixelBufferRef pixelBuffer = NULL;
260
- CVReturn err = CVPixelBufferPoolCreatePixelBuffer(
261
- kCFAllocatorDefault, adaptor.pixelBufferPool, &pixelBuffer);
262
- if (err != kCVReturnSuccess || !pixelBuffer) {
263
- throw std::runtime_error("writeTestVideoFile: pool exhausted");
264
- }
265
-
266
- CVPixelBufferLockBaseAddress(pixelBuffer, 0);
267
- uint8_t *base =
268
- static_cast<uint8_t *>(CVPixelBufferGetBaseAddress(pixelBuffer));
269
- size_t rowBytes = CVPixelBufferGetBytesPerRow(pixelBuffer);
270
- // Procedural pattern: scrolling diagonal stripes + per-frame color shift.
271
- int phase = i * 6;
272
- for (int y = 0; y < kHeight; ++y) {
273
- uint8_t *row = base + y * rowBytes;
274
- for (int x = 0; x < kWidth; ++x) {
275
- uint8_t r = static_cast<uint8_t>((x + phase) & 0xFF);
276
- uint8_t g = static_cast<uint8_t>((y + phase * 2) & 0xFF);
277
- uint8_t b =
278
- static_cast<uint8_t>(((x + y + phase) & 0x40) ? 220 : 30);
279
- row[x * 4 + 0] = b;
280
- row[x * 4 + 1] = g;
281
- row[x * 4 + 2] = r;
282
- row[x * 4 + 3] = 0xFF;
283
- }
284
- }
285
- CVPixelBufferUnlockBaseAddress(pixelBuffer, 0);
286
-
287
- CMTime pts = CMTimeMake(i, kFps);
288
- if (![adaptor appendPixelBuffer:pixelBuffer withPresentationTime:pts]) {
289
- CFRelease(pixelBuffer);
290
- throw std::runtime_error(
291
- std::string("writeTestVideoFile: appendPixelBuffer failed: ") +
292
- [[writer.error localizedDescription] UTF8String]);
293
- }
294
- CFRelease(pixelBuffer);
295
- }
296
-
297
- [writerInput markAsFinished];
298
- dispatch_semaphore_t sem = dispatch_semaphore_create(0);
299
- [writer finishWritingWithCompletionHandler:^{
300
- dispatch_semaphore_signal(sem);
301
- }];
302
- dispatch_semaphore_wait(sem, DISPATCH_TIME_FOREVER);
303
-
304
- if (writer.status != AVAssetWriterStatusCompleted) {
305
- throw std::runtime_error(
306
- std::string("writeTestVideoFile: writer finished with status ") +
307
- std::to_string(static_cast<long>(writer.status)) + ": " +
308
- [[writer.error localizedDescription] UTF8String]);
309
- }
310
-
311
- return [outputPath UTF8String];
312
- }
313
-
314
- } // namespace rnwgpu
package/apple/MetalView.h DELETED
@@ -1,13 +0,0 @@
1
- #pragma once
2
-
3
- #import "RNWGUIKit.h"
4
- #import "WebGPUModule.h"
5
-
6
- @interface MetalView : RNWGPlatformView
7
-
8
- @property NSNumber *contextId;
9
-
10
- - (void)configure;
11
- - (void)update;
12
-
13
- @end