@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
@@ -1,5 +1,5 @@
1
1
  /*
2
- * Copyright 2024 Google Inc.
2
+ * Copyright 2024 Google LLC
3
3
  *
4
4
  * Use of this source code is governed by a BSD-style license that can be
5
5
  * found in the LICENSE file.
@@ -1,5 +1,5 @@
1
1
  /*
2
- * Copyright 2024 Google Inc.
2
+ * Copyright 2024 Google LLC
3
3
  *
4
4
  * Use of this source code is governed by a BSD-style license that can be
5
5
  * found in the LICENSE file.
@@ -1,5 +1,5 @@
1
1
  /*
2
- * Copyright 2023 Google Inc.
2
+ * Copyright 2023 Google LLC
3
3
  *
4
4
  * Use of this source code is governed by a BSD-style license that can be
5
5
  * found in the LICENSE file.
@@ -1,5 +1,5 @@
1
1
  /*
2
- * Copyright 2023 Google Inc.
2
+ * Copyright 2023 Google LLC
3
3
  *
4
4
  * Use of this source code is governed by a BSD-style license that can be
5
5
  * found in the LICENSE file.
@@ -1,5 +1,5 @@
1
1
  /*
2
- * Copyright 2023 Google Inc.
2
+ * Copyright 2023 Google LLC
3
3
  *
4
4
  * Use of this source code is governed by a BSD-style license that can be
5
5
  * found in the LICENSE file.
@@ -1,5 +1,5 @@
1
1
  /*
2
- * Copyright 2023 Google Inc.
2
+ * Copyright 2023 Google LLC
3
3
  *
4
4
  * Use of this source code is governed by a BSD-style license that can be
5
5
  * found in the LICENSE file.
@@ -12,6 +12,8 @@
12
12
  #include "include/core/SkData.h"
13
13
  #include "include/private/base/SkAPI.h"
14
14
 
15
+ #include <algorithm>
16
+ #include <cmath>
15
17
  #include <memory>
16
18
  #include <optional>
17
19
  #include <vector>
@@ -54,6 +56,20 @@ struct SK_API ContentLightLevelInformation {
54
56
  */
55
57
  sk_sp<SkData> serialize() const;
56
58
 
59
+ /**
60
+ * Helper functions for accessing members as uint16_t, which is often needed when interacting
61
+ * with libraries using the CTA semantics.
62
+ */
63
+ static ContentLightLevelInformation MakeUint16(uint16_t maxCLL, uint16_t maxFALL) {
64
+ return { .fMaxCLL = static_cast<float>(maxCLL), .fMaxFALL = static_cast<float>(maxFALL) };
65
+ }
66
+ uint16_t getUint16MaxCLL() const {
67
+ return static_cast<uint16_t>(std::clamp(std::round(fMaxCLL), 0.f, 65535.f));
68
+ }
69
+ uint16_t getUint16MaxFALL() const {
70
+ return static_cast<uint16_t>(std::clamp(std::round(fMaxFALL), 0.f, 65535.f));
71
+ }
72
+
57
73
  /**
58
74
  * Decode from the binary encoding listed at:
59
75
  * Portable Network Graphics (PNG) Specification (Third Edition)
@@ -242,6 +258,11 @@ struct SK_API AdaptiveGlobalToneMap {
242
258
  */
243
259
  SkString toString() const;
244
260
 
261
+ /**
262
+ * Return true if this metadata satisfies all normative constraints.
263
+ */
264
+ bool isValid() const;
265
+
245
266
  bool operator==(const AdaptiveGlobalToneMap& other) const {
246
267
  return fHdrReferenceWhite == other.fHdrReferenceWhite &&
247
268
  fHeadroomAdaptiveToneMap == other.fHeadroomAdaptiveToneMap;
@@ -1,5 +1,5 @@
1
1
  /*
2
- * Copyright 2023 Google Inc.
2
+ * Copyright 2023 Google LLC
3
3
  *
4
4
  * Use of this source code is governed by a BSD-style license that can be
5
5
  * found in the LICENSE file.
@@ -0,0 +1,37 @@
1
+ /*
2
+ * Copyright 2026 Google LLC
3
+ *
4
+ * Use of this source code is governed by a BSD-style license that can be
5
+ * found in the LICENSE file.
6
+ */
7
+
8
+ #ifndef SkPixelStorage_DEFINED
9
+ #define SkPixelStorage_DEFINED
10
+
11
+ #include <cstdint>
12
+
13
+ /**
14
+ * SkPixelStorage is the class representing the storage block for pixel data. It serves as the
15
+ * abstract source of pixel memory—the 2D array of data—that is read from and written to by
16
+ * higher-level Skia objects like SkImage and SkSurface.
17
+ */
18
+ class SkPixelStorage {
19
+ public:
20
+ SkPixelStorage();
21
+ virtual ~SkPixelStorage() = default;
22
+
23
+ enum Type {
24
+ kTextureProxy,
25
+ kPixelRef,
26
+ };
27
+
28
+ uint32_t getPixelStorageId() const { return fID; }
29
+ virtual Type type() const = 0;
30
+
31
+ private:
32
+ uint32_t fID;
33
+
34
+ static uint32_t NextId();
35
+ };
36
+
37
+ #endif
@@ -1,5 +1,5 @@
1
1
  /*
2
- * Copyright 2023 Google Inc.
2
+ * Copyright 2023 Google LLC
3
3
  *
4
4
  * Use of this source code is governed by a BSD-style license that can be
5
5
  * found in the LICENSE file.
@@ -11,6 +11,7 @@
11
11
  #include "include/private/base/SkAPI.h"
12
12
  #include "include/private/base/SkAttributes.h"
13
13
  #include "include/private/base/SkDebug.h" // IWYU pragma: keep
14
+ #include "include/private/base/SkLog.h"
14
15
 
15
16
  #include <cstddef>
16
17
  #include <limits>
@@ -69,7 +70,7 @@
69
70
  # endif
70
71
  # define SK_ABORT(message, ...) \
71
72
  do { \
72
- SkDebugf(SK_DUMP_LINE_FORMAT ": fatal error: \"" message "\"\n", \
73
+ SKIA_LOG_E(SK_DUMP_LINE_FORMAT ": fatal error: \"" message "\"", \
73
74
  __FILE__, __LINE__, ##__VA_ARGS__); \
74
75
  SK_DUMP_GOOGLE3_STACK(); \
75
76
  sk_abort_no_print(); \
@@ -137,7 +138,7 @@
137
138
  #endif
138
139
 
139
140
  [[noreturn]] SK_API inline void sk_print_index_out_of_bounds(size_t i, size_t size) {
140
- SK_ABORT("Index (%zu) out of bounds for size %zu.\n", i, size);
141
+ SK_ABORT("Index (%zu) out of bounds for size %zu.", i, size);
141
142
  }
142
143
 
143
144
  template <typename T> SK_API inline T sk_collection_check_bounds(T i, T size) {
@@ -155,7 +156,7 @@ template <typename T> SK_API inline T sk_collection_check_bounds(T i, T size) {
155
156
  }
156
157
 
157
158
  [[noreturn]] SK_API inline void sk_print_length_too_big(size_t i, size_t size) {
158
- SK_ABORT("Length (%zu) is too big for size %zu.\n", i, size);
159
+ SK_ABORT("Length (%zu) is too big for size %zu.", i, size);
159
160
  }
160
161
 
161
162
  template <typename T> SK_API inline T sk_collection_check_length(T i, T size) {
@@ -175,7 +176,7 @@ template <typename T> SK_API inline T sk_collection_check_length(T i, T size) {
175
176
  SK_API inline void sk_collection_not_empty(bool empty) {
176
177
  if (empty) SK_UNLIKELY {
177
178
  #if defined(SK_DEBUG)
178
- SK_ABORT("Collection is empty.\n");
179
+ SK_ABORT("Collection is empty.");
179
180
  #else
180
181
  SkUNREACHABLE;
181
182
  #endif
@@ -183,7 +184,7 @@ SK_API inline void sk_collection_not_empty(bool empty) {
183
184
  }
184
185
 
185
186
  [[noreturn]] SK_API inline void sk_print_size_too_big(size_t size, size_t maxSize) {
186
- SK_ABORT("Size (%zu) can't be represented in bytes. Max size is %zu.\n", size, maxSize);
187
+ SK_ABORT("Size (%zu) can't be represented in bytes. Max size is %zu.", size, maxSize);
187
188
  }
188
189
 
189
190
  template <typename T>
@@ -1,4 +1,4 @@
1
- // Copyright 2022 Google LLC.
1
+ // Copyright 2022 Google LLC
2
2
  // Use of this source code is governed by a BSD-style license that can be found in the LICENSE file.
3
3
 
4
4
  #ifndef SkContainers_DEFINED
@@ -78,20 +78,20 @@
78
78
  #endif
79
79
 
80
80
  /**
81
- * SK_CPU_SSE_LEVEL
81
+ * SK_CPU_X64_LEVEL
82
82
  *
83
- * If defined, SK_CPU_SSE_LEVEL should be set to the highest supported level.
84
- * On non-intel CPU this should be undefined.
83
+ * If defined, SK_CPU_X64_LEVEL should be set to the highest supported level.
84
+ * On non-Intel, non-AMD CPUs this should be undefined.
85
85
  */
86
- #define SK_CPU_SSE_LEVEL_SSE1 10
87
- #define SK_CPU_SSE_LEVEL_SSE2 20
88
- #define SK_CPU_SSE_LEVEL_SSE3 30
89
- #define SK_CPU_SSE_LEVEL_SSSE3 31
90
- #define SK_CPU_SSE_LEVEL_SSE41 41
91
- #define SK_CPU_SSE_LEVEL_SSE42 42
92
- #define SK_CPU_SSE_LEVEL_AVX 51
93
- #define SK_CPU_SSE_LEVEL_AVX2 52
94
- #define SK_CPU_SSE_LEVEL_SKX 60
86
+ #define SK_CPU_X64_LEVEL_SSE1 10
87
+ #define SK_CPU_X64_LEVEL_SSE2 20
88
+ #define SK_CPU_X64_LEVEL_SSE3 30
89
+ #define SK_CPU_X64_LEVEL_SSSE3 31
90
+ #define SK_CPU_X64_LEVEL_SSE41 41
91
+ #define SK_CPU_X64_LEVEL_SSE42 42
92
+ #define SK_CPU_X64_LEVEL_AVX 51
93
+ #define SK_CPU_X64_LEVEL_AVX2 52
94
+ #define SK_CPU_X64_LEVEL_ML4 60
95
95
 
96
96
  /**
97
97
  * SK_CPU_LSX_LEVEL
@@ -99,32 +99,32 @@
99
99
  * If defined, SK_CPU_LSX_LEVEL should be set to the highest supported level.
100
100
  * On non-loongarch CPU this should be undefined.
101
101
  */
102
- #define SK_CPU_LSX_LEVEL_LSX 70
103
- #define SK_CPU_LSX_LEVEL_LASX 80
102
+ #define SK_CPU_LSX_LEVEL_LSX 10
103
+ #define SK_CPU_LSX_LEVEL_LASX 20
104
104
 
105
105
  // TODO(kjlubick) clean up these checks
106
106
 
107
107
  // Are we in GCC/Clang?
108
- #ifndef SK_CPU_SSE_LEVEL
108
+ #ifndef SK_CPU_X64_LEVEL
109
109
  // These checks must be done in descending order to ensure we set the highest
110
110
  // available SSE level.
111
111
  #if defined(__AVX512F__) && defined(__AVX512DQ__) && defined(__AVX512CD__) && \
112
112
  defined(__AVX512BW__) && defined(__AVX512VL__)
113
- #define SK_CPU_SSE_LEVEL SK_CPU_SSE_LEVEL_SKX
113
+ #define SK_CPU_X64_LEVEL SK_CPU_X64_LEVEL_ML4
114
114
  #elif defined(__AVX2__)
115
- #define SK_CPU_SSE_LEVEL SK_CPU_SSE_LEVEL_AVX2
115
+ #define SK_CPU_X64_LEVEL SK_CPU_X64_LEVEL_AVX2
116
116
  #elif defined(__AVX__)
117
- #define SK_CPU_SSE_LEVEL SK_CPU_SSE_LEVEL_AVX
117
+ #define SK_CPU_X64_LEVEL SK_CPU_X64_LEVEL_AVX
118
118
  #elif defined(__SSE4_2__)
119
- #define SK_CPU_SSE_LEVEL SK_CPU_SSE_LEVEL_SSE42
119
+ #define SK_CPU_X64_LEVEL SK_CPU_X64_LEVEL_SSE42
120
120
  #elif defined(__SSE4_1__)
121
- #define SK_CPU_SSE_LEVEL SK_CPU_SSE_LEVEL_SSE41
121
+ #define SK_CPU_X64_LEVEL SK_CPU_X64_LEVEL_SSE41
122
122
  #elif defined(__SSSE3__)
123
- #define SK_CPU_SSE_LEVEL SK_CPU_SSE_LEVEL_SSSE3
123
+ #define SK_CPU_X64_LEVEL SK_CPU_X64_LEVEL_SSSE3
124
124
  #elif defined(__SSE3__)
125
- #define SK_CPU_SSE_LEVEL SK_CPU_SSE_LEVEL_SSE3
125
+ #define SK_CPU_X64_LEVEL SK_CPU_X64_LEVEL_SSE3
126
126
  #elif defined(__SSE2__)
127
- #define SK_CPU_SSE_LEVEL SK_CPU_SSE_LEVEL_SSE2
127
+ #define SK_CPU_X64_LEVEL SK_CPU_X64_LEVEL_SSE2
128
128
  #endif
129
129
  #endif
130
130
 
@@ -137,23 +137,23 @@
137
137
  #endif
138
138
 
139
139
  // Are we in VisualStudio?
140
- #ifndef SK_CPU_SSE_LEVEL
140
+ #ifndef SK_CPU_X64_LEVEL
141
141
  // These checks must be done in descending order to ensure we set the highest
142
142
  // available SSE level. 64-bit intel guarantees at least SSE2 support.
143
143
  #if defined(__AVX512F__) && defined(__AVX512DQ__) && defined(__AVX512CD__) && \
144
144
  defined(__AVX512BW__) && defined(__AVX512VL__)
145
- #define SK_CPU_SSE_LEVEL SK_CPU_SSE_LEVEL_SKX
145
+ #define SK_CPU_X64_LEVEL SK_CPU_X64_LEVEL_ML4
146
146
  #elif defined(__AVX2__)
147
- #define SK_CPU_SSE_LEVEL SK_CPU_SSE_LEVEL_AVX2
147
+ #define SK_CPU_X64_LEVEL SK_CPU_X64_LEVEL_AVX2
148
148
  #elif defined(__AVX__)
149
- #define SK_CPU_SSE_LEVEL SK_CPU_SSE_LEVEL_AVX
149
+ #define SK_CPU_X64_LEVEL SK_CPU_X64_LEVEL_AVX
150
150
  #elif defined(_M_X64) || defined(_M_AMD64)
151
- #define SK_CPU_SSE_LEVEL SK_CPU_SSE_LEVEL_SSE2
151
+ #define SK_CPU_X64_LEVEL SK_CPU_X64_LEVEL_SSE2
152
152
  #elif defined(_M_IX86_FP)
153
153
  #if _M_IX86_FP >= 2
154
- #define SK_CPU_SSE_LEVEL SK_CPU_SSE_LEVEL_SSE2
154
+ #define SK_CPU_X64_LEVEL SK_CPU_X64_LEVEL_SSE2
155
155
  #elif _M_IX86_FP == 1
156
- #define SK_CPU_SSE_LEVEL SK_CPU_SSE_LEVEL_SSE1
156
+ #define SK_CPU_X64_LEVEL SK_CPU_X64_LEVEL_SSE1
157
157
  #endif
158
158
  #endif
159
159
  #endif
@@ -50,16 +50,10 @@ void SK_SPI SkLog(SkLogPriority priority, const char format[], ...) SK_PRINTF_LI
50
50
  #define SKIA_LOG(priority, fmt, ...) \
51
51
  do { \
52
52
  if constexpr (priority <= SKIA_LOWEST_ACTIVE_LOG_PRIORITY) { \
53
- if constexpr (priority == SkLogPriority::kFatal) { \
54
- SK_ABORT("[skia] " fmt, ##__VA_ARGS__); \
55
- } \
56
- else { \
57
- SkLog(priority, "[skia] " fmt "\n", ##__VA_ARGS__); \
58
- } \
53
+ SkLog(priority, "[skia] " fmt "\n", ##__VA_ARGS__); \
59
54
  } \
60
55
  } while (0)
61
56
 
62
- #define SKIA_LOG_F(fmt, ...) SKIA_LOG(SkLogPriority::kFatal, "** ERROR ** " fmt, ##__VA_ARGS__)
63
57
  #define SKIA_LOG_E(fmt, ...) SKIA_LOG(SkLogPriority::kError, "** ERROR ** " fmt, ##__VA_ARGS__)
64
58
  #define SKIA_LOG_W(fmt, ...) SKIA_LOG(SkLogPriority::kWarning, "WARNING - " fmt, ##__VA_ARGS__)
65
59
  #define SKIA_LOG_I(fmt, ...) SKIA_LOG(SkLogPriority::kInfo, fmt, ##__VA_ARGS__)
@@ -25,11 +25,10 @@
25
25
  * However, debug logs would be omitted.
26
26
  */
27
27
  enum class SkLogPriority : int {
28
- kFatal = 0,
29
- kError = 1,
30
- kWarning = 2,
31
- kInfo = 3,
32
- kDebug = 4,
28
+ kError = 0,
29
+ kWarning = 1,
30
+ kInfo = 2,
31
+ kDebug = 3,
33
32
  };
34
33
 
35
34
  #endif // SkLogPriority_DEFINED
@@ -1,5 +1,5 @@
1
1
  /*
2
- * Copyright 2018 Google Inc.
2
+ * Copyright 2018 Google LLC
3
3
  *
4
4
  * Use of this source code is governed by a BSD-style license that can be
5
5
  * found in the LICENSE file.
@@ -1,5 +1,5 @@
1
1
  /*
2
- * Copyright 2017 Google Inc.
2
+ * Copyright 2017 Google LLC
3
3
  *
4
4
  * Use of this source code is governed by a BSD-style license that can be
5
5
  * found in the LICENSE file.
@@ -1,5 +1,5 @@
1
1
  /*
2
- * Copyright 2018 Google Inc.
2
+ * Copyright 2018 Google LLC
3
3
  *
4
4
  * Use of this source code is governed by a BSD-style license that can be
5
5
  * found in the LICENSE file.
@@ -1,5 +1,5 @@
1
1
  /*
2
- * Copyright 2018 Google Inc.
2
+ * Copyright 2018 Google LLC
3
3
  *
4
4
  * Use of this source code is governed by a BSD-style license that can be
5
5
  * found in the LICENSE file.
@@ -17,6 +17,8 @@
17
17
  #include <initializer_list>
18
18
  #include <utility>
19
19
 
20
+ // We'd prefer not to use these types anymore. SkTDArray can be replaced skia_private::TArray
21
+
20
22
  class SK_SPI SkTDStorage {
21
23
  public:
22
24
  explicit SkTDStorage(int sizeOfT);
@@ -76,7 +78,17 @@ public:
76
78
  }
77
79
 
78
80
  private:
79
- size_t bytes(int n) const { return SkToSizeT(n * fSizeOfT); }
81
+ // Fast path for pointer arithmetic. Assumes 'n' has already been bounds-checked.
82
+ size_t bytes(int n) const { return SkToSizeT(n) * SkToSizeT(fSizeOfT); }
83
+
84
+ // Safe path for memory allocations; protects against 32-bit overflow.
85
+ size_t safe_bytes(int n) const {
86
+ size_t size = SkToSizeT(n);
87
+ size_t sizeOfT = SkToSizeT(fSizeOfT);
88
+ SkASSERT_RELEASE(size <= SIZE_MAX / sizeOfT);
89
+ return size * sizeOfT;
90
+ }
91
+
80
92
  void* address(int n) { return fStorage + this->bytes(n); }
81
93
 
82
94
  // Adds delta to fSize. Crash if outside [0, INT_MAX]
@@ -1,5 +1,5 @@
1
1
  /*
2
- * Copyright 2020 Google Inc.
2
+ * Copyright 2020 Google LLC
3
3
  *
4
4
  * Use of this source code is governed by a BSD-style license that can be
5
5
  * found in the LICENSE file.
@@ -1,5 +1,5 @@
1
1
  /*
2
- * Copyright 2018 Google Inc.
2
+ * Copyright 2018 Google LLC
3
3
  *
4
4
  * Use of this source code is governed by a BSD-style license that can be
5
5
  * found in the LICENSE file.
@@ -1,5 +1,5 @@
1
1
  /*
2
- * Copyright 2019 Google Inc.
2
+ * Copyright 2019 Google LLC
3
3
  *
4
4
  * Use of this source code is governed by a BSD-style license that can be
5
5
  * found in the LICENSE file.
@@ -1,5 +1,5 @@
1
1
  /*
2
- * Copyright 2021 Google LLC.
2
+ * Copyright 2021 Google LLC
3
3
  *
4
4
  * Use of this source code is governed by a BSD-style license that can be
5
5
  * found in the LICENSE file.
@@ -0,0 +1,52 @@
1
+ /*
2
+ * Copyright 2026 Google LLC
3
+ *
4
+ * Use of this source code is governed by a BSD-style license that can be
5
+ * found in the LICENSE file.
6
+ */
7
+
8
+ #ifndef SkCodecsICCProfileChromium_DEFINED
9
+ #define SkCodecsICCProfileChromium_DEFINED
10
+
11
+ #include <memory>
12
+
13
+ #include "include/core/SkData.h"
14
+ #include "include/core/SkRefCnt.h"
15
+ #include "include/private/base/SkAPI.h"
16
+ #include "modules/skcms/skcms.h"
17
+
18
+ namespace SkCodecs {
19
+
20
+ // Allows Chromium code that does not use SkCodec to parse ICC profiles
21
+ // using the same parser that SkCodec uses (skcms or moxcms).
22
+ class SK_API ICCProfileChromium {
23
+ public:
24
+ virtual ~ICCProfileChromium() = default;
25
+
26
+ // Force all ICC profile parsing to use skcms instead of the build-default
27
+ // parser. This is intended for Chromium to have a kill-switch to fall back
28
+ // to skcms if moxcms causes issues in the field.
29
+ //
30
+ // This is a global setting and is NOT thread-safe with respect to concurrent
31
+ // codec operations. It should be called once early during process startup.
32
+ static void ForceSkcms(bool forceSkcms);
33
+
34
+ // Returns nullptr if parsing fails. May retain `data`. Uses the parser
35
+ // selected by ForceSkcms (defaults to the build-default parser).
36
+ static std::unique_ptr<ICCProfileChromium> Make(sk_sp<SkData> data);
37
+
38
+ // Return the parsed profile. The pointers in the structure are guaranteed
39
+ // to be valid until `this` is destroyed.
40
+ virtual const skcms_ICCProfile& GetProfile() const = 0;
41
+
42
+ protected:
43
+ ICCProfileChromium() = default;
44
+
45
+ private:
46
+ ICCProfileChromium(const ICCProfileChromium&) = delete;
47
+ ICCProfileChromium& operator=(const ICCProfileChromium&) = delete;
48
+ };
49
+
50
+ } // namespace SkCodecs
51
+
52
+ #endif // SkCodecsICCProfileChromium_DEFINED
@@ -0,0 +1,26 @@
1
+ /*
2
+ * Copyright 2026 Google LLC
3
+ *
4
+ * Use of this source code is governed by a BSD-style license that can be
5
+ * found in the LICENSE file.
6
+ */
7
+
8
+ #ifndef SkExifChromium_DEFINED
9
+ #define SkExifChromium_DEFINED
10
+
11
+ #include "include/private/base/SkAPI.h"
12
+
13
+ namespace SkExif {
14
+
15
+ // Force all EXIF parsing to use the C++ SkExif parser instead of the
16
+ // build-default parser. This is intended for Chromium to have a kill-switch
17
+ // to fall back to the C++ implementation if rust_exif causes issues in the
18
+ // field.
19
+ //
20
+ // This is a global setting and is NOT thread-safe with respect to concurrent
21
+ // codec operations. It should be called once early during process startup.
22
+ SK_API void ForceSkExif(bool forceSkExif);
23
+
24
+ } // namespace SkExif
25
+
26
+ #endif // SkExifChromium_DEFINED
@@ -1,5 +1,5 @@
1
1
  /*
2
- * Copyright 2019 Google Inc.
2
+ * Copyright 2019 Google LLC
3
3
  *
4
4
  * Use of this source code is governed by a BSD-style license that can be
5
5
  * found in the LICENSE file.
@@ -1,5 +1,5 @@
1
1
  /*
2
- * Copyright 2019 Google Inc.
2
+ * Copyright 2019 Google LLC
3
3
  *
4
4
  * Use of this source code is governed by a BSD-style license that can be
5
5
  * found in the LICENSE file.
@@ -621,7 +621,7 @@ static constexpr SkColorType GrColorTypeToSkColorType(GrColorType ct) {
621
621
  case GrColorType::kRGB_888: return kUnknown_SkColorType;
622
622
  case GrColorType::kR_8: return kR8_unorm_SkColorType;
623
623
  case GrColorType::kR_16: return kR16_unorm_SkColorType;
624
- case GrColorType::kR_F16: return kUnknown_SkColorType;
624
+ case GrColorType::kR_F16: return kR16_float_SkColorType;
625
625
  case GrColorType::kGray_F16: return kUnknown_SkColorType;
626
626
  case GrColorType::kARGB_4444: return kUnknown_SkColorType;
627
627
  case GrColorType::kBGRA_4444: return kUnknown_SkColorType;
@@ -656,6 +656,7 @@ static constexpr GrColorType SkColorTypeToGrColorType(SkColorType ct) {
656
656
  case kR16_unorm_SkColorType: return GrColorType::kR_16;
657
657
  case kR16G16_unorm_SkColorType: return GrColorType::kRG_1616;
658
658
  case kA16_float_SkColorType: return GrColorType::kAlpha_F16;
659
+ case kR16_float_SkColorType: return GrColorType::kR_F16;
659
660
  case kR16G16_float_SkColorType: return GrColorType::kRG_F16;
660
661
  case kR16G16B16A16_unorm_SkColorType: return GrColorType::kRGBA_16161616;
661
662
  case kR8_unorm_SkColorType: return GrColorType::kR_8;
@@ -1,5 +1,5 @@
1
1
  /*
2
- * Copyright 2018 Google Inc.
2
+ * Copyright 2018 Google LLC
3
3
  *
4
4
  * Use of this source code is governed by a BSD-style license that can be
5
5
  * found in the LICENSE file.
@@ -1,5 +1,5 @@
1
1
  /*
2
- * Copyright 2021 Google LLC.
2
+ * Copyright 2021 Google LLC
3
3
  *
4
4
  * Use of this source code is governed by a BSD-style license that can be
5
5
  * found in the LICENSE file.