@shopify/react-native-skia 1.3.13 → 1.4.1

Sign up to get free protection for your applications and to get access to all the features.
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