react-native-wgpu 0.5.13 → 0.5.15

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