@shopify/react-native-skia 2.6.2 → 2.6.3-next.2

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 (346) hide show
  1. package/android/CMakeLists.txt +8 -4
  2. package/android/build.gradle +22 -3
  3. package/android/cpp/rnskia-android/RNSkAndroidPlatformContext.h +62 -0
  4. package/android/src/paper/java/com/facebook/react/viewmanagers/SkiaWebGPUViewManagerDelegate.java +35 -0
  5. package/android/src/paper/java/com/facebook/react/viewmanagers/SkiaWebGPUViewManagerInterface.java +17 -0
  6. package/apple/RNSkApplePlatformContext.h +2 -0
  7. package/apple/RNSkApplePlatformContext.mm +71 -0
  8. package/apple/RNWebGPUAppleNativeBuffer.mm +33 -0
  9. package/cpp/api/JsiNativeBuffer.h +9 -1
  10. package/cpp/api/JsiSkAnimatedImage.h +1 -1
  11. package/cpp/api/JsiSkAnimatedImageFactory.h +1 -1
  12. package/cpp/api/JsiSkApi.h +3 -3
  13. package/cpp/api/JsiSkCanvas.h +34 -1
  14. package/cpp/api/JsiSkColor.h +1 -1
  15. package/cpp/api/JsiSkDataFactory.h +2 -2
  16. package/cpp/api/JsiSkFont.h +1 -1
  17. package/cpp/api/JsiSkFontMgr.h +1 -1
  18. package/cpp/api/JsiSkHostObjects.h +3 -3
  19. package/cpp/api/JsiSkImage.h +15 -7
  20. package/cpp/api/JsiSkImageFactory.h +2 -2
  21. package/cpp/api/JsiSkPath.h +1 -1
  22. package/cpp/api/JsiSkPathFactory.h +1 -1
  23. package/cpp/api/JsiSkSkottie.h +1 -1
  24. package/cpp/api/JsiSkSurface.h +18 -6
  25. package/cpp/api/JsiSkTypeface.h +1 -1
  26. package/cpp/api/JsiSkTypefaceFontProvider.h +1 -1
  27. package/cpp/api/JsiSkiaContext.h +2 -2
  28. package/cpp/api/JsiTextureInfo.h +1 -1
  29. package/cpp/api/JsiVideo.h +2 -2
  30. package/cpp/api/recorder/Convertor.h +1 -1
  31. package/cpp/api/recorder/Drawings.h +1 -1
  32. package/cpp/api/recorder/JsiRecorder.h +4 -4
  33. package/cpp/api/recorder/RNRecorder.h +1 -1
  34. package/cpp/api/third_party/SkottieUtils.cpp +1 -1
  35. package/cpp/api/third_party/base64.cpp +1 -1
  36. package/cpp/jsi/JsiHostObject.cpp +5 -7
  37. package/cpp/jsi/JsiPromises.h +1 -1
  38. package/cpp/jsi/ViewProperty.h +1 -1
  39. package/cpp/rnskia/RNDawnContext.h +13 -0
  40. package/cpp/rnskia/RNDawnUtils.h +11 -1
  41. package/cpp/rnskia/RNSkJsiViewApi.h +2 -2
  42. package/cpp/rnskia/RNSkManager.cpp +88 -2
  43. package/cpp/rnskia/RNSkPictureView.h +4 -4
  44. package/cpp/rnskia/RNSkPlatformContext.h +7 -0
  45. package/cpp/rnskia/RNSkView.h +9 -6
  46. package/cpp/rnwgpu/ArrayBuffer.h +51 -7
  47. package/cpp/rnwgpu/api/AppleNativeBuffer.h +22 -0
  48. package/cpp/rnwgpu/api/Convertors.h +33 -11
  49. package/cpp/rnwgpu/api/GPU.cpp +0 -3
  50. package/cpp/rnwgpu/api/GPUAdapter.cpp +37 -7
  51. package/cpp/rnwgpu/api/GPUBuffer.h +1 -1
  52. package/cpp/rnwgpu/api/GPUDevice.cpp +84 -6
  53. package/cpp/rnwgpu/api/GPUDevice.h +12 -0
  54. package/cpp/rnwgpu/api/GPUExternalTexture.cpp +139 -0
  55. package/cpp/rnwgpu/api/GPUExternalTexture.h +52 -2
  56. package/cpp/rnwgpu/api/GPUQueue.cpp +50 -45
  57. package/cpp/rnwgpu/api/GPUShaderModule.cpp +1 -1
  58. package/cpp/rnwgpu/api/GPUSharedFence.cpp +80 -0
  59. package/cpp/rnwgpu/api/GPUSharedFence.h +53 -0
  60. package/cpp/rnwgpu/api/GPUSharedTextureMemory.cpp +135 -0
  61. package/cpp/rnwgpu/api/GPUSharedTextureMemory.h +75 -0
  62. package/cpp/rnwgpu/api/ImageBitmap.h +62 -0
  63. package/cpp/rnwgpu/api/NativeBufferUtils.h +87 -0
  64. package/cpp/rnwgpu/api/descriptors/GPUBindGroupEntry.h +4 -1
  65. package/cpp/rnwgpu/api/descriptors/GPUCanvasConfiguration.h +1 -1
  66. package/cpp/rnwgpu/api/descriptors/GPUDawnTogglesDescriptor.h +56 -0
  67. package/cpp/rnwgpu/api/descriptors/GPUDeviceDescriptor.h +10 -0
  68. package/cpp/rnwgpu/api/descriptors/GPUExternalTextureDescriptor.h +43 -24
  69. package/cpp/rnwgpu/api/descriptors/GPUImageCopyExternalImage.h +9 -9
  70. package/cpp/rnwgpu/api/descriptors/GPUImageCopyTexture.h +1 -1
  71. package/cpp/rnwgpu/api/descriptors/GPUImageCopyTextureTagged.h +2 -2
  72. package/cpp/rnwgpu/api/descriptors/GPUSharedFenceDescriptor.h +58 -0
  73. package/cpp/rnwgpu/api/descriptors/GPUSharedFenceState.h +51 -0
  74. package/cpp/rnwgpu/api/descriptors/GPUSharedTextureMemoryDescriptor.h +73 -0
  75. package/cpp/rnwgpu/api/descriptors/GPUTextureDescriptor.h +1 -1
  76. package/cpp/rnwgpu/api/descriptors/GPUUncapturedErrorEventInit.h +1 -1
  77. package/cpp/skia/include/android/GrAHardwareBufferUtils.h +1 -1
  78. package/cpp/skia/include/android/SkAndroidFrameworkUtils.h +1 -1
  79. package/cpp/skia/include/android/SkAnimatedImage.h +1 -1
  80. package/cpp/skia/include/codec/SkCodec.h +0 -8
  81. package/cpp/skia/include/codec/SkEncodedOrigin.h +1 -1
  82. package/cpp/skia/include/codec/SkPngRustDecoder.h +1 -1
  83. package/cpp/skia/include/core/SkBitmap.h +2 -8
  84. package/cpp/skia/include/core/SkCPURecorder.h +3 -1
  85. package/cpp/skia/include/core/SkCanvasVirtualEnforcer.h +1 -1
  86. package/cpp/skia/include/core/SkColorType.h +5 -3
  87. package/cpp/skia/include/core/SkContourMeasure.h +1 -1
  88. package/cpp/skia/include/core/SkCoverageMode.h +1 -1
  89. package/cpp/skia/include/core/SkCubicMap.h +1 -1
  90. package/cpp/skia/include/core/SkExecutor.h +1 -1
  91. package/cpp/skia/include/core/SkFont.h +15 -0
  92. package/cpp/skia/include/core/SkFontArguments.h +6 -1
  93. package/cpp/skia/include/core/SkFontMetrics.h +1 -1
  94. package/cpp/skia/include/core/SkFontMgr.h +36 -1
  95. package/cpp/skia/include/core/SkFontParameters.h +1 -1
  96. package/cpp/skia/include/core/SkFontScanner.h +1 -1
  97. package/cpp/skia/include/core/SkFontTypes.h +1 -1
  98. package/cpp/skia/include/core/SkM44.h +1 -1
  99. package/cpp/skia/include/core/SkMilestone.h +1 -1
  100. package/cpp/skia/include/core/SkOpenTypeSVGDecoder.h +1 -1
  101. package/cpp/skia/include/core/SkPathBuilder.h +10 -4
  102. package/cpp/skia/include/core/SkPathIter.h +1 -1
  103. package/cpp/skia/include/core/SkPathTypes.h +1 -1
  104. package/cpp/skia/include/core/SkPixelRef.h +4 -1
  105. package/cpp/skia/include/core/SkRecorder.h +2 -1
  106. package/cpp/skia/include/core/SkRegion.h +17 -6
  107. package/cpp/skia/include/core/SkSamplingOptions.h +1 -1
  108. package/cpp/skia/include/core/SkSerialProcs.h +8 -1
  109. package/cpp/skia/include/core/SkShader.h +3 -5
  110. package/cpp/skia/include/core/SkSpan.h +1 -1
  111. package/cpp/skia/include/core/SkStream.h +1 -1
  112. package/cpp/skia/include/core/SkStrikeRef.h +80 -0
  113. package/cpp/skia/include/core/SkTileMode.h +1 -1
  114. package/cpp/skia/include/core/SkVertices.h +1 -1
  115. package/cpp/skia/include/core/SkYUVAPixmaps.h +3 -5
  116. package/cpp/skia/include/docs/SkPDFDocument.h +1 -1
  117. package/cpp/skia/include/docs/SkXPSDocument.h +1 -1
  118. package/cpp/skia/include/effects/SkGradient.h +1 -1
  119. package/cpp/skia/include/effects/SkHighContrastFilter.h +1 -1
  120. package/cpp/skia/include/effects/SkRuntimeEffect.h +2 -2
  121. package/cpp/skia/include/effects/SkShaderMaskFilter.h +1 -1
  122. package/cpp/skia/include/effects/SkTrimPathEffect.h +1 -1
  123. package/cpp/skia/include/encode/SkEncoder.h +1 -1
  124. package/cpp/skia/include/encode/SkJpegEncoder.h +1 -1
  125. package/cpp/skia/include/encode/SkPngEncoder.h +1 -1
  126. package/cpp/skia/include/encode/SkPngRustEncoder.h +1 -1
  127. package/cpp/skia/include/encode/SkWebpEncoder.h +1 -1
  128. package/cpp/skia/include/gpu/GpuTypes.h +2 -0
  129. package/cpp/skia/include/gpu/MutableTextureState.h +1 -1
  130. package/cpp/skia/include/gpu/ganesh/GrBackendSemaphore.h +1 -1
  131. package/cpp/skia/include/gpu/ganesh/GrBackendSurface.h +6 -62
  132. package/cpp/skia/include/gpu/ganesh/GrContextThreadSafeProxy.h +1 -1
  133. package/cpp/skia/include/gpu/ganesh/GrDirectContext.h +1 -1
  134. package/cpp/skia/include/gpu/ganesh/GrDriverBugWorkarounds.h +1 -1
  135. package/cpp/skia/include/gpu/ganesh/GrRecordingContext.h +2 -1
  136. package/cpp/skia/include/gpu/ganesh/mock/GrMockBackendSurface.h +59 -0
  137. package/cpp/skia/include/gpu/ganesh/mock/GrMockTypes.h +1 -1
  138. package/cpp/skia/include/gpu/ganesh/mtl/GrMtlBackendContext.h +1 -1
  139. package/cpp/skia/include/gpu/ganesh/mtl/GrMtlTypes.h +1 -1
  140. package/cpp/skia/include/gpu/ganesh/vk/GrBackendDrawableInfo.h +1 -1
  141. package/cpp/skia/include/gpu/graphite/Context.h +12 -5
  142. package/cpp/skia/include/gpu/graphite/GraphiteTypes.h +6 -0
  143. package/cpp/skia/include/gpu/graphite/Image.h +82 -9
  144. package/cpp/skia/include/gpu/graphite/PrecompileContext.h +7 -2
  145. package/cpp/skia/include/gpu/graphite/Recorder.h +6 -4
  146. package/cpp/skia/include/gpu/graphite/precompile/PrecompileColorFilter.h +11 -1
  147. package/cpp/skia/include/gpu/graphite/precompile/PrecompileShader.h +1 -0
  148. package/cpp/skia/include/gpu/graphite/vk/VulkanGraphiteTypes.h +1 -1
  149. package/cpp/skia/include/gpu/mtl/MtlMemoryAllocator.h +1 -1
  150. package/cpp/skia/include/gpu/vk/VulkanExtensions.h +1 -1
  151. package/cpp/skia/include/gpu/vk/VulkanMemoryAllocator.h +1 -1
  152. package/cpp/skia/include/gpu/vk/VulkanTypes.h +1 -1
  153. package/cpp/skia/include/ports/SkCFObject.h +1 -1
  154. package/cpp/skia/include/ports/SkFontMgr_Fontations.h +1 -1
  155. package/cpp/skia/include/ports/SkFontMgr_android_ndk.h +1 -1
  156. package/cpp/skia/include/ports/SkFontMgr_data.h +1 -1
  157. package/cpp/skia/include/ports/SkFontMgr_fuchsia.h +1 -1
  158. package/cpp/skia/include/ports/SkFontMgr_mac_ct.h +1 -1
  159. package/cpp/skia/include/ports/SkFontScanner_Fontations.h +1 -1
  160. package/cpp/skia/include/ports/SkFontScanner_FreeType.h +1 -1
  161. package/cpp/skia/include/ports/SkTypeface_fontations.h +1 -1
  162. package/cpp/skia/include/private/SkExif.h +1 -1
  163. package/cpp/skia/include/private/SkGainmapInfo.h +1 -1
  164. package/cpp/skia/include/private/SkGainmapShader.h +1 -1
  165. package/cpp/skia/include/private/SkHdrMetadata.h +21 -0
  166. package/cpp/skia/include/private/SkJpegGainmapEncoder.h +1 -1
  167. package/cpp/skia/include/private/SkPixelStorage.h +37 -0
  168. package/cpp/skia/include/private/SkXmp.h +1 -1
  169. package/cpp/skia/include/private/base/SkAssert.h +6 -5
  170. package/cpp/skia/include/private/base/SkContainers.h +1 -1
  171. package/cpp/skia/include/private/base/SkFeatures.h +30 -30
  172. package/cpp/skia/include/private/base/SkLog.h +1 -7
  173. package/cpp/skia/include/private/base/SkLogPriority.h +4 -5
  174. package/cpp/skia/include/private/base/SkMacros.h +1 -1
  175. package/cpp/skia/include/private/base/SkMalloc.h +1 -1
  176. package/cpp/skia/include/private/base/SkSafe32.h +1 -1
  177. package/cpp/skia/include/private/base/SkSpan_impl.h +1 -1
  178. package/cpp/skia/include/private/base/SkTDArray.h +13 -1
  179. package/cpp/skia/include/private/base/SkTPin.h +1 -1
  180. package/cpp/skia/include/private/base/SkTo.h +1 -1
  181. package/cpp/skia/include/private/chromium/GrVkSecondaryCBDrawContext.h +1 -1
  182. package/cpp/skia/include/private/chromium/SkChromeRemoteGlyphCache.h +1 -1
  183. package/cpp/skia/include/private/chromium/SkCodecsICCProfileChromium.h +52 -0
  184. package/cpp/skia/include/private/chromium/SkExifChromium.h +26 -0
  185. package/cpp/skia/include/private/gpu/ganesh/GrContext_Base.h +1 -1
  186. package/cpp/skia/include/private/gpu/ganesh/GrImageContext.h +1 -1
  187. package/cpp/skia/include/private/gpu/ganesh/GrTypesPriv.h +2 -1
  188. package/cpp/skia/include/private/gpu/vk/SkiaVulkan.h +1 -1
  189. package/cpp/skia/include/sksl/SkSLDebugTrace.h +1 -1
  190. package/cpp/skia/include/third_party/vulkan/vulkan/vk_icd.h +41 -51
  191. package/cpp/skia/include/third_party/vulkan/vulkan/vk_layer.h +42 -53
  192. package/cpp/skia/include/third_party/vulkan/vulkan/vk_platform.h +2 -1
  193. package/cpp/skia/include/third_party/vulkan/vulkan/vk_video/vulkan_video_codec_av1std.h +158 -154
  194. package/cpp/skia/include/third_party/vulkan/vulkan/vk_video/vulkan_video_codec_av1std_decode.h +68 -65
  195. package/cpp/skia/include/third_party/vulkan/vulkan/vk_video/vulkan_video_codec_av1std_encode.h +90 -87
  196. package/cpp/skia/include/third_party/vulkan/vulkan/vk_video/vulkan_video_codec_h264std.h +9 -9
  197. package/cpp/skia/include/third_party/vulkan/vulkan/vk_video/vulkan_video_codec_h264std_decode.h +2 -2
  198. package/cpp/skia/include/third_party/vulkan/vulkan/vk_video/vulkan_video_codec_h264std_encode.h +82 -79
  199. package/cpp/skia/include/third_party/vulkan/vulkan/vk_video/vulkan_video_codec_h265std.h +24 -24
  200. package/cpp/skia/include/third_party/vulkan/vulkan/vk_video/vulkan_video_codec_h265std_decode.h +2 -2
  201. package/cpp/skia/include/third_party/vulkan/vulkan/vk_video/vulkan_video_codec_h265std_encode.h +95 -96
  202. package/cpp/skia/include/third_party/vulkan/vulkan/vk_video/vulkan_video_codec_vp9std.h +151 -0
  203. package/cpp/skia/include/third_party/vulkan/vulkan/vk_video/vulkan_video_codec_vp9std_decode.h +68 -0
  204. package/cpp/skia/include/third_party/vulkan/vulkan/vk_video/vulkan_video_codecs_common.h +1 -1
  205. package/cpp/skia/include/third_party/vulkan/vulkan/vulkan.h +5 -1
  206. package/cpp/skia/include/third_party/vulkan/vulkan/vulkan_android.h +7 -1
  207. package/cpp/skia/include/third_party/vulkan/vulkan/vulkan_beta.h +291 -158
  208. package/cpp/skia/include/third_party/vulkan/vulkan/vulkan_core.h +13174 -10113
  209. package/cpp/skia/include/third_party/vulkan/vulkan/vulkan_directfb.h +23 -19
  210. package/cpp/skia/include/third_party/vulkan/vulkan/vulkan_fuchsia.h +159 -165
  211. package/cpp/skia/include/third_party/vulkan/vulkan/vulkan_ggp.h +22 -19
  212. package/cpp/skia/include/third_party/vulkan/vulkan/vulkan_ios.h +3 -1
  213. package/cpp/skia/include/third_party/vulkan/vulkan/vulkan_macos.h +3 -1
  214. package/cpp/skia/include/third_party/vulkan/vulkan/vulkan_metal.h +94 -88
  215. package/cpp/skia/include/third_party/vulkan/vulkan/vulkan_ohos.h +120 -0
  216. package/cpp/skia/include/third_party/vulkan/vulkan/vulkan_screen.h +55 -51
  217. package/cpp/skia/include/third_party/vulkan/vulkan/vulkan_vi.h +18 -15
  218. package/cpp/skia/include/third_party/vulkan/vulkan/vulkan_wayland.h +23 -19
  219. package/cpp/skia/include/third_party/vulkan/vulkan/vulkan_win32.h +31 -1
  220. package/cpp/skia/include/third_party/vulkan/vulkan/vulkan_xcb.h +5 -1
  221. package/cpp/skia/include/third_party/vulkan/vulkan/vulkan_xlib.h +27 -27
  222. package/cpp/skia/include/third_party/vulkan/vulkan/vulkan_xlib_xrandr.h +20 -16
  223. package/cpp/skia/include/utils/SkEventTracer.h +6 -1
  224. package/cpp/skia/include/utils/SkOrderedFontMgr.h +1 -1
  225. package/cpp/skia/include/utils/SkShadowUtils.h +1 -1
  226. package/cpp/skia/include/utils/SkTextUtils.h +1 -1
  227. package/cpp/skia/modules/jsonreader/SkJSONReader.cpp +20 -4
  228. package/cpp/skia/modules/skcms/src/Transform_inl.h +11 -15
  229. package/cpp/skia/modules/skcms/src/skcms_public.h +2 -0
  230. package/cpp/skia/modules/skottie/include/ExternalLayer.h +1 -1
  231. package/cpp/skia/modules/skottie/include/Skottie.h +1 -1
  232. package/cpp/skia/modules/skottie/include/SkottieProperty.h +1 -1
  233. package/cpp/skia/modules/skottie/include/SlotManager.h +1 -1
  234. package/cpp/skia/modules/skottie/include/TextShaper.h +1 -1
  235. package/cpp/skia/modules/skottie/src/SkottieValue.h +1 -1
  236. package/cpp/skia/modules/skottie/src/animator/Animator.h +1 -1
  237. package/cpp/skia/modules/skottie/src/text/Font.h +1 -1
  238. package/cpp/skia/modules/skottie/src/text/TextAdapter.h +1 -1
  239. package/cpp/skia/modules/skottie/src/text/TextAnimator.h +3 -2
  240. package/cpp/skia/modules/skottie/src/text/TextValue.h +1 -1
  241. package/cpp/skia/modules/skparagraph/include/DartTypes.h +1 -1
  242. package/cpp/skia/modules/skparagraph/include/FontArguments.h +1 -1
  243. package/cpp/skia/modules/skparagraph/include/FontCollection.h +5 -1
  244. package/cpp/skia/modules/skparagraph/include/Metrics.h +1 -1
  245. package/cpp/skia/modules/skparagraph/include/Paragraph.h +1 -1
  246. package/cpp/skia/modules/skparagraph/include/ParagraphBuilder.h +1 -1
  247. package/cpp/skia/modules/skparagraph/include/ParagraphCache.h +1 -1
  248. package/cpp/skia/modules/skparagraph/include/ParagraphPainter.h +1 -1
  249. package/cpp/skia/modules/skparagraph/include/ParagraphStyle.h +12 -5
  250. package/cpp/skia/modules/skparagraph/include/TextShadow.h +1 -1
  251. package/cpp/skia/modules/skparagraph/include/TextStyle.h +1 -1
  252. package/cpp/skia/modules/skparagraph/include/TypefaceFontProvider.h +1 -1
  253. package/cpp/skia/modules/sksg/include/SkSGClipEffect.h +1 -1
  254. package/cpp/skia/modules/sksg/include/SkSGColorFilter.h +1 -1
  255. package/cpp/skia/modules/sksg/include/SkSGDraw.h +1 -1
  256. package/cpp/skia/modules/sksg/include/SkSGEffectNode.h +1 -1
  257. package/cpp/skia/modules/sksg/include/SkSGGeometryEffect.h +1 -1
  258. package/cpp/skia/modules/sksg/include/SkSGGeometryNode.h +1 -1
  259. package/cpp/skia/modules/sksg/include/SkSGGradient.h +1 -1
  260. package/cpp/skia/modules/sksg/include/SkSGGroup.h +1 -1
  261. package/cpp/skia/modules/sksg/include/SkSGImage.h +1 -1
  262. package/cpp/skia/modules/sksg/include/SkSGInvalidationController.h +1 -1
  263. package/cpp/skia/modules/sksg/include/SkSGMaskEffect.h +1 -1
  264. package/cpp/skia/modules/sksg/include/SkSGMerge.h +1 -1
  265. package/cpp/skia/modules/sksg/include/SkSGNode.h +1 -1
  266. package/cpp/skia/modules/sksg/include/SkSGOpacityEffect.h +1 -1
  267. package/cpp/skia/modules/sksg/include/SkSGPaint.h +1 -1
  268. package/cpp/skia/modules/sksg/include/SkSGPath.h +1 -1
  269. package/cpp/skia/modules/sksg/include/SkSGPlane.h +1 -1
  270. package/cpp/skia/modules/sksg/include/SkSGRect.h +1 -1
  271. package/cpp/skia/modules/sksg/include/SkSGRenderEffect.h +1 -1
  272. package/cpp/skia/modules/sksg/include/SkSGRenderNode.h +1 -1
  273. package/cpp/skia/modules/sksg/include/SkSGScene.h +1 -1
  274. package/cpp/skia/modules/sksg/include/SkSGText.h +1 -1
  275. package/cpp/skia/modules/sksg/include/SkSGTransform.h +1 -1
  276. package/cpp/skia/modules/skshaper/include/SkShaper_coretext.h +8 -1
  277. package/cpp/skia/modules/svg/include/SkSVGFe.h +1 -1
  278. package/cpp/skia/modules/svg/include/SkSVGFeBlend.h +1 -1
  279. package/cpp/skia/modules/svg/include/SkSVGFeColorMatrix.h +1 -1
  280. package/cpp/skia/modules/svg/include/SkSVGFeComponentTransfer.h +1 -1
  281. package/cpp/skia/modules/svg/include/SkSVGFeComposite.h +1 -1
  282. package/cpp/skia/modules/svg/include/SkSVGFeDisplacementMap.h +1 -1
  283. package/cpp/skia/modules/svg/include/SkSVGFeFlood.h +1 -1
  284. package/cpp/skia/modules/svg/include/SkSVGFeGaussianBlur.h +1 -1
  285. package/cpp/skia/modules/svg/include/SkSVGFeImage.h +1 -1
  286. package/cpp/skia/modules/svg/include/SkSVGFeLightSource.h +1 -1
  287. package/cpp/skia/modules/svg/include/SkSVGFeLighting.h +1 -1
  288. package/cpp/skia/modules/svg/include/SkSVGFeMerge.h +1 -1
  289. package/cpp/skia/modules/svg/include/SkSVGFeMorphology.h +1 -1
  290. package/cpp/skia/modules/svg/include/SkSVGFeOffset.h +1 -1
  291. package/cpp/skia/modules/svg/include/SkSVGFeTurbulence.h +1 -1
  292. package/cpp/skia/modules/svg/include/SkSVGFilter.h +1 -1
  293. package/cpp/skia/modules/svg/include/SkSVGFilterContext.h +1 -1
  294. package/cpp/skia/modules/svg/include/SkSVGGradient.h +1 -1
  295. package/cpp/skia/modules/svg/include/SkSVGImage.h +1 -1
  296. package/cpp/skia/modules/svg/include/SkSVGMask.h +1 -1
  297. package/cpp/skia/modules/svg/include/SkSVGOpenTypeSVGDecoder.h +1 -1
  298. package/cpp/skia/modules/svg/include/SkSVGPattern.h +1 -1
  299. package/cpp/skia/modules/svg/include/SkSVGRadialGradient.h +1 -1
  300. package/cpp/skia/modules/svg/include/SkSVGText.h +1 -1
  301. package/cpp/skia/modules/svg/include/SkSVGUse.h +1 -1
  302. package/cpp/skia/src/base/SkAutoLocaleSetter.h +94 -0
  303. package/cpp/skia/src/base/SkUTF.h +1 -1
  304. package/lib/commonjs/skia/types/NativeBuffer/NativeBufferFactory.d.ts +10 -1
  305. package/lib/commonjs/skia/types/NativeBuffer/NativeBufferFactory.js.map +1 -1
  306. package/lib/commonjs/skia/types/WebGPU.d.ts +153 -0
  307. package/lib/commonjs/skia/types/WebGPU.js +6 -0
  308. package/lib/commonjs/skia/types/WebGPU.js.map +1 -0
  309. package/lib/commonjs/skia/types/index.d.ts +1 -0
  310. package/lib/commonjs/skia/types/index.js +11 -0
  311. package/lib/commonjs/skia/types/index.js.map +1 -1
  312. package/lib/commonjs/skia/web/JsiSkNativeBufferFactory.d.ts +1 -0
  313. package/lib/commonjs/skia/web/JsiSkNativeBufferFactory.js +19 -0
  314. package/lib/commonjs/skia/web/JsiSkNativeBufferFactory.js.map +1 -1
  315. package/lib/commonjs/skia/web/JsiSkPath.js.map +1 -1
  316. package/lib/module/skia/types/NativeBuffer/NativeBufferFactory.d.ts +10 -1
  317. package/lib/module/skia/types/NativeBuffer/NativeBufferFactory.js.map +1 -1
  318. package/lib/module/skia/types/WebGPU.d.ts +153 -0
  319. package/lib/module/skia/types/WebGPU.js +2 -0
  320. package/lib/module/skia/types/WebGPU.js.map +1 -0
  321. package/lib/module/skia/types/index.d.ts +1 -0
  322. package/lib/module/skia/types/index.js +1 -0
  323. package/lib/module/skia/types/index.js.map +1 -1
  324. package/lib/module/skia/web/JsiSkNativeBufferFactory.d.ts +1 -0
  325. package/lib/module/skia/web/JsiSkNativeBufferFactory.js +19 -0
  326. package/lib/module/skia/web/JsiSkNativeBufferFactory.js.map +1 -1
  327. package/lib/module/skia/web/JsiSkPath.js.map +1 -1
  328. package/lib/module/web/LoadSkiaWeb.js +1 -2
  329. package/lib/module/web/LoadSkiaWeb.js.map +1 -1
  330. package/lib/typescript/lib/commonjs/skia/types/WebGPU.d.ts +1 -0
  331. package/lib/typescript/lib/commonjs/skia/web/JsiSkNativeBufferFactory.d.ts +1 -0
  332. package/lib/typescript/lib/module/skia/types/WebGPU.d.ts +1 -0
  333. package/lib/typescript/lib/module/skia/types/index.d.ts +1 -0
  334. package/lib/typescript/lib/module/skia/web/JsiSkNativeBufferFactory.d.ts +1 -0
  335. package/lib/typescript/src/skia/types/NativeBuffer/NativeBufferFactory.d.ts +10 -1
  336. package/lib/typescript/src/skia/types/WebGPU.d.ts +153 -0
  337. package/lib/typescript/src/skia/types/index.d.ts +1 -0
  338. package/lib/typescript/src/skia/web/JsiSkNativeBufferFactory.d.ts +1 -0
  339. package/package.json +18 -15
  340. package/react-native-skia.podspec +59 -7
  341. package/src/skia/types/NativeBuffer/NativeBufferFactory.ts +10 -1
  342. package/src/skia/types/WebGPU.ts +186 -0
  343. package/src/skia/types/index.ts +1 -0
  344. package/src/skia/web/JsiSkNativeBufferFactory.ts +20 -0
  345. package/src/skia/web/JsiSkPath.ts +8 -2
  346. package/scripts/install-libs.js +0 -133
@@ -40,7 +40,16 @@ export interface NativeBufferFactory {
40
40
  */
41
41
  MakeFromImage: (image: SkImage) => NativeBuffer;
42
42
  /**
43
- * Release a native buffer that was created with `MakeFromImage`.
43
+ * Create a native buffer of the given size filled with a procedural test
44
+ * pattern (RGB gradient + diagonal stripes), entirely on the CPU. Useful for
45
+ * examples and tests that need a buffer to feed into
46
+ * `GPUDevice.importExternalTexture` without a camera/video source. Release it
47
+ * with `Release`.
48
+ */
49
+ MakeTestBuffer: (width: number, height: number) => NativeBuffer;
50
+ /**
51
+ * Release a native buffer that was created with `MakeFromImage` or
52
+ * `MakeTestBuffer`.
44
53
  */
45
54
  Release: (nativeBuffer: NativeBuffer) => void;
46
55
  }
@@ -0,0 +1,186 @@
1
+ import type { NativeBuffer } from "./NativeBuffer";
2
+
3
+ // Skia's Graphite/Dawn backend extends the standard WebGPU API (typed by
4
+ // @webgpu/types) with a few Skia- and Dawn-specific entry points. These are
5
+ // only available on native (SK_GRAPHITE) builds, reachable through
6
+ // `Skia.getDevice()`.
7
+ //
8
+ // The exported interfaces below describe the descriptors and objects those
9
+ // entry points use; the `declare global` block augments the standard WebGPU
10
+ // interfaces so the new methods are typed without casting to `any`.
11
+
12
+ /**
13
+ * Descriptor for {@link GPUDevice.importExternalTexture} when the source is a
14
+ * Skia NativeBuffer (Skia has no WebCodecs `VideoFrame`).
15
+ *
16
+ * `source` is the handle returned by `Skia.NativeBuffer.MakeFromImage`: a
17
+ * `CVPixelBufferRef` on Apple, an `AHardwareBuffer*` on Android. The caller
18
+ * owns its lifetime (release it with `Skia.NativeBuffer.Release`) and must keep
19
+ * it alive until the imported texture is destroyed.
20
+ */
21
+ export interface SkiaGPUExternalTextureDescriptor extends GPUObjectDescriptorBase {
22
+ source: NativeBuffer;
23
+ /** Rotation applied while sampling, in degrees. One of 0 | 90 | 180 | 270. */
24
+ rotation?: number;
25
+ /** Mirror horizontally while sampling. */
26
+ mirrored?: boolean;
27
+ }
28
+
29
+ /**
30
+ * Descriptor for {@link GPUDevice.importSharedTextureMemory}. `handle` is the
31
+ * NativeBuffer returned by `Skia.NativeBuffer.MakeFromImage` (see
32
+ * {@link SkiaGPUExternalTextureDescriptor} for the platform-specific types and
33
+ * lifetime rules).
34
+ */
35
+ export interface GPUSharedTextureMemoryDescriptor extends GPUObjectDescriptorBase {
36
+ handle: NativeBuffer;
37
+ }
38
+
39
+ /**
40
+ * The kind of native synchronization primitive a {@link GPUSharedFence} wraps,
41
+ * matching the `shared-fence-*` device feature names. Limited to the kinds
42
+ * react-native-skia targets (iOS/Metal and Android/Vulkan); `importSharedFence`
43
+ * accepts these and `export()` reports them.
44
+ */
45
+ export type GPUSharedFenceType =
46
+ | "mtl-shared-event"
47
+ | "sync-fd"
48
+ | "vk-semaphore-opaque-fd";
49
+
50
+ /**
51
+ * Descriptor for {@link GPUDevice.importSharedFence}.
52
+ */
53
+ export interface GPUSharedFenceDescriptor {
54
+ /**
55
+ * The fence kind to import. Must match a `shared-fence-*` feature enabled on
56
+ * the device.
57
+ */
58
+ type: GPUSharedFenceType;
59
+ /**
60
+ * The raw native handle as a BigInt: an `id<MTLSharedEvent>` pointer for
61
+ * `"mtl-shared-event"`, or an OS file descriptor for the `*-fd` kinds.
62
+ */
63
+ handle: bigint;
64
+ label?: string;
65
+ }
66
+
67
+ export interface GPUSharedFenceExportInfo {
68
+ type: GPUSharedFenceType;
69
+ /**
70
+ * An `id<MTLSharedEvent>` pointer (Apple) or file descriptor (Android), as a
71
+ * BigInt. The caller takes ownership; e.g. an exported sync-fd must be closed
72
+ * once consumed.
73
+ */
74
+ handle: bigint;
75
+ }
76
+
77
+ /**
78
+ * A native GPU synchronization primitive shared across queues/APIs. Produced by
79
+ * {@link GPUSharedTextureMemory.endAccess}, consumed by
80
+ * {@link GPUSharedTextureMemory.beginAccess}, or imported from a consumer's
81
+ * fence with {@link GPUDevice.importSharedFence}.
82
+ */
83
+ export interface GPUSharedFence {
84
+ readonly __brand: "GPUSharedFence";
85
+ label: string;
86
+ export(): GPUSharedFenceExportInfo;
87
+ }
88
+
89
+ /** A fence and the timeline value to wait for (0n for binary sync-fd fences). */
90
+ export interface GPUSharedFenceState {
91
+ fence: GPUSharedFence;
92
+ signaledValue: bigint;
93
+ }
94
+
95
+ /**
96
+ * The result of {@link GPUSharedTextureMemory.endAccess}: each fence is signaled
97
+ * at its `signaledValue` once Dawn's GPU work for the access completes.
98
+ */
99
+ export interface GPUSharedTextureMemoryEndAccessState {
100
+ initialized: boolean;
101
+ fences: GPUSharedFenceState[];
102
+ }
103
+
104
+ /**
105
+ * Shared texture memory imported from a platform native buffer via
106
+ * {@link GPUDevice.importSharedTextureMemory}. Create a texture that aliases
107
+ * the memory, then bracket the GPU work that touches it with
108
+ * {@link GPUSharedTextureMemory.beginAccess} / {@link GPUSharedTextureMemory.endAccess}.
109
+ */
110
+ export interface GPUSharedTextureMemory extends GPUObjectBase {
111
+ /** Create a texture that aliases the shared memory. */
112
+ createTexture(descriptor?: GPUTextureDescriptor): GPUTexture;
113
+ /**
114
+ * Acquire the memory for GPU access. `initialized` marks whether the existing
115
+ * contents should be preserved (pass `true` for an already-rendered frame).
116
+ * Optional `fences` are wait fences: Dawn waits for each to reach its
117
+ * `signaledValue` before writing the surface. Throws if the access could not
118
+ * be acquired.
119
+ */
120
+ beginAccess(
121
+ texture: GPUTexture,
122
+ initialized: boolean,
123
+ fences?: GPUSharedFenceState[]
124
+ ): void;
125
+ /**
126
+ * Release the memory after the GPU work that accessed it has been submitted,
127
+ * and return the fences Dawn produced for the access. Throws on failure.
128
+ */
129
+ endAccess(texture: GPUTexture): GPUSharedTextureMemoryEndAccessState;
130
+ }
131
+
132
+ /**
133
+ * Dawn-specific toggles, passed via {@link GPUDeviceDescriptor.dawnToggles} to
134
+ * `adapter.requestDevice`. This is a non-spec, Dawn-only extension; see Dawn's
135
+ * toggle list for valid names.
136
+ */
137
+ export interface GPUDawnTogglesDescriptor {
138
+ enabledToggles?: string[];
139
+ disabledToggles?: string[];
140
+ }
141
+
142
+ declare global {
143
+ interface GPUDeviceDescriptor {
144
+ /** Dawn-specific toggles (Skia/Graphite extension, non-spec). */
145
+ dawnToggles?: GPUDawnTogglesDescriptor;
146
+ }
147
+
148
+ interface GPUExternalTexture {
149
+ /**
150
+ * Skia extension: end the imported buffer's shared-memory access window and
151
+ * release the underlying resources. Call right after the `queue.submit()`
152
+ * that sampled this texture (never before). Idempotent, and also runs at
153
+ * garbage collection as a fallback.
154
+ */
155
+ destroy(): void;
156
+ }
157
+
158
+ interface GPUDevice {
159
+ /**
160
+ * Skia extension: import a NativeBuffer (from
161
+ * `Skia.NativeBuffer.MakeFromImage`) as a {@link GPUExternalTexture}, sampled
162
+ * with `texture_external` in WGSL. The returned texture owns the
163
+ * shared-memory access window; call `destroy()` on it after the sampling
164
+ * `queue.submit()`.
165
+ */
166
+ importExternalTexture(
167
+ descriptor: SkiaGPUExternalTextureDescriptor
168
+ ): 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(
176
+ descriptor: GPUSharedTextureMemoryDescriptor
177
+ ): GPUSharedTextureMemory;
178
+ /**
179
+ * Skia extension: import a native synchronization primitive (an
180
+ * `id<MTLSharedEvent>` on Apple, a sync-fd / VkSemaphore on Android) as a
181
+ * {@link GPUSharedFence}, e.g. to wait on a fence a consumer produced. The
182
+ * matching `shared-fence-*` feature must be enabled on the device.
183
+ */
184
+ importSharedFence(descriptor: GPUSharedFenceDescriptor): GPUSharedFence;
185
+ }
186
+ }
@@ -30,6 +30,7 @@ export * from "./Size";
30
30
  export * from "./Paragraph";
31
31
  export * from "./Matrix4";
32
32
  export * from "./NativeBuffer";
33
+ export * from "./WebGPU";
33
34
  export * from "./Recorder";
34
35
  export * from "./Video";
35
36
  export * from "./Skottie";
@@ -25,6 +25,26 @@ export class JsiSkNativeBufferFactory
25
25
  return canvas;
26
26
  }
27
27
 
28
+ MakeTestBuffer(width: number, height: number): NativeBuffer {
29
+ const pixels = new Uint8ClampedArray(width * height * 4);
30
+ for (let y = 0; y < height; y++) {
31
+ for (let x = 0; x < width; x++) {
32
+ const i = (y * width + x) * 4;
33
+ pixels[i + 0] = Math.floor((x * 255) / Math.max(width - 1, 1));
34
+ pixels[i + 1] = Math.floor((y * 255) / Math.max(height - 1, 1));
35
+ pixels[i + 2] = (x + y) & 0x20 ? 220 : 30;
36
+ pixels[i + 3] = 0xff;
37
+ }
38
+ }
39
+ const canvas = new OffscreenCanvas(width, height);
40
+ const ctx = canvas.getContext("2d");
41
+ if (!ctx) {
42
+ throw new Error("Failed to get 2d context from canvas");
43
+ }
44
+ ctx.putImageData(new ImageData(pixels, width, height), 0, 0);
45
+ return canvas;
46
+ }
47
+
28
48
  Release(_nativeBuffer: NativeBuffer) {
29
49
  // it's a noop on Web
30
50
  }
@@ -447,7 +447,10 @@ export class JsiSkPath
447
447
  }
448
448
 
449
449
  simplify() {
450
- warnDeprecatedPathMethod("simplify", "Use Skia.Path.Simplify(path) instead.");
450
+ warnDeprecatedPathMethod(
451
+ "simplify",
452
+ "Use Skia.Path.Simplify(path) instead."
453
+ );
451
454
  const path = this.asPath();
452
455
  const result = path.makeSimplified();
453
456
  path.delete();
@@ -500,7 +503,10 @@ export class JsiSkPath
500
503
  }
501
504
 
502
505
  stroke(opts?: StrokeOpts) {
503
- warnDeprecatedPathMethod("stroke", "Use Skia.Path.Stroke(path, opts) instead.");
506
+ warnDeprecatedPathMethod(
507
+ "stroke",
508
+ "Use Skia.Path.Stroke(path, opts) instead."
509
+ );
504
510
  const path = this.asPath();
505
511
  const result = path.makeStroked(
506
512
  opts === undefined
@@ -1,133 +0,0 @@
1
- #!/usr/bin/env node
2
- "use strict";
3
-
4
- const path = require("path");
5
- const fs = require("fs");
6
-
7
- const useGraphite =
8
- process.env.SK_GRAPHITE === "1" ||
9
- (process.env.SK_GRAPHITE || "").toLowerCase() === "true";
10
- const prefix = useGraphite ? "react-native-skia-graphite" : "react-native-skia";
11
- const libsDir = path.join(__dirname, "..", "libs");
12
-
13
- function copySync(src, dest, options) {
14
- if (!src.includes("*")) {
15
- return fs.cpSync(src, dest, options);
16
- }
17
-
18
- const wildcardSplit = src.split("*");
19
- const basePath = wildcardSplit[0];
20
- const files = fs.readdirSync(basePath);
21
- files
22
- .filter((file) => file.endsWith(wildcardSplit[1]))
23
- .forEach((file) => {
24
- return fs.cpSync(
25
- path.join(basePath, file),
26
- path.join(dest, file),
27
- options
28
- );
29
- });
30
- }
31
-
32
- // --- Apple platforms ---
33
-
34
- let iosPackage, macosPackage;
35
- try {
36
- iosPackage = path.dirname(
37
- require.resolve(prefix + "-apple-ios/package.json")
38
- );
39
- macosPackage = path.dirname(
40
- require.resolve(prefix + "-apple-macos/package.json")
41
- );
42
- } catch (e) {
43
- console.error(
44
- "ERROR: Could not find " +
45
- prefix +
46
- "-apple-ios or " +
47
- prefix +
48
- "-apple-macos"
49
- );
50
- console.error("Make sure you have run yarn install or npm install");
51
- process.exit(1);
52
- }
53
-
54
- // Verify xcframeworks exist in the iOS package
55
- const iosXcf = path.join(iosPackage, "libs");
56
- if (
57
- !fs.existsSync(iosXcf) ||
58
- !fs.readdirSync(iosXcf).some((f) => f.endsWith(".xcframework"))
59
- ) {
60
- console.error(
61
- "ERROR: Skia prebuilt binaries not found in " + prefix + "-apple-ios!"
62
- );
63
- process.exit(1);
64
- }
65
-
66
- console.log("-- Skia iOS package: " + iosPackage);
67
- console.log("-- Skia macOS package: " + macosPackage);
68
-
69
- // Clean and copy Apple frameworks
70
- fs.rmSync(path.join(libsDir, "ios"), { recursive: true, force: true });
71
- fs.rmSync(path.join(libsDir, "macos"), { recursive: true, force: true });
72
- fs.rmSync(path.join(libsDir, "tvos"), { recursive: true, force: true });
73
- fs.mkdirSync(path.join(libsDir, "ios"), { recursive: true });
74
- fs.mkdirSync(path.join(libsDir, "macos"), { recursive: true });
75
-
76
- copySync(iosPackage + "/libs/*.xcframework", path.join(libsDir, "ios"), {
77
- recursive: true,
78
- });
79
- copySync(macosPackage + "/libs/*.xcframework", path.join(libsDir, "macos"), {
80
- recursive: true,
81
- });
82
-
83
- // Handle tvOS (non-Graphite only)
84
- if (!useGraphite) {
85
- try {
86
- const tvosPackage = path.dirname(
87
- require.resolve(prefix + "-apple-tvos/package.json")
88
- );
89
- console.log("-- Skia tvOS package: " + tvosPackage);
90
- fs.mkdirSync(path.join(libsDir, "tvos"), { recursive: true });
91
- copySync(tvosPackage + "/libs/*.xcframework", path.join(libsDir, "tvos"), {
92
- recursive: true,
93
- });
94
- } catch (e) {
95
- console.log("-- tvOS package not found, skipping");
96
- }
97
- }
98
-
99
- console.log("-- Copied Apple xcframeworks to libs/");
100
-
101
- // --- Android ---
102
-
103
- const androidPackageName = useGraphite
104
- ? "react-native-skia-graphite-android"
105
- : "react-native-skia-android";
106
-
107
- let androidPackage;
108
- try {
109
- androidPackage = path.dirname(
110
- require.resolve(androidPackageName + "/package.json")
111
- );
112
- } catch (e) {
113
- console.error("ERROR: Could not find " + androidPackageName);
114
- console.error("Make sure you have run yarn install or npm install");
115
- process.exit(1);
116
- }
117
-
118
- const androidSrcLibs = path.join(androidPackage, "libs");
119
- if (!fs.existsSync(androidSrcLibs)) {
120
- console.error(
121
- "ERROR: Skia prebuilt binaries not found in " + androidPackageName + "!"
122
- );
123
- process.exit(1);
124
- }
125
-
126
- console.log("-- Skia Android package: " + androidPackage);
127
-
128
- // Copy Android libs (per-ABI static libraries)
129
- const androidDest = path.join(libsDir, "android");
130
- fs.rmSync(androidDest, { recursive: true, force: true });
131
- copySync(androidSrcLibs, androidDest, { recursive: true });
132
-
133
- console.log("-- Copied Android libs to libs/android/");