@shopify/react-native-skia 2.9.1 → 2.10.1

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 (387) hide show
  1. package/android/CMakeLists.txt +8 -46
  2. package/android/build.gradle +33 -0
  3. package/android/src/main/java/com/shopify/reactnative/skia/RNSkiaPackage.java +1 -2
  4. package/cpp/api/JsiNativeBuffer.h +23 -24
  5. package/cpp/api/JsiSkAnimatedImage.h +24 -25
  6. package/cpp/api/JsiSkAnimatedImageFactory.h +18 -17
  7. package/cpp/api/JsiSkApi.h +254 -96
  8. package/cpp/api/JsiSkCanvas.h +141 -266
  9. package/cpp/api/JsiSkColor.h +7 -5
  10. package/cpp/api/JsiSkColorFilter.h +15 -8
  11. package/cpp/api/JsiSkColorFilterFactory.h +49 -67
  12. package/cpp/api/JsiSkContourMeasure.h +31 -38
  13. package/cpp/api/JsiSkContourMeasureIter.h +20 -23
  14. package/cpp/api/JsiSkConverters.h +410 -0
  15. package/cpp/api/JsiSkData.h +13 -7
  16. package/cpp/api/JsiSkDataFactory.h +27 -32
  17. package/cpp/api/JsiSkFont.h +123 -192
  18. package/cpp/api/JsiSkFontMgr.h +33 -26
  19. package/cpp/api/JsiSkFontMgrFactory.h +12 -11
  20. package/cpp/api/JsiSkFontStyle.h +14 -12
  21. package/cpp/api/JsiSkImage.h +90 -79
  22. package/cpp/api/JsiSkImageFactory.h +93 -95
  23. package/cpp/api/JsiSkImageFilter.h +21 -11
  24. package/cpp/api/JsiSkImageFilterFactory.h +375 -629
  25. package/cpp/api/JsiSkImageInfo.h +25 -25
  26. package/cpp/api/JsiSkMaskFilter.h +21 -11
  27. package/cpp/api/JsiSkMaskFilterFactory.h +17 -17
  28. package/cpp/api/JsiSkMatrix.h +51 -88
  29. package/cpp/api/JsiSkNativeObjects.h +387 -0
  30. package/cpp/api/JsiSkPaint.h +104 -142
  31. package/cpp/api/JsiSkParagraph.h +54 -64
  32. package/cpp/api/JsiSkParagraphBuilder.h +43 -68
  33. package/cpp/api/JsiSkParagraphBuilderFactory.h +20 -24
  34. package/cpp/api/JsiSkPath.h +242 -350
  35. package/cpp/api/JsiSkPathBuilder.h +153 -273
  36. package/cpp/api/JsiSkPathBuilderFactory.h +19 -20
  37. package/cpp/api/JsiSkPathEffect.h +21 -11
  38. package/cpp/api/JsiSkPathEffectFactory.h +61 -80
  39. package/cpp/api/JsiSkPathFactory.h +148 -238
  40. package/cpp/api/JsiSkPicture.h +32 -27
  41. package/cpp/api/JsiSkPictureFactory.h +21 -26
  42. package/cpp/api/JsiSkPictureRecorder.h +27 -29
  43. package/cpp/api/JsiSkPoint.h +20 -23
  44. package/cpp/api/JsiSkRRect.h +24 -32
  45. package/cpp/api/JsiSkRSXform.h +31 -48
  46. package/cpp/api/JsiSkRect.h +40 -50
  47. package/cpp/api/JsiSkRuntimeEffect.h +85 -92
  48. package/cpp/api/JsiSkRuntimeEffectFactory.h +14 -18
  49. package/cpp/api/JsiSkRuntimeShaderBuilder.h +28 -30
  50. package/cpp/api/JsiSkSVG.h +15 -15
  51. package/cpp/api/JsiSkSVGFactory.h +17 -20
  52. package/cpp/api/JsiSkShader.h +15 -8
  53. package/cpp/api/JsiSkShaderFactory.h +159 -238
  54. package/cpp/api/JsiSkSkottie.h +131 -143
  55. package/cpp/api/JsiSkSurface.h +29 -32
  56. package/cpp/api/JsiSkSurfaceFactory.h +18 -20
  57. package/cpp/api/JsiSkTextBlob.h +15 -8
  58. package/cpp/api/JsiSkTextBlobFactory.h +40 -66
  59. package/cpp/api/JsiSkTypeface.h +25 -22
  60. package/cpp/api/JsiSkTypefaceFactory.h +17 -15
  61. package/cpp/api/JsiSkTypefaceFontProvider.h +43 -39
  62. package/cpp/api/JsiSkTypefaceFontProviderFactory.h +13 -12
  63. package/cpp/api/JsiSkVertices.h +23 -22
  64. package/cpp/api/JsiSkiaContext.h +22 -23
  65. package/cpp/api/JsiSkottieFactory.h +16 -17
  66. package/cpp/api/JsiVideo.h +43 -81
  67. package/cpp/api/recorder/Convertor.h +31 -61
  68. package/cpp/api/recorder/DataTypes.h +8 -16
  69. package/cpp/api/recorder/JsiRecorder.h +83 -55
  70. package/cpp/api/recorder/RNRecorder.h +1 -1
  71. package/cpp/jsi/BoxedNativeObject.h +146 -0
  72. package/cpp/{jsi2 → jsi}/EnumMapper.h +4 -1
  73. package/cpp/{jsi2 → jsi}/JSIConverter.h +0 -31
  74. package/cpp/{jsi2 → jsi}/NativeObject.h +131 -152
  75. package/cpp/jsi/RuntimeAwareCache.cpp +1 -1
  76. package/cpp/jsi/RuntimeAwareCache.h +26 -8
  77. package/cpp/jsi/ViewProperty.h +5 -11
  78. package/cpp/rnskia/RNDawnContext.h +18 -2
  79. package/cpp/rnskia/RNDawnInterop.cpp +19 -0
  80. package/cpp/rnskia/RNDawnUtils.h +18 -1
  81. package/cpp/rnskia/RNSkJsiViewApi.h +20 -11
  82. package/cpp/rnskia/RNSkManager.cpp +9 -168
  83. package/cpp/rnskia/RNSkPictureView.h +1 -1
  84. package/cpp/skia/include/gpu/ganesh/GrDriverBugWorkaroundsAutogen.h +2 -0
  85. package/lib/commonjs/external/reanimated/renderHelpers.d.ts +15 -0
  86. package/lib/commonjs/external/reanimated/renderHelpers.js +30 -1
  87. package/lib/commonjs/external/reanimated/renderHelpers.js.map +1 -1
  88. package/lib/commonjs/mock/index.js +0 -1
  89. package/lib/commonjs/mock/index.js.map +1 -1
  90. package/lib/commonjs/skia/NativeSetup.js +4 -0
  91. package/lib/commonjs/skia/NativeSetup.js.map +1 -1
  92. package/lib/commonjs/skia/SkiaWorkletSerialization.d.ts +1 -0
  93. package/lib/commonjs/skia/SkiaWorkletSerialization.js +66 -0
  94. package/lib/commonjs/skia/SkiaWorkletSerialization.js.map +1 -0
  95. package/lib/commonjs/skia/types/Image/ImageFactory.d.ts +15 -6
  96. package/lib/commonjs/skia/types/Image/ImageFactory.js.map +1 -1
  97. package/lib/commonjs/skia/types/Skia.d.ts +5 -15
  98. package/lib/commonjs/skia/types/Skia.js.map +1 -1
  99. package/lib/commonjs/skia/types/index.d.ts +0 -1
  100. package/lib/commonjs/skia/types/index.js +0 -11
  101. package/lib/commonjs/skia/types/index.js.map +1 -1
  102. package/lib/commonjs/skia/web/JsiSkImageFactory.d.ts +2 -2
  103. package/lib/commonjs/skia/web/JsiSkImageFactory.js +2 -2
  104. package/lib/commonjs/skia/web/JsiSkImageFactory.js.map +1 -1
  105. package/lib/commonjs/skia/web/JsiSkia.js +1 -4
  106. package/lib/commonjs/skia/web/JsiSkia.js.map +1 -1
  107. package/lib/commonjs/sksg/Container.native.js +20 -1
  108. package/lib/commonjs/sksg/Container.native.js.map +1 -1
  109. package/lib/commonjs/views/index.d.ts +0 -1
  110. package/lib/commonjs/views/index.js +0 -11
  111. package/lib/commonjs/views/index.js.map +1 -1
  112. package/lib/module/external/reanimated/renderHelpers.d.ts +15 -0
  113. package/lib/module/external/reanimated/renderHelpers.js +29 -0
  114. package/lib/module/external/reanimated/renderHelpers.js.map +1 -1
  115. package/lib/module/mock/index.js +0 -1
  116. package/lib/module/mock/index.js.map +1 -1
  117. package/lib/module/skia/NativeSetup.js +4 -0
  118. package/lib/module/skia/NativeSetup.js.map +1 -1
  119. package/lib/module/skia/SkiaWorkletSerialization.d.ts +1 -0
  120. package/lib/module/skia/SkiaWorkletSerialization.js +59 -0
  121. package/lib/module/skia/SkiaWorkletSerialization.js.map +1 -0
  122. package/lib/module/skia/types/Image/ImageFactory.d.ts +15 -6
  123. package/lib/module/skia/types/Image/ImageFactory.js.map +1 -1
  124. package/lib/module/skia/types/Skia.d.ts +5 -15
  125. package/lib/module/skia/types/Skia.js.map +1 -1
  126. package/lib/module/skia/types/index.d.ts +0 -1
  127. package/lib/module/skia/types/index.js +0 -1
  128. package/lib/module/skia/types/index.js.map +1 -1
  129. package/lib/module/skia/web/JsiSkImageFactory.d.ts +2 -2
  130. package/lib/module/skia/web/JsiSkImageFactory.js +2 -2
  131. package/lib/module/skia/web/JsiSkImageFactory.js.map +1 -1
  132. package/lib/module/skia/web/JsiSkia.js +1 -4
  133. package/lib/module/skia/web/JsiSkia.js.map +1 -1
  134. package/lib/module/sksg/Container.native.js +21 -2
  135. package/lib/module/sksg/Container.native.js.map +1 -1
  136. package/lib/module/views/index.d.ts +0 -1
  137. package/lib/module/views/index.js +0 -1
  138. package/lib/module/views/index.js.map +1 -1
  139. package/lib/typescript/lib/commonjs/external/reanimated/renderHelpers.d.ts +2 -0
  140. package/lib/typescript/lib/commonjs/mock/index.d.ts +0 -1
  141. package/lib/typescript/lib/commonjs/skia/SkiaWorkletSerialization.d.ts +2 -0
  142. package/lib/typescript/lib/commonjs/skia/web/JsiSkImageFactory.d.ts +2 -2
  143. package/lib/typescript/lib/commonjs/skia/web/JsiSkia.d.ts +1 -2
  144. package/lib/typescript/lib/module/external/reanimated/renderHelpers.d.ts +15 -0
  145. package/lib/typescript/lib/module/mock/index.d.ts +0 -2
  146. package/lib/typescript/lib/module/skia/Skia.web.d.ts +1 -2
  147. package/lib/typescript/lib/module/skia/SkiaWorkletSerialization.d.ts +1 -0
  148. package/lib/typescript/lib/module/skia/types/index.d.ts +0 -1
  149. package/lib/typescript/lib/module/skia/web/JsiSkImageFactory.d.ts +2 -2
  150. package/lib/typescript/lib/module/skia/web/JsiSkia.d.ts +1 -2
  151. package/lib/typescript/lib/module/views/index.d.ts +0 -1
  152. package/lib/typescript/src/external/reanimated/renderHelpers.d.ts +15 -0
  153. package/lib/typescript/src/skia/SkiaWorkletSerialization.d.ts +1 -0
  154. package/lib/typescript/src/skia/types/Image/ImageFactory.d.ts +15 -6
  155. package/lib/typescript/src/skia/types/Skia.d.ts +5 -15
  156. package/lib/typescript/src/skia/types/index.d.ts +0 -1
  157. package/lib/typescript/src/skia/web/JsiSkImageFactory.d.ts +2 -2
  158. package/lib/typescript/src/views/index.d.ts +0 -1
  159. package/package.json +8 -5
  160. package/react-native-skia.podspec +38 -5
  161. package/src/external/reanimated/renderHelpers.ts +30 -0
  162. package/src/mock/index.ts +0 -1
  163. package/src/skia/NativeSetup.ts +5 -0
  164. package/src/skia/SkiaWorkletSerialization.ts +67 -0
  165. package/src/skia/types/Image/ImageFactory.ts +15 -6
  166. package/src/skia/types/Skia.ts +5 -15
  167. package/src/skia/types/index.ts +0 -1
  168. package/src/skia/web/JsiSkImageFactory.ts +3 -3
  169. package/src/skia/web/JsiSkia.ts +2 -5
  170. package/src/sksg/Container.native.ts +40 -2
  171. package/src/views/index.ts +0 -1
  172. package/android/cpp/jni/JniWebGPUView.cpp +0 -112
  173. package/android/cpp/rnskia-android/SkiaPlatformContext.h +0 -26
  174. package/android/src/main/java/com/shopify/reactnative/skia/WebGPUSurfaceView.java +0 -43
  175. package/android/src/main/java/com/shopify/reactnative/skia/WebGPUTextureView.java +0 -50
  176. package/android/src/main/java/com/shopify/reactnative/skia/WebGPUView.java +0 -98
  177. package/android/src/main/java/com/shopify/reactnative/skia/WebGPUViewAPI.java +0 -19
  178. package/android/src/main/java/com/shopify/reactnative/skia/WebGPUViewManager.java +0 -58
  179. package/apple/RNWebGPUAppleNativeBuffer.mm +0 -33
  180. package/apple/SkiaPlatformContext.h +0 -20
  181. package/apple/SkiaPlatformContext.mm +0 -21
  182. package/apple/SkiaWebGPUView.mm +0 -81
  183. package/apple/WebGPUMetalView.mm +0 -136
  184. package/cpp/api/JsiSkHostObjects.h +0 -257
  185. package/cpp/jsi/JsiHostObject.cpp +0 -137
  186. package/cpp/jsi/JsiHostObject.h +0 -385
  187. package/cpp/rnwgpu/ArrayBuffer.h +0 -117
  188. package/cpp/rnwgpu/Canvas.h +0 -50
  189. package/cpp/rnwgpu/PlatformContext.h +0 -18
  190. package/cpp/rnwgpu/SurfaceRegistry.h +0 -605
  191. package/cpp/rnwgpu/api/AppleNativeBuffer.h +0 -22
  192. package/cpp/rnwgpu/api/Convertors.h +0 -783
  193. package/cpp/rnwgpu/api/External.h +0 -12
  194. package/cpp/rnwgpu/api/GPU.cpp +0 -162
  195. package/cpp/rnwgpu/api/GPU.h +0 -60
  196. package/cpp/rnwgpu/api/GPUAdapter.cpp +0 -240
  197. package/cpp/rnwgpu/api/GPUAdapter.h +0 -60
  198. package/cpp/rnwgpu/api/GPUAdapterInfo.h +0 -57
  199. package/cpp/rnwgpu/api/GPUBindGroup.cpp +0 -3
  200. package/cpp/rnwgpu/api/GPUBindGroup.h +0 -51
  201. package/cpp/rnwgpu/api/GPUBindGroupLayout.h +0 -52
  202. package/cpp/rnwgpu/api/GPUBuffer.cpp +0 -107
  203. package/cpp/rnwgpu/api/GPUBuffer.h +0 -88
  204. package/cpp/rnwgpu/api/GPUCanvasContext.cpp +0 -75
  205. package/cpp/rnwgpu/api/GPUCanvasContext.h +0 -70
  206. package/cpp/rnwgpu/api/GPUCommandBuffer.h +0 -45
  207. package/cpp/rnwgpu/api/GPUCommandEncoder.cpp +0 -179
  208. package/cpp/rnwgpu/api/GPUCommandEncoder.h +0 -111
  209. package/cpp/rnwgpu/api/GPUCompilationInfo.h +0 -79
  210. package/cpp/rnwgpu/api/GPUCompilationMessage.h +0 -36
  211. package/cpp/rnwgpu/api/GPUComputePassEncoder.cpp +0 -60
  212. package/cpp/rnwgpu/api/GPUComputePassEncoder.h +0 -85
  213. package/cpp/rnwgpu/api/GPUComputePipeline.cpp +0 -12
  214. package/cpp/rnwgpu/api/GPUComputePipeline.h +0 -60
  215. package/cpp/rnwgpu/api/GPUDevice.cpp +0 -614
  216. package/cpp/rnwgpu/api/GPUDevice.h +0 -258
  217. package/cpp/rnwgpu/api/GPUDeviceLostInfo.cpp +0 -7
  218. package/cpp/rnwgpu/api/GPUDeviceLostInfo.h +0 -40
  219. package/cpp/rnwgpu/api/GPUError.h +0 -35
  220. package/cpp/rnwgpu/api/GPUExtent3D.h +0 -66
  221. package/cpp/rnwgpu/api/GPUExternalTexture.cpp +0 -139
  222. package/cpp/rnwgpu/api/GPUExternalTexture.h +0 -95
  223. package/cpp/rnwgpu/api/GPUFeatures.h +0 -203
  224. package/cpp/rnwgpu/api/GPUInternalError.h +0 -31
  225. package/cpp/rnwgpu/api/GPUOrigin2D.h +0 -55
  226. package/cpp/rnwgpu/api/GPUOrigin3D.h +0 -62
  227. package/cpp/rnwgpu/api/GPUOutOfMemoryError.h +0 -33
  228. package/cpp/rnwgpu/api/GPUPipelineLayout.h +0 -45
  229. package/cpp/rnwgpu/api/GPUQuerySet.cpp +0 -11
  230. package/cpp/rnwgpu/api/GPUQuerySet.h +0 -73
  231. package/cpp/rnwgpu/api/GPUQueue.cpp +0 -179
  232. package/cpp/rnwgpu/api/GPUQueue.h +0 -84
  233. package/cpp/rnwgpu/api/GPURenderBundle.h +0 -44
  234. package/cpp/rnwgpu/api/GPURenderBundleEncoder.cpp +0 -131
  235. package/cpp/rnwgpu/api/GPURenderBundleEncoder.h +0 -110
  236. package/cpp/rnwgpu/api/GPURenderPassEncoder.cpp +0 -165
  237. package/cpp/rnwgpu/api/GPURenderPassEncoder.h +0 -130
  238. package/cpp/rnwgpu/api/GPURenderPipeline.cpp +0 -13
  239. package/cpp/rnwgpu/api/GPURenderPipeline.h +0 -61
  240. package/cpp/rnwgpu/api/GPUSampler.h +0 -44
  241. package/cpp/rnwgpu/api/GPUShaderModule.cpp +0 -56
  242. package/cpp/rnwgpu/api/GPUShaderModule.h +0 -66
  243. package/cpp/rnwgpu/api/GPUSharedFence.cpp +0 -80
  244. package/cpp/rnwgpu/api/GPUSharedFence.h +0 -53
  245. package/cpp/rnwgpu/api/GPUSharedTextureMemory.cpp +0 -135
  246. package/cpp/rnwgpu/api/GPUSharedTextureMemory.h +0 -75
  247. package/cpp/rnwgpu/api/GPUSupportedLimits.cpp +0 -129
  248. package/cpp/rnwgpu/api/GPUSupportedLimits.h +0 -131
  249. package/cpp/rnwgpu/api/GPUTexture.cpp +0 -47
  250. package/cpp/rnwgpu/api/GPUTexture.h +0 -162
  251. package/cpp/rnwgpu/api/GPUTextureView.h +0 -44
  252. package/cpp/rnwgpu/api/GPUUncapturedErrorEvent.h +0 -60
  253. package/cpp/rnwgpu/api/GPUValidationError.h +0 -32
  254. package/cpp/rnwgpu/api/ImageBitmap.h +0 -62
  255. package/cpp/rnwgpu/api/NativeBufferUtils.h +0 -87
  256. package/cpp/rnwgpu/api/RNWebGPU.h +0 -82
  257. package/cpp/rnwgpu/api/WebGPUConstants.h +0 -36
  258. package/cpp/rnwgpu/api/descriptors/GPUBindGroupDescriptor.h +0 -64
  259. package/cpp/rnwgpu/api/descriptors/GPUBindGroupEntry.h +0 -78
  260. package/cpp/rnwgpu/api/descriptors/GPUBindGroupLayoutDescriptor.h +0 -56
  261. package/cpp/rnwgpu/api/descriptors/GPUBindGroupLayoutEntry.h +0 -97
  262. package/cpp/rnwgpu/api/descriptors/GPUBlendComponent.h +0 -57
  263. package/cpp/rnwgpu/api/descriptors/GPUBlendState.h +0 -52
  264. package/cpp/rnwgpu/api/descriptors/GPUBufferBinding.h +0 -56
  265. package/cpp/rnwgpu/api/descriptors/GPUBufferBindingLayout.h +0 -56
  266. package/cpp/rnwgpu/api/descriptors/GPUBufferDescriptor.h +0 -59
  267. package/cpp/rnwgpu/api/descriptors/GPUBufferUsage.h +0 -39
  268. package/cpp/rnwgpu/api/descriptors/GPUCanvasConfiguration.h +0 -76
  269. package/cpp/rnwgpu/api/descriptors/GPUColor.h +0 -66
  270. package/cpp/rnwgpu/api/descriptors/GPUColorTargetState.h +0 -58
  271. package/cpp/rnwgpu/api/descriptors/GPUColorWrite.h +0 -29
  272. package/cpp/rnwgpu/api/descriptors/GPUCommandBufferDescriptor.h +0 -45
  273. package/cpp/rnwgpu/api/descriptors/GPUCommandEncoderDescriptor.h +0 -45
  274. package/cpp/rnwgpu/api/descriptors/GPUComputePassDescriptor.h +0 -56
  275. package/cpp/rnwgpu/api/descriptors/GPUComputePassTimestampWrites.h +0 -58
  276. package/cpp/rnwgpu/api/descriptors/GPUComputePipelineDescriptor.h +0 -67
  277. package/cpp/rnwgpu/api/descriptors/GPUDawnTogglesDescriptor.h +0 -56
  278. package/cpp/rnwgpu/api/descriptors/GPUDepthStencilState.h +0 -103
  279. package/cpp/rnwgpu/api/descriptors/GPUDeviceDescriptor.h +0 -109
  280. package/cpp/rnwgpu/api/descriptors/GPUExternalTextureBindingLayout.h +0 -38
  281. package/cpp/rnwgpu/api/descriptors/GPUExternalTextureDescriptor.h +0 -90
  282. package/cpp/rnwgpu/api/descriptors/GPUFragmentState.h +0 -73
  283. package/cpp/rnwgpu/api/descriptors/GPUImageCopyBuffer.h +0 -62
  284. package/cpp/rnwgpu/api/descriptors/GPUImageCopyExternalImage.h +0 -63
  285. package/cpp/rnwgpu/api/descriptors/GPUImageCopyTexture.h +0 -65
  286. package/cpp/rnwgpu/api/descriptors/GPUImageCopyTextureTagged.h +0 -81
  287. package/cpp/rnwgpu/api/descriptors/GPUImageDataLayout.h +0 -54
  288. package/cpp/rnwgpu/api/descriptors/GPUMapMode.h +0 -22
  289. package/cpp/rnwgpu/api/descriptors/GPUMultisampleState.h +0 -54
  290. package/cpp/rnwgpu/api/descriptors/GPUPipelineLayoutDescriptor.h +0 -57
  291. package/cpp/rnwgpu/api/descriptors/GPUPrimitiveState.h +0 -69
  292. package/cpp/rnwgpu/api/descriptors/GPUProgrammableStage.h +0 -61
  293. package/cpp/rnwgpu/api/descriptors/GPUQuerySetDescriptor.h +0 -55
  294. package/cpp/rnwgpu/api/descriptors/GPUQueueDescriptor.h +0 -43
  295. package/cpp/rnwgpu/api/descriptors/GPURenderBundleDescriptor.h +0 -45
  296. package/cpp/rnwgpu/api/descriptors/GPURenderBundleEncoderDescriptor.h +0 -80
  297. package/cpp/rnwgpu/api/descriptors/GPURenderPassColorAttachment.h +0 -81
  298. package/cpp/rnwgpu/api/descriptors/GPURenderPassDepthStencilAttachment.h +0 -101
  299. package/cpp/rnwgpu/api/descriptors/GPURenderPassDescriptor.h +0 -92
  300. package/cpp/rnwgpu/api/descriptors/GPURenderPassTimestampWrites.h +0 -58
  301. package/cpp/rnwgpu/api/descriptors/GPURenderPipelineDescriptor.h +0 -103
  302. package/cpp/rnwgpu/api/descriptors/GPURequestAdapterOptions.h +0 -51
  303. package/cpp/rnwgpu/api/descriptors/GPUSamplerBindingLayout.h +0 -45
  304. package/cpp/rnwgpu/api/descriptors/GPUSamplerDescriptor.h +0 -110
  305. package/cpp/rnwgpu/api/descriptors/GPUShaderModuleCompilationHint.h +0 -60
  306. package/cpp/rnwgpu/api/descriptors/GPUShaderModuleDescriptor.h +0 -62
  307. package/cpp/rnwgpu/api/descriptors/GPUShaderStage.h +0 -25
  308. package/cpp/rnwgpu/api/descriptors/GPUSharedFenceDescriptor.h +0 -58
  309. package/cpp/rnwgpu/api/descriptors/GPUSharedFenceState.h +0 -51
  310. package/cpp/rnwgpu/api/descriptors/GPUSharedTextureMemoryDescriptor.h +0 -73
  311. package/cpp/rnwgpu/api/descriptors/GPUStencilFaceState.h +0 -64
  312. package/cpp/rnwgpu/api/descriptors/GPUStorageTextureBindingLayout.h +0 -59
  313. package/cpp/rnwgpu/api/descriptors/GPUTextureBindingLayout.h +0 -59
  314. package/cpp/rnwgpu/api/descriptors/GPUTextureDescriptor.h +0 -91
  315. package/cpp/rnwgpu/api/descriptors/GPUTextureUsage.h +0 -29
  316. package/cpp/rnwgpu/api/descriptors/GPUTextureViewDescriptor.h +0 -91
  317. package/cpp/rnwgpu/api/descriptors/GPUUncapturedErrorEventInit.h +0 -64
  318. package/cpp/rnwgpu/api/descriptors/GPUVertexAttribute.h +0 -53
  319. package/cpp/rnwgpu/api/descriptors/GPUVertexBufferLayout.h +0 -62
  320. package/cpp/rnwgpu/api/descriptors/GPUVertexState.h +0 -73
  321. package/cpp/rnwgpu/api/descriptors/Unions.h +0 -1969
  322. package/cpp/rnwgpu/async/AsyncTaskHandle.cpp +0 -214
  323. package/cpp/rnwgpu/async/AsyncTaskHandle.h +0 -58
  324. package/cpp/rnwgpu/async/RuntimeContext.cpp +0 -199
  325. package/cpp/rnwgpu/async/RuntimeContext.h +0 -134
  326. package/lib/commonjs/skia/types/WebGPU.d.ts +0 -184
  327. package/lib/commonjs/skia/types/WebGPU.js +0 -105
  328. package/lib/commonjs/skia/types/WebGPU.js.map +0 -1
  329. package/lib/commonjs/specs/WebGPUViewNativeComponent.d.ts +0 -8
  330. package/lib/commonjs/specs/WebGPUViewNativeComponent.js +0 -10
  331. package/lib/commonjs/specs/WebGPUViewNativeComponent.js.map +0 -1
  332. package/lib/commonjs/specs/WebGPUViewNativeComponent.web.d.ts +0 -8
  333. package/lib/commonjs/specs/WebGPUViewNativeComponent.web.js +0 -103
  334. package/lib/commonjs/specs/WebGPUViewNativeComponent.web.js.map +0 -1
  335. package/lib/commonjs/specs/utils.d.ts +0 -1
  336. package/lib/commonjs/specs/utils.js +0 -11
  337. package/lib/commonjs/specs/utils.js.map +0 -1
  338. package/lib/commonjs/views/WebGPUCanvas.d.ts +0 -33
  339. package/lib/commonjs/views/WebGPUCanvas.js +0 -79
  340. package/lib/commonjs/views/WebGPUCanvas.js.map +0 -1
  341. package/lib/commonjs/views/WebGPUCanvas.web.d.ts +0 -23
  342. package/lib/commonjs/views/WebGPUCanvas.web.js +0 -20
  343. package/lib/commonjs/views/WebGPUCanvas.web.js.map +0 -1
  344. package/lib/module/skia/types/WebGPU.d.ts +0 -184
  345. package/lib/module/skia/types/WebGPU.js +0 -99
  346. package/lib/module/skia/types/WebGPU.js.map +0 -1
  347. package/lib/module/specs/WebGPUViewNativeComponent.d.ts +0 -8
  348. package/lib/module/specs/WebGPUViewNativeComponent.js +0 -4
  349. package/lib/module/specs/WebGPUViewNativeComponent.js.map +0 -1
  350. package/lib/module/specs/WebGPUViewNativeComponent.web.d.ts +0 -8
  351. package/lib/module/specs/WebGPUViewNativeComponent.web.js +0 -96
  352. package/lib/module/specs/WebGPUViewNativeComponent.web.js.map +0 -1
  353. package/lib/module/specs/utils.d.ts +0 -1
  354. package/lib/module/specs/utils.js +0 -5
  355. package/lib/module/specs/utils.js.map +0 -1
  356. package/lib/module/views/WebGPUCanvas.d.ts +0 -33
  357. package/lib/module/views/WebGPUCanvas.js +0 -70
  358. package/lib/module/views/WebGPUCanvas.js.map +0 -1
  359. package/lib/module/views/WebGPUCanvas.web.d.ts +0 -23
  360. package/lib/module/views/WebGPUCanvas.web.js +0 -12
  361. package/lib/module/views/WebGPUCanvas.web.js.map +0 -1
  362. package/lib/typescript/lib/commonjs/skia/types/WebGPU.d.ts +0 -2
  363. package/lib/typescript/lib/commonjs/specs/WebGPUViewNativeComponent.d.ts +0 -4
  364. package/lib/typescript/lib/commonjs/specs/WebGPUViewNativeComponent.web.d.ts +0 -3
  365. package/lib/typescript/lib/commonjs/specs/utils.d.ts +0 -2
  366. package/lib/typescript/lib/commonjs/views/WebGPUCanvas.d.ts +0 -6
  367. package/lib/typescript/lib/commonjs/views/WebGPUCanvas.web.d.ts +0 -6
  368. package/lib/typescript/lib/module/skia/types/WebGPU.d.ts +0 -31
  369. package/lib/typescript/lib/module/specs/WebGPUViewNativeComponent.d.ts +0 -2
  370. package/lib/typescript/lib/module/specs/WebGPUViewNativeComponent.web.d.ts +0 -2
  371. package/lib/typescript/lib/module/specs/utils.d.ts +0 -1
  372. package/lib/typescript/lib/module/views/WebGPUCanvas.d.ts +0 -7
  373. package/lib/typescript/lib/module/views/WebGPUCanvas.web.d.ts +0 -8
  374. package/lib/typescript/src/skia/types/WebGPU.d.ts +0 -184
  375. package/lib/typescript/src/specs/WebGPUViewNativeComponent.d.ts +0 -8
  376. package/lib/typescript/src/specs/WebGPUViewNativeComponent.web.d.ts +0 -8
  377. package/lib/typescript/src/specs/utils.d.ts +0 -1
  378. package/lib/typescript/src/views/WebGPUCanvas.d.ts +0 -33
  379. package/lib/typescript/src/views/WebGPUCanvas.web.d.ts +0 -23
  380. package/src/skia/types/WebGPU.ts +0 -226
  381. package/src/specs/WebGPUViewNativeComponent.ts +0 -11
  382. package/src/specs/WebGPUViewNativeComponent.web.ts +0 -110
  383. package/src/specs/utils.ts +0 -4
  384. package/src/views/WebGPUCanvas.tsx +0 -125
  385. package/src/views/WebGPUCanvas.web.tsx +0 -36
  386. /package/cpp/{jsi2 → jsi}/Promise.cpp +0 -0
  387. /package/cpp/{jsi2 → jsi}/Promise.h +0 -0
@@ -1,2 +0,0 @@
1
- export const __esModule: boolean;
2
- export const installWebGPU: any;
@@ -1,4 +0,0 @@
1
- export const __esModule: boolean;
2
- declare const _default: _reactNative.HostComponent<object>;
3
- export default _default;
4
- import _reactNative = require("react-native");
@@ -1,3 +0,0 @@
1
- export const __esModule: boolean;
2
- export default WebGPUViewNativeComponent;
3
- declare function WebGPUViewNativeComponent(props: any): any;
@@ -1,2 +0,0 @@
1
- export const __esModule: boolean;
2
- export function contextIdToId(contextId: any): string;
@@ -1,6 +0,0 @@
1
- export const __esModule: boolean;
2
- export function WebGPUCanvas({ transparent, ref, ...props }: {
3
- [x: string]: any;
4
- transparent: any;
5
- ref: any;
6
- }): any;
@@ -1,6 +0,0 @@
1
- export const __esModule: boolean;
2
- export function WebGPUCanvas({ transparent: _transparent, ref: _ref, ...props }: {
3
- [x: string]: any;
4
- transparent: any;
5
- ref: any;
6
- }): any;
@@ -1,31 +0,0 @@
1
- /**
2
- * Make the WebGPU flag constants (`GPUBufferUsage`, `GPUColorWrite`,
3
- * `GPUMapMode`, `GPUShaderStage`, `GPUTextureUsage`) available on the runtime
4
- * that calls this.
5
- *
6
- * The native module installs these globals on the main JS runtime, but worklet
7
- * runtimes (Reanimated UI, dedicated worklet runtimes, Vision Camera frame
8
- * processors) start without them, so referencing the bare global inside a
9
- * worklet yields `undefined`. Call `installWebGPU()` once at the top of a
10
- * worklet to install them there:
11
- *
12
- * ```tsx
13
- * import { installWebGPU } from "@shopify/react-native-skia";
14
- *
15
- * const work = (device: GPUDevice) => {
16
- * "worklet";
17
- * installWebGPU();
18
- * device.createBuffer({
19
- * usage: GPUBufferUsage.COPY_DST | GPUBufferUsage.MAP_READ,
20
- * });
21
- * };
22
- * ```
23
- *
24
- * `installWebGPU` is a native host function. When captured into a worklet, the
25
- * Worklets serializer re-creates it on the worklet runtime, so calling it there
26
- * installs the constants on that runtime. The values come from the native
27
- * `wgpu::*Usage` enums, so they stay a single source of truth across runtimes.
28
- * Calling it on a runtime that already has the constants is a safe no-op, and on
29
- * web (where the constants are always global) it is a no-op too.
30
- */
31
- export const installWebGPU: any;
@@ -1,2 +0,0 @@
1
- declare const _default: import("react-native").HostComponent<object>;
2
- export default _default;
@@ -1,2 +0,0 @@
1
- export default function WebGPUViewNativeComponent(props: any): React.DetailedReactHTMLElement<any, HTMLElement>;
2
- import React from "react";
@@ -1 +0,0 @@
1
- export function contextIdToId(contextId: any): string;
@@ -1,7 +0,0 @@
1
- export function WebGPUCanvas({ transparent, ref, ...props }: {
2
- [x: string]: any;
3
- transparent: any;
4
- ref: any;
5
- }): React.CElement<import("react-native").ViewProps, View>;
6
- import { View } from "react-native";
7
- import React from "react";
@@ -1,8 +0,0 @@
1
- export function WebGPUCanvas({ transparent: _transparent, ref: _ref, ...props }: {
2
- [x: string]: any;
3
- transparent: any;
4
- ref: any;
5
- }): React.DetailedReactHTMLElement<{
6
- [x: string]: any;
7
- }, HTMLElement>;
8
- import React from "react";
@@ -1,184 +0,0 @@
1
- import type { NativeBuffer } from "./NativeBuffer";
2
- /**
3
- * Make the WebGPU flag constants (`GPUBufferUsage`, `GPUColorWrite`,
4
- * `GPUMapMode`, `GPUShaderStage`, `GPUTextureUsage`) available on the runtime
5
- * that calls this.
6
- *
7
- * The native module installs these globals on the main JS runtime, but worklet
8
- * runtimes (Reanimated UI, dedicated worklet runtimes, Vision Camera frame
9
- * processors) start without them, so referencing the bare global inside a
10
- * worklet yields `undefined`. Call `installWebGPU()` once at the top of a
11
- * worklet to install them there:
12
- *
13
- * ```tsx
14
- * import { installWebGPU } from "@shopify/react-native-skia";
15
- *
16
- * const work = (device: GPUDevice) => {
17
- * "worklet";
18
- * installWebGPU();
19
- * device.createBuffer({
20
- * usage: GPUBufferUsage.COPY_DST | GPUBufferUsage.MAP_READ,
21
- * });
22
- * };
23
- * ```
24
- *
25
- * `installWebGPU` is a native host function. When captured into a worklet, the
26
- * Worklets serializer re-creates it on the worklet runtime, so calling it there
27
- * installs the constants on that runtime. The values come from the native
28
- * `wgpu::*Usage` enums, so they stay a single source of truth across runtimes.
29
- * Calling it on a runtime that already has the constants is a safe no-op, and on
30
- * web (where the constants are always global) it is a no-op too.
31
- */
32
- export declare const installWebGPU: () => void;
33
- /**
34
- * Descriptor for {@link GPUDevice.importExternalTexture} when the source is a
35
- * Skia NativeBuffer (Skia has no WebCodecs `VideoFrame`).
36
- *
37
- * `source` is the handle returned by `Skia.NativeBuffer.MakeFromImage`: a
38
- * `CVPixelBufferRef` on Apple, an `AHardwareBuffer*` on Android. The caller
39
- * owns its lifetime (release it with `Skia.NativeBuffer.Release`) and must keep
40
- * it alive until the imported texture is destroyed.
41
- */
42
- export interface SkiaGPUExternalTextureDescriptor extends GPUObjectDescriptorBase {
43
- source: NativeBuffer;
44
- /** Rotation applied while sampling, in degrees. One of 0 | 90 | 180 | 270. */
45
- rotation?: number;
46
- /** Mirror horizontally while sampling. */
47
- mirrored?: boolean;
48
- }
49
- /**
50
- * Descriptor for {@link GPUDevice.importSharedTextureMemory}. `handle` is the
51
- * NativeBuffer returned by `Skia.NativeBuffer.MakeFromImage` (see
52
- * {@link SkiaGPUExternalTextureDescriptor} for the platform-specific types and
53
- * lifetime rules).
54
- */
55
- export interface GPUSharedTextureMemoryDescriptor extends GPUObjectDescriptorBase {
56
- handle: NativeBuffer;
57
- }
58
- /**
59
- * The kind of native synchronization primitive a {@link GPUSharedFence} wraps,
60
- * matching the `shared-fence-*` device feature names. Limited to the kinds
61
- * react-native-skia targets (iOS/Metal and Android/Vulkan); `importSharedFence`
62
- * accepts these and `export()` reports them.
63
- */
64
- export type GPUSharedFenceType = "mtl-shared-event" | "sync-fd" | "vk-semaphore-opaque-fd";
65
- /**
66
- * Descriptor for {@link GPUDevice.importSharedFence}.
67
- */
68
- export interface GPUSharedFenceDescriptor {
69
- /**
70
- * The fence kind to import. Must match a `shared-fence-*` feature enabled on
71
- * the device.
72
- */
73
- type: GPUSharedFenceType;
74
- /**
75
- * The raw native handle as a BigInt: an `id<MTLSharedEvent>` pointer for
76
- * `"mtl-shared-event"`, or an OS file descriptor for the `*-fd` kinds.
77
- */
78
- handle: bigint;
79
- label?: string;
80
- }
81
- export interface GPUSharedFenceExportInfo {
82
- type: GPUSharedFenceType;
83
- /**
84
- * An `id<MTLSharedEvent>` pointer (Apple) or file descriptor (Android), as a
85
- * BigInt. The caller takes ownership; e.g. an exported sync-fd must be closed
86
- * once consumed.
87
- */
88
- handle: bigint;
89
- }
90
- /**
91
- * A native GPU synchronization primitive shared across queues/APIs. Produced by
92
- * {@link GPUSharedTextureMemory.endAccess}, consumed by
93
- * {@link GPUSharedTextureMemory.beginAccess}, or imported from a consumer's
94
- * fence with {@link GPUDevice.importSharedFence}.
95
- */
96
- export interface GPUSharedFence {
97
- readonly __brand: "GPUSharedFence";
98
- label: string;
99
- export(): GPUSharedFenceExportInfo;
100
- }
101
- /** A fence and the timeline value to wait for (0n for binary sync-fd fences). */
102
- export interface GPUSharedFenceState {
103
- fence: GPUSharedFence;
104
- signaledValue: bigint;
105
- }
106
- /**
107
- * The result of {@link GPUSharedTextureMemory.endAccess}: each fence is signaled
108
- * at its `signaledValue` once Dawn's GPU work for the access completes.
109
- */
110
- export interface GPUSharedTextureMemoryEndAccessState {
111
- initialized: boolean;
112
- fences: GPUSharedFenceState[];
113
- }
114
- /**
115
- * Shared texture memory imported from a platform native buffer via
116
- * {@link GPUDevice.importSharedTextureMemory}. Create a texture that aliases
117
- * the memory, then bracket the GPU work that touches it with
118
- * {@link GPUSharedTextureMemory.beginAccess} / {@link GPUSharedTextureMemory.endAccess}.
119
- */
120
- export interface GPUSharedTextureMemory extends GPUObjectBase {
121
- /** Create a texture that aliases the shared memory. */
122
- createTexture(descriptor?: GPUTextureDescriptor): GPUTexture;
123
- /**
124
- * Acquire the memory for GPU access. `initialized` marks whether the existing
125
- * contents should be preserved (pass `true` for an already-rendered frame).
126
- * Optional `fences` are wait fences: Dawn waits for each to reach its
127
- * `signaledValue` before writing the surface. Throws if the access could not
128
- * be acquired.
129
- */
130
- beginAccess(texture: GPUTexture, initialized: boolean, fences?: GPUSharedFenceState[]): void;
131
- /**
132
- * Release the memory after the GPU work that accessed it has been submitted,
133
- * and return the fences Dawn produced for the access. Throws on failure.
134
- */
135
- endAccess(texture: GPUTexture): GPUSharedTextureMemoryEndAccessState;
136
- }
137
- /**
138
- * Dawn-specific toggles, passed via {@link GPUDeviceDescriptor.dawnToggles} to
139
- * `adapter.requestDevice`. This is a non-spec, Dawn-only extension; see Dawn's
140
- * toggle list for valid names.
141
- */
142
- export interface GPUDawnTogglesDescriptor {
143
- enabledToggles?: string[];
144
- disabledToggles?: string[];
145
- }
146
- declare global {
147
- interface GPUDeviceDescriptor {
148
- /** Dawn-specific toggles (Skia/Graphite extension, non-spec). */
149
- dawnToggles?: GPUDawnTogglesDescriptor;
150
- }
151
- interface GPUExternalTexture {
152
- /**
153
- * Skia extension: end the imported buffer's shared-memory access window and
154
- * release the underlying resources. Call right after the `queue.submit()`
155
- * that sampled this texture (never before). Idempotent, and also runs at
156
- * garbage collection as a fallback.
157
- */
158
- destroy(): void;
159
- }
160
- interface GPUDevice {
161
- /**
162
- * Skia extension: import a NativeBuffer (from
163
- * `Skia.NativeBuffer.MakeFromImage`) as a {@link GPUExternalTexture}, sampled
164
- * with `texture_external` in WGSL. The returned texture owns the
165
- * shared-memory access window; call `destroy()` on it after the sampling
166
- * `queue.submit()`.
167
- */
168
- importExternalTexture(descriptor: SkiaGPUExternalTextureDescriptor): GPUExternalTexture;
169
- /**
170
- * Skia extension: import a NativeBuffer (from
171
- * `Skia.NativeBuffer.MakeFromImage`) as {@link GPUSharedTextureMemory}, the
172
- * lower-level path that lets you create an aliasing texture and manage the
173
- * begin/end access window yourself.
174
- */
175
- importSharedTextureMemory(descriptor: GPUSharedTextureMemoryDescriptor): GPUSharedTextureMemory;
176
- /**
177
- * Skia extension: import a native synchronization primitive (an
178
- * `id<MTLSharedEvent>` on Apple, a sync-fd / VkSemaphore on Android) as a
179
- * {@link GPUSharedFence}, e.g. to wait on a fence a consumer produced. The
180
- * matching `shared-fence-*` feature must be enabled on the device.
181
- */
182
- importSharedFence(descriptor: GPUSharedFenceDescriptor): GPUSharedFence;
183
- }
184
- }
@@ -1,8 +0,0 @@
1
- import type { ViewProps } from "react-native";
2
- import type { Int32 } from "react-native/Libraries/Types/CodegenTypes";
3
- export interface NativeProps extends ViewProps {
4
- contextId: Int32;
5
- transparent: boolean;
6
- }
7
- declare const _default: import("react-native").HostComponent<NativeProps>;
8
- export default _default;
@@ -1,8 +0,0 @@
1
- import React from "react";
2
- import type { Int32 } from "react-native/Libraries/Types/CodegenTypes";
3
- import type { ViewProps } from "react-native";
4
- export interface NativeProps extends ViewProps {
5
- contextId: Int32;
6
- transparent: boolean;
7
- }
8
- export default function WebGPUViewNativeComponent(props: NativeProps): React.JSX.Element;
@@ -1 +0,0 @@
1
- export declare function contextIdToId(contextId: number): string;
@@ -1,33 +0,0 @@
1
- import React from "react";
2
- import type { ViewProps } from "react-native";
3
- declare global {
4
- var RNWebGPU: {
5
- gpu: GPU;
6
- fabric: boolean;
7
- getNativeSurface: (contextId: number) => NativeCanvas;
8
- MakeWebGPUCanvasContext: (contextId: number, width: number, height: number) => RNCanvasContext;
9
- destroyContext: (contextId: number) => void;
10
- };
11
- }
12
- type SurfacePointer = bigint;
13
- export interface NativeCanvas {
14
- surface: SurfacePointer;
15
- width: number;
16
- height: number;
17
- clientWidth: number;
18
- clientHeight: number;
19
- }
20
- export type RNCanvasContext = GPUCanvasContext & {
21
- present: () => void;
22
- };
23
- export interface WebGPUCanvasRef {
24
- getContextId: () => number;
25
- getContext(contextName: "webgpu"): RNCanvasContext | null;
26
- getNativeSurface: () => NativeCanvas;
27
- }
28
- interface WebGPUCanvasProps extends ViewProps {
29
- transparent?: boolean;
30
- ref?: React.Ref<WebGPUCanvasRef>;
31
- }
32
- export declare const WebGPUCanvas: ({ transparent, ref, ...props }: WebGPUCanvasProps) => React.JSX.Element;
33
- export {};
@@ -1,23 +0,0 @@
1
- import React from "react";
2
- import type { ViewProps } from "react-native";
3
- export interface NativeCanvas {
4
- surface: bigint;
5
- width: number;
6
- height: number;
7
- clientWidth: number;
8
- clientHeight: number;
9
- }
10
- export type RNCanvasContext = GPUCanvasContext & {
11
- present: () => void;
12
- };
13
- export interface WebGPUCanvasRef {
14
- getContextId: () => number;
15
- getContext(contextName: "webgpu"): RNCanvasContext | null;
16
- getNativeSurface: () => NativeCanvas;
17
- }
18
- interface WebGPUCanvasProps extends ViewProps {
19
- transparent?: boolean;
20
- ref?: React.Ref<WebGPUCanvasRef>;
21
- }
22
- export declare const WebGPUCanvas: ({ transparent: _transparent, ref: _ref, ...props }: WebGPUCanvasProps) => React.JSX.Element;
23
- export {};
@@ -1,226 +0,0 @@
1
- import type { NativeBuffer } from "./NativeBuffer";
2
-
3
- /**
4
- * Make the WebGPU flag constants (`GPUBufferUsage`, `GPUColorWrite`,
5
- * `GPUMapMode`, `GPUShaderStage`, `GPUTextureUsage`) available on the runtime
6
- * that calls this.
7
- *
8
- * The native module installs these globals on the main JS runtime, but worklet
9
- * runtimes (Reanimated UI, dedicated worklet runtimes, Vision Camera frame
10
- * processors) start without them, so referencing the bare global inside a
11
- * worklet yields `undefined`. Call `installWebGPU()` once at the top of a
12
- * worklet to install them there:
13
- *
14
- * ```tsx
15
- * import { installWebGPU } from "@shopify/react-native-skia";
16
- *
17
- * const work = (device: GPUDevice) => {
18
- * "worklet";
19
- * installWebGPU();
20
- * device.createBuffer({
21
- * usage: GPUBufferUsage.COPY_DST | GPUBufferUsage.MAP_READ,
22
- * });
23
- * };
24
- * ```
25
- *
26
- * `installWebGPU` is a native host function. When captured into a worklet, the
27
- * Worklets serializer re-creates it on the worklet runtime, so calling it there
28
- * installs the constants on that runtime. The values come from the native
29
- * `wgpu::*Usage` enums, so they stay a single source of truth across runtimes.
30
- * Calling it on a runtime that already has the constants is a safe no-op, and on
31
- * web (where the constants are always global) it is a no-op too.
32
- */
33
- export const installWebGPU: () => void = (() => {
34
- const g =
35
- typeof global !== "undefined"
36
- ? (global as unknown as { installWebGPU?: () => void })
37
- : undefined;
38
- return g && typeof g.installWebGPU === "function"
39
- ? g.installWebGPU
40
- : () => {};
41
- })();
42
-
43
- // Skia's Graphite/Dawn backend extends the standard WebGPU API (typed by
44
- // @webgpu/types) with a few Skia- and Dawn-specific entry points. These are
45
- // only available on native (SK_GRAPHITE) builds, reachable through
46
- // `Skia.getDevice()`.
47
- //
48
- // The exported interfaces below describe the descriptors and objects those
49
- // entry points use; the `declare global` block augments the standard WebGPU
50
- // interfaces so the new methods are typed without casting to `any`.
51
-
52
- /**
53
- * Descriptor for {@link GPUDevice.importExternalTexture} when the source is a
54
- * Skia NativeBuffer (Skia has no WebCodecs `VideoFrame`).
55
- *
56
- * `source` is the handle returned by `Skia.NativeBuffer.MakeFromImage`: a
57
- * `CVPixelBufferRef` on Apple, an `AHardwareBuffer*` on Android. The caller
58
- * owns its lifetime (release it with `Skia.NativeBuffer.Release`) and must keep
59
- * it alive until the imported texture is destroyed.
60
- */
61
- export interface SkiaGPUExternalTextureDescriptor extends GPUObjectDescriptorBase {
62
- source: NativeBuffer;
63
- /** Rotation applied while sampling, in degrees. One of 0 | 90 | 180 | 270. */
64
- rotation?: number;
65
- /** Mirror horizontally while sampling. */
66
- mirrored?: boolean;
67
- }
68
-
69
- /**
70
- * Descriptor for {@link GPUDevice.importSharedTextureMemory}. `handle` is the
71
- * NativeBuffer returned by `Skia.NativeBuffer.MakeFromImage` (see
72
- * {@link SkiaGPUExternalTextureDescriptor} for the platform-specific types and
73
- * lifetime rules).
74
- */
75
- export interface GPUSharedTextureMemoryDescriptor extends GPUObjectDescriptorBase {
76
- handle: NativeBuffer;
77
- }
78
-
79
- /**
80
- * The kind of native synchronization primitive a {@link GPUSharedFence} wraps,
81
- * matching the `shared-fence-*` device feature names. Limited to the kinds
82
- * react-native-skia targets (iOS/Metal and Android/Vulkan); `importSharedFence`
83
- * accepts these and `export()` reports them.
84
- */
85
- export type GPUSharedFenceType =
86
- | "mtl-shared-event"
87
- | "sync-fd"
88
- | "vk-semaphore-opaque-fd";
89
-
90
- /**
91
- * Descriptor for {@link GPUDevice.importSharedFence}.
92
- */
93
- export interface GPUSharedFenceDescriptor {
94
- /**
95
- * The fence kind to import. Must match a `shared-fence-*` feature enabled on
96
- * the device.
97
- */
98
- type: GPUSharedFenceType;
99
- /**
100
- * The raw native handle as a BigInt: an `id<MTLSharedEvent>` pointer for
101
- * `"mtl-shared-event"`, or an OS file descriptor for the `*-fd` kinds.
102
- */
103
- handle: bigint;
104
- label?: string;
105
- }
106
-
107
- export interface GPUSharedFenceExportInfo {
108
- type: GPUSharedFenceType;
109
- /**
110
- * An `id<MTLSharedEvent>` pointer (Apple) or file descriptor (Android), as a
111
- * BigInt. The caller takes ownership; e.g. an exported sync-fd must be closed
112
- * once consumed.
113
- */
114
- handle: bigint;
115
- }
116
-
117
- /**
118
- * A native GPU synchronization primitive shared across queues/APIs. Produced by
119
- * {@link GPUSharedTextureMemory.endAccess}, consumed by
120
- * {@link GPUSharedTextureMemory.beginAccess}, or imported from a consumer's
121
- * fence with {@link GPUDevice.importSharedFence}.
122
- */
123
- export interface GPUSharedFence {
124
- readonly __brand: "GPUSharedFence";
125
- label: string;
126
- export(): GPUSharedFenceExportInfo;
127
- }
128
-
129
- /** A fence and the timeline value to wait for (0n for binary sync-fd fences). */
130
- export interface GPUSharedFenceState {
131
- fence: GPUSharedFence;
132
- signaledValue: bigint;
133
- }
134
-
135
- /**
136
- * The result of {@link GPUSharedTextureMemory.endAccess}: each fence is signaled
137
- * at its `signaledValue` once Dawn's GPU work for the access completes.
138
- */
139
- export interface GPUSharedTextureMemoryEndAccessState {
140
- initialized: boolean;
141
- fences: GPUSharedFenceState[];
142
- }
143
-
144
- /**
145
- * Shared texture memory imported from a platform native buffer via
146
- * {@link GPUDevice.importSharedTextureMemory}. Create a texture that aliases
147
- * the memory, then bracket the GPU work that touches it with
148
- * {@link GPUSharedTextureMemory.beginAccess} / {@link GPUSharedTextureMemory.endAccess}.
149
- */
150
- export interface GPUSharedTextureMemory extends GPUObjectBase {
151
- /** Create a texture that aliases the shared memory. */
152
- createTexture(descriptor?: GPUTextureDescriptor): GPUTexture;
153
- /**
154
- * Acquire the memory for GPU access. `initialized` marks whether the existing
155
- * contents should be preserved (pass `true` for an already-rendered frame).
156
- * Optional `fences` are wait fences: Dawn waits for each to reach its
157
- * `signaledValue` before writing the surface. Throws if the access could not
158
- * be acquired.
159
- */
160
- beginAccess(
161
- texture: GPUTexture,
162
- initialized: boolean,
163
- fences?: GPUSharedFenceState[]
164
- ): void;
165
- /**
166
- * Release the memory after the GPU work that accessed it has been submitted,
167
- * and return the fences Dawn produced for the access. Throws on failure.
168
- */
169
- endAccess(texture: GPUTexture): GPUSharedTextureMemoryEndAccessState;
170
- }
171
-
172
- /**
173
- * Dawn-specific toggles, passed via {@link GPUDeviceDescriptor.dawnToggles} to
174
- * `adapter.requestDevice`. This is a non-spec, Dawn-only extension; see Dawn's
175
- * toggle list for valid names.
176
- */
177
- export interface GPUDawnTogglesDescriptor {
178
- enabledToggles?: string[];
179
- disabledToggles?: string[];
180
- }
181
-
182
- declare global {
183
- interface GPUDeviceDescriptor {
184
- /** Dawn-specific toggles (Skia/Graphite extension, non-spec). */
185
- dawnToggles?: GPUDawnTogglesDescriptor;
186
- }
187
-
188
- interface GPUExternalTexture {
189
- /**
190
- * Skia extension: end the imported buffer's shared-memory access window and
191
- * release the underlying resources. Call right after the `queue.submit()`
192
- * that sampled this texture (never before). Idempotent, and also runs at
193
- * garbage collection as a fallback.
194
- */
195
- destroy(): void;
196
- }
197
-
198
- interface GPUDevice {
199
- /**
200
- * Skia extension: import a NativeBuffer (from
201
- * `Skia.NativeBuffer.MakeFromImage`) as a {@link GPUExternalTexture}, sampled
202
- * with `texture_external` in WGSL. The returned texture owns the
203
- * shared-memory access window; call `destroy()` on it after the sampling
204
- * `queue.submit()`.
205
- */
206
- importExternalTexture(
207
- descriptor: SkiaGPUExternalTextureDescriptor
208
- ): GPUExternalTexture;
209
- /**
210
- * Skia extension: import a NativeBuffer (from
211
- * `Skia.NativeBuffer.MakeFromImage`) as {@link GPUSharedTextureMemory}, the
212
- * lower-level path that lets you create an aliasing texture and manage the
213
- * begin/end access window yourself.
214
- */
215
- importSharedTextureMemory(
216
- descriptor: GPUSharedTextureMemoryDescriptor
217
- ): GPUSharedTextureMemory;
218
- /**
219
- * Skia extension: import a native synchronization primitive (an
220
- * `id<MTLSharedEvent>` on Apple, a sync-fd / VkSemaphore on Android) as a
221
- * {@link GPUSharedFence}, e.g. to wait on a fence a consumer produced. The
222
- * matching `shared-fence-*` feature must be enabled on the device.
223
- */
224
- importSharedFence(descriptor: GPUSharedFenceDescriptor): GPUSharedFence;
225
- }
226
- }
@@ -1,11 +0,0 @@
1
- import { codegenNativeComponent } from "react-native";
2
- import type { ViewProps } from "react-native";
3
- import type { Int32 } from "react-native/Libraries/Types/CodegenTypes";
4
-
5
- export interface NativeProps extends ViewProps {
6
- contextId: Int32;
7
- transparent: boolean;
8
- }
9
-
10
- // eslint-disable-next-line import/no-default-export
11
- export default codegenNativeComponent<NativeProps>("SkiaWebGPUView");