@shopify/react-native-skia 0.1.158 → 0.1.159

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (403) hide show
  1. package/android/CMakeLists.txt +35 -11
  2. package/android/build.gradle +21 -25
  3. package/android/cpp/jni/JniLoad.cpp +2 -0
  4. package/android/cpp/jni/include/JniSkiaDomView.h +89 -0
  5. package/android/cpp/rnskia-android/SkiaOpenGLRenderer.cpp +4 -3
  6. package/android/cpp/rnskia-android/SkiaOpenGLRenderer.h +4 -3
  7. package/android/src/main/java/com/shopify/reactnative/skia/RNSkiaPackage.java +2 -1
  8. package/android/src/main/java/com/shopify/reactnative/skia/SkiaDomView.java +45 -0
  9. package/android/src/main/java/com/shopify/reactnative/skia/SkiaDomViewManager.java +64 -0
  10. package/cpp/api/JsiSkHostObjects.h +6 -0
  11. package/cpp/api/JsiSkImageFilterFactory.h +1 -1
  12. package/cpp/api/JsiSkPaint.h +9 -2
  13. package/cpp/api/JsiSkPath.h +1 -0
  14. package/cpp/api/JsiSkRuntimeEffect.h +36 -36
  15. package/cpp/jsi/JsiHostObject.cpp +16 -28
  16. package/cpp/jsi/JsiHostObject.h +127 -7
  17. package/cpp/jsi/JsiValue.cpp +346 -0
  18. package/cpp/jsi/JsiValue.h +222 -0
  19. package/cpp/jsi/JsiValueWrapper.h +33 -5
  20. package/cpp/rnskia/RNSkDomView.cpp +220 -0
  21. package/cpp/rnskia/RNSkDomView.h +140 -0
  22. package/cpp/rnskia/RNSkJsView.cpp +0 -4
  23. package/cpp/rnskia/RNSkJsView.h +6 -4
  24. package/cpp/rnskia/RNSkManager.cpp +7 -0
  25. package/cpp/rnskia/RNSkPictureView.h +5 -8
  26. package/cpp/rnskia/RNSkView.h +113 -5
  27. package/cpp/rnskia/dom/JsiDomApi.h +167 -0
  28. package/cpp/rnskia/dom/base/BaseNodeProp.h +72 -0
  29. package/cpp/rnskia/dom/base/DerivedNodeProp.h +187 -0
  30. package/cpp/rnskia/dom/base/DrawingContext.cpp +227 -0
  31. package/cpp/rnskia/dom/base/DrawingContext.h +136 -0
  32. package/cpp/rnskia/dom/base/JsiDependencyManager.h +294 -0
  33. package/cpp/rnskia/dom/base/JsiDomDeclarationNode.h +176 -0
  34. package/cpp/rnskia/dom/base/JsiDomDrawingNode.h +50 -0
  35. package/cpp/rnskia/dom/base/JsiDomNode.h +361 -0
  36. package/cpp/rnskia/dom/base/JsiDomRenderNode.h +267 -0
  37. package/cpp/rnskia/dom/base/NodeProp.h +130 -0
  38. package/cpp/rnskia/dom/base/NodePropsContainer.h +119 -0
  39. package/cpp/rnskia/dom/nodes/JsiBackdropFilterNode.h +38 -0
  40. package/cpp/rnskia/dom/nodes/JsiBlendNode.h +112 -0
  41. package/cpp/rnskia/dom/nodes/JsiBlurMaskNode.h +78 -0
  42. package/cpp/rnskia/dom/nodes/JsiBoxNode.h +104 -0
  43. package/cpp/rnskia/dom/nodes/JsiBoxShadowNode.h +33 -0
  44. package/cpp/rnskia/dom/nodes/JsiCircleNode.h +38 -0
  45. package/cpp/rnskia/dom/nodes/JsiColorFilterNodes.h +192 -0
  46. package/cpp/rnskia/dom/nodes/JsiCustomDrawingNode.h +123 -0
  47. package/cpp/rnskia/dom/nodes/JsiDiffRectNode.h +42 -0
  48. package/cpp/rnskia/dom/nodes/JsiFillNode.h +22 -0
  49. package/cpp/rnskia/dom/nodes/JsiGlyphsNode.h +56 -0
  50. package/cpp/rnskia/dom/nodes/JsiGroupNode.h +26 -0
  51. package/cpp/rnskia/dom/nodes/JsiImageFilterNodes.h +415 -0
  52. package/cpp/rnskia/dom/nodes/JsiImageNode.h +34 -0
  53. package/cpp/rnskia/dom/nodes/JsiImageSvgNode.h +44 -0
  54. package/cpp/rnskia/dom/nodes/JsiLayerNode.h +64 -0
  55. package/cpp/rnskia/dom/nodes/JsiLineNode.h +43 -0
  56. package/cpp/rnskia/dom/nodes/JsiOvalNode.h +34 -0
  57. package/cpp/rnskia/dom/nodes/JsiPaintNode.h +77 -0
  58. package/cpp/rnskia/dom/nodes/JsiPatchNode.h +54 -0
  59. package/cpp/rnskia/dom/nodes/JsiPathEffectNodes.h +315 -0
  60. package/cpp/rnskia/dom/nodes/JsiPathNode.h +181 -0
  61. package/cpp/rnskia/dom/nodes/JsiPictureNode.h +32 -0
  62. package/cpp/rnskia/dom/nodes/JsiPointsNode.h +51 -0
  63. package/cpp/rnskia/dom/nodes/JsiRRectNode.h +34 -0
  64. package/cpp/rnskia/dom/nodes/JsiRectNode.h +34 -0
  65. package/cpp/rnskia/dom/nodes/JsiShaderNodes.h +517 -0
  66. package/cpp/rnskia/dom/nodes/JsiTextBlobNode.h +47 -0
  67. package/cpp/rnskia/dom/nodes/JsiTextNode.h +54 -0
  68. package/cpp/rnskia/dom/nodes/JsiTextPathNode.h +32 -0
  69. package/cpp/rnskia/dom/nodes/JsiVerticesNode.h +43 -0
  70. package/cpp/rnskia/dom/props/BezierProps.h +63 -0
  71. package/cpp/rnskia/dom/props/BlendModeProp.h +101 -0
  72. package/cpp/rnskia/dom/props/BoxShadowProps.h +61 -0
  73. package/cpp/rnskia/dom/props/CircleProp.h +46 -0
  74. package/cpp/rnskia/dom/props/ClipProp.h +62 -0
  75. package/cpp/rnskia/dom/props/ColorProp.h +80 -0
  76. package/cpp/rnskia/dom/props/DrawingProp.h +33 -0
  77. package/cpp/rnskia/dom/props/FontProp.h +34 -0
  78. package/cpp/rnskia/dom/props/GlyphsProp.h +53 -0
  79. package/cpp/rnskia/dom/props/ImageProps.h +173 -0
  80. package/cpp/rnskia/dom/props/LayerProp.h +50 -0
  81. package/cpp/rnskia/dom/props/MatrixProp.h +33 -0
  82. package/cpp/rnskia/dom/props/NumbersProp.h +63 -0
  83. package/cpp/rnskia/dom/props/PaintProps.h +172 -0
  84. package/cpp/rnskia/dom/props/PathProp.h +55 -0
  85. package/cpp/rnskia/dom/props/PictureProp.h +38 -0
  86. package/cpp/rnskia/dom/props/PointProp.h +72 -0
  87. package/cpp/rnskia/dom/props/PointsProp.h +83 -0
  88. package/cpp/rnskia/dom/props/RRectProp.h +134 -0
  89. package/cpp/rnskia/dom/props/RadiusProp.h +43 -0
  90. package/cpp/rnskia/dom/props/RectProp.h +118 -0
  91. package/cpp/rnskia/dom/props/StrokeProps.h +75 -0
  92. package/cpp/rnskia/dom/props/SvgProp.h +37 -0
  93. package/cpp/rnskia/dom/props/TextBlobProp.h +128 -0
  94. package/cpp/rnskia/dom/props/TileModeProp.h +50 -0
  95. package/cpp/rnskia/dom/props/TransformProp.h +80 -0
  96. package/cpp/rnskia/dom/props/TransformsProps.h +68 -0
  97. package/cpp/rnskia/dom/props/UniformsProp.h +194 -0
  98. package/cpp/rnskia/dom/props/VertexModeProp.h +47 -0
  99. package/cpp/rnskia/dom/props/VerticesProps.h +67 -0
  100. package/cpp/rnskia/values/RNSkReadonlyValue.h +13 -4
  101. package/cpp/skia/include/android/SkAndroidFrameworkUtils.h +35 -1
  102. package/cpp/skia/include/codec/SkAndroidCodec.h +17 -1
  103. package/cpp/skia/include/codec/SkCodec.h +8 -5
  104. package/cpp/skia/include/core/SkAnnotation.h +2 -0
  105. package/cpp/skia/include/core/SkBitmap.h +52 -1
  106. package/cpp/skia/include/core/SkBlendMode.h +2 -0
  107. package/cpp/skia/include/core/SkCanvas.h +52 -31
  108. package/cpp/skia/include/core/SkCapabilities.h +44 -0
  109. package/cpp/skia/include/core/SkColor.h +7 -0
  110. package/cpp/skia/include/core/SkColorFilter.h +37 -0
  111. package/cpp/skia/include/core/SkColorSpace.h +1 -1
  112. package/cpp/skia/include/core/SkFont.h +4 -0
  113. package/cpp/skia/include/core/SkFontMgr.h +3 -0
  114. package/cpp/skia/include/core/SkGraphics.h +9 -0
  115. package/cpp/skia/include/core/SkImage.h +77 -17
  116. package/cpp/skia/include/core/SkImageEncoder.h +5 -3
  117. package/cpp/skia/include/core/SkImageGenerator.h +27 -17
  118. package/cpp/skia/include/core/SkM44.h +1 -0
  119. package/cpp/skia/include/core/SkMesh.h +120 -34
  120. package/cpp/skia/include/core/SkMilestone.h +1 -1
  121. package/cpp/skia/include/core/SkOverdrawCanvas.h +2 -1
  122. package/cpp/skia/include/core/SkPaint.h +15 -2
  123. package/cpp/skia/include/core/SkPath.h +4 -0
  124. package/cpp/skia/include/core/SkPathBuilder.h +1 -1
  125. package/cpp/skia/include/core/SkPicture.h +0 -3
  126. package/cpp/skia/include/core/SkPictureRecorder.h +0 -2
  127. package/cpp/skia/include/core/SkPixmap.h +19 -0
  128. package/cpp/skia/include/core/SkRasterHandleAllocator.h +3 -1
  129. package/cpp/skia/include/core/SkRect.h +11 -4
  130. package/cpp/skia/include/core/SkRefCnt.h +13 -1
  131. package/cpp/skia/include/core/SkRegion.h +6 -0
  132. package/cpp/skia/include/core/SkSamplingOptions.h +8 -6
  133. package/cpp/skia/include/core/SkScalar.h +6 -25
  134. package/cpp/skia/include/core/SkShader.h +20 -12
  135. package/cpp/skia/include/core/SkSpan.h +51 -19
  136. package/cpp/skia/include/core/SkStream.h +2 -2
  137. package/cpp/skia/include/core/SkString.h +11 -3
  138. package/cpp/skia/include/core/SkSurface.h +85 -8
  139. package/cpp/skia/include/core/SkTextBlob.h +5 -2
  140. package/cpp/skia/include/core/SkTypes.h +11 -10
  141. package/cpp/skia/include/docs/SkPDFDocument.h +0 -5
  142. package/cpp/skia/include/effects/Sk1DPathEffect.h +6 -1
  143. package/cpp/skia/include/effects/Sk2DPathEffect.h +4 -1
  144. package/cpp/skia/include/effects/SkColorMatrix.h +1 -0
  145. package/cpp/skia/include/effects/SkColorMatrixFilter.h +5 -8
  146. package/cpp/skia/include/effects/SkCornerPathEffect.h +5 -1
  147. package/cpp/skia/include/effects/SkDashPathEffect.h +5 -1
  148. package/cpp/skia/include/effects/SkGradientShader.h +68 -38
  149. package/cpp/skia/include/effects/SkHighContrastFilter.h +5 -1
  150. package/cpp/skia/include/effects/SkImageFilters.h +5 -4
  151. package/cpp/skia/include/effects/SkLumaColorFilter.h +4 -1
  152. package/cpp/skia/include/effects/SkOpPathEffect.h +6 -2
  153. package/cpp/skia/include/effects/SkOverdrawColorFilter.h +5 -2
  154. package/cpp/skia/include/effects/SkRuntimeEffect.h +54 -62
  155. package/cpp/skia/include/effects/SkShaderMaskFilter.h +3 -1
  156. package/cpp/skia/include/effects/SkTableColorFilter.h +8 -21
  157. package/cpp/skia/include/effects/SkTableMaskFilter.h +5 -1
  158. package/cpp/skia/include/effects/SkTrimPathEffect.h +5 -1
  159. package/cpp/skia/include/encode/SkEncoder.h +17 -0
  160. package/cpp/skia/include/encode/SkWebpEncoder.h +17 -0
  161. package/cpp/skia/include/gpu/GpuTypes.h +18 -0
  162. package/cpp/skia/include/gpu/GrBackendSurface.h +38 -17
  163. package/cpp/skia/include/gpu/GrBackendSurfaceMutableState.h +6 -71
  164. package/cpp/skia/include/gpu/GrContextOptions.h +1 -1
  165. package/cpp/skia/include/gpu/GrContextThreadSafeProxy.h +10 -9
  166. package/cpp/skia/include/gpu/GrDirectContext.h +42 -22
  167. package/cpp/skia/include/gpu/GrRecordingContext.h +6 -3
  168. package/cpp/skia/include/gpu/GrTypes.h +11 -11
  169. package/cpp/skia/include/gpu/MutableTextureState.h +122 -0
  170. package/cpp/skia/include/gpu/gl/GrGLFunctions.h +1 -0
  171. package/cpp/skia/include/gpu/gl/GrGLInterface.h +1 -0
  172. package/cpp/skia/include/gpu/graphite/BackendTexture.h +7 -0
  173. package/cpp/skia/include/gpu/graphite/CombinationBuilder.h +195 -0
  174. package/cpp/skia/include/gpu/graphite/Context.h +47 -55
  175. package/cpp/skia/include/gpu/graphite/ContextOptions.h +85 -0
  176. package/cpp/skia/include/gpu/graphite/GraphiteTypes.h +1 -17
  177. package/cpp/skia/include/gpu/graphite/ImageProvider.h +61 -0
  178. package/cpp/skia/include/gpu/graphite/Recorder.h +87 -8
  179. package/cpp/skia/include/gpu/graphite/Recording.h +19 -9
  180. package/cpp/skia/include/gpu/graphite/TextureInfo.h +40 -8
  181. package/cpp/skia/include/gpu/graphite/dawn/DawnBackendContext.h +25 -0
  182. package/cpp/skia/include/gpu/graphite/mtl/MtlBackendContext.h +3 -2
  183. package/cpp/skia/include/gpu/graphite/vk/VulkanGraphiteTypes.h +69 -0
  184. package/cpp/skia/include/gpu/mtl/MtlMemoryAllocator.h +39 -0
  185. package/cpp/skia/include/gpu/vk/GrVkBackendContext.h +21 -19
  186. package/cpp/skia/include/gpu/vk/GrVkExtensions.h +2 -50
  187. package/cpp/skia/include/gpu/vk/GrVkMemoryAllocator.h +2 -127
  188. package/cpp/skia/include/gpu/vk/GrVkTypes.h +5 -43
  189. package/cpp/skia/include/gpu/vk/VulkanBackendContext.h +46 -0
  190. package/cpp/skia/include/gpu/vk/VulkanExtensions.h +67 -0
  191. package/cpp/skia/include/gpu/vk/VulkanMemoryAllocator.h +116 -0
  192. package/cpp/skia/include/gpu/vk/VulkanTypes.h +59 -0
  193. package/cpp/skia/include/pathops/SkPathOps.h +1 -1
  194. package/cpp/skia/include/private/SkColorData.h +10 -40
  195. package/cpp/skia/include/private/SkEncodedInfo.h +9 -3
  196. package/cpp/skia/include/private/SkFloatingPoint.h +9 -6
  197. package/cpp/skia/include/private/SkHalf.h +5 -52
  198. package/cpp/skia/include/private/SkMacros.h +1 -1
  199. package/cpp/skia/include/private/SkMalloc.h +4 -0
  200. package/cpp/skia/include/private/SkPathRef.h +10 -10
  201. package/cpp/skia/include/private/SkSLModifiers.h +59 -23
  202. package/cpp/skia/include/private/SkSLProgramKind.h +1 -0
  203. package/cpp/skia/include/private/SkSLSymbol.h +7 -3
  204. package/cpp/skia/include/private/SkStringView.h +4 -0
  205. package/cpp/skia/include/private/SkTArray.h +21 -7
  206. package/cpp/skia/include/private/SkTDArray.h +173 -285
  207. package/cpp/skia/include/private/SkTHash.h +33 -32
  208. package/cpp/skia/include/private/SkTemplates.h +24 -26
  209. package/cpp/skia/include/private/SkVx.h +218 -135
  210. package/cpp/skia/include/private/chromium/GrSlug.h +3 -65
  211. package/cpp/skia/include/private/chromium/SkChromeRemoteGlyphCache.h +6 -3
  212. package/cpp/skia/include/private/chromium/Slug.h +76 -0
  213. package/cpp/skia/include/private/gpu/ganesh/GrTypesPriv.h +6 -1
  214. package/cpp/skia/include/private/gpu/ganesh/GrVkTypesPriv.h +5 -39
  215. package/cpp/skia/include/private/gpu/graphite/VulkanGraphiteTypesPriv.h +63 -0
  216. package/cpp/skia/include/{gpu/vk/GrVkVulkan.h → private/gpu/vk/SkiaVulkan.h} +2 -2
  217. package/cpp/skia/include/private/gpu/vk/VulkanTypesPriv.h +57 -0
  218. package/cpp/skia/include/sksl/DSL.h +0 -1
  219. package/cpp/skia/include/sksl/DSLBlock.h +4 -18
  220. package/cpp/skia/include/sksl/DSLCase.h +2 -8
  221. package/cpp/skia/include/sksl/DSLCore.h +8 -15
  222. package/cpp/skia/include/sksl/DSLExpression.h +51 -142
  223. package/cpp/skia/include/sksl/DSLFunction.h +7 -15
  224. package/cpp/skia/include/sksl/DSLModifiers.h +5 -2
  225. package/cpp/skia/include/sksl/DSLStatement.h +4 -39
  226. package/cpp/skia/include/sksl/DSLSymbols.h +1 -11
  227. package/cpp/skia/include/sksl/DSLType.h +20 -12
  228. package/cpp/skia/include/sksl/DSLVar.h +56 -146
  229. package/cpp/skia/include/sksl/SkSLErrorReporter.h +2 -15
  230. package/cpp/skia/include/sksl/SkSLOperator.h +62 -59
  231. package/cpp/skia/include/sksl/SkSLPosition.h +2 -0
  232. package/cpp/skia/include/sksl/SkSLVersion.h +27 -0
  233. package/cpp/skia/include/svg/SkSVGCanvas.h +1 -0
  234. package/cpp/skia/include/utils/SkAnimCodecPlayer.h +1 -1
  235. package/cpp/skia/include/utils/SkBase64.h +2 -0
  236. package/cpp/skia/include/utils/SkCustomTypeface.h +24 -11
  237. package/cpp/skia/include/utils/SkEventTracer.h +12 -1
  238. package/cpp/skia/include/utils/SkNWayCanvas.h +11 -4
  239. package/cpp/skia/include/utils/SkPaintFilterCanvas.h +9 -4
  240. package/cpp/skia/include/utils/SkParse.h +3 -0
  241. package/cpp/skia/include/utils/SkShadowUtils.h +2 -0
  242. package/cpp/skia/include/utils/SkTextUtils.h +2 -1
  243. package/cpp/skia/{include/third_party → modules}/skcms/skcms.h +10 -0
  244. package/cpp/skia/modules/skcms/skcms_internal.h +56 -0
  245. package/cpp/skia/modules/skcms/src/Transform_inl.h +1609 -0
  246. package/cpp/skia/modules/skparagraph/include/DartTypes.h +153 -0
  247. package/cpp/skia/modules/skparagraph/include/FontArguments.h +46 -0
  248. package/cpp/skia/modules/skparagraph/include/FontCollection.h +84 -0
  249. package/cpp/skia/modules/skparagraph/include/Metrics.h +98 -0
  250. package/cpp/skia/modules/skparagraph/include/Paragraph.h +111 -0
  251. package/cpp/skia/modules/skparagraph/include/ParagraphBuilder.h +69 -0
  252. package/cpp/skia/modules/skparagraph/include/ParagraphCache.h +77 -0
  253. package/cpp/skia/modules/skparagraph/include/ParagraphStyle.h +143 -0
  254. package/cpp/skia/modules/skparagraph/include/TextShadow.h +30 -0
  255. package/cpp/skia/modules/skparagraph/include/TextStyle.h +352 -0
  256. package/cpp/skia/modules/skparagraph/include/TypefaceFontProvider.h +81 -0
  257. package/cpp/skia/modules/svg/include/SkSVGAttributeParser.h +1 -1
  258. package/cpp/skia/modules/svg/include/SkSVGTypes.h +3 -3
  259. package/cpp/skia/src/core/SkLRUCache.h +126 -0
  260. package/cpp/skia/src/core/SkTInternalLList.h +302 -0
  261. package/cpp/utils/RNSkTimingInfo.h +1 -0
  262. package/ios/RNSkia-iOS/RNSkMetalCanvasProvider.h +15 -4
  263. package/ios/RNSkia-iOS/RNSkMetalCanvasProvider.mm +40 -54
  264. package/ios/RNSkia-iOS/SkiaDomViewManager.h +8 -0
  265. package/ios/RNSkia-iOS/SkiaDomViewManager.mm +51 -0
  266. package/lib/commonjs/dom/nodes/JsiSkDOM.js +56 -56
  267. package/lib/commonjs/dom/nodes/JsiSkDOM.js.map +1 -1
  268. package/lib/commonjs/dom/nodes/RenderNode.js +1 -1
  269. package/lib/commonjs/dom/nodes/RenderNode.js.map +1 -1
  270. package/lib/commonjs/renderer/Canvas.js +19 -63
  271. package/lib/commonjs/renderer/Canvas.js.map +1 -1
  272. package/lib/commonjs/renderer/DependencyManager.js +0 -5
  273. package/lib/commonjs/renderer/DependencyManager.js.map +1 -1
  274. package/lib/commonjs/renderer/HostComponents.js.map +1 -1
  275. package/lib/commonjs/renderer/useCanvas.js +4 -18
  276. package/lib/commonjs/renderer/useCanvas.js.map +1 -1
  277. package/lib/commonjs/views/SkiaBaseWebView.js +7 -0
  278. package/lib/commonjs/views/SkiaBaseWebView.js.map +1 -1
  279. package/lib/commonjs/views/SkiaDomView.js +152 -0
  280. package/lib/commonjs/views/SkiaDomView.js.map +1 -0
  281. package/lib/commonjs/views/SkiaDomView.web.js +55 -0
  282. package/lib/commonjs/views/SkiaDomView.web.js.map +1 -0
  283. package/lib/commonjs/views/SkiaPictureView.js +16 -2
  284. package/lib/commonjs/views/SkiaPictureView.js.map +1 -1
  285. package/lib/commonjs/views/SkiaView.js +17 -2
  286. package/lib/commonjs/views/SkiaView.js.map +1 -1
  287. package/lib/commonjs/views/index.js +13 -0
  288. package/lib/commonjs/views/index.js.map +1 -1
  289. package/lib/commonjs/views/types.js.map +1 -1
  290. package/lib/module/dom/nodes/JsiSkDOM.js +56 -56
  291. package/lib/module/dom/nodes/JsiSkDOM.js.map +1 -1
  292. package/lib/module/dom/nodes/RenderNode.js +1 -1
  293. package/lib/module/dom/nodes/RenderNode.js.map +1 -1
  294. package/lib/module/renderer/Canvas.js +20 -64
  295. package/lib/module/renderer/Canvas.js.map +1 -1
  296. package/lib/module/renderer/DependencyManager.js +0 -5
  297. package/lib/module/renderer/DependencyManager.js.map +1 -1
  298. package/lib/module/renderer/HostComponents.js.map +1 -1
  299. package/lib/module/renderer/useCanvas.js +2 -13
  300. package/lib/module/renderer/useCanvas.js.map +1 -1
  301. package/lib/module/views/SkiaBaseWebView.js +7 -0
  302. package/lib/module/views/SkiaBaseWebView.js.map +1 -1
  303. package/lib/module/views/SkiaDomView.js +128 -0
  304. package/lib/module/views/SkiaDomView.js.map +1 -0
  305. package/lib/module/views/SkiaDomView.web.js +41 -0
  306. package/lib/module/views/SkiaDomView.web.js.map +1 -0
  307. package/lib/module/views/SkiaPictureView.js +14 -2
  308. package/lib/module/views/SkiaPictureView.js.map +1 -1
  309. package/lib/module/views/SkiaView.js +15 -2
  310. package/lib/module/views/SkiaView.js.map +1 -1
  311. package/lib/module/views/index.js +1 -0
  312. package/lib/module/views/index.js.map +1 -1
  313. package/lib/module/views/types.js.map +1 -1
  314. package/lib/typescript/src/dom/nodes/JsiSkDOM.d.ts +57 -64
  315. package/lib/typescript/src/renderer/Canvas.d.ts +5 -8
  316. package/lib/typescript/src/renderer/DependencyManager.d.ts +0 -2
  317. package/lib/typescript/src/renderer/HostComponents.d.ts +66 -3
  318. package/lib/typescript/src/renderer/useCanvas.d.ts +0 -6
  319. package/lib/typescript/src/views/SkiaBaseWebView.d.ts +4 -0
  320. package/lib/typescript/src/views/SkiaDomView.d.ts +31 -0
  321. package/lib/typescript/src/views/SkiaDomView.web.d.ts +7 -0
  322. package/lib/typescript/src/views/index.d.ts +1 -0
  323. package/lib/typescript/src/views/types.d.ts +12 -2
  324. package/libs/android/arm64-v8a/libskia.a +0 -0
  325. package/libs/android/arm64-v8a/libskottie.a +0 -0
  326. package/libs/android/arm64-v8a/libskparagraph.a +0 -0
  327. package/libs/android/arm64-v8a/libsksg.a +0 -0
  328. package/libs/android/arm64-v8a/libskshaper.a +0 -0
  329. package/libs/android/arm64-v8a/libskunicode.a +0 -0
  330. package/libs/android/arm64-v8a/libsvg.a +0 -0
  331. package/libs/android/armeabi-v7a/libskia.a +0 -0
  332. package/libs/android/armeabi-v7a/libskottie.a +0 -0
  333. package/libs/android/armeabi-v7a/libskparagraph.a +0 -0
  334. package/libs/android/armeabi-v7a/libsksg.a +0 -0
  335. package/libs/android/armeabi-v7a/libskshaper.a +0 -0
  336. package/libs/android/armeabi-v7a/libskunicode.a +0 -0
  337. package/libs/android/armeabi-v7a/libsvg.a +0 -0
  338. package/libs/android/x86/libskia.a +0 -0
  339. package/libs/android/x86/libskottie.a +0 -0
  340. package/libs/android/x86/libskparagraph.a +0 -0
  341. package/libs/android/x86/libsksg.a +0 -0
  342. package/libs/android/x86/libskshaper.a +0 -0
  343. package/libs/android/x86/libskunicode.a +0 -0
  344. package/libs/android/x86/libsvg.a +0 -0
  345. package/libs/android/x86_64/libskia.a +0 -0
  346. package/libs/android/x86_64/libskottie.a +0 -0
  347. package/libs/android/x86_64/libskparagraph.a +0 -0
  348. package/libs/android/x86_64/libsksg.a +0 -0
  349. package/libs/android/x86_64/libskshaper.a +0 -0
  350. package/libs/android/x86_64/libskunicode.a +0 -0
  351. package/libs/android/x86_64/libsvg.a +0 -0
  352. package/libs/ios/libskia.xcframework/ios-arm64_arm64e/libskia.a +0 -0
  353. package/libs/ios/libskia.xcframework/ios-arm64_arm64e_x86_64-simulator/libskia.a +0 -0
  354. package/libs/ios/libskottie.xcframework/ios-arm64_arm64e/libskottie.a +0 -0
  355. package/libs/ios/libskottie.xcframework/ios-arm64_arm64e_x86_64-simulator/libskottie.a +0 -0
  356. package/libs/ios/libskparagraph.xcframework/Info.plist +42 -0
  357. package/libs/ios/libskparagraph.xcframework/ios-arm64_arm64e/libskparagraph.a +0 -0
  358. package/libs/ios/libskparagraph.xcframework/ios-arm64_arm64e_x86_64-simulator/libskparagraph.a +0 -0
  359. package/libs/ios/libsksg.xcframework/Info.plist +5 -5
  360. package/libs/ios/libsksg.xcframework/ios-arm64_arm64e/libsksg.a +0 -0
  361. package/libs/ios/libsksg.xcframework/ios-arm64_arm64e_x86_64-simulator/libsksg.a +0 -0
  362. package/libs/ios/libskshaper.xcframework/ios-arm64_arm64e/libskshaper.a +0 -0
  363. package/libs/ios/libskshaper.xcframework/ios-arm64_arm64e_x86_64-simulator/libskshaper.a +0 -0
  364. package/libs/ios/libskunicode.xcframework/Info.plist +42 -0
  365. package/libs/ios/libskunicode.xcframework/ios-arm64_arm64e/libskunicode.a +0 -0
  366. package/libs/ios/libskunicode.xcframework/ios-arm64_arm64e_x86_64-simulator/libskunicode.a +0 -0
  367. package/libs/ios/libsvg.xcframework/ios-arm64_arm64e/libsvg.a +0 -0
  368. package/libs/ios/libsvg.xcframework/ios-arm64_arm64e_x86_64-simulator/libsvg.a +0 -0
  369. package/package.json +5 -3
  370. package/react-native-skia.podspec +3 -1
  371. package/src/dom/nodes/JsiSkDOM.ts +170 -56
  372. package/src/dom/nodes/RenderNode.ts +1 -1
  373. package/src/renderer/Canvas.tsx +32 -56
  374. package/src/renderer/DependencyManager.tsx +0 -5
  375. package/src/renderer/HostComponents.ts +152 -1
  376. package/src/renderer/useCanvas.ts +1 -15
  377. package/src/views/SkiaBaseWebView.tsx +4 -0
  378. package/src/views/SkiaDomView.tsx +120 -0
  379. package/src/views/SkiaDomView.web.tsx +37 -0
  380. package/src/views/SkiaPictureView.tsx +10 -2
  381. package/src/views/SkiaView.tsx +11 -3
  382. package/src/views/index.ts +1 -0
  383. package/src/views/types.ts +19 -2
  384. package/cpp/jsi/JsiSimpleValueWrapper.h +0 -99
  385. package/cpp/skia/include/c/sk_canvas.h +0 -159
  386. package/cpp/skia/include/c/sk_colorspace.h +0 -25
  387. package/cpp/skia/include/c/sk_data.h +0 -65
  388. package/cpp/skia/include/c/sk_image.h +0 -71
  389. package/cpp/skia/include/c/sk_imageinfo.h +0 -62
  390. package/cpp/skia/include/c/sk_maskfilter.h +0 -47
  391. package/cpp/skia/include/c/sk_matrix.h +0 -49
  392. package/cpp/skia/include/c/sk_paint.h +0 -145
  393. package/cpp/skia/include/c/sk_path.h +0 -102
  394. package/cpp/skia/include/c/sk_picture.h +0 -70
  395. package/cpp/skia/include/c/sk_shader.h +0 -143
  396. package/cpp/skia/include/c/sk_surface.h +0 -73
  397. package/cpp/skia/include/c/sk_types.h +0 -278
  398. package/cpp/skia/include/gpu/graphite/SkStuff.h +0 -47
  399. package/cpp/skia/include/private/SkNx.h +0 -430
  400. package/cpp/skia/include/private/SkNx_neon.h +0 -713
  401. package/cpp/skia/include/private/SkNx_sse.h +0 -823
  402. package/cpp/skia/include/sksl/DSLRuntimeEffects.h +0 -32
  403. package/cpp/skia/include/sksl/DSLWrapper.h +0 -77
@@ -14,6 +14,23 @@
14
14
 
15
15
  class SK_API SkEncoder : SkNoncopyable {
16
16
  public:
17
+ /**
18
+ * A single frame to be encoded into an animated image.
19
+ *
20
+ * If a frame does not fit in the canvas size, this is an error.
21
+ * TODO(skia:13705): Add offsets when we have support for an encoder that supports using
22
+ * offsets.
23
+ */
24
+ struct SK_API Frame {
25
+ /**
26
+ * Pixmap of the frame.
27
+ */
28
+ SkPixmap pixmap;
29
+ /**
30
+ * Duration of the frame in millseconds.
31
+ */
32
+ int duration;
33
+ };
17
34
 
18
35
  /**
19
36
  * Encode |numRows| rows of input. If the caller requests more rows than are remaining
@@ -8,6 +8,7 @@
8
8
  #ifndef SkWebpEncoder_DEFINED
9
9
  #define SkWebpEncoder_DEFINED
10
10
 
11
+ #include "include/core/SkSpan.h"
11
12
  #include "include/encode/SkEncoder.h"
12
13
 
13
14
  class SkWStream;
@@ -43,6 +44,22 @@ namespace SkWebpEncoder {
43
44
  * Returns true on success. Returns false on an invalid or unsupported |src|.
44
45
  */
45
46
  SK_API bool Encode(SkWStream* dst, const SkPixmap& src, const Options& options);
47
+
48
+ /**
49
+ * Encode the |src| frames to the |dst| stream.
50
+ * |options| may be used to control the encoding behavior.
51
+ *
52
+ * The size of the first frame will be used as the canvas size. If any other frame does
53
+ * not match the canvas size, this is an error.
54
+ *
55
+ * Returns true on success. Returns false on an invalid or unsupported |src|.
56
+ *
57
+ * Note: libwebp API also supports set background color, loop limit and customize
58
+ * lossy/lossless for each frame. These could be added later as needed.
59
+ */
60
+ SK_API bool EncodeAnimated(SkWStream* dst,
61
+ SkSpan<const SkEncoder::Frame> src,
62
+ const Options& options);
46
63
  } // namespace SkWebpEncoder
47
64
 
48
65
  #endif
@@ -16,6 +16,16 @@
16
16
 
17
17
  namespace skgpu {
18
18
 
19
+ /**
20
+ * Possible 3D APIs that may be used by Graphite.
21
+ */
22
+ enum class BackendApi : unsigned {
23
+ kDawn,
24
+ kMetal,
25
+ kVulkan,
26
+ kMock,
27
+ };
28
+
19
29
  /**
20
30
  * Value passed into various callbacks to tell the client the result of operations connected to a
21
31
  * specific callback. The actual interpretation of kFailed and kSuccess are dependent on the
@@ -27,6 +37,14 @@ enum class CallbackResult : bool {
27
37
  };
28
38
 
29
39
 
40
+ /**
41
+ * Is the data protected on the GPU or not.
42
+ */
43
+ enum class Protected : bool {
44
+ kNo = false,
45
+ kYes = true,
46
+ };
47
+
30
48
  } // namespace skgpu
31
49
 
32
50
  #endif // skgpu_GpuTypes_DEFINED
@@ -8,9 +8,14 @@
8
8
  #ifndef GrBackendSurface_DEFINED
9
9
  #define GrBackendSurface_DEFINED
10
10
 
11
+ // This include of GrBackendSurfaceMutableState is not needed here, but some clients were depending
12
+ // on the include here instead of including it themselves. Adding this back here until we can fix
13
+ // up clients so it can be removed.
11
14
  #include "include/gpu/GrBackendSurfaceMutableState.h"
15
+
12
16
  #include "include/gpu/GrSurfaceInfo.h"
13
17
  #include "include/gpu/GrTypes.h"
18
+ #include "include/gpu/MutableTextureState.h"
14
19
  #ifdef SK_GL
15
20
  #include "include/gpu/gl/GrGLTypes.h"
16
21
  #include "include/private/gpu/ganesh/GrGLTypesPriv.h"
@@ -25,11 +30,16 @@
25
30
  #include "include/gpu/dawn/GrDawnTypes.h"
26
31
  #endif
27
32
 
28
- class GrBackendSurfaceMutableStateImpl;
33
+ #include <string>
34
+
29
35
  class GrVkImageLayout;
30
36
  class GrGLTextureParameters;
31
37
  class GrColorFormatDesc;
32
38
 
39
+ namespace skgpu {
40
+ class MutableTextureStateRef;
41
+ }
42
+
33
43
  #ifdef SK_DAWN
34
44
  #include "webgpu/webgpu_cpp.h"
35
45
  #endif
@@ -267,38 +277,44 @@ public:
267
277
  GrBackendTexture(int width,
268
278
  int height,
269
279
  GrMipmapped,
270
- const GrGLTextureInfo& glInfo);
280
+ const GrGLTextureInfo& glInfo,
281
+ std::string_view label = {});
271
282
  #endif
272
283
 
273
284
  #ifdef SK_VULKAN
274
285
  GrBackendTexture(int width,
275
286
  int height,
276
- const GrVkImageInfo& vkInfo);
287
+ const GrVkImageInfo& vkInfo,
288
+ std::string_view label = {});
277
289
  #endif
278
290
 
279
291
  #ifdef SK_METAL
280
292
  GrBackendTexture(int width,
281
293
  int height,
282
294
  GrMipmapped,
283
- const GrMtlTextureInfo& mtlInfo);
295
+ const GrMtlTextureInfo& mtlInfo,
296
+ std::string_view label = {});
284
297
  #endif
285
298
 
286
299
  #ifdef SK_DIRECT3D
287
300
  GrBackendTexture(int width,
288
301
  int height,
289
- const GrD3DTextureResourceInfo& d3dInfo);
302
+ const GrD3DTextureResourceInfo& d3dInfo,
303
+ std::string_view label = {});
290
304
  #endif
291
305
 
292
306
  #ifdef SK_DAWN
293
307
  GrBackendTexture(int width,
294
308
  int height,
295
- const GrDawnTextureInfo& dawnInfo);
309
+ const GrDawnTextureInfo& dawnInfo,
310
+ std::string_view label = {});
296
311
  #endif
297
312
 
298
313
  GrBackendTexture(int width,
299
314
  int height,
300
315
  GrMipmapped,
301
- const GrMockTextureInfo& mockInfo);
316
+ const GrMockTextureInfo& mockInfo,
317
+ std::string_view label = {});
302
318
 
303
319
  GrBackendTexture(const GrBackendTexture& that);
304
320
 
@@ -309,6 +325,7 @@ public:
309
325
  SkISize dimensions() const { return {fWidth, fHeight}; }
310
326
  int width() const { return fWidth; }
311
327
  int height() const { return fHeight; }
328
+ std::string_view getLabel() const { return fLabel; }
312
329
  GrMipmapped mipmapped() const { return fMipmapped; }
313
330
  bool hasMipmaps() const { return fMipmapped == GrMipmapped::kYes; }
314
331
  /** deprecated alias of hasMipmaps(). */
@@ -372,7 +389,7 @@ public:
372
389
  // that can be set from this function are:
373
390
  //
374
391
  // Vulkan: VkImageLayout and QueueFamilyIndex
375
- void setMutableState(const GrBackendSurfaceMutableState&);
392
+ void setMutableState(const skgpu::MutableTextureState&);
376
393
 
377
394
  // Returns true if we are working with protected content.
378
395
  bool isProtected() const;
@@ -389,7 +406,7 @@ public:
389
406
 
390
407
  private:
391
408
  friend class GrVkGpu; // for getMutableState
392
- sk_sp<GrBackendSurfaceMutableStateImpl> getMutableState() const;
409
+ sk_sp<skgpu::MutableTextureStateRef> getMutableState() const;
393
410
 
394
411
  #ifdef SK_GL
395
412
  friend class GrGLTexture;
@@ -398,7 +415,8 @@ private:
398
415
  int height,
399
416
  GrMipmapped,
400
417
  const GrGLTextureInfo,
401
- sk_sp<GrGLTextureParameters>);
418
+ sk_sp<GrGLTextureParameters>,
419
+ std::string_view label = {});
402
420
  sk_sp<GrGLTextureParameters> getGLTextureParams() const;
403
421
  #endif
404
422
 
@@ -407,7 +425,8 @@ private:
407
425
  GrBackendTexture(int width,
408
426
  int height,
409
427
  const GrVkImageInfo& vkInfo,
410
- sk_sp<GrBackendSurfaceMutableStateImpl> mutableState);
428
+ sk_sp<skgpu::MutableTextureStateRef> mutableState,
429
+ std::string_view label = {});
411
430
  #endif
412
431
 
413
432
  #ifdef SK_DIRECT3D
@@ -416,7 +435,8 @@ private:
416
435
  GrBackendTexture(int width,
417
436
  int height,
418
437
  const GrD3DTextureResourceInfo& vkInfo,
419
- sk_sp<GrD3DResourceState> state);
438
+ sk_sp<GrD3DResourceState> state,
439
+ std::string_view label = {});
420
440
  sk_sp<GrD3DResourceState> getGrD3DResourceState() const;
421
441
  #endif
422
442
 
@@ -426,6 +446,7 @@ private:
426
446
  bool fIsValid;
427
447
  int fWidth; //<! width in pixels
428
448
  int fHeight; //<! height in pixels
449
+ const std::string fLabel;
429
450
  GrMipmapped fMipmapped;
430
451
  GrBackendApi fBackend;
431
452
  GrTextureType fTextureType;
@@ -449,7 +470,7 @@ private:
449
470
  GrDawnTextureInfo fDawnInfo;
450
471
  #endif
451
472
 
452
- sk_sp<GrBackendSurfaceMutableStateImpl> fMutableState;
473
+ sk_sp<skgpu::MutableTextureStateRef> fMutableState;
453
474
  };
454
475
 
455
476
  class SK_API GrBackendRenderTarget {
@@ -570,7 +591,7 @@ public:
570
591
  // that can be set from this function are:
571
592
  //
572
593
  // Vulkan: VkImageLayout and QueueFamilyIndex
573
- void setMutableState(const GrBackendSurfaceMutableState&);
594
+ void setMutableState(const skgpu::MutableTextureState&);
574
595
 
575
596
  // Returns true if we are working with protected content.
576
597
  bool isProtected() const;
@@ -585,14 +606,14 @@ public:
585
606
 
586
607
  private:
587
608
  friend class GrVkGpu; // for getMutableState
588
- sk_sp<GrBackendSurfaceMutableStateImpl> getMutableState() const;
609
+ sk_sp<skgpu::MutableTextureStateRef> getMutableState() const;
589
610
 
590
611
  #ifdef SK_VULKAN
591
612
  friend class GrVkRenderTarget;
592
613
  GrBackendRenderTarget(int width,
593
614
  int height,
594
615
  const GrVkImageInfo& vkInfo,
595
- sk_sp<GrBackendSurfaceMutableStateImpl> mutableState);
616
+ sk_sp<skgpu::MutableTextureStateRef> mutableState);
596
617
  #endif
597
618
 
598
619
  #ifdef SK_DIRECT3D
@@ -636,7 +657,7 @@ private:
636
657
  #ifdef SK_DAWN
637
658
  GrDawnRenderTargetInfo fDawnInfo;
638
659
  #endif
639
- sk_sp<GrBackendSurfaceMutableStateImpl> fMutableState;
660
+ sk_sp<skgpu::MutableTextureStateRef> fMutableState;
640
661
  };
641
662
 
642
663
  #endif
@@ -8,84 +8,19 @@
8
8
  #ifndef GrBackendSurfaceMutableState_DEFINED
9
9
  #define GrBackendSurfaceMutableState_DEFINED
10
10
 
11
- #include "include/gpu/GrTypes.h"
11
+ #include "include/gpu/MutableTextureState.h"
12
12
 
13
- #ifdef SK_VULKAN
14
- #include "include/private/gpu/ganesh/GrVkTypesPriv.h"
15
- #endif
16
-
17
- /**
18
- * Since Skia and clients can both modify gpu textures and their connected state, Skia needs a way
19
- * for clients to inform us if they have modifiend any of this state. In order to not need setters
20
- * for every single API and state, we use this class to be a generic wrapper around all the mutable
21
- * state. This class is used for calls that inform Skia of these texture/image state changes by the
22
- * client as well as for requesting state changes to be done by Skia. The backend specific state
23
- * that is wrapped by this class are:
24
- *
25
- * Vulkan: VkImageLayout and QueueFamilyIndex
26
- */
27
- class SK_API GrBackendSurfaceMutableState {
13
+ class GrBackendSurfaceMutableState : public skgpu::MutableTextureState {
28
14
  public:
29
- GrBackendSurfaceMutableState() {}
15
+ GrBackendSurfaceMutableState() = default;
30
16
 
31
17
  #ifdef SK_VULKAN
32
18
  GrBackendSurfaceMutableState(VkImageLayout layout, uint32_t queueFamilyIndex)
33
- : fVkState(layout, queueFamilyIndex)
34
- , fBackend(GrBackend::kVulkan)
35
- , fIsValid(true) {}
36
- #endif
37
-
38
- GrBackendSurfaceMutableState(const GrBackendSurfaceMutableState& that);
39
- GrBackendSurfaceMutableState& operator=(const GrBackendSurfaceMutableState& that);
40
-
41
- #ifdef SK_VULKAN
42
- // If this class is not Vulkan backed it will return value of VK_IMAGE_LAYOUT_UNDEFINED.
43
- // Otherwise it will return the VkImageLayout.
44
- VkImageLayout getVkImageLayout() const {
45
- if (this->isValid() && fBackend != GrBackendApi::kVulkan) {
46
- return VK_IMAGE_LAYOUT_UNDEFINED;
47
- }
48
- return fVkState.getImageLayout();
49
- }
50
-
51
- // If this class is not Vulkan backed it will return value of VK_QUEUE_FAMILY_IGNORED.
52
- // Otherwise it will return the VkImageLayout.
53
- uint32_t getQueueFamilyIndex() const {
54
- if (this->isValid() && fBackend != GrBackendApi::kVulkan) {
55
- return VK_QUEUE_FAMILY_IGNORED;
56
- }
57
- return fVkState.getQueueFamilyIndex();
58
- }
59
- #endif
60
-
61
- // Returns true if the backend mutable state has been initialized.
62
- bool isValid() const { return fIsValid; }
63
-
64
- GrBackendApi backend() const { return fBackend; }
65
-
66
- private:
67
- friend class GrBackendSurfaceMutableStateImpl;
68
- friend class GrVkGpu;
69
-
70
- #ifdef SK_VULKAN
71
- void setVulkanState(VkImageLayout layout, uint32_t queueFamilyIndex) {
72
- SkASSERT(!this->isValid() || fBackend == GrBackendApi::kVulkan);
73
- fVkState.setImageLayout(layout);
74
- fVkState.setQueueFamilyIndex(queueFamilyIndex);
75
- fBackend = GrBackendApi::kVulkan;
76
- fIsValid = true;
77
- }
78
- #endif
79
-
80
- union {
81
- char fPlaceholder;
82
- #ifdef SK_VULKAN
83
- GrVkSharedImageInfo fVkState;
19
+ : skgpu::MutableTextureState(layout, queueFamilyIndex) {}
84
20
  #endif
85
- };
86
21
 
87
- GrBackend fBackend = GrBackendApi::kMock;
88
- bool fIsValid = false;
22
+ GrBackendSurfaceMutableState(const GrBackendSurfaceMutableState& that)
23
+ : skgpu::MutableTextureState(that) {}
89
24
  };
90
25
 
91
26
  #endif
@@ -252,7 +252,7 @@ struct SK_API GrContextOptions {
252
252
 
253
253
  /**
254
254
  * If true, then add 1 pixel padding to all glyph masks in the atlas to support bi-lerp
255
- * rendering of all glyphs. This must be set to true to use GrSlug.
255
+ * rendering of all glyphs. This must be set to true to use Slugs.
256
256
  */
257
257
  #if defined(SK_EXPERIMENTAL_SIMULATE_DRAWGLYPHRUNLIST_WITH_SLUG) || \
258
258
  defined(SK_EXPERIMENTAL_SIMULATE_DRAWGLYPHRUNLIST_WITH_SLUG_SERIALIZE) || \
@@ -21,12 +21,13 @@
21
21
  class GrBackendFormat;
22
22
  class GrCaps;
23
23
  class GrContextThreadSafeProxyPriv;
24
- class GrTextBlobRedrawCoordinator;
25
24
  class GrThreadSafeCache;
26
25
  class GrThreadSafePipelineBuilder;
27
26
  class SkSurfaceCharacterization;
28
27
  class SkSurfaceProps;
29
28
 
29
+ namespace sktext::gpu { class TextBlobRedrawCoordinator; }
30
+
30
31
  /**
31
32
  * Can be used to perform actions related to the generating GrContext in a thread safe manner. The
32
33
  * proxy does not access the 3D API (e.g. OpenGL) that backs the generating GrContext.
@@ -149,14 +150,14 @@ private:
149
150
  // `init` method on GrContext_Base).
150
151
  void init(sk_sp<const GrCaps>, sk_sp<GrThreadSafePipelineBuilder>);
151
152
 
152
- const GrBackendApi fBackend;
153
- const GrContextOptions fOptions;
154
- const uint32_t fContextID;
155
- sk_sp<const GrCaps> fCaps;
156
- std::unique_ptr<GrTextBlobRedrawCoordinator> fTextBlobRedrawCoordinator;
157
- std::unique_ptr<GrThreadSafeCache> fThreadSafeCache;
158
- sk_sp<GrThreadSafePipelineBuilder> fPipelineBuilder;
159
- std::atomic<bool> fAbandoned{false};
153
+ const GrBackendApi fBackend;
154
+ const GrContextOptions fOptions;
155
+ const uint32_t fContextID;
156
+ sk_sp<const GrCaps> fCaps;
157
+ std::unique_ptr<sktext::gpu::TextBlobRedrawCoordinator> fTextBlobRedrawCoordinator;
158
+ std::unique_ptr<GrThreadSafeCache> fThreadSafeCache;
159
+ sk_sp<GrThreadSafePipelineBuilder> fPipelineBuilder;
160
+ std::atomic<bool> fAbandoned{false};
160
161
  };
161
162
 
162
163
  #else // !SK_SUPPORT_GPU
@@ -148,6 +148,9 @@ public:
148
148
  * The typical use case for this function is that the underlying 3D context was lost and further
149
149
  * API calls may crash.
150
150
  *
151
+ * This call is not valid to be made inside ReleaseProcs passed into SkSurface or SkImages. The
152
+ * call will simply fail (and assert in debug) if it is called while inside a ReleaseProc.
153
+ *
151
154
  * For Vulkan, even if the device becomes lost, the VkQueue, VkDevice, or VkInstance used to
152
155
  * create the context must be kept alive even after abandoning the context. Those objects must
153
156
  * live for the lifetime of the context object itself. The reason for this is so that
@@ -445,11 +448,13 @@ public:
445
448
  * For the Vulkan backend the layout of the created VkImage will be:
446
449
  * VK_IMAGE_LAYOUT_UNDEFINED.
447
450
  */
448
- GrBackendTexture createBackendTexture(int width, int height,
449
- const GrBackendFormat&,
450
- GrMipmapped,
451
- GrRenderable,
452
- GrProtected = GrProtected::kNo);
451
+ GrBackendTexture createBackendTexture(int width,
452
+ int height,
453
+ const GrBackendFormat&,
454
+ GrMipmapped,
455
+ GrRenderable,
456
+ GrProtected = GrProtected::kNo,
457
+ std::string_view label = {});
453
458
 
454
459
  /**
455
460
  * If possible, create an uninitialized backend texture. The client should ensure that the
@@ -463,7 +468,8 @@ public:
463
468
  SkColorType,
464
469
  GrMipmapped,
465
470
  GrRenderable,
466
- GrProtected = GrProtected::kNo);
471
+ GrProtected = GrProtected::kNo,
472
+ std::string_view label = {});
467
473
 
468
474
  /**
469
475
  * If possible, create a backend texture initialized to a particular color. The client should
@@ -481,7 +487,8 @@ public:
481
487
  GrRenderable,
482
488
  GrProtected = GrProtected::kNo,
483
489
  GrGpuFinishedProc finishedProc = nullptr,
484
- GrGpuFinishedContext finishedContext = nullptr);
490
+ GrGpuFinishedContext finishedContext = nullptr,
491
+ std::string_view label = {});
485
492
 
486
493
  /**
487
494
  * If possible, create a backend texture initialized to a particular color. The client should
@@ -501,7 +508,8 @@ public:
501
508
  GrRenderable,
502
509
  GrProtected = GrProtected::kNo,
503
510
  GrGpuFinishedProc finishedProc = nullptr,
504
- GrGpuFinishedContext finishedContext = nullptr);
511
+ GrGpuFinishedContext finishedContext = nullptr,
512
+ std::string_view label = {});
505
513
 
506
514
  /**
507
515
  * If possible, create a backend texture initialized with the provided pixmap data. The client
@@ -528,7 +536,8 @@ public:
528
536
  GrRenderable,
529
537
  GrProtected,
530
538
  GrGpuFinishedProc finishedProc = nullptr,
531
- GrGpuFinishedContext finishedContext = nullptr);
539
+ GrGpuFinishedContext finishedContext = nullptr,
540
+ std::string_view label = {});
532
541
 
533
542
  /**
534
543
  * Convenience version createBackendTexture() that takes just a base level pixmap.
@@ -538,9 +547,10 @@ public:
538
547
  GrRenderable renderable,
539
548
  GrProtected isProtected,
540
549
  GrGpuFinishedProc finishedProc = nullptr,
541
- GrGpuFinishedContext finishedContext = nullptr) {
550
+ GrGpuFinishedContext finishedContext = nullptr,
551
+ std::string_view label = {}) {
542
552
  return this->createBackendTexture(&srcData, 1, textureOrigin, renderable, isProtected,
543
- finishedProc, finishedContext);
553
+ finishedProc, finishedContext, label);
544
554
  }
545
555
 
546
556
  // Deprecated versions that do not take origin and assume top-left.
@@ -549,26 +559,30 @@ public:
549
559
  GrRenderable renderable,
550
560
  GrProtected isProtected,
551
561
  GrGpuFinishedProc finishedProc = nullptr,
552
- GrGpuFinishedContext finishedContext = nullptr) {
562
+ GrGpuFinishedContext finishedContext = nullptr,
563
+ std::string_view label = {}) {
553
564
  return this->createBackendTexture(srcData,
554
565
  numLevels,
555
566
  kTopLeft_GrSurfaceOrigin,
556
567
  renderable,
557
568
  isProtected,
558
569
  finishedProc,
559
- finishedContext);
570
+ finishedContext,
571
+ label);
560
572
  }
561
573
  GrBackendTexture createBackendTexture(const SkPixmap& srcData,
562
574
  GrRenderable renderable,
563
575
  GrProtected isProtected,
564
576
  GrGpuFinishedProc finishedProc = nullptr,
565
- GrGpuFinishedContext finishedContext = nullptr) {
577
+ GrGpuFinishedContext finishedContext = nullptr,
578
+ std::string_view label = {}) {
566
579
  return this->createBackendTexture(&srcData,
567
580
  1,
568
581
  renderable,
569
582
  isProtected,
570
583
  finishedProc,
571
- finishedContext);
584
+ finishedContext,
585
+ label);
572
586
  }
573
587
 
574
588
  /**
@@ -754,16 +768,16 @@ public:
754
768
 
755
769
  /**
756
770
  * Updates the state of the GrBackendTexture/RenderTarget to have the passed in
757
- * GrBackendSurfaceMutableState. All objects that wrap the backend surface (i.e. SkSurfaces and
771
+ * skgpu::MutableTextureState. All objects that wrap the backend surface (i.e. SkSurfaces and
758
772
  * SkImages) will also be aware of this state change. This call does not submit the state change
759
773
  * to the gpu, but requires the client to call `submit` to send it to the GPU. The work
760
774
  * for this call is ordered linearly with all other calls that require GrContext::submit to be
761
775
  * called (e.g updateBackendTexture and flush). If finishedProc is not null then it will be
762
776
  * called with finishedContext after the state transition is known to have occurred on the GPU.
763
777
  *
764
- * See GrBackendSurfaceMutableState to see what state can be set via this call.
778
+ * See skgpu::MutableTextureState to see what state can be set via this call.
765
779
  *
766
- * If the backend API is Vulkan, the caller can set the GrBackendSurfaceMutableState's
780
+ * If the backend API is Vulkan, the caller can set the skgpu::MutableTextureState's
767
781
  * VkImageLayout to VK_IMAGE_LAYOUT_UNDEFINED or queueFamilyIndex to VK_QUEUE_FAMILY_IGNORED to
768
782
  * tell Skia to not change those respective states.
769
783
  *
@@ -771,13 +785,13 @@ public:
771
785
  * previousState to have the values of the state before this call.
772
786
  */
773
787
  bool setBackendTextureState(const GrBackendTexture&,
774
- const GrBackendSurfaceMutableState&,
775
- GrBackendSurfaceMutableState* previousState = nullptr,
788
+ const skgpu::MutableTextureState&,
789
+ skgpu::MutableTextureState* previousState = nullptr,
776
790
  GrGpuFinishedProc finishedProc = nullptr,
777
791
  GrGpuFinishedContext finishedContext = nullptr);
778
792
  bool setBackendRenderTargetState(const GrBackendRenderTarget&,
779
- const GrBackendSurfaceMutableState&,
780
- GrBackendSurfaceMutableState* previousState = nullptr,
793
+ const skgpu::MutableTextureState&,
794
+ skgpu::MutableTextureState* previousState = nullptr,
781
795
  GrGpuFinishedProc finishedProc = nullptr,
782
796
  GrGpuFinishedContext finishedContext = nullptr);
783
797
 
@@ -865,6 +879,12 @@ private:
865
879
  std::unique_ptr<GrResourceCache> fResourceCache;
866
880
  std::unique_ptr<GrResourceProvider> fResourceProvider;
867
881
 
882
+ // This is incremented before we start calling ReleaseProcs from GrSurfaces and decremented
883
+ // after. A ReleaseProc may trigger code causing another resource to get freed so we to track
884
+ // the count to know if we in a ReleaseProc at any level. When this is set to a value greated
885
+ // than zero we will not allow abandonContext calls to be made on the context.
886
+ int fInsideReleaseProcCnt = 0;
887
+
868
888
  bool fDidTestPMConversions;
869
889
  // true if the PM/UPM conversion succeeded; false otherwise
870
890
  bool fPMUPMConversionsRoundTrip;
@@ -27,13 +27,14 @@ class GrProgramInfo;
27
27
  class GrProxyProvider;
28
28
  class GrRecordingContextPriv;
29
29
  class GrSurfaceProxy;
30
- class GrTextBlobRedrawCoordinator;
31
30
  class GrThreadSafeCache;
32
31
  class SkArenaAlloc;
32
+ class SkCapabilities;
33
33
  class SkJSONWriter;
34
34
 
35
35
  namespace sktext::gpu {
36
36
  class SubRunAllocator;
37
+ class TextBlobRedrawCoordinator;
37
38
  }
38
39
 
39
40
  #if GR_TEST_UTILS
@@ -97,6 +98,8 @@ public:
97
98
  return INHERITED::maxSurfaceSampleCountForColorType(colorType);
98
99
  }
99
100
 
101
+ SK_API sk_sp<const SkCapabilities> skCapabilities() const;
102
+
100
103
  // Provides access to functions that aren't part of the public API.
101
104
  GrRecordingContextPriv priv();
102
105
  const GrRecordingContextPriv priv() const; // NOLINT(readability-const-return-type)
@@ -189,8 +192,8 @@ protected:
189
192
  // same lifetime at the DDL itself.
190
193
  virtual void detachProgramData(SkTArray<ProgramData>*) {}
191
194
 
192
- GrTextBlobRedrawCoordinator* getTextBlobRedrawCoordinator();
193
- const GrTextBlobRedrawCoordinator* getTextBlobRedrawCoordinator() const;
195
+ sktext::gpu::TextBlobRedrawCoordinator* getTextBlobRedrawCoordinator();
196
+ const sktext::gpu::TextBlobRedrawCoordinator* getTextBlobRedrawCoordinator() const;
194
197
 
195
198
  GrThreadSafeCache* threadSafeCache();
196
199
  const GrThreadSafeCache* threadSafeCache() const;
@@ -36,37 +36,37 @@ private:
36
36
  * basic bitfield.
37
37
  */
38
38
  #define GR_MAKE_BITFIELD_CLASS_OPS(X) \
39
- SK_MAYBE_UNUSED constexpr GrTFlagsMask<X> operator~(X a) { \
39
+ [[maybe_unused]] constexpr GrTFlagsMask<X> operator~(X a) { \
40
40
  return GrTFlagsMask<X>(~static_cast<int>(a)); \
41
41
  } \
42
- SK_MAYBE_UNUSED constexpr X operator|(X a, X b) { \
42
+ [[maybe_unused]] constexpr X operator|(X a, X b) { \
43
43
  return static_cast<X>(static_cast<int>(a) | static_cast<int>(b)); \
44
44
  } \
45
- SK_MAYBE_UNUSED inline X& operator|=(X& a, X b) { \
45
+ [[maybe_unused]] inline X& operator|=(X& a, X b) { \
46
46
  return (a = a | b); \
47
47
  } \
48
- SK_MAYBE_UNUSED constexpr bool operator&(X a, X b) { \
48
+ [[maybe_unused]] constexpr bool operator&(X a, X b) { \
49
49
  return SkToBool(static_cast<int>(a) & static_cast<int>(b)); \
50
50
  } \
51
- SK_MAYBE_UNUSED constexpr GrTFlagsMask<X> operator|(GrTFlagsMask<X> a, GrTFlagsMask<X> b) { \
51
+ [[maybe_unused]] constexpr GrTFlagsMask<X> operator|(GrTFlagsMask<X> a, GrTFlagsMask<X> b) { \
52
52
  return GrTFlagsMask<X>(a.value() | b.value()); \
53
53
  } \
54
- SK_MAYBE_UNUSED constexpr GrTFlagsMask<X> operator|(GrTFlagsMask<X> a, X b) { \
54
+ [[maybe_unused]] constexpr GrTFlagsMask<X> operator|(GrTFlagsMask<X> a, X b) { \
55
55
  return GrTFlagsMask<X>(a.value() | static_cast<int>(b)); \
56
56
  } \
57
- SK_MAYBE_UNUSED constexpr GrTFlagsMask<X> operator|(X a, GrTFlagsMask<X> b) { \
57
+ [[maybe_unused]] constexpr GrTFlagsMask<X> operator|(X a, GrTFlagsMask<X> b) { \
58
58
  return GrTFlagsMask<X>(static_cast<int>(a) | b.value()); \
59
59
  } \
60
- SK_MAYBE_UNUSED constexpr X operator&(GrTFlagsMask<X> a, GrTFlagsMask<X> b) { \
60
+ [[maybe_unused]] constexpr X operator&(GrTFlagsMask<X> a, GrTFlagsMask<X> b) { \
61
61
  return static_cast<X>(a.value() & b.value()); \
62
62
  } \
63
- SK_MAYBE_UNUSED constexpr X operator&(GrTFlagsMask<X> a, X b) { \
63
+ [[maybe_unused]] constexpr X operator&(GrTFlagsMask<X> a, X b) { \
64
64
  return static_cast<X>(a.value() & static_cast<int>(b)); \
65
65
  } \
66
- SK_MAYBE_UNUSED constexpr X operator&(X a, GrTFlagsMask<X> b) { \
66
+ [[maybe_unused]] constexpr X operator&(X a, GrTFlagsMask<X> b) { \
67
67
  return static_cast<X>(static_cast<int>(a) & b.value()); \
68
68
  } \
69
- SK_MAYBE_UNUSED inline X& operator&=(X& a, GrTFlagsMask<X> b) { \
69
+ [[maybe_unused]] inline X& operator&=(X& a, GrTFlagsMask<X> b) { \
70
70
  return (a = a & b); \
71
71
  } \
72
72