@shopify/react-native-skia 1.3.13 → 1.4.0

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 (361) hide show
  1. package/android/CMakeLists.txt +9 -4
  2. package/android/cpp/rnskia-android/RNSkAndroidPlatformContext.h +6 -0
  3. package/android/cpp/rnskia-android/SkiaOpenGLSurfaceFactory.cpp +81 -0
  4. package/android/cpp/rnskia-android/SkiaOpenGLSurfaceFactory.h +40 -0
  5. package/cpp/api/JsiSkApi.h +2 -0
  6. package/cpp/api/JsiSkPath.h +29 -19
  7. package/cpp/api/JsiSkRuntimeEffect.h +7 -0
  8. package/cpp/api/JsiSkiaContext.h +79 -0
  9. package/cpp/rnskia/RNSkPlatformContext.h +4 -0
  10. package/cpp/rnskia/SkiaContext.h +22 -0
  11. package/cpp/skia/include/android/GrAHardwareBufferUtils.h +2 -2
  12. package/cpp/skia/include/android/SkImageAndroid.h +1 -1
  13. package/cpp/skia/include/android/SkSurfaceAndroid.h +1 -1
  14. package/cpp/skia/include/codec/SkAndroidCodec.h +13 -9
  15. package/cpp/skia/include/codec/SkCodec.h +28 -5
  16. package/cpp/skia/include/core/SkArc.h +69 -0
  17. package/cpp/skia/include/core/SkBitmap.h +10 -0
  18. package/cpp/skia/include/core/SkBlender.h +2 -3
  19. package/cpp/skia/include/core/SkCanvas.h +86 -16
  20. package/cpp/skia/include/core/SkCapabilities.h +0 -4
  21. package/cpp/skia/include/core/SkColorFilter.h +4 -4
  22. package/cpp/skia/include/core/SkColorPriv.h +5 -7
  23. package/cpp/skia/include/core/SkColorType.h +2 -0
  24. package/cpp/skia/include/core/SkFlattenable.h +1 -1
  25. package/cpp/skia/include/core/SkFontArguments.h +3 -1
  26. package/cpp/skia/include/core/SkFontParameters.h +3 -2
  27. package/cpp/skia/include/core/SkFourByteTag.h +19 -0
  28. package/cpp/skia/include/core/SkImage.h +41 -1
  29. package/cpp/skia/include/core/SkImageGenerator.h +0 -5
  30. package/cpp/skia/include/core/SkImageInfo.h +20 -0
  31. package/cpp/skia/include/core/SkM44.h +1 -1
  32. package/cpp/skia/include/core/SkMatrix.h +2 -1
  33. package/cpp/skia/include/core/SkMilestone.h +1 -1
  34. package/cpp/skia/include/core/SkPaint.h +1 -1
  35. package/cpp/skia/include/core/SkPath.h +20 -6
  36. package/cpp/skia/include/core/SkPathMeasure.h +1 -0
  37. package/cpp/skia/include/core/SkPicture.h +5 -5
  38. package/cpp/skia/include/core/SkPoint3.h +2 -12
  39. package/cpp/skia/include/core/SkRRect.h +5 -0
  40. package/cpp/skia/include/core/SkRect.h +5 -16
  41. package/cpp/skia/include/core/SkRefCnt.h +2 -0
  42. package/cpp/skia/include/core/SkScalar.h +20 -32
  43. package/cpp/skia/include/core/SkShader.h +17 -0
  44. package/cpp/skia/include/core/SkSize.h +2 -1
  45. package/cpp/skia/include/core/SkStream.h +2 -3
  46. package/cpp/skia/include/core/SkStrokeRec.h +6 -1
  47. package/cpp/skia/include/core/SkSurface.h +13 -4
  48. package/cpp/skia/include/core/SkSurfaceProps.h +5 -0
  49. package/cpp/skia/include/core/SkSwizzle.h +3 -1
  50. package/cpp/skia/include/core/SkTypeface.h +1 -0
  51. package/cpp/skia/include/core/SkTypes.h +1 -19
  52. package/cpp/skia/include/core/SkUnPreMultiply.h +4 -5
  53. package/cpp/skia/include/core/SkVertices.h +4 -2
  54. package/cpp/skia/include/docs/SkPDFDocument.h +11 -14
  55. package/cpp/skia/include/effects/SkHighContrastFilter.h +6 -6
  56. package/cpp/skia/include/effects/SkImageFilters.h +49 -23
  57. package/cpp/skia/include/effects/SkRuntimeEffect.h +51 -70
  58. package/cpp/skia/include/effects/SkShaderMaskFilter.h +2 -0
  59. package/cpp/skia/include/effects/SkTableMaskFilter.h +2 -0
  60. package/cpp/skia/include/gpu/GrBackendSemaphore.h +2 -120
  61. package/cpp/skia/include/gpu/GrBackendSurface.h +2 -466
  62. package/cpp/skia/include/gpu/GrContextOptions.h +2 -368
  63. package/cpp/skia/include/gpu/GrContextThreadSafeProxy.h +2 -179
  64. package/cpp/skia/include/gpu/GrDirectContext.h +2 -1011
  65. package/cpp/skia/include/gpu/GrDriverBugWorkarounds.h +2 -47
  66. package/cpp/skia/include/gpu/GrDriverBugWorkaroundsAutogen.h +2 -41
  67. package/cpp/skia/include/gpu/GrRecordingContext.h +2 -279
  68. package/cpp/skia/include/gpu/GrTypes.h +2 -238
  69. package/cpp/skia/include/gpu/GrYUVABackendTextures.h +2 -118
  70. package/cpp/skia/include/gpu/d3d/GrD3DBackendContext.h +2 -29
  71. package/cpp/skia/include/gpu/d3d/GrD3DTypes.h +2 -242
  72. package/cpp/skia/include/gpu/ganesh/GrBackendSemaphore.h +80 -0
  73. package/cpp/skia/include/gpu/ganesh/GrBackendSurface.h +412 -0
  74. package/cpp/skia/include/gpu/ganesh/GrContextOptions.h +386 -0
  75. package/cpp/skia/include/gpu/ganesh/GrContextThreadSafeProxy.h +175 -0
  76. package/cpp/skia/include/gpu/ganesh/GrDirectContext.h +993 -0
  77. package/cpp/skia/include/gpu/ganesh/GrDriverBugWorkarounds.h +53 -0
  78. package/cpp/skia/include/gpu/ganesh/GrDriverBugWorkaroundsAutogen.h +45 -0
  79. package/cpp/skia/include/gpu/ganesh/GrExternalTextureGenerator.h +1 -1
  80. package/cpp/skia/include/gpu/ganesh/GrRecordingContext.h +285 -0
  81. package/cpp/skia/include/gpu/ganesh/GrTypes.h +177 -0
  82. package/cpp/skia/include/gpu/ganesh/GrYUVABackendTextures.h +130 -0
  83. package/cpp/skia/include/gpu/ganesh/SkImageGanesh.h +1 -1
  84. package/cpp/skia/include/gpu/ganesh/SkSurfaceGanesh.h +1 -1
  85. package/cpp/skia/include/gpu/ganesh/d3d/GrD3DBackendContext.h +35 -0
  86. package/cpp/skia/include/gpu/ganesh/d3d/GrD3DTypes.h +248 -0
  87. package/cpp/skia/include/gpu/ganesh/gl/GrGLAssembleHelpers.h +17 -0
  88. package/cpp/skia/include/gpu/ganesh/gl/GrGLAssembleInterface.h +45 -0
  89. package/cpp/skia/include/gpu/ganesh/gl/GrGLBackendSurface.h +1 -1
  90. package/cpp/skia/include/gpu/ganesh/gl/GrGLConfig.h +69 -0
  91. package/cpp/skia/include/gpu/ganesh/gl/GrGLExtensions.h +79 -0
  92. package/cpp/skia/include/gpu/ganesh/gl/GrGLFunctions.h +306 -0
  93. package/cpp/skia/include/gpu/ganesh/gl/GrGLInterface.h +338 -0
  94. package/cpp/skia/include/gpu/ganesh/gl/GrGLMakeWebGLInterface.h +19 -0
  95. package/cpp/skia/include/gpu/ganesh/gl/GrGLTypes.h +219 -0
  96. package/cpp/skia/include/gpu/{gl → ganesh/gl}/egl/GrGLMakeEGLInterface.h +2 -2
  97. package/cpp/skia/include/gpu/ganesh/gl/epoxy/GrGLMakeEpoxyEGLInterface.h +20 -0
  98. package/cpp/skia/include/gpu/ganesh/gl/ios/GrGLMakeIOSInterface.h +20 -0
  99. package/cpp/skia/include/gpu/ganesh/gl/mac/GrGLMakeMacInterface.h +20 -0
  100. package/cpp/skia/include/gpu/ganesh/gl/win/GrGLMakeWinInterface.h +20 -0
  101. package/cpp/skia/include/gpu/ganesh/mock/GrMockTypes.h +166 -0
  102. package/cpp/skia/include/gpu/{mtl → ganesh/mtl}/GrMtlBackendContext.h +2 -2
  103. package/cpp/skia/include/gpu/ganesh/mtl/GrMtlBackendSemaphore.h +23 -0
  104. package/cpp/skia/include/gpu/ganesh/mtl/GrMtlBackendSurface.h +44 -0
  105. package/cpp/skia/include/gpu/ganesh/mtl/GrMtlDirectContext.h +30 -0
  106. package/cpp/skia/include/gpu/{mtl → ganesh/mtl}/GrMtlTypes.h +1 -3
  107. package/cpp/skia/include/gpu/ganesh/mtl/SkSurfaceMetal.h +2 -2
  108. package/cpp/skia/include/gpu/ganesh/vk/GrBackendDrawableInfo.h +2 -2
  109. package/cpp/skia/include/gpu/ganesh/vk/GrVkBackendSemaphore.h +1 -1
  110. package/cpp/skia/include/gpu/ganesh/vk/GrVkBackendSurface.h +7 -3
  111. package/cpp/skia/include/gpu/ganesh/vk/GrVkDirectContext.h +6 -3
  112. package/cpp/skia/include/gpu/ganesh/vk/GrVkTypes.h +101 -0
  113. package/cpp/skia/include/gpu/gl/GrGLAssembleHelpers.h +2 -9
  114. package/cpp/skia/include/gpu/gl/GrGLAssembleInterface.h +2 -38
  115. package/cpp/skia/include/gpu/gl/GrGLConfig.h +2 -73
  116. package/cpp/skia/include/gpu/gl/GrGLExtensions.h +2 -72
  117. package/cpp/skia/include/gpu/gl/GrGLFunctions.h +2 -301
  118. package/cpp/skia/include/gpu/gl/GrGLInterface.h +2 -332
  119. package/cpp/skia/include/gpu/gl/GrGLTypes.h +2 -213
  120. package/cpp/skia/include/gpu/graphite/BackendSemaphore.h +20 -41
  121. package/cpp/skia/include/gpu/graphite/BackendTexture.h +18 -118
  122. package/cpp/skia/include/gpu/graphite/Context.h +122 -44
  123. package/cpp/skia/include/gpu/graphite/ContextOptions.h +30 -3
  124. package/cpp/skia/include/gpu/graphite/GraphiteTypes.h +45 -17
  125. package/cpp/skia/include/gpu/graphite/Image.h +56 -54
  126. package/cpp/skia/include/gpu/graphite/Recorder.h +68 -14
  127. package/cpp/skia/include/gpu/graphite/Recording.h +3 -3
  128. package/cpp/skia/include/gpu/graphite/Surface.h +6 -2
  129. package/cpp/skia/include/gpu/graphite/TextureInfo.h +36 -117
  130. package/cpp/skia/include/gpu/graphite/dawn/DawnTypes.h +108 -6
  131. package/cpp/skia/include/gpu/graphite/mtl/MtlBackendContext.h +4 -1
  132. package/cpp/skia/include/gpu/graphite/mtl/MtlGraphiteTypes.h +41 -25
  133. package/cpp/skia/include/gpu/graphite/precompile/PaintOptions.h +197 -0
  134. package/cpp/skia/include/gpu/graphite/precompile/Precompile.h +48 -0
  135. package/cpp/skia/include/gpu/graphite/precompile/PrecompileBase.h +84 -0
  136. package/cpp/skia/include/gpu/graphite/precompile/PrecompileBlender.h +56 -0
  137. package/cpp/skia/include/gpu/graphite/precompile/PrecompileColorFilter.h +85 -0
  138. package/cpp/skia/include/gpu/graphite/precompile/PrecompileImageFilter.h +119 -0
  139. package/cpp/skia/include/gpu/graphite/precompile/PrecompileMaskFilter.h +51 -0
  140. package/cpp/skia/include/gpu/graphite/precompile/PrecompileRuntimeEffect.h +47 -0
  141. package/cpp/skia/include/gpu/graphite/precompile/PrecompileShader.h +170 -0
  142. package/cpp/skia/include/gpu/graphite/vk/VulkanGraphiteTypes.h +24 -2
  143. package/cpp/skia/include/gpu/mock/GrMockTypes.h +2 -157
  144. package/cpp/skia/include/gpu/mtl/MtlMemoryAllocator.h +2 -0
  145. package/cpp/skia/include/gpu/vk/GrVkTypes.h +2 -101
  146. package/cpp/skia/include/gpu/vk/VulkanBackendContext.h +13 -8
  147. package/cpp/skia/include/gpu/vk/VulkanExtensions.h +9 -3
  148. package/cpp/skia/include/gpu/vk/VulkanMemoryAllocator.h +4 -1
  149. package/cpp/skia/include/gpu/vk/VulkanTypes.h +25 -8
  150. package/cpp/skia/include/ports/SkFontMgr_Fontations.h +20 -0
  151. package/cpp/skia/include/ports/SkFontMgr_android.h +7 -0
  152. package/cpp/skia/include/ports/SkImageGeneratorCG.h +3 -1
  153. package/cpp/skia/include/ports/SkTypeface_win.h +0 -17
  154. package/cpp/skia/include/private/SkEncodedInfo.h +8 -2
  155. package/cpp/skia/include/private/SkExif.h +28 -75
  156. package/cpp/skia/include/private/SkGainmapInfo.h +47 -7
  157. package/cpp/skia/include/private/SkJpegMetadataDecoder.h +12 -0
  158. package/cpp/skia/include/private/SkPathRef.h +52 -44
  159. package/cpp/skia/include/private/SkXmp.h +13 -4
  160. package/cpp/skia/include/private/base/SkASAN.h +56 -0
  161. package/cpp/skia/include/private/base/SkAlign.h +5 -0
  162. package/cpp/skia/include/private/base/SkContainers.h +10 -2
  163. package/cpp/skia/include/private/base/SkFeatures.h +22 -1
  164. package/cpp/skia/include/private/base/SkFloatingPoint.h +51 -65
  165. package/cpp/skia/include/private/base/SkMacros.h +67 -0
  166. package/cpp/skia/include/private/base/SkMalloc.h +8 -0
  167. package/cpp/skia/include/private/base/SkPoint_impl.h +2 -11
  168. package/cpp/skia/include/private/base/SkTArray.h +108 -23
  169. package/cpp/skia/include/private/base/SkTFitsIn.h +1 -12
  170. package/cpp/skia/include/private/chromium/GrDeferredDisplayList.h +1 -1
  171. package/cpp/skia/include/private/chromium/GrDeferredDisplayListRecorder.h +0 -39
  172. package/cpp/skia/include/private/chromium/GrPromiseImageTexture.h +1 -1
  173. package/cpp/skia/include/private/chromium/GrSurfaceCharacterization.h +3 -3
  174. package/cpp/skia/include/private/chromium/SkChromeRemoteGlyphCache.h +1 -4
  175. package/cpp/skia/include/private/chromium/Slug.h +5 -11
  176. package/cpp/skia/include/private/gpu/ganesh/GrContext_Base.h +1 -1
  177. package/cpp/skia/include/private/gpu/ganesh/GrD3DTypesMinimal.h +2 -2
  178. package/cpp/skia/include/private/gpu/ganesh/GrTextureGenerator.h +1 -1
  179. package/cpp/skia/include/private/gpu/ganesh/GrTypesPriv.h +21 -93
  180. package/cpp/skia/include/private/gpu/vk/SkiaVulkan.h +2 -2
  181. package/cpp/skia/include/utils/SkCustomTypeface.h +1 -0
  182. package/cpp/skia/include/utils/SkNWayCanvas.h +1 -1
  183. package/cpp/skia/include/utils/SkParse.h +0 -1
  184. package/cpp/skia/modules/skcms/src/Transform_inl.h +59 -56
  185. package/cpp/skia/modules/skcms/src/skcms_Transform.h +3 -0
  186. package/cpp/skia/modules/skcms/src/skcms_internals.h +2 -0
  187. package/cpp/skia/modules/skcms/src/skcms_public.h +46 -14
  188. package/cpp/skia/modules/skparagraph/include/ParagraphBuilder.h +15 -1
  189. package/cpp/skia/modules/skparagraph/include/TextStyle.h +2 -2
  190. package/cpp/skia/modules/skparagraph/include/TypefaceFontProvider.h +2 -4
  191. package/cpp/skia/modules/skresources/include/SkResources.h +1 -1
  192. package/cpp/skia/modules/skshaper/include/SkShaper.h +316 -0
  193. package/cpp/skia/modules/skshaper/include/SkShaper_coretext.h +19 -0
  194. package/cpp/skia/modules/skshaper/include/SkShaper_factory.h +41 -0
  195. package/cpp/skia/modules/skshaper/include/SkShaper_harfbuzz.h +39 -0
  196. package/cpp/skia/modules/skshaper/include/SkShaper_skunicode.h +28 -0
  197. package/cpp/skia/modules/skunicode/include/SkUnicode.h +6 -23
  198. package/cpp/skia/modules/svg/include/SkSVGAttribute.h +0 -3
  199. package/cpp/skia/modules/svg/include/SkSVGAttributeParser.h +12 -2
  200. package/cpp/skia/modules/svg/include/SkSVGCircle.h +13 -0
  201. package/cpp/skia/modules/svg/include/SkSVGClipPath.h +6 -0
  202. package/cpp/skia/modules/svg/include/SkSVGContainer.h +17 -1
  203. package/cpp/skia/modules/svg/include/SkSVGDOM.h +25 -15
  204. package/cpp/skia/modules/svg/include/SkSVGEllipse.h +13 -2
  205. package/cpp/skia/modules/svg/include/SkSVGFe.h +11 -2
  206. package/cpp/skia/modules/svg/include/SkSVGFeBlend.h +9 -0
  207. package/cpp/skia/modules/svg/include/SkSVGFeColorMatrix.h +9 -0
  208. package/cpp/skia/modules/svg/include/SkSVGFeComponentTransfer.h +82 -0
  209. package/cpp/skia/modules/svg/include/SkSVGFeComposite.h +10 -1
  210. package/cpp/skia/modules/svg/include/SkSVGFeDisplacementMap.h +10 -0
  211. package/cpp/skia/modules/svg/include/SkSVGFeFlood.h +10 -0
  212. package/cpp/skia/modules/svg/include/SkSVGFeGaussianBlur.h +9 -0
  213. package/cpp/skia/modules/svg/include/SkSVGFeImage.h +9 -0
  214. package/cpp/skia/modules/svg/include/SkSVGFeLightSource.h +5 -0
  215. package/cpp/skia/modules/svg/include/SkSVGFeLighting.h +11 -0
  216. package/cpp/skia/modules/svg/include/SkSVGFeMerge.h +63 -0
  217. package/cpp/skia/modules/svg/include/SkSVGFeMorphology.h +8 -0
  218. package/cpp/skia/modules/svg/include/SkSVGFeOffset.h +9 -0
  219. package/cpp/skia/modules/svg/include/SkSVGFeTurbulence.h +9 -0
  220. package/cpp/skia/modules/svg/include/SkSVGFilter.h +9 -0
  221. package/cpp/skia/modules/svg/include/SkSVGFilterContext.h +3 -3
  222. package/cpp/skia/modules/svg/include/SkSVGGradient.h +10 -2
  223. package/cpp/skia/modules/svg/include/SkSVGImage.h +9 -0
  224. package/cpp/skia/modules/svg/include/SkSVGLine.h +11 -0
  225. package/cpp/skia/modules/svg/include/SkSVGLinearGradient.h +10 -0
  226. package/cpp/skia/modules/svg/include/SkSVGMask.h +6 -0
  227. package/cpp/skia/modules/svg/include/SkSVGNode.h +13 -2
  228. package/cpp/skia/modules/svg/include/SkSVGOpenTypeSVGDecoder.h +5 -0
  229. package/cpp/skia/modules/svg/include/SkSVGPath.h +10 -0
  230. package/cpp/skia/modules/svg/include/SkSVGPattern.h +5 -0
  231. package/cpp/skia/modules/svg/include/SkSVGPoly.h +11 -0
  232. package/cpp/skia/modules/svg/include/SkSVGRadialGradient.h +11 -0
  233. package/cpp/skia/modules/svg/include/SkSVGRect.h +11 -0
  234. package/cpp/skia/modules/svg/include/SkSVGRenderContext.h +43 -7
  235. package/cpp/skia/modules/svg/include/SkSVGSVG.h +7 -0
  236. package/cpp/skia/modules/svg/include/SkSVGShape.h +8 -2
  237. package/cpp/skia/modules/svg/include/SkSVGStop.h +5 -3
  238. package/cpp/skia/modules/svg/include/SkSVGText.h +8 -2
  239. package/cpp/skia/modules/svg/include/SkSVGTransformableNode.h +8 -0
  240. package/cpp/skia/modules/svg/include/SkSVGTypes.h +9 -0
  241. package/cpp/skia/modules/svg/include/SkSVGUse.h +7 -0
  242. package/cpp/skia/src/base/SkMathPriv.h +337 -0
  243. package/cpp/skia/src/base/SkTLazy.h +208 -0
  244. package/cpp/skia/src/core/SkTHash.h +58 -7
  245. package/cpp/skia/src/gpu/ganesh/gl/GrGLDefines.h +3 -0
  246. package/ios/RNSkia-iOS/RNSkiOSPlatformContext.h +3 -0
  247. package/ios/RNSkia-iOS/RNSkiOSPlatformContext.mm +7 -0
  248. package/ios/RNSkia-iOS/SkiaCVPixelBufferUtils.mm +7 -2
  249. package/ios/RNSkia-iOS/SkiaMetalSurfaceFactory.h +78 -0
  250. package/ios/RNSkia-iOS/SkiaMetalSurfaceFactory.mm +20 -4
  251. package/lib/commonjs/renderer/HostConfig.js.map +1 -1
  252. package/lib/commonjs/skia/types/Paragraph/TextStyle.d.ts +2 -2
  253. package/lib/commonjs/skia/types/Paragraph/TextStyle.js.map +1 -1
  254. package/lib/commonjs/skia/types/Skia.d.ts +6 -1
  255. package/lib/commonjs/skia/types/Skia.js.map +1 -1
  256. package/lib/commonjs/skia/web/JsiSkia.js +4 -1
  257. package/lib/commonjs/skia/web/JsiSkia.js.map +1 -1
  258. package/lib/commonjs/web/WithSkiaWeb.d.ts +11 -4
  259. package/lib/commonjs/web/WithSkiaWeb.js +3 -2
  260. package/lib/commonjs/web/WithSkiaWeb.js.map +1 -1
  261. package/lib/module/renderer/HostConfig.js.map +1 -1
  262. package/lib/module/skia/types/Paragraph/TextStyle.d.ts +2 -2
  263. package/lib/module/skia/types/Paragraph/TextStyle.js.map +1 -1
  264. package/lib/module/skia/types/Skia.d.ts +6 -1
  265. package/lib/module/skia/types/Skia.js.map +1 -1
  266. package/lib/module/skia/web/JsiSkia.js +4 -1
  267. package/lib/module/skia/web/JsiSkia.js.map +1 -1
  268. package/lib/module/web/WithSkiaWeb.d.ts +11 -4
  269. package/lib/module/web/WithSkiaWeb.js +3 -2
  270. package/lib/module/web/WithSkiaWeb.js.map +1 -1
  271. package/lib/typescript/lib/commonjs/skia/web/JsiSkia.d.ts +1 -0
  272. package/lib/typescript/lib/commonjs/web/WithSkiaWeb.d.ts +2 -1
  273. package/lib/typescript/lib/module/skia/Skia.web.d.ts +1 -0
  274. package/lib/typescript/lib/module/skia/web/JsiSkia.d.ts +1 -0
  275. package/lib/typescript/lib/module/web/WithSkiaWeb.d.ts +2 -1
  276. package/lib/typescript/src/skia/types/Paragraph/TextStyle.d.ts +2 -2
  277. package/lib/typescript/src/skia/types/Skia.d.ts +6 -1
  278. package/lib/typescript/src/web/WithSkiaWeb.d.ts +11 -4
  279. package/libs/android/arm64-v8a/libskia.a +0 -0
  280. package/libs/android/arm64-v8a/libskottie.a +0 -0
  281. package/libs/android/arm64-v8a/libskparagraph.a +0 -0
  282. package/libs/android/arm64-v8a/libsksg.a +0 -0
  283. package/libs/android/arm64-v8a/libskshaper.a +0 -0
  284. package/libs/android/arm64-v8a/libskunicode_core.a +0 -0
  285. package/libs/android/arm64-v8a/libskunicode_icu.a +0 -0
  286. package/libs/android/arm64-v8a/libsvg.a +0 -0
  287. package/libs/android/armeabi-v7a/libskia.a +0 -0
  288. package/libs/android/armeabi-v7a/libskottie.a +0 -0
  289. package/libs/android/armeabi-v7a/libskparagraph.a +0 -0
  290. package/libs/android/armeabi-v7a/libsksg.a +0 -0
  291. package/libs/android/armeabi-v7a/libskshaper.a +0 -0
  292. package/libs/android/armeabi-v7a/libskunicode_core.a +0 -0
  293. package/libs/android/armeabi-v7a/libskunicode_icu.a +0 -0
  294. package/libs/android/armeabi-v7a/libsvg.a +0 -0
  295. package/libs/android/x86/libskia.a +0 -0
  296. package/libs/android/x86/libskottie.a +0 -0
  297. package/libs/android/x86/libskparagraph.a +0 -0
  298. package/libs/android/x86/libsksg.a +0 -0
  299. package/libs/android/x86/libskshaper.a +0 -0
  300. package/libs/android/x86/libskunicode_core.a +0 -0
  301. package/libs/android/x86/libskunicode_icu.a +0 -0
  302. package/libs/android/x86/libsvg.a +0 -0
  303. package/libs/android/x86_64/libskia.a +0 -0
  304. package/libs/android/x86_64/libskottie.a +0 -0
  305. package/libs/android/x86_64/libskparagraph.a +0 -0
  306. package/libs/android/x86_64/libsksg.a +0 -0
  307. package/libs/android/x86_64/libskshaper.a +0 -0
  308. package/libs/android/x86_64/libskunicode_core.a +0 -0
  309. package/libs/android/x86_64/libskunicode_icu.a +0 -0
  310. package/libs/android/x86_64/libsvg.a +0 -0
  311. package/libs/ios/libskia.xcframework/Info.plist +5 -5
  312. package/libs/ios/libskia.xcframework/ios-arm64_arm64e/libskia.a +0 -0
  313. package/libs/ios/libskia.xcframework/ios-arm64_arm64e_x86_64-simulator/libskia.a +0 -0
  314. package/libs/ios/libskottie.xcframework/Info.plist +5 -5
  315. package/libs/ios/libskottie.xcframework/ios-arm64_arm64e/libskottie.a +0 -0
  316. package/libs/ios/libskottie.xcframework/ios-arm64_arm64e_x86_64-simulator/libskottie.a +0 -0
  317. package/libs/ios/libskparagraph.xcframework/ios-arm64_arm64e/libskparagraph.a +0 -0
  318. package/libs/ios/libskparagraph.xcframework/ios-arm64_arm64e_x86_64-simulator/libskparagraph.a +0 -0
  319. package/libs/ios/libsksg.xcframework/Info.plist +5 -5
  320. package/libs/ios/libsksg.xcframework/ios-arm64_arm64e/libsksg.a +0 -0
  321. package/libs/ios/libsksg.xcframework/ios-arm64_arm64e_x86_64-simulator/libsksg.a +0 -0
  322. package/libs/ios/libskshaper.xcframework/ios-arm64_arm64e/libskshaper.a +0 -0
  323. package/libs/ios/libskshaper.xcframework/ios-arm64_arm64e_x86_64-simulator/libskshaper.a +0 -0
  324. package/libs/ios/libsvg.xcframework/Info.plist +5 -5
  325. package/libs/ios/libsvg.xcframework/ios-arm64_arm64e/libsvg.a +0 -0
  326. package/libs/ios/libsvg.xcframework/ios-arm64_arm64e_x86_64-simulator/libsvg.a +0 -0
  327. package/package.json +3 -5
  328. package/react-native-skia.podspec +2 -1
  329. package/src/renderer/HostConfig.ts +5 -1
  330. package/src/renderer/__tests__/e2e/ImageFilters.spec.tsx +5 -2
  331. package/src/renderer/__tests__/e2e/Paths.spec.tsx +12 -5
  332. package/src/renderer/__tests__/e2e/SDF.spec.tsx +1 -1
  333. package/src/renderer/__tests__/e2e/Snapshot.spec.tsx +1 -1
  334. package/src/skia/types/Paragraph/TextStyle.ts +2 -2
  335. package/src/skia/types/Skia.ts +7 -1
  336. package/src/skia/web/JsiSkia.ts +3 -0
  337. package/src/web/WithSkiaWeb.tsx +17 -6
  338. package/cpp/skia/include/core/SkDrawLooper.h +0 -135
  339. package/cpp/skia/include/effects/SkBlurDrawLooper.h +0 -26
  340. package/cpp/skia/include/effects/SkLayerDrawLooper.h +0 -161
  341. package/cpp/skia/include/gpu/gl/GrGLConfig_chrome.h +0 -14
  342. package/cpp/skia/include/gpu/vk/GrVkBackendContext.h +0 -84
  343. package/cpp/skia/include/gpu/vk/GrVkExtensions.h +0 -15
  344. package/cpp/skia/include/gpu/vk/GrVkMemoryAllocator.h +0 -15
  345. package/cpp/skia/include/ports/SkFontMgr_indirect.h +0 -102
  346. package/cpp/skia/include/ports/SkRemotableFontMgr.h +0 -139
  347. package/cpp/skia/include/private/base/SkFloatBits.h +0 -90
  348. package/cpp/skia/include/private/gpu/graphite/ContextOptionsPriv.h +0 -69
  349. package/cpp/skia/include/private/gpu/graphite/DawnTypesPriv.h +0 -54
  350. package/cpp/skia/include/private/gpu/graphite/MtlGraphiteTypesPriv.h +0 -95
  351. package/cpp/skia/include/private/gpu/graphite/VulkanGraphiteTypesPriv.h +0 -83
  352. package/cpp/skia/src/core/SkPathEnums.h +0 -25
  353. package/cpp/skia/src/core/SkPathPriv.h +0 -540
  354. package/libs/android/arm64-v8a/libskunicode.a +0 -0
  355. package/libs/android/armeabi-v7a/libskunicode.a +0 -0
  356. package/libs/android/x86/libskunicode.a +0 -0
  357. package/libs/android/x86_64/libskunicode.a +0 -0
  358. package/libs/ios/libskunicode.xcframework/Info.plist +0 -46
  359. package/libs/ios/libskunicode.xcframework/ios-arm64_arm64e/libskunicode.a +0 -0
  360. package/libs/ios/libskunicode.xcframework/ios-arm64_arm64e_x86_64-simulator/libskunicode.a +0 -0
  361. /package/cpp/skia/include/gpu/{gl → ganesh/gl}/glx/GrGLMakeGLXInterface.h +0 -0
@@ -14,9 +14,8 @@
14
14
  #include "include/core/SkPath.h"
15
15
  #include "include/core/SkPathTypes.h"
16
16
  #include "include/core/SkRefCnt.h"
17
- #include "include/core/SkTextureCompressionType.h"
18
- #include "include/gpu/GrTypes.h"
19
17
  #include "include/private/base/SkAssert.h"
18
+ #include "include/private/base/SkDebug.h"
20
19
  #include "include/private/base/SkMacros.h"
21
20
  #include "include/private/base/SkTypeTraits.h"
22
21
 
@@ -254,7 +253,7 @@ enum class GrQuadAAFlags {
254
253
  kAll = 0b1111,
255
254
  };
256
255
 
257
- GR_MAKE_BITFIELD_CLASS_OPS(GrQuadAAFlags)
256
+ SK_MAKE_BITFIELD_CLASS_OPS(GrQuadAAFlags)
258
257
 
259
258
  static inline GrQuadAAFlags SkToGrQuadAAFlags(unsigned flags) {
260
259
  return static_cast<GrQuadAAFlags>(flags);
@@ -462,9 +461,9 @@ enum class GrInternalSurfaceFlags {
462
461
  kVkRTSupportsInputAttachment = 1 << 4,
463
462
  };
464
463
 
465
- GR_MAKE_BITFIELD_CLASS_OPS(GrInternalSurfaceFlags)
464
+ SK_MAKE_BITFIELD_CLASS_OPS(GrInternalSurfaceFlags)
466
465
 
467
- // 'GR_MAKE_BITFIELD_CLASS_OPS' defines the & operator on GrInternalSurfaceFlags to return bool.
466
+ // 'SK_MAKE_BITFIELD_CLASS_OPS' defines the & operator on GrInternalSurfaceFlags to return bool.
468
467
  // We want to find the bitwise & with these masks, so we declare them as ints.
469
468
  constexpr static int kGrInternalTextureFlagsMask = static_cast<int>(
470
469
  GrInternalSurfaceFlags::kReadOnly);
@@ -526,7 +525,7 @@ enum class GrMipmapStatus {
526
525
  kValid, // All levels fully allocated and have valid data in them
527
526
  };
528
527
 
529
- GR_MAKE_BITFIELD_CLASS_OPS(GpuPathRenderers)
528
+ SK_MAKE_BITFIELD_CLASS_OPS(GpuPathRenderers)
530
529
 
531
530
  /**
532
531
  * Like SkColorType this describes a layout of pixel data in CPU memory. It specifies the channels,
@@ -550,11 +549,13 @@ enum class GrColorType {
550
549
  kBGRA_8888,
551
550
  kRGBA_1010102,
552
551
  kBGRA_1010102,
552
+ kRGB_101010x,
553
553
  kRGBA_10x6,
554
554
  kGray_8,
555
555
  kGrayAlpha_88,
556
556
  kAlpha_F16,
557
557
  kRGBA_F16,
558
+ kRGB_F16F16F16x,
558
559
  kRGBA_F16_Clamped,
559
560
  kRGBA_F32,
560
561
 
@@ -600,12 +601,14 @@ static constexpr SkColorType GrColorTypeToSkColorType(GrColorType ct) {
600
601
  case GrColorType::kBGRA_8888: return kBGRA_8888_SkColorType;
601
602
  case GrColorType::kRGBA_1010102: return kRGBA_1010102_SkColorType;
602
603
  case GrColorType::kBGRA_1010102: return kBGRA_1010102_SkColorType;
604
+ case GrColorType::kRGB_101010x: return kRGB_101010x_SkColorType;
603
605
  case GrColorType::kRGBA_10x6: return kRGBA_10x6_SkColorType;
604
606
  case GrColorType::kGray_8: return kGray_8_SkColorType;
605
607
  case GrColorType::kGrayAlpha_88: return kUnknown_SkColorType;
606
608
  case GrColorType::kAlpha_F16: return kA16_float_SkColorType;
607
609
  case GrColorType::kRGBA_F16: return kRGBA_F16_SkColorType;
608
610
  case GrColorType::kRGBA_F16_Clamped: return kRGBA_F16Norm_SkColorType;
611
+ case GrColorType::kRGB_F16F16F16x: return kRGB_F16F16F16x_SkColorType;
609
612
  case GrColorType::kRGBA_F32: return kRGBA_F32_SkColorType;
610
613
  case GrColorType::kAlpha_8xxx: return kUnknown_SkColorType;
611
614
  case GrColorType::kAlpha_F32xxx: return kUnknown_SkColorType;
@@ -639,11 +642,13 @@ static constexpr GrColorType SkColorTypeToGrColorType(SkColorType ct) {
639
642
  case kGray_8_SkColorType: return GrColorType::kGray_8;
640
643
  case kRGBA_F16Norm_SkColorType: return GrColorType::kRGBA_F16_Clamped;
641
644
  case kRGBA_F16_SkColorType: return GrColorType::kRGBA_F16;
645
+ case kRGB_F16F16F16x_SkColorType: return GrColorType::kRGB_F16F16F16x;
642
646
  case kRGBA_1010102_SkColorType: return GrColorType::kRGBA_1010102;
643
- case kRGB_101010x_SkColorType: return GrColorType::kUnknown;
647
+ case kRGB_101010x_SkColorType: return GrColorType::kRGB_101010x;
644
648
  case kBGRA_1010102_SkColorType: return GrColorType::kBGRA_1010102;
645
649
  case kBGR_101010x_SkColorType: return GrColorType::kUnknown;
646
650
  case kBGR_101010x_XR_SkColorType: return GrColorType::kUnknown;
651
+ case kBGRA_10101010_XR_SkColorType: return GrColorType::kUnknown;
647
652
  case kRGBA_10x6_SkColorType: return GrColorType::kRGBA_10x6;
648
653
  case kRGBA_F32_SkColorType: return GrColorType::kRGBA_F32;
649
654
  case kR8G8_unorm_SkColorType: return GrColorType::kRG_88;
@@ -671,12 +676,14 @@ static constexpr uint32_t GrColorTypeChannelFlags(GrColorType ct) {
671
676
  case GrColorType::kBGRA_8888: return kRGBA_SkColorChannelFlags;
672
677
  case GrColorType::kRGBA_1010102: return kRGBA_SkColorChannelFlags;
673
678
  case GrColorType::kBGRA_1010102: return kRGBA_SkColorChannelFlags;
679
+ case GrColorType::kRGB_101010x: return kRGB_SkColorChannelFlags;
674
680
  case GrColorType::kRGBA_10x6: return kRGBA_SkColorChannelFlags;
675
681
  case GrColorType::kGray_8: return kGray_SkColorChannelFlag;
676
682
  case GrColorType::kGrayAlpha_88: return kGrayAlpha_SkColorChannelFlags;
677
683
  case GrColorType::kAlpha_F16: return kAlpha_SkColorChannelFlag;
678
684
  case GrColorType::kRGBA_F16: return kRGBA_SkColorChannelFlags;
679
685
  case GrColorType::kRGBA_F16_Clamped: return kRGBA_SkColorChannelFlags;
686
+ case GrColorType::kRGB_F16F16F16x: return kRGB_SkColorChannelFlags;
680
687
  case GrColorType::kRGBA_F32: return kRGBA_SkColorChannelFlags;
681
688
  case GrColorType::kAlpha_8xxx: return kAlpha_SkColorChannelFlag;
682
689
  case GrColorType::kAlpha_F32xxx: return kAlpha_SkColorChannelFlag;
@@ -816,6 +823,8 @@ static constexpr GrColorFormatDesc GrGetColorTypeDesc(GrColorType ct) {
816
823
  return GrColorFormatDesc::MakeRGBA(10, 2, GrColorTypeEncoding::kUnorm);
817
824
  case GrColorType::kBGRA_1010102:
818
825
  return GrColorFormatDesc::MakeRGBA(10, 2, GrColorTypeEncoding::kUnorm);
826
+ case GrColorType::kRGB_101010x:
827
+ return GrColorFormatDesc::MakeRGB(10, GrColorTypeEncoding::kUnorm);
819
828
  case GrColorType::kRGBA_10x6:
820
829
  return GrColorFormatDesc::MakeRGBA(10, GrColorTypeEncoding::kUnorm);
821
830
  case GrColorType::kGray_8:
@@ -826,6 +835,8 @@ static constexpr GrColorFormatDesc GrGetColorTypeDesc(GrColorType ct) {
826
835
  return GrColorFormatDesc::MakeAlpha(16, GrColorTypeEncoding::kFloat);
827
836
  case GrColorType::kRGBA_F16:
828
837
  return GrColorFormatDesc::MakeRGBA(16, GrColorTypeEncoding::kFloat);
838
+ case GrColorType::kRGB_F16F16F16x:
839
+ return GrColorFormatDesc::MakeRGB(16, GrColorTypeEncoding::kFloat);
829
840
  case GrColorType::kRGBA_F16_Clamped:
830
841
  return GrColorFormatDesc::MakeRGBA(16, GrColorTypeEncoding::kFloat);
831
842
  case GrColorType::kRGBA_F32:
@@ -906,12 +917,14 @@ static constexpr size_t GrColorTypeBytesPerPixel(GrColorType ct) {
906
917
  case GrColorType::kBGRA_8888: return 4;
907
918
  case GrColorType::kRGBA_1010102: return 4;
908
919
  case GrColorType::kBGRA_1010102: return 4;
920
+ case GrColorType::kRGB_101010x: return 4;
909
921
  case GrColorType::kRGBA_10x6: return 8;
910
922
  case GrColorType::kGray_8: return 1;
911
923
  case GrColorType::kGrayAlpha_88: return 2;
912
924
  case GrColorType::kAlpha_F16: return 2;
913
925
  case GrColorType::kRGBA_F16: return 8;
914
926
  case GrColorType::kRGBA_F16_Clamped: return 8;
927
+ case GrColorType::kRGB_F16F16F16x: return 8;
915
928
  case GrColorType::kRGBA_F32: return 16;
916
929
  case GrColorType::kAlpha_8xxx: return 4;
917
930
  case GrColorType::kAlpha_F32xxx: return 16;
@@ -932,98 +945,13 @@ static constexpr size_t GrColorTypeBytesPerPixel(GrColorType ct) {
932
945
  SkUNREACHABLE;
933
946
  }
934
947
 
935
- // In general we try to not mix CompressionType and ColorType, but currently SkImage still requires
936
- // an SkColorType even for CompressedTypes so we need some conversion.
937
- static constexpr SkColorType GrCompressionTypeToSkColorType(SkTextureCompressionType compression) {
938
- switch (compression) {
939
- case SkTextureCompressionType::kNone: return kUnknown_SkColorType;
940
- case SkTextureCompressionType::kETC2_RGB8_UNORM: return kRGB_888x_SkColorType;
941
- case SkTextureCompressionType::kBC1_RGB8_UNORM: return kRGB_888x_SkColorType;
942
- case SkTextureCompressionType::kBC1_RGBA8_UNORM: return kRGBA_8888_SkColorType;
943
- }
944
-
945
- SkUNREACHABLE;
946
- }
947
-
948
948
  enum class GrDstSampleFlags {
949
949
  kNone = 0,
950
950
  kRequiresTextureBarrier = 1 << 0,
951
951
  kAsInputAttachment = 1 << 1,
952
952
  };
953
- GR_MAKE_BITFIELD_CLASS_OPS(GrDstSampleFlags)
953
+ SK_MAKE_BITFIELD_CLASS_OPS(GrDstSampleFlags)
954
954
 
955
955
  using GrVisitProxyFunc = std::function<void(GrSurfaceProxy*, skgpu::Mipmapped)>;
956
956
 
957
- #if defined(SK_DEBUG) || defined(GR_TEST_UTILS) || defined(SK_ENABLE_DUMP_GPU)
958
- static constexpr const char* GrBackendApiToStr(GrBackendApi api) {
959
- switch (api) {
960
- case GrBackendApi::kOpenGL: return "OpenGL";
961
- case GrBackendApi::kVulkan: return "Vulkan";
962
- case GrBackendApi::kMetal: return "Metal";
963
- case GrBackendApi::kDirect3D: return "Direct3D";
964
- case GrBackendApi::kMock: return "Mock";
965
- case GrBackendApi::kUnsupported: return "Unsupported";
966
- }
967
- SkUNREACHABLE;
968
- }
969
-
970
- static constexpr const char* GrColorTypeToStr(GrColorType ct) {
971
- switch (ct) {
972
- case GrColorType::kUnknown: return "kUnknown";
973
- case GrColorType::kAlpha_8: return "kAlpha_8";
974
- case GrColorType::kBGR_565: return "kBGR_565";
975
- case GrColorType::kRGB_565: return "kRGB_565";
976
- case GrColorType::kABGR_4444: return "kABGR_4444";
977
- case GrColorType::kRGBA_8888: return "kRGBA_8888";
978
- case GrColorType::kRGBA_8888_SRGB: return "kRGBA_8888_SRGB";
979
- case GrColorType::kRGB_888x: return "kRGB_888x";
980
- case GrColorType::kRG_88: return "kRG_88";
981
- case GrColorType::kBGRA_8888: return "kBGRA_8888";
982
- case GrColorType::kRGBA_1010102: return "kRGBA_1010102";
983
- case GrColorType::kBGRA_1010102: return "kBGRA_1010102";
984
- case GrColorType::kRGBA_10x6: return "kBGRA_10x6";
985
- case GrColorType::kGray_8: return "kGray_8";
986
- case GrColorType::kGrayAlpha_88: return "kGrayAlpha_88";
987
- case GrColorType::kAlpha_F16: return "kAlpha_F16";
988
- case GrColorType::kRGBA_F16: return "kRGBA_F16";
989
- case GrColorType::kRGBA_F16_Clamped: return "kRGBA_F16_Clamped";
990
- case GrColorType::kRGBA_F32: return "kRGBA_F32";
991
- case GrColorType::kAlpha_8xxx: return "kAlpha_8xxx";
992
- case GrColorType::kAlpha_F32xxx: return "kAlpha_F32xxx";
993
- case GrColorType::kGray_8xxx: return "kGray_8xxx";
994
- case GrColorType::kR_8xxx: return "kR_8xxx";
995
- case GrColorType::kAlpha_16: return "kAlpha_16";
996
- case GrColorType::kRG_1616: return "kRG_1616";
997
- case GrColorType::kRGBA_16161616: return "kRGBA_16161616";
998
- case GrColorType::kRG_F16: return "kRG_F16";
999
- case GrColorType::kRGB_888: return "kRGB_888";
1000
- case GrColorType::kR_8: return "kR_8";
1001
- case GrColorType::kR_16: return "kR_16";
1002
- case GrColorType::kR_F16: return "kR_F16";
1003
- case GrColorType::kGray_F16: return "kGray_F16";
1004
- case GrColorType::kARGB_4444: return "kARGB_4444";
1005
- case GrColorType::kBGRA_4444: return "kBGRA_4444";
1006
- }
1007
- SkUNREACHABLE;
1008
- }
1009
-
1010
- static constexpr const char* GrCompressionTypeToStr(SkTextureCompressionType compression) {
1011
- switch (compression) {
1012
- case SkTextureCompressionType::kNone: return "kNone";
1013
- case SkTextureCompressionType::kETC2_RGB8_UNORM: return "kETC2_RGB8_UNORM";
1014
- case SkTextureCompressionType::kBC1_RGB8_UNORM: return "kBC1_RGB8_UNORM";
1015
- case SkTextureCompressionType::kBC1_RGBA8_UNORM: return "kBC1_RGBA8_UNORM";
1016
- }
1017
- SkUNREACHABLE;
1018
- }
1019
-
1020
- static constexpr const char* GrSurfaceOriginToStr(GrSurfaceOrigin origin) {
1021
- switch (origin) {
1022
- case kTopLeft_GrSurfaceOrigin: return "kTopLeft";
1023
- case kBottomLeft_GrSurfaceOrigin: return "kBottomLeft";
1024
- }
1025
- SkUNREACHABLE;
1026
- }
1027
- #endif
1028
-
1029
957
  #endif
@@ -12,7 +12,7 @@
12
12
 
13
13
  // IWYU pragma: begin_exports
14
14
 
15
- #if (SKIA_IMPLEMENTATION || !defined(SK_VULKAN)) && !defined(SK_USE_EXTERNAL_VULKAN_HEADERS)
15
+ #if defined(SK_USE_INTERNAL_VULKAN_HEADERS) && !defined(SK_BUILD_FOR_GOOGLE3)
16
16
  #include "include/third_party/vulkan/vulkan/vulkan_core.h"
17
17
  #else
18
18
  // For google3 builds we don't set SKIA_IMPLEMENTATION so we need to make sure that the vulkan
@@ -22,7 +22,7 @@
22
22
 
23
23
  #ifdef SK_BUILD_FOR_ANDROID
24
24
  // This is needed to get android extensions for external memory
25
- #if (SKIA_IMPLEMENTATION || !defined(SK_VULKAN)) && !defined(SK_USE_EXTERNAL_VULKAN_HEADERS)
25
+ #if defined(SK_USE_INTERNAL_VULKAN_HEADERS) && !defined(SK_BUILD_FOR_GOOGLE3)
26
26
  #include "include/third_party/vulkan/vulkan/vulkan_android.h"
27
27
  #else
28
28
  // For google3 builds we don't set SKIA_IMPLEMENTATION so we need to make sure that the vulkan
@@ -11,6 +11,7 @@
11
11
  #include "include/core/SkDrawable.h"
12
12
  #include "include/core/SkFontMetrics.h"
13
13
  #include "include/core/SkFontStyle.h"
14
+ #include "include/core/SkFourByteTag.h"
14
15
  #include "include/core/SkPath.h"
15
16
  #include "include/core/SkRect.h"
16
17
  #include "include/core/SkRefCnt.h"
@@ -73,7 +73,7 @@ protected:
73
73
  void onDrawGlyphRunList(const sktext::GlyphRunList&, const SkPaint&) override;
74
74
  void onDrawTextBlob(const SkTextBlob* blob, SkScalar x, SkScalar y,
75
75
  const SkPaint& paint) override;
76
- void onDrawSlug(const sktext::gpu::Slug* slug) override;
76
+ void onDrawSlug(const sktext::gpu::Slug* slug, const SkPaint& paint) override;
77
77
  void onDrawPatch(const SkPoint cubics[12], const SkColor colors[4],
78
78
  const SkPoint texCoords[4], SkBlendMode, const SkPaint& paint) override;
79
79
 
@@ -23,7 +23,6 @@ public:
23
23
  static int Count(const char str[], char separator);
24
24
  static const char* FindColor(const char str[], SkColor* value);
25
25
  static const char* FindHex(const char str[], uint32_t* value);
26
- static const char* FindMSec(const char str[], SkMSec* value);
27
26
  static const char* FindNamedColor(const char str[], size_t len, SkColor* color);
28
27
  static const char* FindS32(const char str[], int32_t* value);
29
28
  static const char* FindScalar(const char str[], SkScalar* value);
@@ -22,15 +22,11 @@ using U8 = V<uint8_t>;
22
22
  // GCC is kind of weird, not allowing vector = scalar directly.
23
23
  static constexpr F F0 = F() + 0.0f,
24
24
  F1 = F() + 1.0f,
25
- FHalf = F() + 0.5f,
26
25
  FInfBits = F() + 0x7f800000; // equals 2139095040, the bit pattern of +Inf
27
- static constexpr I32 F16InfBits = I32() + 0x4780'0000;
28
26
  #else
29
27
  static constexpr F F0 = 0.0f,
30
28
  F1 = 1.0f,
31
- FHalf = 0.5f,
32
29
  FInfBits = 0x7f800000; // equals 2139095040, the bit pattern of +Inf
33
- static constexpr I32 F16InfBits = 0x4780'0000; // equals +Inf in half float, shifted to 32-bits
34
30
  #endif
35
31
 
36
32
  // Instead of checking __AVX__ below, we'll check USING_AVX.
@@ -41,7 +37,7 @@ using U8 = V<uint8_t>;
41
37
  #define USING_AVX
42
38
  #endif
43
39
  #if !defined(USING_AVX_F16C) && defined(USING_AVX) && defined(__F16C__)
44
- #define USING AVX_F16C
40
+ #define USING_AVX_F16C
45
41
  #endif
46
42
  #if !defined(USING_AVX2) && defined(USING_AVX) && defined(__AVX2__)
47
43
  #define USING_AVX2
@@ -153,22 +149,7 @@ SI U32 to_fixed(F f) { return (U32)cast<I32>(f + 0.5f); }
153
149
  }
154
150
  #endif
155
151
 
156
- #if defined(USING_NEON)
157
- SI F min_(F x, F y) { return (F)vminq_f32((float32x4_t)x, (float32x4_t)y); }
158
- SI F max_(F x, F y) { return (F)vmaxq_f32((float32x4_t)x, (float32x4_t)y); }
159
-
160
- SI I32 min_(I32 x, I32 y) { return (I32)vminq_s32((int32x4_t)x, (int32x4_t)y); }
161
- SI I32 max_(I32 x, I32 y) { return (I32)vmaxq_s32((int32x4_t)x, (int32x4_t)y); }
162
- #else
163
- SI F min_(F x, F y) { return if_then_else(x > y, y, x); }
164
- SI F max_(F x, F y) { return if_then_else(x < y, y, x); }
165
-
166
- SI I32 min_(I32 x, I32 y) { return if_then_else(x > y, y, x); }
167
- SI I32 max_(I32 x, I32 y) { return if_then_else(x < y, y, x); }
168
- #endif
169
152
 
170
- // KEEP IN SYNC with skvx::from_half to ensure that f16 colors are computed consistently in both
171
- // skcms and skvx.
172
153
  SI F F_from_Half(U16 half) {
173
154
  #if defined(USING_NEON_F16C)
174
155
  return vcvt_f32_f16((float16x4_t)half);
@@ -178,27 +159,24 @@ SI F F_from_Half(U16 half) {
178
159
  typedef int16_t __attribute__((vector_size(16))) I16;
179
160
  return __builtin_ia32_vcvtph2ps256((I16)half);
180
161
  #else
181
- I32 wide = cast<I32>(half);
162
+ U32 wide = cast<U32>(half);
182
163
  // A half is 1-5-10 sign-exponent-mantissa, with 15 exponent bias.
183
- // To match intrinsic behavior, this preserves denormal values, infinities, and NaNs, which
184
- // helps improve consistency between architectures.
185
- I32 s = wide & 0x8000,
186
- em = wide ^ s,
187
- inf_or_nan = (em >= (31 << 10)) & (255 << 23), // Expands exponent to fill 8 bits
188
- is_norm = em > 0x3ff,
189
- // denormalized f16's are 2^-14*0.[m0:9] == 2^-24*[m0:9].0
190
- sub = bit_pun<I32>(cast<F>(em) * (1.f/(1<<24))),
191
- norm = ((em<<13) + ((127-15)<<23)), // Shifts mantissa, shifts + re-biases exponent
192
- finite = if_then_else(is_norm, norm, sub);
193
- // If 'x' is f16 +/- infinity, inf_or_nan will be the filled 8-bit exponent but 'norm' will be
194
- // all 0s since 'x's mantissa is 0. Thus norm | inf_or_nan becomes f32 infinity. However, if
195
- // 'x' is an f16 NaN, some bits of 'norm' will be non-zero, so it stays an f32 NaN after the OR.
196
- return bit_pun<F>((s<<16) | finite | inf_or_nan);
164
+ U32 s = wide & 0x8000,
165
+ em = wide ^ s;
166
+
167
+ // Constructing the float is easy if the half is not denormalized.
168
+ F norm = bit_pun<F>( (s<<16) + (em<<13) + ((127-15)<<23) );
169
+
170
+ // Simply flush all denorm half floats to zero.
171
+ return if_then_else(em < 0x0400, F0, norm);
197
172
  #endif
198
173
  }
199
174
 
200
- // KEEP IN SYNC with skvx::to_half to ensure that f16 colors are computed consistently in both
201
- // skcms and skvx.
175
+ #if defined(__clang__)
176
+ // The -((127-15)<<10) underflows that side of the math when
177
+ // we pass a denorm half float. It's harmless... we'll take the 0 side anyway.
178
+ __attribute__((no_sanitize("unsigned-integer-overflow")))
179
+ #endif
202
180
  SI U16 Half_from_F(F f) {
203
181
  #if defined(USING_NEON_F16C)
204
182
  return (U16)vcvt_f16_f32(f);
@@ -208,23 +186,13 @@ SI U16 Half_from_F(F f) {
208
186
  return (U16)__builtin_ia32_vcvtps2ph256(f, 0x04/*_MM_FROUND_CUR_DIRECTION*/);
209
187
  #else
210
188
  // A float is 1-8-23 sign-exponent-mantissa, with 127 exponent bias.
211
- // To match intrinsic behavior, this implements round-to-nearest-even, converting floats to
212
- // denormal f16 values, overflowing to infinity and preserving infinity. However, it does not
213
- // handle NaN float values (they become infinity).
214
- I32 sem = bit_pun<I32>(f),
215
- s = sem & 0x8000'0000,
216
- em = min_(sem ^ s, F16InfBits), // |x| clamped to f16 infinity
217
- // F(em)*8192 increases the exponent by 13, which when added back to em will shift the
218
- // mantissa bits 13 to the right. We clamp to 1/2 for subnormal values, which
219
- // automatically shifts the mantissa to match 2^-14 expected for a subnorm f16.
220
- magic = bit_pun<I32>(max_(bit_pun<F>(em) * 8192.f, FHalf)) & (255 << 23),
221
- // Shift mantissa with automatic round-to-even
222
- rounded = bit_pun<I32>((bit_pun<F>(em) + bit_pun<F>(magic))),
223
- // Subtract 127 for f32 bias, subtract 13 to undo the *8192, subtract 1 to remove
224
- // the implicit leading 1., and add 15 to get the f16 biased exponent.
225
- exp = ((magic >> 13) - ((127-15+13+1)<<10)), // shift and re-bias exponent
226
- f16 = rounded + exp; // use + if 'rounded' rolled over into first exponent bit
227
- return cast<U16>((s>>16) | f16);
189
+ U32 sem = bit_pun<U32>(f),
190
+ s = sem & 0x80000000,
191
+ em = sem ^ s;
192
+
193
+ // For simplicity we flush denorm half floats (including all denorm floats) to zero.
194
+ return cast<U16>(if_then_else(em < 0x38800000, (U32)F0
195
+ , (s>>16) + (em>>13) - ((127-15)<<10)));
228
196
  #endif
229
197
  }
230
198
 
@@ -240,6 +208,17 @@ SI U64 swap_endian_16x4(const U64& rgba) {
240
208
  | (rgba & 0xff00ff00ff00ff00) >> 8;
241
209
  }
242
210
 
211
+ #if defined(USING_NEON)
212
+ SI F min_(F x, F y) { return (F)vminq_f32((float32x4_t)x, (float32x4_t)y); }
213
+ SI F max_(F x, F y) { return (F)vmaxq_f32((float32x4_t)x, (float32x4_t)y); }
214
+ #elif defined(__loongarch_sx)
215
+ SI F min_(F x, F y) { return (F)__lsx_vfmin_s(x, y); }
216
+ SI F max_(F x, F y) { return (F)__lsx_vfmax_s(x, y); }
217
+ #else
218
+ SI F min_(F x, F y) { return if_then_else(x > y, y, x); }
219
+ SI F max_(F x, F y) { return if_then_else(x < y, y, x); }
220
+ #endif
221
+
243
222
  SI F floor_(F x) {
244
223
  #if N == 1
245
224
  return floorf_(x);
@@ -255,6 +234,8 @@ SI F floor_(F x) {
255
234
  return __builtin_ia32_roundps256(x, 0x01/*_MM_FROUND_FLOOR*/);
256
235
  #elif defined(__SSE4_1__)
257
236
  return _mm_floor_ps(x);
237
+ #elif defined(__loongarch_sx)
238
+ return __lsx_vfrintrm_s((__m128)x);
258
239
  #else
259
240
  // Round trip through integers with a truncating cast.
260
241
  F roundtrip = cast<F>(cast<I32>(x));
@@ -668,7 +649,7 @@ SI void sample_clut_8(const uint8_t* grid_8, I32 ix, F* r, F* g, F* b, F* a) {
668
649
  }
669
650
 
670
651
  SI void sample_clut_16(const uint8_t* grid_16, I32 ix, F* r, F* g, F* b) {
671
- #if defined(__arm__)
652
+ #if defined(__arm__) || defined(__loongarch_sx)
672
653
  // This is up to 2x faster on 32-bit ARM than the #else-case fast path.
673
654
  *r = F_from_U16_BE(gather_16(grid_16, 3*ix+0));
674
655
  *g = F_from_U16_BE(gather_16(grid_16, 3*ix+1));
@@ -856,6 +837,12 @@ STAGE(load_g8, NoCtx) {
856
837
  r = g = b = F_from_U8(load<U8>(src + 1*i));
857
838
  }
858
839
 
840
+ STAGE(load_ga88, NoCtx) {
841
+ U16 u16 = load<U16>(src + 2 * i);
842
+ r = g = b = cast<F>((u16 >> 0) & 0xff) * (1 / 255.0f);
843
+ a = cast<F>((u16 >> 8) & 0xff) * (1 / 255.0f);
844
+ }
845
+
859
846
  STAGE(load_4444, NoCtx) {
860
847
  U16 abgr = load<U16>(src + 2*i);
861
848
 
@@ -926,6 +913,17 @@ STAGE(load_101010x_XR, NoCtx) {
926
913
  b = cast<F>((rgba >> 20) & 0x3ff) * (1/1023.0f) * range + min;
927
914
  }
928
915
 
916
+ STAGE(load_10101010_XR, NoCtx) {
917
+ static constexpr float min = -0.752941f;
918
+ static constexpr float max = 1.25098f;
919
+ static constexpr float range = max - min;
920
+ U64 rgba = load<U64>(src + 8 * i);
921
+ r = cast<F>((rgba >> (0+6)) & 0x3ff) * (1/1023.0f) * range + min;
922
+ g = cast<F>((rgba >> (16+6)) & 0x3ff) * (1/1023.0f) * range + min;
923
+ b = cast<F>((rgba >> (32+6)) & 0x3ff) * (1/1023.0f) * range + min;
924
+ a = cast<F>((rgba >> (48+6)) & 0x3ff) * (1/1023.0f) * range + min;
925
+ }
926
+
929
927
  STAGE(load_161616LE, NoCtx) {
930
928
  uintptr_t ptr = (uintptr_t)(src + 6*i);
931
929
  assert( (ptr & 1) == 0 ); // src must be 2-byte aligned for this
@@ -1263,6 +1261,12 @@ FINAL_STAGE(store_g8, NoCtx) {
1263
1261
  store(dst + 1*i, cast<U8>(to_fixed(g * 255)));
1264
1262
  }
1265
1263
 
1264
+ FINAL_STAGE(store_ga88, NoCtx) {
1265
+ // g should be holding luminance (Y) (r,g,b ~~~> X,Y,Z)
1266
+ store<U16>(dst + 2*i, cast<U16>(to_fixed(g * 255) << 0 )
1267
+ | cast<U16>(to_fixed(a * 255) << 8 ));
1268
+ }
1269
+
1266
1270
  FINAL_STAGE(store_4444, NoCtx) {
1267
1271
  store<U16>(dst + 2*i, cast<U16>(to_fixed(r * 15) << 12)
1268
1272
  | cast<U16>(to_fixed(g * 15) << 8)
@@ -1312,7 +1316,6 @@ FINAL_STAGE(store_101010x_XR, NoCtx) {
1312
1316
  store(dst + 4*i, cast<U32>(to_fixed(((r - min) / range) * 1023)) << 0
1313
1317
  | cast<U32>(to_fixed(((g - min) / range) * 1023)) << 10
1314
1318
  | cast<U32>(to_fixed(((b - min) / range) * 1023)) << 20);
1315
- return;
1316
1319
  }
1317
1320
 
1318
1321
  FINAL_STAGE(store_1010102, NoCtx) {
@@ -20,12 +20,14 @@ namespace skcms_private {
20
20
  #define SKCMS_WORK_OPS(M) \
21
21
  M(load_a8) \
22
22
  M(load_g8) \
23
+ M(load_ga88) \
23
24
  M(load_4444) \
24
25
  M(load_565) \
25
26
  M(load_888) \
26
27
  M(load_8888) \
27
28
  M(load_1010102) \
28
29
  M(load_101010x_XR) \
30
+ M(load_10101010_XR) \
29
31
  M(load_161616LE) \
30
32
  M(load_16161616LE) \
31
33
  M(load_161616BE) \
@@ -88,6 +90,7 @@ namespace skcms_private {
88
90
  #define SKCMS_STORE_OPS(M) \
89
91
  M(store_a8) \
90
92
  M(store_g8) \
93
+ M(store_ga88) \
91
94
  M(store_4444) \
92
95
  M(store_565) \
93
96
  M(store_888) \
@@ -39,6 +39,7 @@ extern "C" {
39
39
  // - Clang 18 runs into an ICE on armv7/androideabi with [[clang::musttail]].
40
40
  // (http://crbug.com/1504548)
41
41
  // - Android RISC-V also runs into an ICE (b/314692534)
42
+ // - LoongArch developers indicate they had to turn it off
42
43
  // - Windows builds generate incorrect code with [[clang::musttail]] and crash mysteriously.
43
44
  // (http://crbug.com/1505442)
44
45
  #if __has_cpp_attribute(clang::musttail) && !__has_feature(memory_sanitizer) \
@@ -46,6 +47,7 @@ extern "C" {
46
47
  && !defined(__EMSCRIPTEN__) \
47
48
  && !defined(__arm__) \
48
49
  && !defined(__riscv) \
50
+ && !defined(__loongarch__) \
49
51
  && !defined(_WIN32) && !defined(__SYMBIAN32__)
50
52
  #define SKCMS_HAS_MUSTTAIL 1
51
53
  #endif
@@ -258,16 +258,44 @@ SKCMS_API bool skcms_ApproximateCurve(const skcms_Curve* curve,
258
258
  SKCMS_API bool skcms_GetCHAD(const skcms_ICCProfile*, skcms_Matrix3x3*);
259
259
  SKCMS_API bool skcms_GetWTPT(const skcms_ICCProfile*, float xyz[3]);
260
260
 
261
+ // Returns the number of channels of input data that are expected on the "A" side of the profile.
262
+ // This is useful for image codecs, where the image data and the accompanying profile might have
263
+ // conflicting data shapes. In some cases, the result is unclear or invalid. In that case, the
264
+ // function will return a negative value to signal an error.
265
+ SKCMS_API int skcms_GetInputChannelCount(const skcms_ICCProfile*);
266
+
261
267
  // These are common ICC signature values
262
268
  enum {
263
- // data_color_space
269
+ // common data_color_space values
264
270
  skcms_Signature_CMYK = 0x434D594B,
265
271
  skcms_Signature_Gray = 0x47524159,
266
272
  skcms_Signature_RGB = 0x52474220,
267
273
 
268
- // pcs
274
+ // pcs (or data_color_space)
269
275
  skcms_Signature_Lab = 0x4C616220,
270
276
  skcms_Signature_XYZ = 0x58595A20,
277
+
278
+ // other, less common data_color_space values
279
+ skcms_Signature_CIELUV = 0x4C757620,
280
+ skcms_Signature_YCbCr = 0x59436272,
281
+ skcms_Signature_CIEYxy = 0x59787920,
282
+ skcms_Signature_HSV = 0x48535620,
283
+ skcms_Signature_HLS = 0x484C5320,
284
+ skcms_Signature_CMY = 0x434D5920,
285
+ skcms_Signature_2CLR = 0x32434C52,
286
+ skcms_Signature_3CLR = 0x33434C52,
287
+ skcms_Signature_4CLR = 0x34434C52,
288
+ skcms_Signature_5CLR = 0x35434C52,
289
+ skcms_Signature_6CLR = 0x36434C52,
290
+ skcms_Signature_7CLR = 0x37434C52,
291
+ skcms_Signature_8CLR = 0x38434C52,
292
+ skcms_Signature_9CLR = 0x39434C52,
293
+ skcms_Signature_10CLR = 0x41434C52,
294
+ skcms_Signature_11CLR = 0x42434C52,
295
+ skcms_Signature_12CLR = 0x43434C52,
296
+ skcms_Signature_13CLR = 0x44434C52,
297
+ skcms_Signature_14CLR = 0x45434C52,
298
+ skcms_Signature_15CLR = 0x46434C52,
271
299
  };
272
300
 
273
301
  typedef enum skcms_PixelFormat {
@@ -275,6 +303,8 @@ typedef enum skcms_PixelFormat {
275
303
  skcms_PixelFormat_A_8_,
276
304
  skcms_PixelFormat_G_8,
277
305
  skcms_PixelFormat_G_8_,
306
+ skcms_PixelFormat_GA_88, // Grayscale with alpha.
307
+ skcms_PixelFormat_GA_88_,
278
308
 
279
309
  skcms_PixelFormat_RGB_565,
280
310
  skcms_PixelFormat_BGR_565,
@@ -286,39 +316,41 @@ typedef enum skcms_PixelFormat {
286
316
  skcms_PixelFormat_BGR_888,
287
317
  skcms_PixelFormat_RGBA_8888,
288
318
  skcms_PixelFormat_BGRA_8888,
289
- skcms_PixelFormat_RGBA_8888_sRGB, // Automatic sRGB encoding / decoding.
290
- skcms_PixelFormat_BGRA_8888_sRGB, // (Generally used with linear transfer functions.)
319
+ skcms_PixelFormat_RGBA_8888_sRGB, // Automatic sRGB encoding / decoding.
320
+ skcms_PixelFormat_BGRA_8888_sRGB, // (Generally used with linear transfer functions.)
291
321
 
292
322
  skcms_PixelFormat_RGBA_1010102,
293
323
  skcms_PixelFormat_BGRA_1010102,
294
324
 
295
- skcms_PixelFormat_RGB_161616LE, // Little-endian. Pointers must be 16-bit aligned.
325
+ skcms_PixelFormat_RGB_161616LE, // Little-endian. Pointers must be 16-bit aligned.
296
326
  skcms_PixelFormat_BGR_161616LE,
297
327
  skcms_PixelFormat_RGBA_16161616LE,
298
328
  skcms_PixelFormat_BGRA_16161616LE,
299
329
 
300
- skcms_PixelFormat_RGB_161616BE, // Big-endian. Pointers must be 16-bit aligned.
330
+ skcms_PixelFormat_RGB_161616BE, // Big-endian. Pointers must be 16-bit aligned.
301
331
  skcms_PixelFormat_BGR_161616BE,
302
332
  skcms_PixelFormat_RGBA_16161616BE,
303
333
  skcms_PixelFormat_BGRA_16161616BE,
304
334
 
305
- skcms_PixelFormat_RGB_hhh_Norm, // 1-5-10 half-precision float in [0,1]
306
- skcms_PixelFormat_BGR_hhh_Norm, // Pointers must be 16-bit aligned.
335
+ skcms_PixelFormat_RGB_hhh_Norm, // 1-5-10 half-precision float in [0,1]
336
+ skcms_PixelFormat_BGR_hhh_Norm, // Pointers must be 16-bit aligned.
307
337
  skcms_PixelFormat_RGBA_hhhh_Norm,
308
338
  skcms_PixelFormat_BGRA_hhhh_Norm,
309
339
 
310
- skcms_PixelFormat_RGB_hhh, // 1-5-10 half-precision float.
311
- skcms_PixelFormat_BGR_hhh, // Pointers must be 16-bit aligned.
340
+ skcms_PixelFormat_RGB_hhh, // 1-5-10 half-precision float.
341
+ skcms_PixelFormat_BGR_hhh, // Pointers must be 16-bit aligned.
312
342
  skcms_PixelFormat_RGBA_hhhh,
313
343
  skcms_PixelFormat_BGRA_hhhh,
314
344
 
315
- skcms_PixelFormat_RGB_fff, // 1-8-23 single-precision float (the normal kind).
316
- skcms_PixelFormat_BGR_fff, // Pointers must be 32-bit aligned.
345
+ skcms_PixelFormat_RGB_fff, // 1-8-23 single-precision float (the normal kind).
346
+ skcms_PixelFormat_BGR_fff, // Pointers must be 32-bit aligned.
317
347
  skcms_PixelFormat_RGBA_ffff,
318
348
  skcms_PixelFormat_BGRA_ffff,
319
349
 
320
- skcms_PixelFormat_RGB_101010x_XR, // Note: This is located here to signal no clamping.
321
- skcms_PixelFormat_BGR_101010x_XR, // Compatible with MTLPixelFormatBGR10_XR.
350
+ skcms_PixelFormat_RGB_101010x_XR, // Note: This is located here to signal no clamping.
351
+ skcms_PixelFormat_BGR_101010x_XR, // Compatible with MTLPixelFormatBGR10_XR.
352
+ skcms_PixelFormat_RGBA_10101010_XR, // Note: This is located here to signal no clamping.
353
+ skcms_PixelFormat_BGRA_10101010_XR, // Compatible with MTLPixelFormatBGRA10_XR.
322
354
  } skcms_PixelFormat;
323
355
 
324
356
  // We always store any alpha channel linearly. In the chart below, tf-1() is the inverse