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,335 +0,0 @@
1
- #include "GPUExternalTexture.h"
2
-
3
- #include <cmath>
4
- #include <memory>
5
- #include <string>
6
- #include <utility>
7
-
8
- #include "GPUExternalTextureDescriptor.h"
9
-
10
- namespace rnwgpu {
11
-
12
- // Identity gamut (BT.709 -> sRGB, same primaries) as a 3x3 column-major matrix.
13
- static const float kIdentityGamutMatrix[9] = {
14
- 1.0f, 0.0f, 0.0f, //
15
- 0.0f, 1.0f, 0.0f, //
16
- 0.0f, 0.0f, 1.0f, //
17
- };
18
-
19
- // Piecewise gamma transfer-function parameters Dawn expects:
20
- // for |x| < D: y = sign(x) * (C * |x| + F)
21
- // else : y = sign(x) * (pow(A * |x| + B, G) + E)
22
- // sRGB decode (encoded -> linear).
23
- static const float kSrgbDecodeParams[7] = {
24
- 2.4f, // G
25
- 1.0f / 1.055f, // A
26
- 0.055f / 1.055f, // B
27
- 1.0f / 12.92f, // C
28
- 0.04045f, // D
29
- 0.0f, // E
30
- 0.0f, // F
31
- };
32
- // sRGB encode (linear -> encoded).
33
- static const float kSrgbEncodeParams[7] = {
34
- 1.0f / 2.4f, // G
35
- 1.055f, // A
36
- 0.0f, // B
37
- 12.92f, // C
38
- 0.0031308f, // D
39
- -0.055f, // E
40
- 0.0f, // F
41
- };
42
-
43
- // Identity transfer (y = x). Used when the sampled surface is already in the
44
- // render target's color space: a single-plane BGRA IOSurface, or the Android
45
- // opaque-YCbCr path where the Vulkan sampler already produced RGB. Dawn
46
- // dereferences the transfer-function arrays unconditionally
47
- // (ComputeExternalTextureParams), so these must be non-null even when no
48
- // conversion is wanted.
49
- static const float kIdentityTransferParams[7] = {
50
- 1.0f, // G
51
- 1.0f, // A
52
- 0.0f, // B
53
- 0.0f, // C
54
- 0.0f, // D
55
- 0.0f, // E
56
- 0.0f, // F
57
- };
58
-
59
- // BT.709 limited-range YUV -> R'G'B' as a 3x4 row-major matrix mapping
60
- // [Y, Cb, Cr, 1] to gamma-encoded R'G'B' (NOT linear; the sRGB decode in
61
- // srcTransferFunctionParameters linearizes afterwards). Same values the Apple
62
- // NV12 path computes from the CVPixelBuffer; used for Android buffers that
63
- // arrive as a *defined* biplanar format (where we split the planes and convert
64
- // ourselves) rather than an opaque external-format AHB. Camera streams are
65
- // limited-range BT.709 in the overwhelming majority of cases; full-range /
66
- // BT.601 would need different coefficients (refine from the buffer's suggested
67
- // range if it matters).
68
- [[maybe_unused]] static const float kBT709LimitedToRgb[12] = {
69
- 1.164383f, 0.000000f, 1.792741f, -0.972945f, //
70
- 1.164383f, -0.213249f, -0.532909f, 0.301517f, //
71
- 1.164383f, 2.112402f, 0.000000f, -1.133402f, //
72
- };
73
-
74
- // True for the multi-planar Y + CbCr formats whose planes we can view as
75
- // Plane0Only (luma) / Plane1Only (chroma) and convert with an explicit matrix.
76
- // Excludes OpaqueYCbCrAndroid (external format, no plane views) and triplanar
77
- // formats (would need a third plane). Only referenced on Android.
78
- [[maybe_unused]] static bool isBiplanarYuvFormat(wgpu::TextureFormat format) {
79
- switch (format) {
80
- case wgpu::TextureFormat::R8BG8Biplanar420Unorm:
81
- case wgpu::TextureFormat::R8BG8Biplanar422Unorm:
82
- case wgpu::TextureFormat::R8BG8Biplanar444Unorm:
83
- case wgpu::TextureFormat::R10X6BG10X6Biplanar420Unorm:
84
- case wgpu::TextureFormat::R10X6BG10X6Biplanar422Unorm:
85
- case wgpu::TextureFormat::R10X6BG10X6Biplanar444Unorm:
86
- return true;
87
- default:
88
- return false;
89
- }
90
- }
91
-
92
- // Map a rotation in degrees (0 / 90 / 180 / 270) to Dawn's enum. Anything that
93
- // isn't a clean multiple of 90 snaps to the nearest quadrant; Dawn only
94
- // supports those four steps for external textures.
95
- static wgpu::ExternalTextureRotation
96
- toExternalTextureRotation(double degrees) {
97
- int quadrant = static_cast<int>(std::lround(degrees / 90.0)) & 3;
98
- switch (quadrant) {
99
- case 1:
100
- return wgpu::ExternalTextureRotation::Rotate90Degrees;
101
- case 2:
102
- return wgpu::ExternalTextureRotation::Rotate180Degrees;
103
- case 3:
104
- return wgpu::ExternalTextureRotation::Rotate270Degrees;
105
- default:
106
- return wgpu::ExternalTextureRotation::Rotate0Degrees;
107
- }
108
- }
109
-
110
- std::shared_ptr<GPUExternalTexture> GPUExternalTexture::Create(
111
- wgpu::Device device,
112
- std::shared_ptr<GPUExternalTextureDescriptor> descriptor) {
113
- if (!descriptor || !descriptor->source) {
114
- throw std::runtime_error(
115
- "GPUExternalTexture::Create(): descriptor.source (VideoFrame) "
116
- "is required");
117
- }
118
- const auto &source = descriptor->source;
119
- const auto &frame = source->handle();
120
- if (frame.handle == nullptr) {
121
- throw std::runtime_error(
122
- "GPUExternalTexture::Create(): VideoFrame has been released");
123
- }
124
-
125
- #if defined(__APPLE__)
126
- // 1. Import the IOSurface as SharedTextureMemory. For NV12 surfaces this
127
- // yields a biplanar texture; for BGRA, a single-plane one.
128
- wgpu::SharedTextureMemoryDescriptor memDesc{};
129
- std::string label = descriptor->label.value_or("external-texture");
130
- if (!label.empty()) {
131
- memDesc.label = wgpu::StringView(label.c_str(), label.size());
132
- }
133
- wgpu::SharedTextureMemoryIOSurfaceDescriptor platformDesc{};
134
- platformDesc.ioSurface = frame.handle;
135
- // ExternalTexture views are sampled-only; storage binding isn't needed and
136
- // for biplanar formats it would fail validation.
137
- platformDesc.allowStorageBinding = false;
138
- memDesc.nextInChain = &platformDesc;
139
- auto memory = device.ImportSharedTextureMemory(&memDesc);
140
- if (memory == nullptr) {
141
- throw std::runtime_error(
142
- "GPUExternalTexture::Create(): ImportSharedTextureMemory "
143
- "returned null. Is 'shared-texture-memory-iosurface' enabled?");
144
- }
145
-
146
- // 2. Create the texture from the surface. We pass the right format
147
- // explicitly so Dawn picks the multi-planar variant on NV12.
148
- bool isYuv = frame.pixelFormat == VideoPixelFormat::NV12;
149
- auto texture = memory.CreateTexture();
150
- if (texture == nullptr) {
151
- throw std::runtime_error(
152
- "GPUExternalTexture::Create(): CreateTexture returned null");
153
- }
154
-
155
- // 3. Begin access on the underlying memory. The matching EndAccess runs when
156
- // the GPUExternalTexture is destroyed (explicitly via destroy() or at GC).
157
- wgpu::SharedTextureMemoryBeginAccessDescriptor begin{};
158
- begin.initialized = true;
159
- begin.concurrentRead = false;
160
- if (!memory.BeginAccess(texture, &begin)) {
161
- throw std::runtime_error(
162
- "GPUExternalTexture::Create(): BeginAccess failed");
163
- }
164
-
165
- // 4. Build plane views. For NV12 we need plane0 = R8 luma and plane1 = RG8
166
- // chroma; for BGRA we only set plane0.
167
- wgpu::TextureView plane0;
168
- wgpu::TextureView plane1;
169
- {
170
- wgpu::TextureViewDescriptor v{};
171
- v.aspect =
172
- isYuv ? wgpu::TextureAspect::Plane0Only : wgpu::TextureAspect::All;
173
- plane0 = texture.CreateView(&v);
174
- }
175
- if (isYuv) {
176
- wgpu::TextureViewDescriptor v{};
177
- v.aspect = wgpu::TextureAspect::Plane1Only;
178
- plane1 = texture.CreateView(&v);
179
- }
180
-
181
- // 5. Build the ExternalTextureDescriptor. We hand Dawn explicit YUV→RGB and
182
- // sRGB transfer-function parameters so the sampler does the full color
183
- // conversion in hardware.
184
- wgpu::ExternalTextureDescriptor extDesc{};
185
- if (!label.empty()) {
186
- extDesc.label = wgpu::StringView(label.c_str(), label.size());
187
- }
188
- extDesc.plane0 = plane0;
189
- extDesc.gamutConversionMatrix = kIdentityGamutMatrix;
190
- if (isYuv) {
191
- extDesc.plane1 = plane1;
192
- extDesc.yuvToRgbConversionMatrix = frame.yuvToRgbMatrix;
193
- extDesc.srcTransferFunctionParameters = kSrgbDecodeParams;
194
- extDesc.dstTransferFunctionParameters = kSrgbEncodeParams;
195
- } else {
196
- // BGRA is already RGB in the target color space; pass it through. Dawn
197
- // dereferences these arrays unconditionally, so they must be non-null.
198
- extDesc.srcTransferFunctionParameters = kIdentityTransferParams;
199
- extDesc.dstTransferFunctionParameters = kIdentityTransferParams;
200
- }
201
- extDesc.cropOrigin = {0, 0};
202
- extDesc.cropSize = {frame.width, frame.height};
203
- extDesc.apparentSize = {frame.width, frame.height};
204
- extDesc.mirrored = descriptor->mirrored.value_or(false);
205
- extDesc.rotation =
206
- toExternalTextureRotation(descriptor->rotation.value_or(0));
207
-
208
- auto external = device.CreateExternalTexture(&extDesc);
209
- if (external == nullptr) {
210
- wgpu::SharedTextureMemoryEndAccessState state{};
211
- (void)memory.EndAccess(texture, &state);
212
- throw std::runtime_error(
213
- "GPUExternalTexture::Create(): CreateExternalTexture returned "
214
- "null");
215
- }
216
-
217
- return std::make_shared<GPUExternalTexture>(
218
- std::move(external), std::move(memory), std::move(texture),
219
- std::move(descriptor->source), std::move(label));
220
- #elif defined(__ANDROID__)
221
- // 1. Import the AHardwareBuffer as SharedTextureMemory. For YUV AHBs this
222
- // yields a Dawn texture in the implementation-defined OpaqueYCbCrAndroid
223
- // format; for RGBA AHBs, a regular single-plane texture.
224
- wgpu::SharedTextureMemoryDescriptor memDesc{};
225
- std::string label = descriptor->label.value_or("external-texture");
226
- if (!label.empty()) {
227
- memDesc.label = wgpu::StringView(label.c_str(), label.size());
228
- }
229
- wgpu::SharedTextureMemoryAHardwareBufferDescriptor platformDesc{};
230
- platformDesc.handle = frame.handle;
231
- memDesc.nextInChain = &platformDesc;
232
- auto memory = device.ImportSharedTextureMemory(&memDesc);
233
- if (memory == nullptr) {
234
- throw std::runtime_error(
235
- "GPUExternalTexture::Create(): ImportSharedTextureMemory "
236
- "returned null. Is 'shared-texture-memory-ahardware-buffer' enabled?");
237
- }
238
-
239
- // 2. Create the texture. No descriptor: Dawn picks the right format
240
- // (OpaqueYCbCrAndroid for YUV, R8 / RGBA8 / ... for color AHBs).
241
- auto texture = memory.CreateTexture();
242
- if (texture == nullptr) {
243
- throw std::runtime_error(
244
- "GPUExternalTexture::Create(): CreateTexture returned null");
245
- }
246
-
247
- // 3. Begin access. Vulkan requires us to advertise the incoming VkImage
248
- // layout (UNDEFINED is fine for the first acquisition of an AHB whose
249
- // contents we expect Dawn to read as-is).
250
- wgpu::SharedTextureMemoryBeginAccessDescriptor begin{};
251
- begin.initialized = true;
252
- begin.concurrentRead = false;
253
- wgpu::SharedTextureMemoryVkImageLayoutBeginState beginLayout{};
254
- begin.nextInChain = &beginLayout;
255
- if (!memory.BeginAccess(texture, &begin)) {
256
- throw std::runtime_error(
257
- "GPUExternalTexture::Create(): BeginAccess failed");
258
- }
259
-
260
- // 4. Build the ExternalTextureDescriptor. There are two cases depending on
261
- // how Dawn imported the AHB (see SharedTextureMemoryVk.cpp):
262
- //
263
- // a. *External* format (camera buffers whose layout has no Vulkan
264
- // equivalent) -> OpaqueYCbCrAndroid, a single opaque plane. Sampling
265
- // routes through a Vulkan SamplerYcbcrConversion whose model Dawn
266
- // copies verbatim from the AHB's suggestedYcbcrModel. We pass a single
267
- // plane + identity transfer and let that conversion (if any) run. NOTE:
268
- // when the driver reports RGB_IDENTITY the sample comes back as raw
269
- // Y/Cb/Cr; there is no public hook to override the model on this path.
270
- //
271
- // b. *Defined* biplanar format (e.g. R8BG8Biplanar420Unorm, exposed by the
272
- // dawn-multi-planar-formats feature) -> we split Plane0Only (luma) /
273
- // Plane1Only (chroma) and hand Dawn an explicit BT.709 matrix + sRGB
274
- // transfer, exactly like the iOS NV12 path. This makes numPlanes == 2
275
- // so the matrix is actually applied (the single-plane branch in Dawn's
276
- // Tint transform ignores yuvToRgbConversionMatrix).
277
- //
278
- // Either way we must pass non-null gamut/transfer arrays:
279
- // ComputeExternalTextureParams dereferences them unconditionally
280
- // (kIdentityTransferParams is defined at file scope).
281
- const bool isBiplanar = frame.pixelFormat == VideoPixelFormat::NV12 &&
282
- isBiplanarYuvFormat(texture.GetFormat());
283
-
284
- wgpu::TextureView plane0;
285
- wgpu::TextureView plane1;
286
- wgpu::ExternalTextureDescriptor extDesc{};
287
- if (!label.empty()) {
288
- extDesc.label = wgpu::StringView(label.c_str(), label.size());
289
- }
290
- extDesc.cropOrigin = {0, 0};
291
- extDesc.cropSize = {frame.width, frame.height};
292
- extDesc.apparentSize = {frame.width, frame.height};
293
- extDesc.gamutConversionMatrix = kIdentityGamutMatrix;
294
- if (isBiplanar) {
295
- wgpu::TextureViewDescriptor v0{};
296
- v0.aspect = wgpu::TextureAspect::Plane0Only;
297
- plane0 = texture.CreateView(&v0);
298
- wgpu::TextureViewDescriptor v1{};
299
- v1.aspect = wgpu::TextureAspect::Plane1Only;
300
- plane1 = texture.CreateView(&v1);
301
- extDesc.plane0 = plane0;
302
- extDesc.plane1 = plane1;
303
- extDesc.yuvToRgbConversionMatrix = kBT709LimitedToRgb;
304
- extDesc.srcTransferFunctionParameters = kSrgbDecodeParams;
305
- extDesc.dstTransferFunctionParameters = kSrgbEncodeParams;
306
- } else {
307
- plane0 = texture.CreateView();
308
- extDesc.plane0 = plane0;
309
- extDesc.srcTransferFunctionParameters = kIdentityTransferParams;
310
- extDesc.dstTransferFunctionParameters = kIdentityTransferParams;
311
- }
312
- extDesc.mirrored = descriptor->mirrored.value_or(false);
313
- extDesc.rotation =
314
- toExternalTextureRotation(descriptor->rotation.value_or(0));
315
-
316
- auto external = device.CreateExternalTexture(&extDesc);
317
- if (external == nullptr) {
318
- wgpu::SharedTextureMemoryEndAccessState state{};
319
- (void)memory.EndAccess(texture, &state);
320
- throw std::runtime_error(
321
- "GPUExternalTexture::Create(): CreateExternalTexture returned "
322
- "null");
323
- }
324
-
325
- return std::make_shared<GPUExternalTexture>(
326
- std::move(external), std::move(memory), std::move(texture),
327
- std::move(descriptor->source), std::move(label));
328
- #else
329
- throw std::runtime_error(
330
- "GPUExternalTexture::Create(): not yet implemented on this "
331
- "platform");
332
- #endif
333
- }
334
-
335
- } // namespace rnwgpu
@@ -1,90 +0,0 @@
1
- #pragma once
2
-
3
- #include <memory>
4
- #include <string>
5
- #include <utility>
6
-
7
- #include "Unions.h"
8
-
9
- #include "NativeObject.h"
10
- #include "VideoFrame.h"
11
-
12
- #include "webgpu/webgpu_cpp.h"
13
-
14
- namespace rnwgpu {
15
-
16
- namespace jsi = facebook::jsi;
17
-
18
- struct GPUExternalTextureDescriptor;
19
-
20
- class GPUExternalTexture : public NativeObject<GPUExternalTexture> {
21
- public:
22
- static constexpr const char *CLASS_NAME = "GPUExternalTexture";
23
-
24
- // Import a VideoFrame (via descriptor.source) as a GPUExternalTexture on
25
- // `device`: imports the native surface as SharedTextureMemory, begins access,
26
- // and wraps the resulting wgpu::ExternalTexture together with the resources
27
- // whose lifetime it owns. The matching EndAccess runs in destroy() / the
28
- // destructor. Defined in GPUExternalTexture.cpp.
29
- static std::shared_ptr<GPUExternalTexture>
30
- Create(wgpu::Device device,
31
- std::shared_ptr<GPUExternalTextureDescriptor> descriptor);
32
-
33
- // Construct from an already-built wgpu::ExternalTexture plus the underlying
34
- // shared-memory resources we need to keep alive. The wrapper takes ownership
35
- // of the SharedTextureMemory + Texture and calls EndAccess on destruction so
36
- // the producer (e.g. AVPlayer) can reclaim the IOSurface.
37
- GPUExternalTexture(wgpu::ExternalTexture instance,
38
- wgpu::SharedTextureMemory memory, wgpu::Texture texture,
39
- std::shared_ptr<VideoFrame> source, std::string label)
40
- : NativeObject(CLASS_NAME), _instance(std::move(instance)),
41
- _memory(std::move(memory)), _texture(std::move(texture)),
42
- _source(std::move(source)), _label(std::move(label)) {}
43
-
44
- ~GPUExternalTexture() override { destroy(); }
45
-
46
- public:
47
- std::string getBrand() { return CLASS_NAME; }
48
-
49
- // End the shared-memory access window and release the underlying resources.
50
- // Idempotent: safe to call more than once, and the destructor calls it as a
51
- // garbage-collection fallback. Call it right after the queue.submit() that
52
- // sampled this texture (never before): a GPUExternalTexture's access window
53
- // is owned by this wrapper's lifetime, not by submit, so without an explicit
54
- // destroy() the producer's surface (e.g. an AVPlayer IOSurface) stays claimed
55
- // until GC runs. EndAccess is the designed post-submit call: Dawn keeps the
56
- // texture alive for in-flight GPU work via the fences it returns.
57
- void destroy() {
58
- if (_memory && _texture) {
59
- wgpu::SharedTextureMemoryEndAccessState state{};
60
- (void)_memory.EndAccess(_texture, &state);
61
- }
62
- _texture = nullptr;
63
- _memory = nullptr;
64
- }
65
-
66
- std::string getLabel() { return _label; }
67
- void setLabel(const std::string &label) {
68
- _label = label;
69
- _instance.SetLabel(_label.c_str());
70
- }
71
-
72
- static void definePrototype(jsi::Runtime &runtime, jsi::Object &prototype) {
73
- installGetter(runtime, prototype, "__brand", &GPUExternalTexture::getBrand);
74
- installGetterSetter(runtime, prototype, "label",
75
- &GPUExternalTexture::getLabel,
76
- &GPUExternalTexture::setLabel);
77
- installMethod(runtime, prototype, "destroy", &GPUExternalTexture::destroy);
78
- }
79
-
80
- inline const wgpu::ExternalTexture get() { return _instance; }
81
-
82
- private:
83
- wgpu::ExternalTexture _instance;
84
- wgpu::SharedTextureMemory _memory;
85
- wgpu::Texture _texture;
86
- std::shared_ptr<VideoFrame> _source;
87
- std::string _label;
88
- };
89
-
90
- } // namespace rnwgpu
@@ -1,206 +0,0 @@
1
- #pragma once
2
-
3
- #include <string>
4
-
5
- #include <cstdio>
6
-
7
- #include "webgpu/webgpu_cpp.h"
8
-
9
- namespace rnwgpu {
10
-
11
- static void convertEnumToJSUnion(wgpu::FeatureName inEnum,
12
- std::string *outUnion) {
13
- switch (inEnum) {
14
- case wgpu::FeatureName::DepthClipControl:
15
- *outUnion = "depth-clip-control";
16
- break;
17
- case wgpu::FeatureName::Depth32FloatStencil8:
18
- *outUnion = "depth32float-stencil8";
19
- break;
20
- case wgpu::FeatureName::TimestampQuery:
21
- *outUnion = "timestamp-query";
22
- break;
23
- case wgpu::FeatureName::TextureCompressionBC:
24
- *outUnion = "texture-compression-bc";
25
- break;
26
- case wgpu::FeatureName::TextureCompressionETC2:
27
- *outUnion = "texture-compression-etc2";
28
- break;
29
- case wgpu::FeatureName::TextureCompressionASTC:
30
- *outUnion = "texture-compression-astc";
31
- break;
32
- case wgpu::FeatureName::IndirectFirstInstance:
33
- *outUnion = "indirect-first-instance";
34
- break;
35
- case wgpu::FeatureName::ShaderF16:
36
- *outUnion = "shader-f16";
37
- break;
38
- case wgpu::FeatureName::RG11B10UfloatRenderable:
39
- *outUnion = "rg11b10ufloat-renderable";
40
- break;
41
- case wgpu::FeatureName::BGRA8UnormStorage:
42
- *outUnion = "bgra8unorm-storage";
43
- break;
44
- case wgpu::FeatureName::Float32Filterable:
45
- *outUnion = "float32-filterable";
46
- break;
47
- case wgpu::FeatureName::Subgroups:
48
- *outUnion = "subgroups";
49
- break;
50
- case wgpu::FeatureName::DawnInternalUsages:
51
- *outUnion = "dawn-internal-usages";
52
- break;
53
- case wgpu::FeatureName::DawnMultiPlanarFormats:
54
- *outUnion = "dawn-multi-planar-formats";
55
- break;
56
- case wgpu::FeatureName::DawnNative:
57
- *outUnion = "dawn-native";
58
- break;
59
- case wgpu::FeatureName::ChromiumExperimentalTimestampQueryInsidePasses:
60
- *outUnion = "chromium-experimental-timestamp-query-inside-passes";
61
- break;
62
- case wgpu::FeatureName::ImplicitDeviceSynchronization:
63
- *outUnion = "implicit-device-synchronization";
64
- break;
65
- case wgpu::FeatureName::TransientAttachments:
66
- *outUnion = "transient-attachments";
67
- break;
68
- case wgpu::FeatureName::MSAARenderToSingleSampled:
69
- *outUnion = "msaa-render-to-single-sampled";
70
- break;
71
- case wgpu::FeatureName::DualSourceBlending:
72
- *outUnion = "dual-source-blending";
73
- break;
74
- case wgpu::FeatureName::D3D11MultithreadProtected:
75
- *outUnion = "d3d11-multithread-protected";
76
- break;
77
- case wgpu::FeatureName::ANGLETextureSharing:
78
- *outUnion = "angle-texture-sharing";
79
- break;
80
- case wgpu::FeatureName::ChromiumExperimentalSubgroupMatrix:
81
- *outUnion = "chromium-experimental-subgroups-matrix";
82
- break;
83
- case wgpu::FeatureName::PixelLocalStorageCoherent:
84
- *outUnion = "pixel-local-storage-coherent";
85
- break;
86
- case wgpu::FeatureName::PixelLocalStorageNonCoherent:
87
- *outUnion = "pixel-local-storage-non-coherent";
88
- break;
89
- case wgpu::FeatureName::Unorm16TextureFormats:
90
- *outUnion = "unorm16-texture-formats";
91
- break;
92
- case wgpu::FeatureName::MultiPlanarFormatExtendedUsages:
93
- *outUnion = "multi-planar-format-extended-usages";
94
- break;
95
- case wgpu::FeatureName::MultiPlanarFormatP010:
96
- *outUnion = "multi-planar-format-p010";
97
- break;
98
- case wgpu::FeatureName::HostMappedPointer:
99
- *outUnion = "host-mapped-pointer";
100
- break;
101
- case wgpu::FeatureName::MultiPlanarRenderTargets:
102
- *outUnion = "multi-planar-render-targets";
103
- break;
104
- case wgpu::FeatureName::MultiPlanarFormatNv12a:
105
- *outUnion = "multi-planar-format-nv12a";
106
- break;
107
- case wgpu::FeatureName::FramebufferFetch:
108
- *outUnion = "framebuffer-fetch";
109
- break;
110
- case wgpu::FeatureName::BufferMapExtendedUsages:
111
- *outUnion = "buffer-map-extended-usages";
112
- break;
113
- case wgpu::FeatureName::AdapterPropertiesMemoryHeaps:
114
- *outUnion = "adapter-properties-memory-heaps";
115
- break;
116
- case wgpu::FeatureName::AdapterPropertiesD3D:
117
- *outUnion = "adapter-properties-d3d";
118
- break;
119
- case wgpu::FeatureName::AdapterPropertiesVk:
120
- *outUnion = "adapter-properties-vk";
121
- break;
122
- case wgpu::FeatureName::DawnFormatCapabilities:
123
- *outUnion = "format-capabilities";
124
- break;
125
- case wgpu::FeatureName::DawnDrmFormatCapabilities:
126
- *outUnion = "drm-format-capabilities";
127
- break;
128
- case wgpu::FeatureName::MultiPlanarFormatNv16:
129
- *outUnion = "multi-planar-format-nv16";
130
- break;
131
- case wgpu::FeatureName::MultiPlanarFormatNv24:
132
- *outUnion = "multi-planar-format-nv24";
133
- break;
134
- case wgpu::FeatureName::MultiPlanarFormatP210:
135
- *outUnion = "multi-planar-format-p210";
136
- break;
137
- case wgpu::FeatureName::MultiPlanarFormatP410:
138
- *outUnion = "multi-planar-format-p410";
139
- break;
140
- case wgpu::FeatureName::SharedTextureMemoryVkDedicatedAllocation:
141
- *outUnion = "shared-texture-memory-vk-dedicated-allocation";
142
- break;
143
- case wgpu::FeatureName::SharedTextureMemoryAHardwareBuffer:
144
- *outUnion = "shared-texture-memory-ahardware-buffer";
145
- break;
146
- case wgpu::FeatureName::SharedTextureMemoryDmaBuf:
147
- *outUnion = "shared-texture-memory-dma-buf";
148
- break;
149
- case wgpu::FeatureName::SharedTextureMemoryOpaqueFD:
150
- *outUnion = "shared-texture-memory-opaque-fd";
151
- break;
152
- case wgpu::FeatureName::SharedTextureMemoryZirconHandle:
153
- *outUnion = "shared-texture-memory-zircon-handle";
154
- break;
155
- case wgpu::FeatureName::SharedTextureMemoryDXGISharedHandle:
156
- *outUnion = "shared-texture-memory-dxgi-shared-handle";
157
- break;
158
- case wgpu::FeatureName::SharedTextureMemoryD3D11Texture2D:
159
- *outUnion = "shared-texture-memory-d3d11-texture2d";
160
- break;
161
- case wgpu::FeatureName::SharedTextureMemoryIOSurface:
162
- *outUnion = "shared-texture-memory-iosurface";
163
- break;
164
- case wgpu::FeatureName::SharedTextureMemoryEGLImage:
165
- *outUnion = "shared-texture-memory-egl-image";
166
- break;
167
- case wgpu::FeatureName::SharedFenceVkSemaphoreOpaqueFD:
168
- *outUnion = "shared-fence-vk-semaphore-opaque-fd";
169
- break;
170
- case wgpu::FeatureName::SharedFenceSyncFD:
171
- *outUnion = "shared-fence-sync-fd";
172
- break;
173
- case wgpu::FeatureName::SharedFenceVkSemaphoreZirconHandle:
174
- *outUnion = "shared-fence-vk-semaphore-zircon-handle";
175
- break;
176
- case wgpu::FeatureName::SharedFenceDXGISharedHandle:
177
- *outUnion = "shared-fence-dxgi-shared-handle";
178
- break;
179
- case wgpu::FeatureName::SharedFenceMTLSharedEvent:
180
- *outUnion = "shared-fence-mtl-shared-event";
181
- break;
182
- case wgpu::FeatureName::SharedBufferMemoryD3D12Resource:
183
- *outUnion = "shared-buffer-memory-d3d12-resource";
184
- break;
185
- case wgpu::FeatureName::StaticSamplers:
186
- *outUnion = "static-samplers";
187
- break;
188
- case wgpu::FeatureName::YCbCrVulkanSamplers:
189
- *outUnion = "ycbcr-vulkan-samplers";
190
- break;
191
- case wgpu::FeatureName::OpaqueYCbCrAndroidForExternalTexture:
192
- *outUnion = "opaque-ycbcr-android-for-external-texture";
193
- break;
194
- case wgpu::FeatureName::ShaderModuleCompilationOptions:
195
- *outUnion = "shader-module-compilation-options";
196
- break;
197
- case wgpu::FeatureName::DawnLoadResolveTexture:
198
- *outUnion = "dawn-load-resolve-texture";
199
- break;
200
- default:
201
- fprintf(stderr, "Unknown feature name %d\n", static_cast<int>(inEnum));
202
- *outUnion = "";
203
- }
204
- }
205
-
206
- } // namespace rnwgpu
@@ -1,31 +0,0 @@
1
- #pragma once
2
-
3
- #include <string>
4
-
5
- #include "NativeObject.h"
6
-
7
- namespace rnwgpu {
8
-
9
- namespace jsi = facebook::jsi;
10
-
11
- class GPUInternalError : public NativeObject<GPUInternalError> {
12
- public:
13
- static constexpr const char *CLASS_NAME = "GPUInternalError";
14
-
15
- explicit GPUInternalError(std::string message)
16
- : NativeObject(CLASS_NAME), _message(std::move(message)) {}
17
-
18
- public:
19
- std::string getBrand() { return CLASS_NAME; }
20
- std::string getMessage() { return _message; }
21
-
22
- static void definePrototype(jsi::Runtime &runtime, jsi::Object &prototype) {
23
- installGetter(runtime, prototype, "__brand", &GPUInternalError::getBrand);
24
- installGetter(runtime, prototype, "message", &GPUInternalError::getMessage);
25
- }
26
-
27
- private:
28
- std::string _message;
29
- };
30
-
31
- } // namespace rnwgpu