@shopify/react-native-skia 0.1.158 → 0.1.159

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