@shopify/react-native-skia 1.3.13 → 1.4.0

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
@@ -59,15 +59,40 @@ public:
59
59
  /** Returns true if there is work that was submitted to the GPU that has not finished. */
60
60
  bool hasUnfinishedGpuWork() const;
61
61
 
62
- void asyncRescaleAndReadPixels(const SkImage* image,
62
+ /** Makes image pixel data available to caller, possibly asynchronously. It can also rescale
63
+ the image pixels.
64
+
65
+ Data is read from the source sub-rectangle, is optionally converted to a linear gamma, is
66
+ rescaled to the size indicated by 'dstImageInfo', is then converted to the color space,
67
+ color type, and alpha type of 'dstImageInfo'. A 'srcRect' that is not contained by the
68
+ bounds of the image causes failure.
69
+
70
+ When the pixel data is ready the caller's ReadPixelsCallback is called with a
71
+ AsyncReadResult containing pixel data in the requested color type, alpha type, and color
72
+ space. The AsyncReadResult will have count() == 1. Upon failure the callback is called with
73
+ nullptr for AsyncReadResult. The callback can be triggered, for example, with a call to
74
+ Context::submit(SyncToCpu::kYes).
75
+
76
+ The data is valid for the lifetime of AsyncReadResult with the exception that the data is
77
+ immediately invalidated if the Graphite context is abandoned or destroyed.
78
+
79
+ @param src Graphite-backed image or surface to read the data from.
80
+ @param dstImageInfo info of the requested pixels
81
+ @param srcRect subrectangle of image to read
82
+ @param rescaleGamma controls whether rescaling is done in the image's gamma or whether
83
+ the source data is transformed to a linear gamma before rescaling.
84
+ @param rescaleMode controls the technique (and cost) of the rescaling
85
+ @param callback function to call with result of the read
86
+ @param context passed to callback
87
+ */
88
+ void asyncRescaleAndReadPixels(const SkImage* src,
63
89
  const SkImageInfo& dstImageInfo,
64
90
  const SkIRect& srcRect,
65
91
  SkImage::RescaleGamma rescaleGamma,
66
92
  SkImage::RescaleMode rescaleMode,
67
93
  SkImage::ReadPixelsCallback callback,
68
94
  SkImage::ReadPixelsContext context);
69
-
70
- void asyncRescaleAndReadPixels(const SkSurface* surface,
95
+ void asyncRescaleAndReadPixels(const SkSurface* src,
71
96
  const SkImageInfo& dstImageInfo,
72
97
  const SkIRect& srcRect,
73
98
  SkImage::RescaleGamma rescaleGamma,
@@ -75,7 +100,35 @@ public:
75
100
  SkImage::ReadPixelsCallback callback,
76
101
  SkImage::ReadPixelsContext context);
77
102
 
78
- void asyncRescaleAndReadPixelsYUV420(const SkImage*,
103
+ /**
104
+ Similar to asyncRescaleAndReadPixels but performs an additional conversion to YUV. The
105
+ RGB->YUV conversion is controlled by 'yuvColorSpace'. The YUV data is returned as three
106
+ planes ordered y, u, v. The u and v planes are half the width and height of the resized
107
+ rectangle. The y, u, and v values are single bytes. Currently this fails if 'dstSize'
108
+ width and height are not even. A 'srcRect' that is not contained by the bounds of the
109
+ surface causes failure.
110
+
111
+ When the pixel data is ready the caller's ReadPixelsCallback is called with a
112
+ AsyncReadResult containing the planar data. The AsyncReadResult will have count() == 3.
113
+ Upon failure the callback is called with nullptr for AsyncReadResult. The callback can
114
+ be triggered, for example, with a call to Context::submit(SyncToCpu::kYes).
115
+
116
+ The data is valid for the lifetime of AsyncReadResult with the exception that the data
117
+ is immediately invalidated if the context is abandoned or destroyed.
118
+
119
+ @param src Graphite-backed image or surface to read the data from.
120
+ @param yuvColorSpace The transformation from RGB to YUV. Applied to the resized image
121
+ after it is converted to dstColorSpace.
122
+ @param dstColorSpace The color space to convert the resized image to, after rescaling.
123
+ @param srcRect The portion of the surface to rescale and convert to YUV planes.
124
+ @param dstSize The size to rescale srcRect to
125
+ @param rescaleGamma controls whether rescaling is done in the surface's gamma or whether
126
+ the source data is transformed to a linear gamma before rescaling.
127
+ @param rescaleMode controls the sampling technique of the rescaling
128
+ @param callback function to call with the planar read result
129
+ @param context passed to callback
130
+ */
131
+ void asyncRescaleAndReadPixelsYUV420(const SkImage* src,
79
132
  SkYUVColorSpace yuvColorSpace,
80
133
  sk_sp<SkColorSpace> dstColorSpace,
81
134
  const SkIRect& srcRect,
@@ -84,8 +137,7 @@ public:
84
137
  SkImage::RescaleMode rescaleMode,
85
138
  SkImage::ReadPixelsCallback callback,
86
139
  SkImage::ReadPixelsContext context);
87
-
88
- void asyncRescaleAndReadPixelsYUV420(const SkSurface*,
140
+ void asyncRescaleAndReadPixelsYUV420(const SkSurface* src,
89
141
  SkYUVColorSpace yuvColorSpace,
90
142
  sk_sp<SkColorSpace> dstColorSpace,
91
143
  const SkIRect& srcRect,
@@ -95,7 +147,12 @@ public:
95
147
  SkImage::ReadPixelsCallback callback,
96
148
  SkImage::ReadPixelsContext context);
97
149
 
98
- void asyncRescaleAndReadPixelsYUVA420(const SkImage*,
150
+ /**
151
+ * Identical to asyncRescaleAndReadPixelsYUV420 but a fourth plane is returned in the
152
+ * AsyncReadResult passed to 'callback'. The fourth plane contains the alpha chanel at the
153
+ * same full resolution as the Y plane.
154
+ */
155
+ void asyncRescaleAndReadPixelsYUVA420(const SkImage* src,
99
156
  SkYUVColorSpace yuvColorSpace,
100
157
  sk_sp<SkColorSpace> dstColorSpace,
101
158
  const SkIRect& srcRect,
@@ -104,8 +161,7 @@ public:
104
161
  SkImage::RescaleMode rescaleMode,
105
162
  SkImage::ReadPixelsCallback callback,
106
163
  SkImage::ReadPixelsContext context);
107
-
108
- void asyncRescaleAndReadPixelsYUVA420(const SkSurface*,
164
+ void asyncRescaleAndReadPixelsYUVA420(const SkSurface* src,
109
165
  SkYUVColorSpace yuvColorSpace,
110
166
  sk_sp<SkColorSpace> dstColorSpace,
111
167
  const SkIRect& srcRect,
@@ -147,10 +203,21 @@ public:
147
203
  void performDeferredCleanup(std::chrono::milliseconds msNotUsed);
148
204
 
149
205
  /**
150
- * Returns the number of bytes of gpu memory currently budgeted in the Context's cache.
206
+ * Returns the number of bytes of the Context's gpu memory cache budget that are currently in
207
+ * use.
151
208
  */
152
209
  size_t currentBudgetedBytes() const;
153
210
 
211
+ /**
212
+ * Returns the number of bytes of the Context's resource cache that are currently purgeable.
213
+ */
214
+ size_t currentPurgeableBytes() const;
215
+
216
+ /**
217
+ * Returns the size of Context's gpu memory cache budget in bytes.
218
+ */
219
+ size_t maxBudgetedBytes() const;
220
+
154
221
  /**
155
222
  * Enumerates all cached GPU resources owned by the Context and dumps their memory to
156
223
  * traceMemoryDump.
@@ -163,6 +230,11 @@ public:
163
230
  */
164
231
  bool isDeviceLost() const;
165
232
 
233
+ /**
234
+ * Returns the maximum texture dimension supported by the underlying backend.
235
+ */
236
+ int maxTextureSize() const;
237
+
166
238
  /*
167
239
  * Does this context support protected content?
168
240
  */
@@ -219,42 +291,48 @@ private:
219
291
  // require Context::Make() to return a nullptr.
220
292
  bool finishInitialization();
221
293
 
222
- void asyncRescaleAndReadPixelsYUV420Impl(const SkImage*,
223
- SkYUVColorSpace yuvColorSpace,
224
- bool readAlpha,
225
- sk_sp<SkColorSpace> dstColorSpace,
226
- const SkIRect& srcRect,
227
- const SkISize& dstSize,
228
- SkImage::RescaleGamma rescaleGamma,
229
- SkImage::RescaleMode rescaleMode,
230
- SkImage::ReadPixelsCallback callback,
231
- SkImage::ReadPixelsContext context);
232
-
233
- void asyncReadPixels(const TextureProxy* textureProxy,
234
- const SkImageInfo& srcImageInfo,
235
- const SkColorInfo& dstColorInfo,
236
- const SkIRect& srcRect,
237
- SkImage::ReadPixelsCallback callback,
238
- SkImage::ReadPixelsContext context);
239
-
240
- void asyncReadPixelsYUV420(Recorder*,
241
- const SkImage*,
242
- SkYUVColorSpace yuvColorSpace,
243
- bool readAlpha,
244
- const SkIRect& srcRect,
245
- SkImage::ReadPixelsCallback callback,
246
- SkImage::ReadPixelsContext context);
247
-
248
- void finalizeAsyncReadPixels(SkSpan<PixelTransferResult>,
249
- SkImage::ReadPixelsCallback callback,
250
- SkImage::ReadPixelsContext callbackContext);
251
-
252
- // Inserts a texture to buffer transfer task, used by asyncReadPixels methods
253
- PixelTransferResult transferPixels(const TextureProxy*,
254
- const SkImageInfo& srcImageInfo,
294
+ void checkForFinishedWork(SyncToCpu);
295
+
296
+ std::unique_ptr<Recorder> makeInternalRecorder() const;
297
+
298
+ template <typename SrcPixels> struct AsyncParams;
299
+
300
+ template <typename ReadFn, typename... ExtraArgs>
301
+ void asyncRescaleAndReadImpl(ReadFn Context::* asyncRead,
302
+ SkImage::RescaleGamma rescaleGamma,
303
+ SkImage::RescaleMode rescaleMode,
304
+ const AsyncParams<SkImage>&,
305
+ ExtraArgs...);
306
+
307
+ // Recorder is optional and will be used if drawing operations are required. If no Recorder is
308
+ // provided but drawing operations are needed, a new Recorder will be created automatically.
309
+ void asyncReadPixels(std::unique_ptr<Recorder>, const AsyncParams<SkImage>&);
310
+ void asyncReadPixelsYUV420(std::unique_ptr<Recorder>,
311
+ const AsyncParams<SkImage>&,
312
+ SkYUVColorSpace);
313
+
314
+ // Like asyncReadPixels() except it performs no fallbacks, and requires that the texture be
315
+ // readable. However, the texture does not need to be sampleable.
316
+ void asyncReadTexture(std::unique_ptr<Recorder>,
317
+ const AsyncParams<TextureProxy>&,
318
+ const SkColorInfo& srcColorInfo);
319
+
320
+ // Inserts a texture to buffer transfer task, used by asyncReadPixels methods. If the
321
+ // Recorder is non-null, tasks will be added to the Recorder's list; otherwise the transfer
322
+ // tasks will be added to the queue manager directly.
323
+ PixelTransferResult transferPixels(Recorder*,
324
+ const TextureProxy* srcProxy,
325
+ const SkColorInfo& srcColorInfo,
255
326
  const SkColorInfo& dstColorInfo,
256
327
  const SkIRect& srcRect);
257
328
 
329
+ // If the recorder is non-null, it will be snapped and inserted with the assumption that the
330
+ // copy tasks (and possibly preparatory draw tasks) have already been added to the Recording.
331
+ void finalizeAsyncReadPixels(std::unique_ptr<Recorder>,
332
+ SkSpan<PixelTransferResult>,
333
+ SkImage::ReadPixelsCallback callback,
334
+ SkImage::ReadPixelsContext callbackContext);
335
+
258
336
  sk_sp<SharedContext> fSharedContext;
259
337
  std::unique_ptr<ResourceProvider> fResourceProvider;
260
338
  std::unique_ptr<QueueManager> fQueueManager;
@@ -264,7 +342,7 @@ private:
264
342
  // ResourceCache for the Context.
265
343
  mutable SingleOwner fSingleOwner;
266
344
 
267
- #if defined(GRAPHITE_TEST_UTILS)
345
+ #if defined(GPU_TEST_UTILS)
268
346
  // In test builds a Recorder may track the Context that was used to create it.
269
347
  bool fStoreContextRefInRecorder = false;
270
348
  // If this tracking is on, to allow the client to safely delete this Context or its Recorders
@@ -11,6 +11,8 @@
11
11
  #include "include/private/base/SkAPI.h"
12
12
  #include "include/private/base/SkMath.h"
13
13
 
14
+ #include <optional>
15
+
14
16
  namespace skgpu { class ShaderErrorHandler; }
15
17
 
16
18
  namespace skgpu::graphite {
@@ -71,10 +73,15 @@ struct SK_API ContextOptions {
71
73
  #endif
72
74
 
73
75
  /**
74
- * Can the glyph atlas use multiple textures. If allowed, the each texture's size is bound by
75
- * fGlypheCacheTextureMaximumBytes.
76
+ * The maximum size of textures used for Skia's PathAtlas caches.
77
+ */
78
+ int fMaxPathAtlasTextureSize = 8192; // oversized, PathAtlas will likely be smaller
79
+
80
+ /**
81
+ * Can the glyph and path atlases use multiple textures. If allowed, each texture's size is
82
+ * bound by fGlyphCacheTextureMaximumBytes and fMaxPathAtlasTextureSize, respectively.
76
83
  */
77
- bool fAllowMultipleGlyphCacheTextures = true;
84
+ bool fAllowMultipleAtlasTextures = true;
78
85
  bool fSupportBilerpFromGlyphAtlas = false;
79
86
 
80
87
  /**
@@ -91,6 +98,26 @@ struct SK_API ContextOptions {
91
98
  */
92
99
  size_t fGpuBudgetInBytes = kDefaultContextBudget;
93
100
 
101
+ /**
102
+ * Whether labels will be set on backend resources.
103
+ */
104
+ #if defined(SK_DEBUG)
105
+ bool fSetBackendLabels = true;
106
+ #else
107
+ bool fSetBackendLabels = false;
108
+ #endif
109
+
110
+ /**
111
+ * If Skia is creating a default VMA allocator for the Vulkan backend this value will be used
112
+ * for the preferredLargeHeapBlockSize. If the value is not set, then Skia will use an
113
+ * inernally defined default size.
114
+ *
115
+ * However, it is highly discouraged to have Skia make a default allocator (and support for
116
+ * doing so will be removed soon, b/321962001). Instead clients should create their own
117
+ * allocator to pass into Skia where they can fine tune this value themeselves.
118
+ */
119
+ std::optional<uint64_t> fVulkanVMALargeHeapBlockSize;
120
+
94
121
  /**
95
122
  * Private options that are only meant for testing within Skia's tools.
96
123
  */
@@ -103,25 +103,53 @@ enum class Volatile : bool {
103
103
  kYes = true // fulfilled on every insertion call
104
104
  };
105
105
 
106
- /*
107
- * Graphite's different rendering methods each only apply to certain types of draws. This
108
- * enum supports decision-making regarding the different renderers and what is being drawn.
109
- */
110
- enum DrawTypeFlags : uint8_t {
111
-
106
+ enum class DepthStencilFlags : int {
112
107
  kNone = 0b000,
108
+ kDepth = 0b001,
109
+ kStencil = 0b010,
110
+ kDepthStencil = kDepth | kStencil,
111
+ };
113
112
 
114
- // SkCanvas:: drawSimpleText, drawString, drawGlyphs, drawTextBlob, drawSlug
115
- kText = 0b001,
116
-
117
- // SkCanvas::drawVertices
118
- kDrawVertices = 0b010,
119
-
120
- // All other canvas draw calls
121
- kShape = 0b100,
122
-
123
- kMostCommon = kText | kShape,
124
- kAll = kText | kDrawVertices | kShape
113
+ /*
114
+ * This enum allows mapping from a set of observed RenderSteps (e.g., from a GraphicsPipeline
115
+ * printout) to the correct 'drawTypes' parameter needed by the Precompilation API.
116
+ */
117
+ enum DrawTypeFlags : uint16_t {
118
+
119
+ kNone = 0b000000000,
120
+
121
+ // kBitmapText_Mask should be used for the BitmapTextRenderStep[mask] RenderStep
122
+ kBitmapText_Mask = 0b00000001,
123
+ // kBitmapText_LCD should be used for the BitmapTextRenderStep[LCD] RenderStep
124
+ kBitmapText_LCD = 0b00000010,
125
+ // kBitmapText_Color should be used for the BitmapTextRenderStep[color] RenderStep
126
+ kBitmapText_Color = 0b00000100,
127
+ // kSDFText should be used for the SDFTextRenderStep RenderStep
128
+ kSDFText = 0b00001000,
129
+ // kSDFText_LCD should be used for the SDFTextLCDRenderStep RenderStep
130
+ kSDFText_LCD = 0b00010000,
131
+
132
+ // kDrawVertices should be used to generate Pipelines that use the following RenderSteps:
133
+ // VerticesRenderStep[*] for:
134
+ // [tris], [tris-texCoords], [tris-color], [tris-color-texCoords],
135
+ // [tristrips], [tristrips-texCoords], [tristrips-color], [tristrips-color-texCoords]
136
+ kDrawVertices = 0b00100000,
137
+
138
+ // kSimpleShape should be used to generate Pipelines that use the following RenderSteps:
139
+ // AnalyticBlurRenderStep
140
+ // AnalyticRRectRenderStep
141
+ // PerEdgeAAQuadRenderStep
142
+ // CoverBoundsRenderStep[non-aa-fill]
143
+ kSimpleShape = 0b01000000,
144
+
145
+ // kNonSimpleShape should be used to generate Pipelines that use the following RenderSteps:
146
+ // CoverageMaskRenderStep
147
+ // CoverBoundsRenderStep[*] for [inverse-cover], [regular-cover]
148
+ // TessellateStrokeRenderStep
149
+ // TessellateWedgesRenderStep[*] for [convex], [evenodd], [winding]
150
+ // TessellateCurvesRenderStep[*] for [even-odd], [winding]
151
+ // MiddleOutFanRenderStep[*] for [even-odd], [winding]
152
+ kNonSimpleShape = 0b10000000,
125
153
  };
126
154
 
127
155
  } // namespace skgpu::graphite
@@ -14,6 +14,8 @@
14
14
  #include "include/core/SkSpan.h"
15
15
  #include "include/gpu/GpuTypes.h"
16
16
 
17
+ #include <string_view>
18
+
17
19
  class SkYUVAInfo;
18
20
  class SkYUVAPixmaps;
19
21
  struct SkIRect;
@@ -28,21 +30,21 @@ namespace skgpu::graphite {
28
30
  }
29
31
 
30
32
  namespace SkImages {
33
+ enum class GenerateMipmapsFromBase : bool { kNo, kYes };
34
+
31
35
  using TextureReleaseProc = void (*)(ReleaseContext);
32
36
 
33
- // Passed to both non-YUVA fulfill and imageRelease
37
+ // Passed to imageRelease
34
38
  using GraphitePromiseImageContext = void*;
35
- // Passed to YUVA fulfill
36
- using GraphitePromiseTextureContext = void*;
39
+ // Passed to fulfill; for non-YUVA promise images, the image context is used as the fulfill context,
40
+ // while YUVA promise images have a per-plane fulfill context.
41
+ using GraphitePromiseTextureFulfillContext = void*;
37
42
  // Returned from fulfill and passed into textureRelease
38
43
  using GraphitePromiseTextureReleaseContext = void*;
39
44
 
40
- using GraphitePromiseImageFulfillProc =
45
+ using GraphitePromiseTextureFulfillProc =
41
46
  std::tuple<skgpu::graphite::BackendTexture, GraphitePromiseTextureReleaseContext> (*)(
42
- GraphitePromiseImageContext);
43
- using GraphitePromiseImageYUVAFulfillProc =
44
- std::tuple<skgpu::graphite::BackendTexture, GraphitePromiseTextureReleaseContext> (*)(
45
- GraphitePromiseTextureContext);
47
+ GraphitePromiseTextureFulfillContext);
46
48
  using GraphitePromiseImageReleaseProc = void (*)(GraphitePromiseImageContext);
47
49
  using GraphitePromiseTextureReleaseProc = void (*)(GraphitePromiseTextureReleaseContext);
48
50
 
@@ -52,18 +54,24 @@ using GraphitePromiseTextureReleaseProc = void (*)(GraphitePromiseTextureRelease
52
54
  SkImage is returned if the format of backendTexture is recognized and supported.
53
55
  Recognized formats vary by GPU back-end.
54
56
 
55
- @param recorder The recorder
56
- @param backendTexture texture residing on GPU
57
- @param colorSpace This describes the color space of this image's contents, as
58
- seen after sampling. In general, if the format of the backend
59
- texture is SRGB, some linear colorSpace should be supplied
60
- (e.g., SkColorSpace::MakeSRGBLinear()). If the format of the
61
- backend texture is linear, then the colorSpace should include
62
- a description of the transfer function as
63
- well (e.g., SkColorSpace::MakeSRGB()).
64
- @param origin Whether the Texture logically treats the origin as TopLeft or
65
- BottomLeft
66
- @return created SkImage, or nullptr
57
+ @param recorder The recorder
58
+ @param backendTexture texture residing on GPU
59
+ @param colorSpace This describes the color space of this image's contents, as
60
+ seen after sampling. In general, if the format of the backend
61
+ texture is SRGB, some linear colorSpace should be supplied
62
+ (e.g., SkColorSpace::MakeSRGBLinear()). If the format of the
63
+ backend texture is linear, then the colorSpace should include
64
+ a description of the transfer function as
65
+ well (e.g., SkColorSpace::MakeSRGB()).
66
+ @param origin Whether the Texture logically treats the origin as TopLeft or
67
+ BottomLeft
68
+ @param generateMipmapsFromBase If kYes then the pixel contents of the textures upper mipmap
69
+ levels are generated by successive downsampling of the base
70
+ level. If the texture is not mipmapped or isn't renderable then
71
+ image creation will fail. If kNo and the texture is mipmapped
72
+ then the contents of upper levels are assumed to already be
73
+ valid.
74
+ @return created SkImage, or nullptr
67
75
  */
68
76
  SK_API sk_sp<SkImage> WrapTexture(skgpu::graphite::Recorder*,
69
77
  const skgpu::graphite::BackendTexture&,
@@ -71,39 +79,29 @@ SK_API sk_sp<SkImage> WrapTexture(skgpu::graphite::Recorder*,
71
79
  SkAlphaType alphaType,
72
80
  sk_sp<SkColorSpace> colorSpace,
73
81
  skgpu::Origin origin,
82
+ GenerateMipmapsFromBase generateMipmapsFromBase,
74
83
  TextureReleaseProc = nullptr,
75
- ReleaseContext = nullptr);
84
+ ReleaseContext = nullptr,
85
+ std::string_view label = {});
76
86
 
77
87
  SK_API sk_sp<SkImage> WrapTexture(skgpu::graphite::Recorder*,
78
88
  const skgpu::graphite::BackendTexture&,
79
89
  SkColorType colorType,
80
90
  SkAlphaType alphaType,
81
91
  sk_sp<SkColorSpace> colorSpace,
92
+ skgpu::Origin origin,
82
93
  TextureReleaseProc = nullptr,
83
- ReleaseContext = nullptr);
84
-
85
- #if !defined(SK_DISABLE_LEGACY_GRAPHITE_IMAGES)
86
- inline sk_sp<SkImage> AdoptTextureFrom(skgpu::graphite::Recorder* recorder,
87
- const skgpu::graphite::BackendTexture& tex,
88
- SkColorType colorType,
89
- SkAlphaType alphaType,
90
- sk_sp<SkColorSpace> colorSpace,
91
- skgpu::Origin origin,
92
- TextureReleaseProc trProc = nullptr,
93
- ReleaseContext ctx = nullptr) {
94
- return WrapTexture(recorder, tex, colorType, alphaType, colorSpace, origin, trProc, ctx);
95
- }
94
+ ReleaseContext = nullptr,
95
+ std::string_view label = {});
96
96
 
97
- inline sk_sp<SkImage> AdoptTextureFrom(skgpu::graphite::Recorder* recorder,
98
- const skgpu::graphite::BackendTexture& tex,
99
- SkColorType colorType,
100
- SkAlphaType alphaType,
101
- sk_sp<SkColorSpace> colorSpace,
102
- TextureReleaseProc trProc = nullptr,
103
- ReleaseContext ctx = nullptr) {
104
- return WrapTexture(recorder, tex, colorType, alphaType, colorSpace, trProc, ctx);
105
- }
106
- #endif
97
+ SK_API sk_sp<SkImage> WrapTexture(skgpu::graphite::Recorder*,
98
+ const skgpu::graphite::BackendTexture&,
99
+ SkColorType colorType,
100
+ SkAlphaType alphaType,
101
+ sk_sp<SkColorSpace> colorSpace,
102
+ TextureReleaseProc = nullptr,
103
+ ReleaseContext = nullptr,
104
+ std::string_view label = {});
107
105
 
108
106
  /** Create a new SkImage that is very similar to an SkImage created by WrapTexture. The difference
109
107
  is that the caller need not have created the backend texture nor populated it with data when
@@ -156,17 +154,18 @@ SK_API sk_sp<SkImage> PromiseTextureFrom(skgpu::graphite::Recorder*,
156
154
  const SkColorInfo&,
157
155
  skgpu::Origin origin,
158
156
  skgpu::graphite::Volatile,
159
- GraphitePromiseImageFulfillProc,
157
+ GraphitePromiseTextureFulfillProc,
160
158
  GraphitePromiseImageReleaseProc,
161
159
  GraphitePromiseTextureReleaseProc,
162
- GraphitePromiseImageContext);
160
+ GraphitePromiseImageContext,
161
+ std::string_view label = {});
163
162
 
164
163
  SK_API sk_sp<SkImage> PromiseTextureFrom(skgpu::graphite::Recorder*,
165
164
  SkISize dimensions,
166
165
  const skgpu::graphite::TextureInfo&,
167
166
  const SkColorInfo&,
168
167
  skgpu::graphite::Volatile,
169
- GraphitePromiseImageFulfillProc,
168
+ GraphitePromiseTextureFulfillProc,
170
169
  GraphitePromiseImageReleaseProc,
171
170
  GraphitePromiseTextureReleaseProc,
172
171
  GraphitePromiseImageContext);
@@ -176,8 +175,8 @@ SK_API sk_sp<SkImage> PromiseTextureFrom(skgpu::graphite::Recorder*,
176
175
  and A are all in different planes and thus the image is specified by four textures.
177
176
  'backendTextureInfo' describes the planar arrangement, texture formats, and conversion to RGB.
178
177
  Separate 'fulfill' and 'textureRelease' calls are made for each texture. Each texture has its
179
- own GraphitePromiseTextureContext. The GraphitePromiseImageReleaseProc will be made even on
180
- failure. 'textureContexts' has one entry for each of the up to four textures, as indicated by
178
+ own GraphitePromiseFulfillContext. The GraphitePromiseImageReleaseProc will be made even on
179
+ failure. 'planeContexts' has one entry for each of the up to four textures, as indicated by
181
180
  'backendTextureInfo'. Currently the mipmapped property of 'backendTextureInfo' is ignored.
182
181
  However, in the near future it will be required that if it is kYes then the fulfillProc must
183
182
  return a mip mapped texture for each plane in order to successfully draw the image.
@@ -192,18 +191,19 @@ SK_API sk_sp<SkImage> PromiseTextureFrom(skgpu::graphite::Recorder*,
192
191
  @param imageRelease function called when any image-centric data can be deleted
193
192
  @param textureRelease function called when the backend texture can be deleted
194
193
  @param imageContext state passed to imageRelease
195
- @param textureContexts states passed to fulfill and textureRelease
194
+ @param planeContexts states passed to fulfill for each plane
196
195
  @return created SkImage, or nullptr
197
196
  */
198
197
  SK_API sk_sp<SkImage> PromiseTextureFromYUVA(skgpu::graphite::Recorder*,
199
198
  const skgpu::graphite::YUVABackendTextureInfo&,
200
199
  sk_sp<SkColorSpace> imageColorSpace,
201
200
  skgpu::graphite::Volatile,
202
- GraphitePromiseImageYUVAFulfillProc,
201
+ GraphitePromiseTextureFulfillProc,
203
202
  GraphitePromiseImageReleaseProc,
204
203
  GraphitePromiseTextureReleaseProc,
205
204
  GraphitePromiseImageContext imageContext,
206
- GraphitePromiseTextureContext textureContexts[]);
205
+ GraphitePromiseTextureFulfillContext planeContexts[],
206
+ std::string_view label = {});
207
207
 
208
208
 
209
209
  /** Returns an SkImage backed by a Graphite texture, using the provided Recorder for creation and
@@ -259,7 +259,8 @@ SK_API sk_sp<SkImage> TextureFromYUVAPixmaps(skgpu::graphite::Recorder*,
259
259
  const SkYUVAPixmaps& pixmaps,
260
260
  SkImage::RequiredProperties = {},
261
261
  bool limitToMaxTextureSize = false,
262
- sk_sp<SkColorSpace> imgColorSpace = nullptr);
262
+ sk_sp<SkColorSpace> imgColorSpace = nullptr,
263
+ std::string_view label = {});
263
264
 
264
265
  /** Creates an SkImage from YUV[A] planar textures associated with the recorder.
265
266
  @param recorder The recorder.
@@ -276,7 +277,8 @@ SK_API sk_sp<SkImage> TextureFromYUVATextures(
276
277
  const skgpu::graphite::YUVABackendTextures& yuvaBackendTextures,
277
278
  sk_sp<SkColorSpace> imageColorSpace,
278
279
  TextureReleaseProc = nullptr,
279
- ReleaseContext = nullptr);
280
+ ReleaseContext = nullptr,
281
+ std::string_view label = {});
280
282
 
281
283
  /** Creates an SkImage from YUV[A] planar SkImages associated with the recorder.
282
284