@shopify/react-native-skia 0.1.157 → 0.1.159

Sign up to get free protection for your applications and to get access to all the features.
Files changed (482) hide show
  1. package/android/CMakeLists.txt +35 -11
  2. package/android/build.gradle +31 -30
  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/JsiSkContourMeasure.h +7 -5
  11. package/cpp/api/JsiSkHostObjects.h +6 -0
  12. package/cpp/api/JsiSkImageFilterFactory.h +1 -1
  13. package/cpp/api/JsiSkPaint.h +9 -2
  14. package/cpp/api/JsiSkPath.h +1 -0
  15. package/cpp/api/JsiSkRuntimeEffect.h +36 -36
  16. package/cpp/jsi/JsiHostObject.cpp +16 -28
  17. package/cpp/jsi/JsiHostObject.h +127 -7
  18. package/cpp/jsi/JsiValue.cpp +346 -0
  19. package/cpp/jsi/JsiValue.h +222 -0
  20. package/cpp/jsi/JsiValueWrapper.h +33 -5
  21. package/cpp/rnskia/RNSkDomView.cpp +220 -0
  22. package/cpp/rnskia/RNSkDomView.h +140 -0
  23. package/cpp/rnskia/RNSkJsView.cpp +0 -4
  24. package/cpp/rnskia/RNSkJsView.h +6 -4
  25. package/cpp/rnskia/RNSkManager.cpp +7 -0
  26. package/cpp/rnskia/RNSkPictureView.h +5 -8
  27. package/cpp/rnskia/RNSkView.h +113 -5
  28. package/cpp/rnskia/dom/JsiDomApi.h +167 -0
  29. package/cpp/rnskia/dom/base/BaseNodeProp.h +72 -0
  30. package/cpp/rnskia/dom/base/DerivedNodeProp.h +187 -0
  31. package/cpp/rnskia/dom/base/DrawingContext.cpp +227 -0
  32. package/cpp/rnskia/dom/base/DrawingContext.h +136 -0
  33. package/cpp/rnskia/dom/base/JsiDependencyManager.h +294 -0
  34. package/cpp/rnskia/dom/base/JsiDomDeclarationNode.h +176 -0
  35. package/cpp/rnskia/dom/base/JsiDomDrawingNode.h +50 -0
  36. package/cpp/rnskia/dom/base/JsiDomNode.h +361 -0
  37. package/cpp/rnskia/dom/base/JsiDomRenderNode.h +267 -0
  38. package/cpp/rnskia/dom/base/NodeProp.h +130 -0
  39. package/cpp/rnskia/dom/base/NodePropsContainer.h +119 -0
  40. package/cpp/rnskia/dom/nodes/JsiBackdropFilterNode.h +38 -0
  41. package/cpp/rnskia/dom/nodes/JsiBlendNode.h +112 -0
  42. package/cpp/rnskia/dom/nodes/JsiBlurMaskNode.h +78 -0
  43. package/cpp/rnskia/dom/nodes/JsiBoxNode.h +104 -0
  44. package/cpp/rnskia/dom/nodes/JsiBoxShadowNode.h +33 -0
  45. package/cpp/rnskia/dom/nodes/JsiCircleNode.h +38 -0
  46. package/cpp/rnskia/dom/nodes/JsiColorFilterNodes.h +192 -0
  47. package/cpp/rnskia/dom/nodes/JsiCustomDrawingNode.h +123 -0
  48. package/cpp/rnskia/dom/nodes/JsiDiffRectNode.h +42 -0
  49. package/cpp/rnskia/dom/nodes/JsiFillNode.h +22 -0
  50. package/cpp/rnskia/dom/nodes/JsiGlyphsNode.h +56 -0
  51. package/cpp/rnskia/dom/nodes/JsiGroupNode.h +26 -0
  52. package/cpp/rnskia/dom/nodes/JsiImageFilterNodes.h +415 -0
  53. package/cpp/rnskia/dom/nodes/JsiImageNode.h +34 -0
  54. package/cpp/rnskia/dom/nodes/JsiImageSvgNode.h +44 -0
  55. package/cpp/rnskia/dom/nodes/JsiLayerNode.h +64 -0
  56. package/cpp/rnskia/dom/nodes/JsiLineNode.h +43 -0
  57. package/cpp/rnskia/dom/nodes/JsiOvalNode.h +34 -0
  58. package/cpp/rnskia/dom/nodes/JsiPaintNode.h +77 -0
  59. package/cpp/rnskia/dom/nodes/JsiPatchNode.h +54 -0
  60. package/cpp/rnskia/dom/nodes/JsiPathEffectNodes.h +315 -0
  61. package/cpp/rnskia/dom/nodes/JsiPathNode.h +181 -0
  62. package/cpp/rnskia/dom/nodes/JsiPictureNode.h +32 -0
  63. package/cpp/rnskia/dom/nodes/JsiPointsNode.h +51 -0
  64. package/cpp/rnskia/dom/nodes/JsiRRectNode.h +34 -0
  65. package/cpp/rnskia/dom/nodes/JsiRectNode.h +34 -0
  66. package/cpp/rnskia/dom/nodes/JsiShaderNodes.h +517 -0
  67. package/cpp/rnskia/dom/nodes/JsiTextBlobNode.h +47 -0
  68. package/cpp/rnskia/dom/nodes/JsiTextNode.h +54 -0
  69. package/cpp/rnskia/dom/nodes/JsiTextPathNode.h +32 -0
  70. package/cpp/rnskia/dom/nodes/JsiVerticesNode.h +43 -0
  71. package/cpp/rnskia/dom/props/BezierProps.h +63 -0
  72. package/cpp/rnskia/dom/props/BlendModeProp.h +101 -0
  73. package/cpp/rnskia/dom/props/BoxShadowProps.h +61 -0
  74. package/cpp/rnskia/dom/props/CircleProp.h +46 -0
  75. package/cpp/rnskia/dom/props/ClipProp.h +62 -0
  76. package/cpp/rnskia/dom/props/ColorProp.h +80 -0
  77. package/cpp/rnskia/dom/props/DrawingProp.h +33 -0
  78. package/cpp/rnskia/dom/props/FontProp.h +34 -0
  79. package/cpp/rnskia/dom/props/GlyphsProp.h +53 -0
  80. package/cpp/rnskia/dom/props/ImageProps.h +173 -0
  81. package/cpp/rnskia/dom/props/LayerProp.h +50 -0
  82. package/cpp/rnskia/dom/props/MatrixProp.h +33 -0
  83. package/cpp/rnskia/dom/props/NumbersProp.h +63 -0
  84. package/cpp/rnskia/dom/props/PaintProps.h +172 -0
  85. package/cpp/rnskia/dom/props/PathProp.h +55 -0
  86. package/cpp/rnskia/dom/props/PictureProp.h +38 -0
  87. package/cpp/rnskia/dom/props/PointProp.h +72 -0
  88. package/cpp/rnskia/dom/props/PointsProp.h +83 -0
  89. package/cpp/rnskia/dom/props/RRectProp.h +134 -0
  90. package/cpp/rnskia/dom/props/RadiusProp.h +43 -0
  91. package/cpp/rnskia/dom/props/RectProp.h +118 -0
  92. package/cpp/rnskia/dom/props/StrokeProps.h +75 -0
  93. package/cpp/rnskia/dom/props/SvgProp.h +37 -0
  94. package/cpp/rnskia/dom/props/TextBlobProp.h +128 -0
  95. package/cpp/rnskia/dom/props/TileModeProp.h +50 -0
  96. package/cpp/rnskia/dom/props/TransformProp.h +80 -0
  97. package/cpp/rnskia/dom/props/TransformsProps.h +68 -0
  98. package/cpp/rnskia/dom/props/UniformsProp.h +194 -0
  99. package/cpp/rnskia/dom/props/VertexModeProp.h +47 -0
  100. package/cpp/rnskia/dom/props/VerticesProps.h +67 -0
  101. package/cpp/rnskia/values/RNSkReadonlyValue.h +13 -4
  102. package/cpp/skia/include/android/SkAndroidFrameworkUtils.h +35 -1
  103. package/cpp/skia/include/codec/SkAndroidCodec.h +17 -1
  104. package/cpp/skia/include/codec/SkCodec.h +8 -5
  105. package/cpp/skia/include/core/SkAnnotation.h +2 -0
  106. package/cpp/skia/include/core/SkBitmap.h +52 -1
  107. package/cpp/skia/include/core/SkBlendMode.h +2 -0
  108. package/cpp/skia/include/core/SkCanvas.h +52 -31
  109. package/cpp/skia/include/core/SkCapabilities.h +44 -0
  110. package/cpp/skia/include/core/SkColor.h +7 -0
  111. package/cpp/skia/include/core/SkColorFilter.h +37 -0
  112. package/cpp/skia/include/core/SkColorSpace.h +1 -1
  113. package/cpp/skia/include/core/SkFont.h +4 -0
  114. package/cpp/skia/include/core/SkFontMgr.h +3 -0
  115. package/cpp/skia/include/core/SkGraphics.h +9 -0
  116. package/cpp/skia/include/core/SkImage.h +77 -17
  117. package/cpp/skia/include/core/SkImageEncoder.h +5 -3
  118. package/cpp/skia/include/core/SkImageGenerator.h +27 -17
  119. package/cpp/skia/include/core/SkM44.h +1 -0
  120. package/cpp/skia/include/core/SkMesh.h +120 -34
  121. package/cpp/skia/include/core/SkMilestone.h +1 -1
  122. package/cpp/skia/include/core/SkOverdrawCanvas.h +2 -1
  123. package/cpp/skia/include/core/SkPaint.h +15 -2
  124. package/cpp/skia/include/core/SkPath.h +4 -0
  125. package/cpp/skia/include/core/SkPathBuilder.h +1 -1
  126. package/cpp/skia/include/core/SkPicture.h +0 -3
  127. package/cpp/skia/include/core/SkPictureRecorder.h +0 -2
  128. package/cpp/skia/include/core/SkPixmap.h +19 -0
  129. package/cpp/skia/include/core/SkRasterHandleAllocator.h +3 -1
  130. package/cpp/skia/include/core/SkRect.h +11 -4
  131. package/cpp/skia/include/core/SkRefCnt.h +13 -1
  132. package/cpp/skia/include/core/SkRegion.h +6 -0
  133. package/cpp/skia/include/core/SkSamplingOptions.h +8 -6
  134. package/cpp/skia/include/core/SkScalar.h +6 -25
  135. package/cpp/skia/include/core/SkShader.h +20 -12
  136. package/cpp/skia/include/core/SkSpan.h +51 -19
  137. package/cpp/skia/include/core/SkStream.h +2 -2
  138. package/cpp/skia/include/core/SkString.h +11 -3
  139. package/cpp/skia/include/core/SkSurface.h +85 -8
  140. package/cpp/skia/include/core/SkTextBlob.h +5 -2
  141. package/cpp/skia/include/core/SkTypes.h +11 -10
  142. package/cpp/skia/include/docs/SkPDFDocument.h +0 -5
  143. package/cpp/skia/include/effects/Sk1DPathEffect.h +6 -1
  144. package/cpp/skia/include/effects/Sk2DPathEffect.h +4 -1
  145. package/cpp/skia/include/effects/SkColorMatrix.h +1 -0
  146. package/cpp/skia/include/effects/SkColorMatrixFilter.h +5 -8
  147. package/cpp/skia/include/effects/SkCornerPathEffect.h +5 -1
  148. package/cpp/skia/include/effects/SkDashPathEffect.h +5 -1
  149. package/cpp/skia/include/effects/SkGradientShader.h +68 -38
  150. package/cpp/skia/include/effects/SkHighContrastFilter.h +5 -1
  151. package/cpp/skia/include/effects/SkImageFilters.h +5 -4
  152. package/cpp/skia/include/effects/SkLumaColorFilter.h +4 -1
  153. package/cpp/skia/include/effects/SkOpPathEffect.h +6 -2
  154. package/cpp/skia/include/effects/SkOverdrawColorFilter.h +5 -2
  155. package/cpp/skia/include/effects/SkRuntimeEffect.h +54 -62
  156. package/cpp/skia/include/effects/SkShaderMaskFilter.h +3 -1
  157. package/cpp/skia/include/effects/SkTableColorFilter.h +8 -21
  158. package/cpp/skia/include/effects/SkTableMaskFilter.h +5 -1
  159. package/cpp/skia/include/effects/SkTrimPathEffect.h +5 -1
  160. package/cpp/skia/include/encode/SkEncoder.h +17 -0
  161. package/cpp/skia/include/encode/SkWebpEncoder.h +17 -0
  162. package/cpp/skia/include/gpu/GpuTypes.h +18 -0
  163. package/cpp/skia/include/gpu/GrBackendSurface.h +38 -17
  164. package/cpp/skia/include/gpu/GrBackendSurfaceMutableState.h +6 -71
  165. package/cpp/skia/include/gpu/GrContextOptions.h +1 -1
  166. package/cpp/skia/include/gpu/GrContextThreadSafeProxy.h +10 -9
  167. package/cpp/skia/include/gpu/GrDirectContext.h +42 -22
  168. package/cpp/skia/include/gpu/GrRecordingContext.h +6 -3
  169. package/cpp/skia/include/gpu/GrTypes.h +11 -11
  170. package/cpp/skia/include/gpu/MutableTextureState.h +122 -0
  171. package/cpp/skia/include/gpu/gl/GrGLFunctions.h +1 -0
  172. package/cpp/skia/include/gpu/gl/GrGLInterface.h +1 -0
  173. package/cpp/skia/include/gpu/graphite/BackendTexture.h +7 -0
  174. package/cpp/skia/include/gpu/graphite/CombinationBuilder.h +195 -0
  175. package/cpp/skia/include/gpu/graphite/Context.h +47 -55
  176. package/cpp/skia/include/gpu/graphite/ContextOptions.h +85 -0
  177. package/cpp/skia/include/gpu/graphite/GraphiteTypes.h +1 -17
  178. package/cpp/skia/include/gpu/graphite/ImageProvider.h +61 -0
  179. package/cpp/skia/include/gpu/graphite/Recorder.h +87 -8
  180. package/cpp/skia/include/gpu/graphite/Recording.h +19 -9
  181. package/cpp/skia/include/gpu/graphite/TextureInfo.h +40 -8
  182. package/cpp/skia/include/gpu/graphite/dawn/DawnBackendContext.h +25 -0
  183. package/cpp/skia/include/gpu/graphite/mtl/MtlBackendContext.h +3 -2
  184. package/cpp/skia/include/gpu/graphite/vk/VulkanGraphiteTypes.h +69 -0
  185. package/cpp/skia/include/gpu/mtl/MtlMemoryAllocator.h +39 -0
  186. package/cpp/skia/include/gpu/vk/GrVkBackendContext.h +21 -19
  187. package/cpp/skia/include/gpu/vk/GrVkExtensions.h +2 -50
  188. package/cpp/skia/include/gpu/vk/GrVkMemoryAllocator.h +2 -127
  189. package/cpp/skia/include/gpu/vk/GrVkTypes.h +5 -43
  190. package/cpp/skia/include/gpu/vk/VulkanBackendContext.h +46 -0
  191. package/cpp/skia/include/gpu/vk/VulkanExtensions.h +67 -0
  192. package/cpp/skia/include/gpu/vk/VulkanMemoryAllocator.h +116 -0
  193. package/cpp/skia/include/gpu/vk/VulkanTypes.h +59 -0
  194. package/cpp/skia/include/pathops/SkPathOps.h +1 -1
  195. package/cpp/skia/include/private/SkColorData.h +10 -40
  196. package/cpp/skia/include/private/SkEncodedInfo.h +9 -3
  197. package/cpp/skia/include/private/SkFloatingPoint.h +9 -6
  198. package/cpp/skia/include/private/SkHalf.h +5 -52
  199. package/cpp/skia/include/private/SkMacros.h +1 -1
  200. package/cpp/skia/include/private/SkMalloc.h +4 -0
  201. package/cpp/skia/include/private/SkPathRef.h +10 -10
  202. package/cpp/skia/include/private/SkSLModifiers.h +59 -23
  203. package/cpp/skia/include/private/SkSLProgramKind.h +1 -0
  204. package/cpp/skia/include/private/SkSLSymbol.h +7 -3
  205. package/cpp/skia/include/private/SkStringView.h +4 -0
  206. package/cpp/skia/include/private/SkTArray.h +21 -7
  207. package/cpp/skia/include/private/SkTDArray.h +173 -285
  208. package/cpp/skia/include/private/SkTHash.h +33 -32
  209. package/cpp/skia/include/private/SkTemplates.h +24 -26
  210. package/cpp/skia/include/private/SkVx.h +218 -135
  211. package/cpp/skia/include/private/chromium/GrSlug.h +3 -65
  212. package/cpp/skia/include/private/chromium/SkChromeRemoteGlyphCache.h +6 -3
  213. package/cpp/skia/include/private/chromium/Slug.h +76 -0
  214. package/cpp/skia/include/private/gpu/ganesh/GrTypesPriv.h +6 -1
  215. package/cpp/skia/include/private/gpu/ganesh/GrVkTypesPriv.h +5 -39
  216. package/cpp/skia/include/private/gpu/graphite/VulkanGraphiteTypesPriv.h +63 -0
  217. package/cpp/skia/include/{gpu/vk/GrVkVulkan.h → private/gpu/vk/SkiaVulkan.h} +2 -2
  218. package/cpp/skia/include/private/gpu/vk/VulkanTypesPriv.h +57 -0
  219. package/cpp/skia/include/sksl/DSL.h +0 -1
  220. package/cpp/skia/include/sksl/DSLBlock.h +4 -18
  221. package/cpp/skia/include/sksl/DSLCase.h +2 -8
  222. package/cpp/skia/include/sksl/DSLCore.h +8 -15
  223. package/cpp/skia/include/sksl/DSLExpression.h +51 -142
  224. package/cpp/skia/include/sksl/DSLFunction.h +7 -15
  225. package/cpp/skia/include/sksl/DSLModifiers.h +5 -2
  226. package/cpp/skia/include/sksl/DSLStatement.h +4 -39
  227. package/cpp/skia/include/sksl/DSLSymbols.h +1 -11
  228. package/cpp/skia/include/sksl/DSLType.h +20 -12
  229. package/cpp/skia/include/sksl/DSLVar.h +56 -146
  230. package/cpp/skia/include/sksl/SkSLErrorReporter.h +2 -15
  231. package/cpp/skia/include/sksl/SkSLOperator.h +62 -59
  232. package/cpp/skia/include/sksl/SkSLPosition.h +2 -0
  233. package/cpp/skia/include/sksl/SkSLVersion.h +27 -0
  234. package/cpp/skia/include/svg/SkSVGCanvas.h +1 -0
  235. package/cpp/skia/include/utils/SkAnimCodecPlayer.h +1 -1
  236. package/cpp/skia/include/utils/SkBase64.h +2 -0
  237. package/cpp/skia/include/utils/SkCustomTypeface.h +24 -11
  238. package/cpp/skia/include/utils/SkEventTracer.h +12 -1
  239. package/cpp/skia/include/utils/SkNWayCanvas.h +11 -4
  240. package/cpp/skia/include/utils/SkPaintFilterCanvas.h +9 -4
  241. package/cpp/skia/include/utils/SkParse.h +3 -0
  242. package/cpp/skia/include/utils/SkShadowUtils.h +2 -0
  243. package/cpp/skia/include/utils/SkTextUtils.h +2 -1
  244. package/cpp/skia/{include/third_party → modules}/skcms/skcms.h +10 -0
  245. package/cpp/skia/modules/skcms/skcms_internal.h +56 -0
  246. package/cpp/skia/modules/skcms/src/Transform_inl.h +1609 -0
  247. package/cpp/skia/modules/skparagraph/include/DartTypes.h +153 -0
  248. package/cpp/skia/modules/skparagraph/include/FontArguments.h +46 -0
  249. package/cpp/skia/modules/skparagraph/include/FontCollection.h +84 -0
  250. package/cpp/skia/modules/skparagraph/include/Metrics.h +98 -0
  251. package/cpp/skia/modules/skparagraph/include/Paragraph.h +111 -0
  252. package/cpp/skia/modules/skparagraph/include/ParagraphBuilder.h +69 -0
  253. package/cpp/skia/modules/skparagraph/include/ParagraphCache.h +77 -0
  254. package/cpp/skia/modules/skparagraph/include/ParagraphStyle.h +143 -0
  255. package/cpp/skia/modules/skparagraph/include/TextShadow.h +30 -0
  256. package/cpp/skia/modules/skparagraph/include/TextStyle.h +352 -0
  257. package/cpp/skia/modules/skparagraph/include/TypefaceFontProvider.h +81 -0
  258. package/cpp/skia/modules/svg/include/SkSVGAttributeParser.h +1 -1
  259. package/cpp/skia/modules/svg/include/SkSVGTypes.h +3 -3
  260. package/cpp/skia/src/core/SkLRUCache.h +126 -0
  261. package/cpp/skia/src/core/SkTInternalLList.h +302 -0
  262. package/cpp/utils/RNSkTimingInfo.h +1 -0
  263. package/ios/RNSkia-iOS/RNSkMetalCanvasProvider.h +15 -4
  264. package/ios/RNSkia-iOS/RNSkMetalCanvasProvider.mm +40 -54
  265. package/ios/RNSkia-iOS/SkiaDomViewManager.h +8 -0
  266. package/ios/RNSkia-iOS/SkiaDomViewManager.mm +51 -0
  267. package/lib/commonjs/dom/nodes/DrawingNode.js +1 -5
  268. package/lib/commonjs/dom/nodes/DrawingNode.js.map +1 -1
  269. package/lib/commonjs/dom/nodes/JsiSkDOM.js +56 -56
  270. package/lib/commonjs/dom/nodes/JsiSkDOM.js.map +1 -1
  271. package/lib/commonjs/dom/nodes/RenderNode.js +3 -9
  272. package/lib/commonjs/dom/nodes/RenderNode.js.map +1 -1
  273. package/lib/commonjs/dom/nodes/drawings/Text.js +4 -9
  274. package/lib/commonjs/dom/nodes/drawings/Text.js.map +1 -1
  275. package/lib/commonjs/dom/types/Common.js.map +1 -1
  276. package/lib/commonjs/dom/types/Drawings.js.map +1 -1
  277. package/lib/commonjs/mock/index.js +0 -1
  278. package/lib/commonjs/mock/index.js.map +1 -1
  279. package/lib/commonjs/renderer/Canvas.js +21 -57
  280. package/lib/commonjs/renderer/Canvas.js.map +1 -1
  281. package/lib/commonjs/renderer/DependencyManager.js +0 -5
  282. package/lib/commonjs/renderer/DependencyManager.js.map +1 -1
  283. package/lib/commonjs/renderer/HostComponents.js.map +1 -1
  284. package/lib/commonjs/renderer/components/Mask.js +1 -3
  285. package/lib/commonjs/renderer/components/Mask.js.map +1 -1
  286. package/lib/commonjs/renderer/components/Paint.js +5 -18
  287. package/lib/commonjs/renderer/components/Paint.js.map +1 -1
  288. package/lib/commonjs/renderer/useCanvas.js +8 -6
  289. package/lib/commonjs/renderer/useCanvas.js.map +1 -1
  290. package/lib/commonjs/skia/core/Picture.js +1 -24
  291. package/lib/commonjs/skia/core/Picture.js.map +1 -1
  292. package/lib/commonjs/skia/core/Rect.js +1 -1
  293. package/lib/commonjs/skia/core/Rect.js.map +1 -1
  294. package/lib/commonjs/skia/types/ContourMeasure.js.map +1 -1
  295. package/lib/commonjs/skia/types/Size.js +2 -0
  296. package/lib/commonjs/skia/types/Size.js.map +1 -0
  297. package/lib/commonjs/skia/types/index.js +13 -0
  298. package/lib/commonjs/skia/types/index.js.map +1 -1
  299. package/lib/commonjs/skia/web/JsiSkColor.js +8 -0
  300. package/lib/commonjs/skia/web/JsiSkColor.js.map +1 -1
  301. package/lib/commonjs/skia/web/JsiSkContourMeasure.js +4 -7
  302. package/lib/commonjs/skia/web/JsiSkContourMeasure.js.map +1 -1
  303. package/lib/commonjs/values/web/RNSkReadonlyValue.js +4 -2
  304. package/lib/commonjs/values/web/RNSkReadonlyValue.js.map +1 -1
  305. package/lib/commonjs/views/SkiaBaseWebView.js +9 -2
  306. package/lib/commonjs/views/SkiaBaseWebView.js.map +1 -1
  307. package/lib/commonjs/views/SkiaDomView.js +152 -0
  308. package/lib/commonjs/views/SkiaDomView.js.map +1 -0
  309. package/lib/commonjs/views/SkiaDomView.web.js +55 -0
  310. package/lib/commonjs/views/SkiaDomView.web.js.map +1 -0
  311. package/lib/commonjs/views/SkiaPictureView.js +16 -2
  312. package/lib/commonjs/views/SkiaPictureView.js.map +1 -1
  313. package/lib/commonjs/views/SkiaView.js +17 -2
  314. package/lib/commonjs/views/SkiaView.js.map +1 -1
  315. package/lib/commonjs/views/index.js +13 -0
  316. package/lib/commonjs/views/index.js.map +1 -1
  317. package/lib/commonjs/views/types.js.map +1 -1
  318. package/lib/module/dom/nodes/DrawingNode.js +2 -6
  319. package/lib/module/dom/nodes/DrawingNode.js.map +1 -1
  320. package/lib/module/dom/nodes/JsiSkDOM.js +56 -56
  321. package/lib/module/dom/nodes/JsiSkDOM.js.map +1 -1
  322. package/lib/module/dom/nodes/RenderNode.js +2 -5
  323. package/lib/module/dom/nodes/RenderNode.js.map +1 -1
  324. package/lib/module/dom/nodes/drawings/Text.js +4 -9
  325. package/lib/module/dom/nodes/drawings/Text.js.map +1 -1
  326. package/lib/module/dom/types/Common.js.map +1 -1
  327. package/lib/module/dom/types/Drawings.js.map +1 -1
  328. package/lib/module/mock/index.js +0 -1
  329. package/lib/module/mock/index.js.map +1 -1
  330. package/lib/module/renderer/Canvas.js +22 -58
  331. package/lib/module/renderer/Canvas.js.map +1 -1
  332. package/lib/module/renderer/DependencyManager.js +0 -5
  333. package/lib/module/renderer/DependencyManager.js.map +1 -1
  334. package/lib/module/renderer/HostComponents.js.map +1 -1
  335. package/lib/module/renderer/components/Mask.js +2 -4
  336. package/lib/module/renderer/components/Mask.js.map +1 -1
  337. package/lib/module/renderer/components/Paint.js +3 -14
  338. package/lib/module/renderer/components/Paint.js.map +1 -1
  339. package/lib/module/renderer/useCanvas.js +6 -4
  340. package/lib/module/renderer/useCanvas.js.map +1 -1
  341. package/lib/module/skia/core/Picture.js +0 -18
  342. package/lib/module/skia/core/Picture.js.map +1 -1
  343. package/lib/module/skia/core/Rect.js +1 -1
  344. package/lib/module/skia/core/Rect.js.map +1 -1
  345. package/lib/module/skia/types/ContourMeasure.js.map +1 -1
  346. package/lib/module/skia/types/Size.js +2 -0
  347. package/lib/module/skia/types/Size.js.map +1 -0
  348. package/lib/module/skia/types/index.js +1 -0
  349. package/lib/module/skia/types/index.js.map +1 -1
  350. package/lib/module/skia/web/JsiSkColor.js +8 -0
  351. package/lib/module/skia/web/JsiSkColor.js.map +1 -1
  352. package/lib/module/skia/web/JsiSkContourMeasure.js +3 -7
  353. package/lib/module/skia/web/JsiSkContourMeasure.js.map +1 -1
  354. package/lib/module/values/web/RNSkReadonlyValue.js +4 -2
  355. package/lib/module/values/web/RNSkReadonlyValue.js.map +1 -1
  356. package/lib/module/views/SkiaBaseWebView.js +9 -2
  357. package/lib/module/views/SkiaBaseWebView.js.map +1 -1
  358. package/lib/module/views/SkiaDomView.js +128 -0
  359. package/lib/module/views/SkiaDomView.js.map +1 -0
  360. package/lib/module/views/SkiaDomView.web.js +41 -0
  361. package/lib/module/views/SkiaDomView.web.js.map +1 -0
  362. package/lib/module/views/SkiaPictureView.js +14 -2
  363. package/lib/module/views/SkiaPictureView.js.map +1 -1
  364. package/lib/module/views/SkiaView.js +15 -2
  365. package/lib/module/views/SkiaView.js.map +1 -1
  366. package/lib/module/views/index.js +1 -0
  367. package/lib/module/views/index.js.map +1 -1
  368. package/lib/module/views/types.js.map +1 -1
  369. package/lib/typescript/src/dom/nodes/JsiSkDOM.d.ts +57 -64
  370. package/lib/typescript/src/dom/nodes/RenderNode.d.ts +1 -3
  371. package/lib/typescript/src/dom/types/Common.d.ts +2 -3
  372. package/lib/typescript/src/dom/types/Drawings.d.ts +1 -3
  373. package/lib/typescript/src/renderer/Canvas.d.ts +5 -5
  374. package/lib/typescript/src/renderer/DependencyManager.d.ts +0 -2
  375. package/lib/typescript/src/renderer/HostComponents.d.ts +67 -8
  376. package/lib/typescript/src/renderer/components/Paint.d.ts +3 -4
  377. package/lib/typescript/src/renderer/useCanvas.d.ts +1 -6
  378. package/lib/typescript/src/skia/core/Picture.d.ts +0 -8
  379. package/lib/typescript/src/skia/types/ContourMeasure.d.ts +3 -2
  380. package/lib/typescript/src/skia/types/Size.d.ts +4 -0
  381. package/lib/typescript/src/skia/types/index.d.ts +1 -0
  382. package/lib/typescript/src/skia/web/JsiSkContourMeasure.d.ts +2 -6
  383. package/lib/typescript/src/views/SkiaBaseWebView.d.ts +4 -0
  384. package/lib/typescript/src/views/SkiaDomView.d.ts +31 -0
  385. package/lib/typescript/src/views/SkiaDomView.web.d.ts +7 -0
  386. package/lib/typescript/src/views/index.d.ts +1 -0
  387. package/lib/typescript/src/views/types.d.ts +12 -2
  388. package/libs/android/arm64-v8a/libskia.a +0 -0
  389. package/libs/android/arm64-v8a/libskottie.a +0 -0
  390. package/libs/android/arm64-v8a/libskparagraph.a +0 -0
  391. package/libs/android/arm64-v8a/libsksg.a +0 -0
  392. package/libs/android/arm64-v8a/libskshaper.a +0 -0
  393. package/libs/android/arm64-v8a/libskunicode.a +0 -0
  394. package/libs/android/arm64-v8a/libsvg.a +0 -0
  395. package/libs/android/armeabi-v7a/libskia.a +0 -0
  396. package/libs/android/armeabi-v7a/libskottie.a +0 -0
  397. package/libs/android/armeabi-v7a/libskparagraph.a +0 -0
  398. package/libs/android/armeabi-v7a/libsksg.a +0 -0
  399. package/libs/android/armeabi-v7a/libskshaper.a +0 -0
  400. package/libs/android/armeabi-v7a/libskunicode.a +0 -0
  401. package/libs/android/armeabi-v7a/libsvg.a +0 -0
  402. package/libs/android/x86/libskia.a +0 -0
  403. package/libs/android/x86/libskottie.a +0 -0
  404. package/libs/android/x86/libskparagraph.a +0 -0
  405. package/libs/android/x86/libsksg.a +0 -0
  406. package/libs/android/x86/libskshaper.a +0 -0
  407. package/libs/android/x86/libskunicode.a +0 -0
  408. package/libs/android/x86/libsvg.a +0 -0
  409. package/libs/android/x86_64/libskia.a +0 -0
  410. package/libs/android/x86_64/libskottie.a +0 -0
  411. package/libs/android/x86_64/libskparagraph.a +0 -0
  412. package/libs/android/x86_64/libsksg.a +0 -0
  413. package/libs/android/x86_64/libskshaper.a +0 -0
  414. package/libs/android/x86_64/libskunicode.a +0 -0
  415. package/libs/android/x86_64/libsvg.a +0 -0
  416. package/libs/ios/libskia.xcframework/ios-arm64_arm64e/libskia.a +0 -0
  417. package/libs/ios/libskia.xcframework/ios-arm64_arm64e_x86_64-simulator/libskia.a +0 -0
  418. package/libs/ios/libskottie.xcframework/ios-arm64_arm64e/libskottie.a +0 -0
  419. package/libs/ios/libskottie.xcframework/ios-arm64_arm64e_x86_64-simulator/libskottie.a +0 -0
  420. package/libs/ios/libskparagraph.xcframework/Info.plist +42 -0
  421. package/libs/ios/libskparagraph.xcframework/ios-arm64_arm64e/libskparagraph.a +0 -0
  422. package/libs/ios/libskparagraph.xcframework/ios-arm64_arm64e_x86_64-simulator/libskparagraph.a +0 -0
  423. package/libs/ios/libsksg.xcframework/Info.plist +5 -5
  424. package/libs/ios/libsksg.xcframework/ios-arm64_arm64e/libsksg.a +0 -0
  425. package/libs/ios/libsksg.xcframework/ios-arm64_arm64e_x86_64-simulator/libsksg.a +0 -0
  426. package/libs/ios/libskshaper.xcframework/ios-arm64_arm64e/libskshaper.a +0 -0
  427. package/libs/ios/libskshaper.xcframework/ios-arm64_arm64e_x86_64-simulator/libskshaper.a +0 -0
  428. package/libs/ios/libskunicode.xcframework/Info.plist +42 -0
  429. package/libs/ios/libskunicode.xcframework/ios-arm64_arm64e/libskunicode.a +0 -0
  430. package/libs/ios/libskunicode.xcframework/ios-arm64_arm64e_x86_64-simulator/libskunicode.a +0 -0
  431. package/libs/ios/libsvg.xcframework/ios-arm64_arm64e/libsvg.a +0 -0
  432. package/libs/ios/libsvg.xcframework/ios-arm64_arm64e_x86_64-simulator/libsvg.a +0 -0
  433. package/package.json +6 -4
  434. package/react-native-skia.podspec +3 -1
  435. package/src/dom/nodes/DrawingNode.ts +2 -4
  436. package/src/dom/nodes/JsiSkDOM.ts +170 -56
  437. package/src/dom/nodes/RenderNode.ts +2 -14
  438. package/src/dom/nodes/drawings/Text.ts +4 -4
  439. package/src/dom/types/Common.ts +2 -4
  440. package/src/dom/types/Drawings.ts +1 -4
  441. package/src/mock/index.ts +0 -1
  442. package/src/renderer/Canvas.tsx +32 -51
  443. package/src/renderer/DependencyManager.tsx +0 -5
  444. package/src/renderer/HostComponents.ts +153 -5
  445. package/src/renderer/components/Mask.tsx +2 -2
  446. package/src/renderer/components/Paint.tsx +3 -14
  447. package/src/renderer/useCanvas.ts +5 -5
  448. package/src/skia/core/Picture.ts +0 -24
  449. package/src/skia/core/Rect.ts +1 -1
  450. package/src/skia/types/ContourMeasure.tsx +3 -2
  451. package/src/skia/types/Size.ts +4 -0
  452. package/src/skia/types/index.ts +1 -0
  453. package/src/skia/web/JsiSkColor.ts +11 -0
  454. package/src/skia/web/JsiSkContourMeasure.ts +7 -3
  455. package/src/values/web/RNSkReadonlyValue.ts +4 -2
  456. package/src/views/SkiaBaseWebView.tsx +6 -2
  457. package/src/views/SkiaDomView.tsx +120 -0
  458. package/src/views/SkiaDomView.web.tsx +37 -0
  459. package/src/views/SkiaPictureView.tsx +10 -2
  460. package/src/views/SkiaView.tsx +11 -3
  461. package/src/views/index.ts +1 -0
  462. package/src/views/types.ts +19 -2
  463. package/cpp/jsi/JsiSimpleValueWrapper.h +0 -99
  464. package/cpp/skia/include/c/sk_canvas.h +0 -159
  465. package/cpp/skia/include/c/sk_colorspace.h +0 -25
  466. package/cpp/skia/include/c/sk_data.h +0 -65
  467. package/cpp/skia/include/c/sk_image.h +0 -71
  468. package/cpp/skia/include/c/sk_imageinfo.h +0 -62
  469. package/cpp/skia/include/c/sk_maskfilter.h +0 -47
  470. package/cpp/skia/include/c/sk_matrix.h +0 -49
  471. package/cpp/skia/include/c/sk_paint.h +0 -145
  472. package/cpp/skia/include/c/sk_path.h +0 -102
  473. package/cpp/skia/include/c/sk_picture.h +0 -70
  474. package/cpp/skia/include/c/sk_shader.h +0 -143
  475. package/cpp/skia/include/c/sk_surface.h +0 -73
  476. package/cpp/skia/include/c/sk_types.h +0 -278
  477. package/cpp/skia/include/gpu/graphite/SkStuff.h +0 -47
  478. package/cpp/skia/include/private/SkNx.h +0 -430
  479. package/cpp/skia/include/private/SkNx_neon.h +0 -713
  480. package/cpp/skia/include/private/SkNx_sse.h +0 -823
  481. package/cpp/skia/include/sksl/DSLRuntimeEffects.h +0 -32
  482. package/cpp/skia/include/sksl/DSLWrapper.h +0 -77
@@ -9,33 +9,56 @@
9
9
  #define skgpu_graphite_Recorder_DEFINED
10
10
 
11
11
  #include "include/core/SkRefCnt.h"
12
+ #include "include/core/SkSize.h"
13
+ #include "include/gpu/graphite/GraphiteTypes.h"
12
14
  #include "include/private/SingleOwner.h"
15
+ #include "include/private/SkTHash.h"
13
16
 
14
17
  #include <vector>
15
18
 
19
+ class SkPixmap;
20
+ class SkRuntimeEffectDictionary;
16
21
  class SkTextureDataBlock;
17
22
  class SkUniformDataBlock;
18
- class SkUniformDataBlockPassThrough; // TODO: remove
23
+
24
+ namespace skgpu { class TokenTracker; }
25
+
26
+ namespace sktext::gpu {
27
+ class StrikeCache;
28
+ class TextBlobRedrawCoordinator;
29
+ }
19
30
 
20
31
  namespace skgpu::graphite {
21
32
 
33
+ class AtlasManager;
34
+ class BackendTexture;
22
35
  class Caps;
23
36
  class Device;
24
37
  class DrawBufferManager;
25
38
  class GlobalCache;
26
- class Gpu;
39
+ class ImageProvider;
27
40
  class RecorderPriv;
28
41
  class Recording;
29
42
  class ResourceProvider;
43
+ class SharedContext;
30
44
  class Task;
31
45
  class TaskGraph;
46
+ class TextureInfo;
32
47
  class UploadBufferManager;
33
48
 
34
- template<typename StorageT, typename BaseT> class PipelineDataCache;
35
- using UniformDataCache = PipelineDataCache<SkUniformDataBlockPassThrough, SkUniformDataBlock>;
36
- using TextureDataCache = PipelineDataCache<std::unique_ptr<SkTextureDataBlock>, SkTextureDataBlock>;
49
+ template<typename T> class PipelineDataCache;
50
+ using UniformDataCache = PipelineDataCache<SkUniformDataBlock>;
51
+ using TextureDataCache = PipelineDataCache<SkTextureDataBlock>;
52
+
53
+ struct SK_API RecorderOptions final {
54
+ RecorderOptions();
55
+ RecorderOptions(const RecorderOptions&);
56
+ ~RecorderOptions();
57
+
58
+ sk_sp<ImageProvider> fImageProvider;
59
+ };
37
60
 
38
- class Recorder final {
61
+ class SK_API Recorder final {
39
62
  public:
40
63
  Recorder(const Recorder&) = delete;
41
64
  Recorder(Recorder&&) = delete;
@@ -46,6 +69,52 @@ public:
46
69
 
47
70
  std::unique_ptr<Recording> snap();
48
71
 
72
+ ImageProvider* clientImageProvider() { return fClientImageProvider.get(); }
73
+ const ImageProvider* clientImageProvider() const { return fClientImageProvider.get(); }
74
+
75
+ /**
76
+ * Creates a new backend gpu texture matching the dimensions and TextureInfo. If an invalid
77
+ * TextureInfo or a TextureInfo Skia can't support is passed in, this will return an invalid
78
+ * BackendTexture. Thus the client should check isValid on the returned BackendTexture to know
79
+ * if it succeeded or not.
80
+ *
81
+ * If this does return a valid BackendTexture, the caller is required to use
82
+ * Recorder::deleteBackendTexture or Context::deleteBackendTexture to delete the texture. It is
83
+ * safe to use the Context that created this Recorder or any other Recorder created from the
84
+ * same Context to call deleteBackendTexture.
85
+ */
86
+ BackendTexture createBackendTexture(SkISize dimensions, const TextureInfo&);
87
+
88
+ /**
89
+ * If possible, updates a backend texture with the provided pixmap data. The client
90
+ * should check the return value to see if the update was successful. The client is required
91
+ * to insert a Recording into the Context and call `submit` to send the upload work to the gpu.
92
+ * The backend texture must be compatible with the provided pixmap(s). Compatible, in this case,
93
+ * means that the backend format is compatible with the base pixmap's colortype. The src data
94
+ * can be deleted when this call returns.
95
+ * If the backend texture is mip mapped, the data for all the mipmap levels must be provided.
96
+ * In the mipmapped case all the colortypes of the provided pixmaps must be the same.
97
+ * Additionally, all the miplevels must be sized correctly (please see
98
+ * SkMipmap::ComputeLevelSize and ComputeLevelCount).
99
+ * Note: the pixmap's alphatypes and colorspaces are ignored.
100
+ * For the Vulkan backend after a successful update the layout of the created VkImage will be:
101
+ * VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL
102
+ */
103
+ bool updateBackendTexture(const BackendTexture&,
104
+ const SkPixmap srcData[],
105
+ int numLevels);
106
+
107
+ /**
108
+ * Called to delete the passed in BackendTexture. This should only be called if the
109
+ * BackendTexture was created by calling Recorder::createBackendTexture on a Recorder that is
110
+ * associated with the same Context. If the BackendTexture is not valid or does not match the
111
+ * BackendApi of the Recorder then nothing happens.
112
+ *
113
+ * Otherwise this will delete/release the backend object that is wrapped in the BackendTexture.
114
+ * The BackendTexture will be reset to an invalid state and should not be used again.
115
+ */
116
+ void deleteBackendTexture(BackendTexture&);
117
+
49
118
  // Provides access to functions that aren't part of the public API.
50
119
  RecorderPriv priv();
51
120
  const RecorderPriv priv() const; // NOLINT(readability-const-return-type)
@@ -59,10 +128,12 @@ private:
59
128
  friend class Device; // For registering and deregistering Devices;
60
129
  friend class RecorderPriv; // for ctor and hidden methods
61
130
 
62
- Recorder(sk_sp<Gpu>, sk_sp<GlobalCache>);
131
+ Recorder(sk_sp<SharedContext>, const RecorderOptions&);
63
132
 
64
133
  SingleOwner* singleOwner() const { return &fSingleOwner; }
65
134
 
135
+ BackendApi backend() const;
136
+
66
137
  // We keep track of all Devices that are connected to a Recorder. This allows the client to
67
138
  // safely delete an SkSurface or a Recorder in any order. If the client deletes the Recorder
68
139
  // we need to notify all Devices that the Recorder is no longer valid. If we delete the
@@ -83,8 +154,9 @@ private:
83
154
  void registerDevice(Device*);
84
155
  void deregisterDevice(const Device*);
85
156
 
86
- sk_sp<Gpu> fGpu;
157
+ sk_sp<SharedContext> fSharedContext;
87
158
  std::unique_ptr<ResourceProvider> fResourceProvider;
159
+ std::unique_ptr<SkRuntimeEffectDictionary> fRuntimeEffectDict;
88
160
 
89
161
  std::unique_ptr<TaskGraph> fGraph;
90
162
  std::unique_ptr<UniformDataCache> fUniformDataCache;
@@ -93,6 +165,13 @@ private:
93
165
  std::unique_ptr<UploadBufferManager> fUploadBufferManager;
94
166
  std::vector<Device*> fTrackedDevices;
95
167
 
168
+ uint32_t fRecorderID; // Needed for MessageBox handling for text
169
+ std::unique_ptr<AtlasManager> fAtlasManager;
170
+ std::unique_ptr<TokenTracker> fTokenTracker;
171
+ std::unique_ptr<sktext::gpu::StrikeCache> fStrikeCache;
172
+ std::unique_ptr<sktext::gpu::TextBlobRedrawCoordinator> fTextBlobCache;
173
+ sk_sp<ImageProvider> fClientImageProvider;
174
+
96
175
  // In debug builds we guard against improper thread handling
97
176
  // This guard is passed to the ResourceCache.
98
177
  // TODO: Should we also pass this to Device, DrawContext, and similar classes?
@@ -10,28 +10,38 @@
10
10
 
11
11
  #include "include/core/SkRefCnt.h"
12
12
 
13
- class SkTextureDataBlock;
13
+ #include <memory>
14
+ #include <vector>
14
15
 
15
16
  namespace skgpu::graphite {
16
17
 
17
18
  class CommandBuffer;
18
- template<typename StorageT, typename BaseT> class PipelineDataCache;
19
- using TextureDataCache = PipelineDataCache<std::unique_ptr<SkTextureDataBlock>, SkTextureDataBlock>;
19
+ class RecordingPriv;
20
+ class Resource;
21
+ class ResourceProvider;
22
+ class TaskGraph;
20
23
 
21
24
  class Recording final {
22
25
  public:
23
26
  ~Recording();
24
27
 
25
- protected:
28
+ RecordingPriv priv();
29
+
26
30
  private:
27
- friend class Context; // for access fCommandBuffer
28
31
  friend class Recorder; // for ctor
29
- Recording(sk_sp<CommandBuffer>, std::unique_ptr<TextureDataCache>);
32
+ friend class RecordingPriv;
33
+
34
+ Recording(std::unique_ptr<TaskGraph>);
30
35
 
31
- sk_sp<CommandBuffer> fCommandBuffer;
36
+ bool addCommands(CommandBuffer*, ResourceProvider*);
37
+ void addResourceRef(sk_sp<Resource>);
32
38
 
33
- // The TextureDataCache holds all the Textures and Samplers used in this Recording.
34
- std::unique_ptr<TextureDataCache> fTextureDataCache;
39
+ std::unique_ptr<TaskGraph> fGraph;
40
+ // We don't always take refs to all resources used by specific Tasks (e.g. a common buffer used
41
+ // for uploads). Instead we'll just hold onto one ref for those Resources outside the Tasks.
42
+ // Those refs are stored in the array here and will eventually be passed onto a CommandBuffer
43
+ // when the Recording adds its commands.
44
+ std::vector<sk_sp<Resource>> fExtraResourceRefs;
35
45
  };
36
46
 
37
47
  } // namespace skgpu::graphite
@@ -14,16 +14,12 @@
14
14
  #include "include/private/gpu/graphite/MtlTypesPriv.h"
15
15
  #endif
16
16
 
17
- namespace skgpu::graphite {
18
-
19
- // Forward declares so we can friend classes in other namespaces
20
- #ifdef SK_METAL
21
- namespace graphite {
22
- class MtlCaps;
23
- class MtlTexture;
24
- }
17
+ #ifdef SK_VULKAN
18
+ #include "include/private/gpu/graphite/VulkanGraphiteTypesPriv.h"
25
19
  #endif
26
20
 
21
+ namespace skgpu::graphite {
22
+
27
23
  class TextureInfo {
28
24
  public:
29
25
  TextureInfo() {}
@@ -37,6 +33,20 @@ public:
37
33
  , fMtlSpec(mtlInfo) {}
38
34
  #endif
39
35
 
36
+ #ifdef SK_VULKAN
37
+ TextureInfo(const VulkanTextureInfo& vkInfo)
38
+ : fBackend(BackendApi::kVulkan)
39
+ , fValid(true)
40
+ , fSampleCount(vkInfo.fSampleCount)
41
+ , fLevelCount(vkInfo.fLevelCount)
42
+ , fProtected(Protected::kNo)
43
+ , fVkSpec(vkInfo) {
44
+ if (vkInfo.fFlags & VK_IMAGE_CREATE_PROTECTED_BIT) {
45
+ fProtected = Protected::kYes;
46
+ }
47
+ }
48
+ #endif
49
+
40
50
  ~TextureInfo() {}
41
51
  TextureInfo(const TextureInfo&) = default;
42
52
  TextureInfo& operator=(const TextureInfo&);
@@ -61,6 +71,16 @@ public:
61
71
  }
62
72
  #endif
63
73
 
74
+ #ifdef SK_VULKAN
75
+ bool getVulkanTextureInfo(VulkanTextureInfo* info) const {
76
+ if (!this->isValid() || fBackend != BackendApi::kVulkan) {
77
+ return false;
78
+ }
79
+ *info = VulkanTextureSpecToTextureInfo(fVkSpec, fSampleCount, fLevelCount);
80
+ return true;
81
+ }
82
+ #endif
83
+
64
84
  private:
65
85
  #ifdef SK_METAL
66
86
  friend class MtlCaps;
@@ -72,6 +92,15 @@ private:
72
92
  }
73
93
  #endif
74
94
 
95
+ #ifdef SK_VULKAN
96
+ friend class VulkanCaps;
97
+ friend class VulkanTexture;
98
+ const VulkanTextureSpec& vulkanTextureSpec() const {
99
+ SkASSERT(fValid && fBackend == BackendApi::kVulkan);
100
+ return fVkSpec;
101
+ }
102
+ #endif
103
+
75
104
  BackendApi fBackend = BackendApi::kMock;
76
105
  bool fValid = false;
77
106
 
@@ -82,6 +111,9 @@ private:
82
111
  union {
83
112
  #ifdef SK_METAL
84
113
  MtlTextureSpec fMtlSpec;
114
+ #endif
115
+ #ifdef SK_VULKAN
116
+ VulkanTextureSpec fVkSpec;
85
117
  #endif
86
118
  };
87
119
  };
@@ -0,0 +1,25 @@
1
+ /*
2
+ * Copyright 2022 Google LLC
3
+ *
4
+ * Use of this source code is governed by a BSD-style license that can be
5
+ * found in the LICENSE file.
6
+ */
7
+
8
+ #ifndef skgpu_graphite_DawnBackendContext_DEFINED
9
+ #define skgpu_graphite_DawnBackendContext_DEFINED
10
+
11
+ #include "webgpu/webgpu_cpp.h"
12
+
13
+ namespace skgpu::graphite {
14
+
15
+ // The DawnBackendContext contains all of the base Dawn objects needed by the graphite Dawn
16
+ // backend. The client will create this object and pass it into the Context::MakeDawn factory call
17
+ // when setting up Skia.
18
+ struct SK_API DawnBackendContext {
19
+ wgpu::Device fDevice;
20
+ wgpu::Queue fQueue;
21
+ };
22
+
23
+ } // namespace skgpu::graphite
24
+
25
+ #endif // skgpu_graphite_DawnBackendContext_DEFINED
@@ -12,8 +12,9 @@
12
12
 
13
13
  namespace skgpu::graphite {
14
14
 
15
- // The MtlBackendContext contains all of the base Metal objects needed by the MtlGpu. The assumption
16
- // is that the client will set these up and pass them to the MtlGpu constructor.
15
+ // The MtlBackendContext contains all of the base Metal objects needed by the graphite Metal
16
+ // backend. The client will create this object and pass it into the Context::MakeMetal factory call
17
+ // when setting up Skia.
17
18
  struct SK_API MtlBackendContext {
18
19
  sk_cfp<CFTypeRef> fDevice;
19
20
  sk_cfp<CFTypeRef> fQueue;
@@ -0,0 +1,69 @@
1
+ /*
2
+ * Copyright 2022 Google LLC.
3
+ *
4
+ * Use of this source code is governed by a BSD-style license that can be
5
+ * found in the LICENSE file.
6
+ */
7
+
8
+ #ifndef skgpu_graphite_VulkanGraphiteTypes_DEFINED
9
+ #define skgpu_graphite_VulkanGraphiteTypes_DEFINED
10
+
11
+ #include "include/gpu/vk/VulkanTypes.h"
12
+
13
+ namespace skgpu::graphite {
14
+
15
+ struct VulkanTextureInfo {
16
+ uint32_t fSampleCount = 1;
17
+ uint32_t fLevelCount = 0;
18
+
19
+ // VkImageCreateInfo properties
20
+ // Currently the only supported flag is VK_IMAGE_CREATE_PROTECTED_BIT. Any other flag will not
21
+ // be accepted
22
+ VkImageCreateFlags fFlags = 0;
23
+ VkFormat fFormat = VK_FORMAT_UNDEFINED;
24
+ VkImageTiling fImageTiling = VK_IMAGE_TILING_OPTIMAL;
25
+ VkImageUsageFlags fImageUsageFlags = 0;
26
+ VkSharingMode fSharingMode = VK_SHARING_MODE_EXCLUSIVE;
27
+ uint32_t fCurrentQueueFamily = VK_QUEUE_FAMILY_IGNORED;
28
+ VkImageLayout fImageLayout = VK_IMAGE_LAYOUT_UNDEFINED;
29
+
30
+ // Properties related to the image view and sampling. These are less inherent properties of the
31
+ // VkImage but describe how the VkImage should be used within Skia.
32
+
33
+ // What aspect to use for the VkImageView. The normal, default is VK_IMAGE_ASPECT_COLOR_BIT.
34
+ // However, if the VkImage is a Ycbcr format, the client can pass a specific plan here to have
35
+ // Skia directly sample a plane. In that case the client should also pass in a VkFormat that is
36
+ // compatible with the plane as described by the Vulkan spec.
37
+ VkImageAspectFlags fAspectMask = VK_IMAGE_ASPECT_COLOR_BIT;
38
+ // TODO: Either Make the ycbcr conversion info shareable with Ganesh or add a version for
39
+ // Graphite.
40
+ // GrVkYcbcrConversionInfo fYcbcrConversionInfo;
41
+
42
+ VulkanTextureInfo() = default;
43
+ VulkanTextureInfo(uint32_t sampleCount,
44
+ uint32_t levelCount,
45
+ VkImageCreateFlags flags,
46
+ VkFormat format,
47
+ VkImageTiling imageTiling,
48
+ VkImageUsageFlags imageUsageFlags,
49
+ VkSharingMode sharingMode,
50
+ uint32_t currentQueueFamily,
51
+ VkImageLayout imageLayout,
52
+ VkImageAspectFlags aspectMask)
53
+ : fSampleCount(sampleCount)
54
+ , fLevelCount(levelCount)
55
+ , fFlags(flags)
56
+ , fFormat(format)
57
+ , fImageTiling(imageTiling)
58
+ , fImageUsageFlags(imageUsageFlags)
59
+ , fSharingMode(sharingMode)
60
+ , fCurrentQueueFamily(currentQueueFamily)
61
+ , fImageLayout(imageLayout)
62
+ , fAspectMask(aspectMask) {}
63
+ };
64
+
65
+ } // namespace skgpu::graphite
66
+
67
+ #endif // skgpu_graphite_VulkanGraphiteTypes_DEFINED
68
+
69
+
@@ -0,0 +1,39 @@
1
+ /*
2
+ * Copyright 2022 Google Inc.
3
+ *
4
+ * Use of this source code is governed by a BSD-style license that can be
5
+ * found in the LICENSE file.
6
+ */
7
+
8
+ #ifndef skgpu_MtlMemoryAllocator_DEFINED
9
+ #define skgpu_MtlMemoryAllocator_DEFINED
10
+
11
+ #ifdef __APPLE__
12
+
13
+ #ifdef __OBJC__
14
+ #import <Metal/Metal.h>
15
+ #endif
16
+
17
+ namespace skgpu {
18
+
19
+ // interface classes for the GPU memory allocator
20
+ class MtlAlloc : public SkRefCnt {
21
+ public:
22
+ ~MtlAlloc() override = default;
23
+ };
24
+
25
+ #ifdef __OBJC__
26
+ class MtlMemoryAllocator : public SkRefCnt {
27
+ public:
28
+ virtual id<MTLBuffer> newBufferWithLength(NSUInteger length, MTLResourceOptions options,
29
+ sk_sp<MtlAlloc>* allocation) = 0;
30
+ virtual id<MTLTexture> newTextureWithDescriptor(MTLTextureDescriptor* texDesc,
31
+ sk_sp<MtlAlloc>* allocation) = 0;
32
+ };
33
+ #endif
34
+
35
+ } // namespace skgpu
36
+
37
+ #endif // __APPLE__
38
+
39
+ #endif // skgpu_MtlMemoryAllocator_DEFINED
@@ -9,10 +9,10 @@
9
9
  #define GrVkBackendContext_DEFINED
10
10
 
11
11
  #include "include/core/SkRefCnt.h"
12
- #include "include/gpu/vk/GrVkMemoryAllocator.h"
13
12
  #include "include/gpu/vk/GrVkTypes.h"
13
+ #include "include/gpu/vk/VulkanMemoryAllocator.h"
14
14
 
15
- class GrVkExtensions;
15
+ namespace skgpu { class VulkanExtensions; }
16
16
 
17
17
  enum GrVkExtensionFlags {
18
18
  kEXT_debug_report_GrVkExtensionFlag = 0x0001,
@@ -43,34 +43,36 @@ struct VkPhysicalDeviceFeatures2;
43
43
  // (either by deleting the struct or manually releasing the refs) before the underlying vulkan
44
44
  // device and instance are destroyed.
45
45
  struct SK_API GrVkBackendContext {
46
- VkInstance fInstance;
47
- VkPhysicalDevice fPhysicalDevice;
48
- VkDevice fDevice;
49
- VkQueue fQueue;
50
- uint32_t fGraphicsQueueIndex;
51
- uint32_t fMinAPIVersion; // Deprecated. Set fInstanceVersion instead.
52
- uint32_t fInstanceVersion = 0; // Deprecated. Set fMaxApiVersion instead
46
+ VkInstance fInstance = VK_NULL_HANDLE;
47
+ VkPhysicalDevice fPhysicalDevice = VK_NULL_HANDLE;
48
+ VkDevice fDevice = VK_NULL_HANDLE;
49
+ VkQueue fQueue = VK_NULL_HANDLE;
50
+ uint32_t fGraphicsQueueIndex = 0;
51
+ uint32_t fMinAPIVersion = 0; // Deprecated. Use fInstanceVersion
52
+ // instead.
53
+ uint32_t fInstanceVersion = 0; // Deprecated. Use fMaxApiVersion
53
54
  // The max api version set here should match the value set in VkApplicationInfo::apiVersion when
54
55
  // then VkInstance was created.
55
- uint32_t fMaxAPIVersion = 0;
56
- uint32_t fExtensions = 0; // Deprecated. Use fVkExtensions instead.
57
- const GrVkExtensions* fVkExtensions = nullptr;
58
- uint32_t fFeatures; // Deprecated. Use fDeviceFeatures[2] instead.
56
+ uint32_t fMaxAPIVersion = 0;
57
+ uint32_t fExtensions = 0; // Deprecated. Use fVkExtensions instead.
58
+ const skgpu::VulkanExtensions* fVkExtensions = nullptr;
59
+ uint32_t fFeatures = 0; // Deprecated. Use fDeviceFeatures[2]
60
+ // instead.
59
61
  // The client can create their VkDevice with either a VkPhysicalDeviceFeatures or
60
62
  // VkPhysicalDeviceFeatures2 struct, thus we have to support taking both. The
61
63
  // VkPhysicalDeviceFeatures2 struct is needed so we know if the client enabled any extension
62
64
  // specific features. If fDeviceFeatures2 is not null then we ignore fDeviceFeatures. If both
63
65
  // fDeviceFeatures and fDeviceFeatures2 are null we will assume no features are enabled.
64
- const VkPhysicalDeviceFeatures* fDeviceFeatures = nullptr;
65
- const VkPhysicalDeviceFeatures2* fDeviceFeatures2 = nullptr;
66
- sk_sp<GrVkMemoryAllocator> fMemoryAllocator;
67
- GrVkGetProc fGetProc = nullptr;
66
+ const VkPhysicalDeviceFeatures* fDeviceFeatures = nullptr;
67
+ const VkPhysicalDeviceFeatures2* fDeviceFeatures2 = nullptr;
68
+ sk_sp<skgpu::VulkanMemoryAllocator> fMemoryAllocator;
69
+ skgpu::VulkanGetProc fGetProc = nullptr;
68
70
  // This is deprecated and should be set to false. The client is responsible for managing the
69
71
  // lifetime of the VkInstance and VkDevice objects.
70
- bool fOwnsInstanceAndDevice = false;
72
+ bool fOwnsInstanceAndDevice = false;
71
73
  // Indicates that we are working with protected content and all CommandPool and Queue operations
72
74
  // should be done in a protected context.
73
- GrProtected fProtectedContext = GrProtected::kNo;
75
+ GrProtected fProtectedContext = GrProtected::kNo;
74
76
  };
75
77
 
76
78
  #endif
@@ -8,56 +8,8 @@
8
8
  #ifndef GrVkExtensions_DEFINED
9
9
  #define GrVkExtensions_DEFINED
10
10
 
11
- #include "include/core/SkString.h"
12
- #include "include/gpu/vk/GrVkTypes.h"
13
- #include "include/private/SkTArray.h"
11
+ #include "include/gpu/vk/VulkanExtensions.h"
14
12
 
15
- /**
16
- * Helper class that eats in an array of extensions strings for instance and device and allows for
17
- * quicker querying if an extension is present.
18
- */
19
- class SK_API GrVkExtensions {
20
- public:
21
- GrVkExtensions() {}
22
-
23
- void init(GrVkGetProc, VkInstance, VkPhysicalDevice,
24
- uint32_t instanceExtensionCount, const char* const* instanceExtensions,
25
- uint32_t deviceExtensionCount, const char* const* deviceExtensions);
26
-
27
- bool hasExtension(const char[], uint32_t minVersion) const;
28
-
29
- struct Info {
30
- Info() {}
31
- Info(const char* name) : fName(name), fSpecVersion(0) {}
32
-
33
- SkString fName;
34
- uint32_t fSpecVersion;
35
-
36
- struct Less {
37
- bool operator()(const Info& a, const SkString& b) const {
38
- return strcmp(a.fName.c_str(), b.c_str()) < 0;
39
- }
40
- bool operator()(const SkString& a, const GrVkExtensions::Info& b) const {
41
- return strcmp(a.c_str(), b.fName.c_str()) < 0;
42
- }
43
- };
44
- };
45
-
46
- #ifdef SK_DEBUG
47
- void dump() const {
48
- SkDebugf("**Vulkan Extensions**\n");
49
- for (int i = 0; i < fExtensions.count(); ++i) {
50
- SkDebugf("%s. Version: %d\n",
51
- fExtensions[i].fName.c_str(), fExtensions[i].fSpecVersion);
52
- }
53
- SkDebugf("**End Vulkan Extensions**\n");
54
- }
55
- #endif
56
-
57
- private:
58
- void getSpecVersions(GrVkGetProc getProc, VkInstance, VkPhysicalDevice);
59
-
60
- SkTArray<Info> fExtensions;
61
- };
13
+ using GrVkExtensions = skgpu::VulkanExtensions;
62
14
 
63
15
  #endif