@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
@@ -0,0 +1,387 @@
1
+ #pragma once
2
+
3
+ #include <atomic>
4
+ #include <memory>
5
+ #include <string>
6
+ #include <utility>
7
+
8
+ #include <jsi/jsi.h>
9
+
10
+ #include "jsi/NativeObject.h"
11
+ #include "rnskia/RNSkPlatformContext.h"
12
+ #include "utils/RNSkLog.h"
13
+
14
+ /**
15
+ * Creates a new Host function declaration as a lambda with all deps passed
16
+ * with implicit lambda capture clause
17
+ */
18
+ #define JSI_HOST_FUNCTION_LAMBDA \
19
+ [=](jsi::Runtime & runtime, const jsi::Value &thisValue, \
20
+ const jsi::Value *arguments, size_t count) -> jsi::Value
21
+
22
+ /**
23
+ * Creates a new Host function declaration. Only used for methods that cannot
24
+ * be expressed as typed signatures (heterogeneous argument dispatch, typed
25
+ * array construction, lenient options objects, promises) — everything else
26
+ * uses installMethod/installGetter/installChainableMethod with typed C++
27
+ * signatures converted through rnwgpu::JSIConverter.
28
+ */
29
+ #define JSI_HOST_FUNCTION(NAME) \
30
+ jsi::Value NAME(jsi::Runtime &runtime, const jsi::Value &thisValue, \
31
+ const jsi::Value *arguments, size_t count)
32
+
33
+ namespace RNSkia {
34
+
35
+ namespace jsi = facebook::jsi;
36
+
37
+ // Minimum memory pressure reported for any native object — aliased from the
38
+ // NativeObject infrastructure so dispose() and create() agree on the floor.
39
+ static constexpr size_t kMinMemoryPressure = rnwgpu::kMinMemoryPressure;
40
+
41
+ /**
42
+ * Creates the JS object for a wrapper instance (a class based on the
43
+ * NativeObject pattern below).
44
+ */
45
+ template <typename T>
46
+ jsi::Value makeJsiObject(jsi::Runtime &runtime, std::shared_ptr<T> instance) {
47
+ return T::create(runtime, std::move(instance));
48
+ }
49
+
50
+ /**
51
+ * Returns the wrapper instance backing the given JS object or nullptr if the
52
+ * object is not backed by the requested type.
53
+ */
54
+ template <typename T>
55
+ std::shared_ptr<T> tryGetJsiObject(jsi::Runtime &runtime,
56
+ const jsi::Object &object) {
57
+ if (object.hasNativeState<T>(runtime)) {
58
+ return object.getNativeState<T>(runtime);
59
+ }
60
+ return nullptr;
61
+ }
62
+
63
+ template <typename T>
64
+ std::shared_ptr<T> tryGetJsiObject(jsi::Runtime &runtime,
65
+ const jsi::Value &value) {
66
+ if (!value.isObject()) {
67
+ return nullptr;
68
+ }
69
+ auto object = value.asObject(runtime);
70
+ return tryGetJsiObject<T>(runtime, object);
71
+ }
72
+
73
+ /**
74
+ * Returns the wrapper instance backing the given JS value or throws a JS
75
+ * error if the value is not backed by the requested type.
76
+ */
77
+ template <typename T>
78
+ std::shared_ptr<T> getJsiObject(jsi::Runtime &runtime,
79
+ const jsi::Value &value) {
80
+ auto result = tryGetJsiObject<T>(runtime, value);
81
+ if (result == nullptr) {
82
+ throw jsi::JSError(runtime, "Expected a Skia object of a different type.");
83
+ }
84
+ return result;
85
+ }
86
+
87
+ /**
88
+ * Base class for Skia API objects implemented with the NativeObject /
89
+ * jsi::NativeState pattern (see jsi/NativeObject.h). Instead of a HostObject
90
+ * intercepting every property access, methods and properties live on a shared
91
+ * per-runtime prototype and the C++ instance is attached to plain JS objects
92
+ * as native state.
93
+ *
94
+ * Derived classes must provide:
95
+ * - `static constexpr const char *CLASS_NAME` — the public __typename__
96
+ * (e.g. "Rect"); also used as the boxing brand, so it must be unique.
97
+ * - `static void definePrototype(jsi::Runtime&, jsi::Object& prototype)` —
98
+ * installs methods/getters. The shared pieces (`__typename__`, `__box()`
99
+ * and the boxing reconstructor) are installed by
100
+ * NativeObject::installPrototype; wrapping classes additionally call
101
+ * `installCommon(runtime, proto)` to install dispose().
102
+ *
103
+ * Most methods use typed C++ signatures installed with installMethod /
104
+ * installGetter / installChainableMethod (arguments and results converted
105
+ * through rnwgpu::JSIConverter, see JsiSkConverters.h). Methods that cannot
106
+ * be typed keep the classic JSI_HOST_FUNCTION signature and are installed
107
+ * with installHostMethod, which resolves the C++ instance from `this` via
108
+ * native state.
109
+ */
110
+ template <typename Derived>
111
+ class JsiSkNativeObject : public rnwgpu::NativeObject<Derived> {
112
+ public:
113
+ explicit JsiSkNativeObject(std::shared_ptr<RNSkPlatformContext> context)
114
+ : rnwgpu::NativeObject<Derived>(Derived::CLASS_NAME),
115
+ _context(std::move(context)) {}
116
+
117
+ /**
118
+ * Resolves the C++ instance backing `thisValue`. Throws a JSError if the
119
+ * value is not backed by this class.
120
+ */
121
+ static std::shared_ptr<Derived> fromThis(jsi::Runtime &runtime,
122
+ const jsi::Value &thisValue) {
123
+ return rnwgpu::NativeObject<Derived>::fromValue(runtime, thisValue);
124
+ }
125
+
126
+ protected:
127
+ std::shared_ptr<RNSkPlatformContext> getContext() { return _context; }
128
+
129
+ /**
130
+ @Returns a reference to the argument at the given position in the arguments
131
+ array. Raises an error if the index is above the number of arguments.
132
+ */
133
+ static const jsi::Value &getArgument(jsi::Runtime &runtime,
134
+ const jsi::Value *arguments,
135
+ size_t count, size_t index) {
136
+ if (index >= count) {
137
+ throw jsi::JSError(runtime, "Argument index out of bounds.");
138
+ }
139
+
140
+ return arguments[index];
141
+ }
142
+
143
+ /**
144
+ Returns argument as number or throws
145
+ */
146
+ static double getArgumentAsNumber(jsi::Runtime &runtime,
147
+ const jsi::Value *arguments, size_t count,
148
+ size_t index) {
149
+ const jsi::Value &value = getArgument(runtime, arguments, count, index);
150
+ if (!value.isNumber()) {
151
+ throw jsi::JSError(runtime,
152
+ "Expected type number for parameter at index " +
153
+ std::to_string(index));
154
+ }
155
+ return value.asNumber();
156
+ }
157
+
158
+ /**
159
+ Returns argument as string or throws
160
+ */
161
+ static jsi::String getArgumentAsString(jsi::Runtime &runtime,
162
+ const jsi::Value *arguments,
163
+ size_t count, size_t index) {
164
+ const jsi::Value &value = getArgument(runtime, arguments, count, index);
165
+ if (!value.isString()) {
166
+ throw jsi::JSError(runtime,
167
+ "Expected type string for parameter at index " +
168
+ std::to_string(index));
169
+ }
170
+ return value.asString(runtime);
171
+ }
172
+
173
+ /**
174
+ Returns argument as object or throws
175
+ */
176
+ static jsi::Object getArgumentAsObject(jsi::Runtime &runtime,
177
+ const jsi::Value *arguments,
178
+ size_t count, size_t index) {
179
+ const jsi::Value &value = getArgument(runtime, arguments, count, index);
180
+ if (!value.isObject()) {
181
+ throw jsi::JSError(runtime,
182
+ "Expected type object for parameter at index " +
183
+ std::to_string(index));
184
+ }
185
+ return value.asObject(runtime);
186
+ }
187
+
188
+ /**
189
+ Returns argument as function or throws
190
+ */
191
+ static jsi::Object getArgumentAsFunction(jsi::Runtime &runtime,
192
+ const jsi::Value *arguments,
193
+ size_t count, size_t index) {
194
+ auto value = getArgumentAsObject(runtime, arguments, count, index);
195
+ if (!value.isFunction(runtime)) {
196
+ throw jsi::JSError(runtime,
197
+ "Expected type function for parameter at index " +
198
+ std::to_string(index));
199
+ }
200
+ return value.asFunction(runtime);
201
+ }
202
+
203
+ using HostMethod = jsi::Value (Derived::*)(jsi::Runtime &, const jsi::Value &,
204
+ const jsi::Value *, size_t);
205
+
206
+ /**
207
+ * Installs a method with the classic host-function signature
208
+ * (JSI_HOST_FUNCTION) on the prototype.
209
+ */
210
+ static void installHostMethod(jsi::Runtime &runtime, jsi::Object &prototype,
211
+ const char *name, HostMethod method) {
212
+ auto func = jsi::Function::createFromHostFunction(
213
+ runtime, jsi::PropNameID::forUtf8(runtime, name), 0,
214
+ [method](jsi::Runtime &rt, const jsi::Value &thisValue,
215
+ const jsi::Value *arguments, size_t count) -> jsi::Value {
216
+ auto native = fromThis(rt, thisValue);
217
+ return ((*native).*method)(rt, thisValue, arguments, count);
218
+ });
219
+ prototype.setProperty(runtime, name, func);
220
+ }
221
+
222
+ /**
223
+ * Installs a typed mutating method that returns `this` for chaining
224
+ * (e.g. path.moveTo(...).lineTo(...)). Arguments are converted through
225
+ * rnwgpu::JSIConverter like installMethod; the member function's return
226
+ * value (if any) is ignored and the JS function returns thisValue.
227
+ */
228
+ template <typename ReturnType, typename... Args>
229
+ static void installChainableMethod(jsi::Runtime &runtime,
230
+ jsi::Object &prototype, const char *name,
231
+ ReturnType (Derived::*method)(Args...)) {
232
+ auto func = jsi::Function::createFromHostFunction(
233
+ runtime, jsi::PropNameID::forUtf8(runtime, name), sizeof...(Args),
234
+ [method](jsi::Runtime &rt, const jsi::Value &thisValue,
235
+ const jsi::Value *args, size_t count) -> jsi::Value {
236
+ auto native = fromThis(rt, thisValue);
237
+ invokeChainable(native.get(), method, rt, args,
238
+ std::index_sequence_for<Args...>{}, count);
239
+ return jsi::Value(rt, thisValue);
240
+ });
241
+ prototype.setProperty(runtime, name, func);
242
+ }
243
+
244
+ /**
245
+ * Chainable variant for methods that need the calling jsi::Runtime as
246
+ * their first parameter (e.g. the deprecated SkPath mutators, which log a
247
+ * warning to the JS console).
248
+ */
249
+ template <typename ReturnType, typename... Args>
250
+ static void installChainableMethodWithRuntime(
251
+ jsi::Runtime &runtime, jsi::Object &prototype, const char *name,
252
+ ReturnType (Derived::*method)(jsi::Runtime &, Args...)) {
253
+ auto func = jsi::Function::createFromHostFunction(
254
+ runtime, jsi::PropNameID::forUtf8(runtime, name), sizeof...(Args),
255
+ [method](jsi::Runtime &rt, const jsi::Value &thisValue,
256
+ const jsi::Value *args, size_t count) -> jsi::Value {
257
+ auto native = fromThis(rt, thisValue);
258
+ invokeChainableWithRuntime(native.get(), method, rt, args,
259
+ std::index_sequence_for<Args...>{}, count);
260
+ return jsi::Value(rt, thisValue);
261
+ });
262
+ prototype.setProperty(runtime, name, func);
263
+ }
264
+
265
+ private:
266
+ // Invokes a typed member function with JSI argument conversion, discarding
267
+ // the result. Used by installChainableMethod, which returns thisValue.
268
+ template <typename ReturnType, typename... Args, size_t... Is>
269
+ static void invokeChainable(Derived *obj,
270
+ ReturnType (Derived::*method)(Args...),
271
+ jsi::Runtime &runtime, const jsi::Value *args,
272
+ std::index_sequence<Is...>, size_t count) {
273
+ (obj->*method)(rnwgpu::JSIConverter<std::decay_t<Args>>::fromJSI(
274
+ runtime, args[Is], Is >= count)...);
275
+ }
276
+
277
+ template <typename ReturnType, typename... Args, size_t... Is>
278
+ static void invokeChainableWithRuntime(
279
+ Derived *obj, ReturnType (Derived::*method)(jsi::Runtime &, Args...),
280
+ jsi::Runtime &runtime, const jsi::Value *args, std::index_sequence<Is...>,
281
+ size_t count) {
282
+ (obj->*method)(runtime,
283
+ rnwgpu::JSIConverter<std::decay_t<Args>>::fromJSI(
284
+ runtime, args[Is], Is >= count)...);
285
+ }
286
+
287
+ std::shared_ptr<RNSkPlatformContext> _context;
288
+ };
289
+
290
+ /**
291
+ * NativeObject equivalent of JsiSkWrappingHostObject: wraps an inner object
292
+ * (a std::shared_ptr or sk_sp) and provides dispose() semantics.
293
+ */
294
+ template <typename Derived, typename T>
295
+ class JsiSkWrappingNativeObject : public JsiSkNativeObject<Derived> {
296
+ public:
297
+ JsiSkWrappingNativeObject(std::shared_ptr<RNSkPlatformContext> context,
298
+ T object)
299
+ : JsiSkNativeObject<Derived>(std::move(context)),
300
+ _object(std::move(object)) {}
301
+
302
+ /**
303
+ * Returns the wrapped object. Throws if the object has been disposed.
304
+ */
305
+ T getObject() { return validateObject(); }
306
+ const T getObject() const { return validateObject(); }
307
+
308
+ /**
309
+ * Updates the inner object with a new version of the object.
310
+ */
311
+ void setObject(T object) { _object = object; }
312
+
313
+ /**
314
+ * Returns the wrapped object from a JS value backed by this class.
315
+ */
316
+ static T objectFromValue(jsi::Runtime &runtime, const jsi::Value &value) {
317
+ return JsiSkNativeObject<Derived>::fromThis(runtime, value)->getObject();
318
+ }
319
+
320
+ /**
321
+ * dispose() releases the wrapped resources eagerly instead of waiting for
322
+ * garbage collection. Installed on the prototype via installCommon.
323
+ */
324
+ JSI_HOST_FUNCTION(dispose) {
325
+ if (!isDisposed()) {
326
+ thisValue.asObject(runtime).setExternalMemoryPressure(runtime,
327
+ kMinMemoryPressure);
328
+ }
329
+ safeDispose();
330
+ return jsi::Value::undefined();
331
+ }
332
+
333
+ /**
334
+ * Installs dispose() on the prototype (the shared pieces — __typename__,
335
+ * __box() and the boxing reconstructor — are installed by
336
+ * NativeObject::installPrototype). Must be called from definePrototype().
337
+ */
338
+ static void installCommon(jsi::Runtime &runtime, jsi::Object &prototype) {
339
+ JsiSkNativeObject<Derived>::installHostMethod(runtime, prototype, "dispose",
340
+ &Derived::dispose);
341
+ }
342
+
343
+ protected:
344
+ /**
345
+ * Override to release additional resources. Called exactly once.
346
+ */
347
+ virtual void releaseResources() { setObject(nullptr); }
348
+
349
+ bool isDisposed() const {
350
+ return _isDisposed.load(std::memory_order_acquire);
351
+ }
352
+
353
+ /**
354
+ * Returns the wrapped object without the disposed check — for destructors
355
+ * and releaseResources() implementations.
356
+ */
357
+ T getObjectUnchecked() const { return _object; }
358
+
359
+ private:
360
+ T validateObject() const {
361
+ if (_isDisposed.load(std::memory_order_acquire)) {
362
+ throw std::runtime_error("Attempted to access a disposed object.");
363
+ }
364
+ return _object;
365
+ }
366
+
367
+ void safeDispose() {
368
+ bool expected = false;
369
+ if (_isDisposed.compare_exchange_strong(expected, true,
370
+ std::memory_order_acq_rel)) {
371
+ releaseResources();
372
+ }
373
+ }
374
+
375
+ T _object;
376
+ std::atomic<bool> _isDisposed = {false};
377
+ };
378
+
379
+ template <typename Derived, typename T>
380
+ using JsiSkWrappingSharedPtrNativeObject =
381
+ JsiSkWrappingNativeObject<Derived, std::shared_ptr<T>>;
382
+
383
+ template <typename Derived, typename T>
384
+ using JsiSkWrappingSkPtrNativeObject =
385
+ JsiSkWrappingNativeObject<Derived, sk_sp<T>>;
386
+
387
+ } // namespace RNSkia