@shopify/react-native-skia 0.1.158 → 0.1.159

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (403) hide show
  1. package/android/CMakeLists.txt +35 -11
  2. package/android/build.gradle +21 -25
  3. package/android/cpp/jni/JniLoad.cpp +2 -0
  4. package/android/cpp/jni/include/JniSkiaDomView.h +89 -0
  5. package/android/cpp/rnskia-android/SkiaOpenGLRenderer.cpp +4 -3
  6. package/android/cpp/rnskia-android/SkiaOpenGLRenderer.h +4 -3
  7. package/android/src/main/java/com/shopify/reactnative/skia/RNSkiaPackage.java +2 -1
  8. package/android/src/main/java/com/shopify/reactnative/skia/SkiaDomView.java +45 -0
  9. package/android/src/main/java/com/shopify/reactnative/skia/SkiaDomViewManager.java +64 -0
  10. package/cpp/api/JsiSkHostObjects.h +6 -0
  11. package/cpp/api/JsiSkImageFilterFactory.h +1 -1
  12. package/cpp/api/JsiSkPaint.h +9 -2
  13. package/cpp/api/JsiSkPath.h +1 -0
  14. package/cpp/api/JsiSkRuntimeEffect.h +36 -36
  15. package/cpp/jsi/JsiHostObject.cpp +16 -28
  16. package/cpp/jsi/JsiHostObject.h +127 -7
  17. package/cpp/jsi/JsiValue.cpp +346 -0
  18. package/cpp/jsi/JsiValue.h +222 -0
  19. package/cpp/jsi/JsiValueWrapper.h +33 -5
  20. package/cpp/rnskia/RNSkDomView.cpp +220 -0
  21. package/cpp/rnskia/RNSkDomView.h +140 -0
  22. package/cpp/rnskia/RNSkJsView.cpp +0 -4
  23. package/cpp/rnskia/RNSkJsView.h +6 -4
  24. package/cpp/rnskia/RNSkManager.cpp +7 -0
  25. package/cpp/rnskia/RNSkPictureView.h +5 -8
  26. package/cpp/rnskia/RNSkView.h +113 -5
  27. package/cpp/rnskia/dom/JsiDomApi.h +167 -0
  28. package/cpp/rnskia/dom/base/BaseNodeProp.h +72 -0
  29. package/cpp/rnskia/dom/base/DerivedNodeProp.h +187 -0
  30. package/cpp/rnskia/dom/base/DrawingContext.cpp +227 -0
  31. package/cpp/rnskia/dom/base/DrawingContext.h +136 -0
  32. package/cpp/rnskia/dom/base/JsiDependencyManager.h +294 -0
  33. package/cpp/rnskia/dom/base/JsiDomDeclarationNode.h +176 -0
  34. package/cpp/rnskia/dom/base/JsiDomDrawingNode.h +50 -0
  35. package/cpp/rnskia/dom/base/JsiDomNode.h +361 -0
  36. package/cpp/rnskia/dom/base/JsiDomRenderNode.h +267 -0
  37. package/cpp/rnskia/dom/base/NodeProp.h +130 -0
  38. package/cpp/rnskia/dom/base/NodePropsContainer.h +119 -0
  39. package/cpp/rnskia/dom/nodes/JsiBackdropFilterNode.h +38 -0
  40. package/cpp/rnskia/dom/nodes/JsiBlendNode.h +112 -0
  41. package/cpp/rnskia/dom/nodes/JsiBlurMaskNode.h +78 -0
  42. package/cpp/rnskia/dom/nodes/JsiBoxNode.h +104 -0
  43. package/cpp/rnskia/dom/nodes/JsiBoxShadowNode.h +33 -0
  44. package/cpp/rnskia/dom/nodes/JsiCircleNode.h +38 -0
  45. package/cpp/rnskia/dom/nodes/JsiColorFilterNodes.h +192 -0
  46. package/cpp/rnskia/dom/nodes/JsiCustomDrawingNode.h +123 -0
  47. package/cpp/rnskia/dom/nodes/JsiDiffRectNode.h +42 -0
  48. package/cpp/rnskia/dom/nodes/JsiFillNode.h +22 -0
  49. package/cpp/rnskia/dom/nodes/JsiGlyphsNode.h +56 -0
  50. package/cpp/rnskia/dom/nodes/JsiGroupNode.h +26 -0
  51. package/cpp/rnskia/dom/nodes/JsiImageFilterNodes.h +415 -0
  52. package/cpp/rnskia/dom/nodes/JsiImageNode.h +34 -0
  53. package/cpp/rnskia/dom/nodes/JsiImageSvgNode.h +44 -0
  54. package/cpp/rnskia/dom/nodes/JsiLayerNode.h +64 -0
  55. package/cpp/rnskia/dom/nodes/JsiLineNode.h +43 -0
  56. package/cpp/rnskia/dom/nodes/JsiOvalNode.h +34 -0
  57. package/cpp/rnskia/dom/nodes/JsiPaintNode.h +77 -0
  58. package/cpp/rnskia/dom/nodes/JsiPatchNode.h +54 -0
  59. package/cpp/rnskia/dom/nodes/JsiPathEffectNodes.h +315 -0
  60. package/cpp/rnskia/dom/nodes/JsiPathNode.h +181 -0
  61. package/cpp/rnskia/dom/nodes/JsiPictureNode.h +32 -0
  62. package/cpp/rnskia/dom/nodes/JsiPointsNode.h +51 -0
  63. package/cpp/rnskia/dom/nodes/JsiRRectNode.h +34 -0
  64. package/cpp/rnskia/dom/nodes/JsiRectNode.h +34 -0
  65. package/cpp/rnskia/dom/nodes/JsiShaderNodes.h +517 -0
  66. package/cpp/rnskia/dom/nodes/JsiTextBlobNode.h +47 -0
  67. package/cpp/rnskia/dom/nodes/JsiTextNode.h +54 -0
  68. package/cpp/rnskia/dom/nodes/JsiTextPathNode.h +32 -0
  69. package/cpp/rnskia/dom/nodes/JsiVerticesNode.h +43 -0
  70. package/cpp/rnskia/dom/props/BezierProps.h +63 -0
  71. package/cpp/rnskia/dom/props/BlendModeProp.h +101 -0
  72. package/cpp/rnskia/dom/props/BoxShadowProps.h +61 -0
  73. package/cpp/rnskia/dom/props/CircleProp.h +46 -0
  74. package/cpp/rnskia/dom/props/ClipProp.h +62 -0
  75. package/cpp/rnskia/dom/props/ColorProp.h +80 -0
  76. package/cpp/rnskia/dom/props/DrawingProp.h +33 -0
  77. package/cpp/rnskia/dom/props/FontProp.h +34 -0
  78. package/cpp/rnskia/dom/props/GlyphsProp.h +53 -0
  79. package/cpp/rnskia/dom/props/ImageProps.h +173 -0
  80. package/cpp/rnskia/dom/props/LayerProp.h +50 -0
  81. package/cpp/rnskia/dom/props/MatrixProp.h +33 -0
  82. package/cpp/rnskia/dom/props/NumbersProp.h +63 -0
  83. package/cpp/rnskia/dom/props/PaintProps.h +172 -0
  84. package/cpp/rnskia/dom/props/PathProp.h +55 -0
  85. package/cpp/rnskia/dom/props/PictureProp.h +38 -0
  86. package/cpp/rnskia/dom/props/PointProp.h +72 -0
  87. package/cpp/rnskia/dom/props/PointsProp.h +83 -0
  88. package/cpp/rnskia/dom/props/RRectProp.h +134 -0
  89. package/cpp/rnskia/dom/props/RadiusProp.h +43 -0
  90. package/cpp/rnskia/dom/props/RectProp.h +118 -0
  91. package/cpp/rnskia/dom/props/StrokeProps.h +75 -0
  92. package/cpp/rnskia/dom/props/SvgProp.h +37 -0
  93. package/cpp/rnskia/dom/props/TextBlobProp.h +128 -0
  94. package/cpp/rnskia/dom/props/TileModeProp.h +50 -0
  95. package/cpp/rnskia/dom/props/TransformProp.h +80 -0
  96. package/cpp/rnskia/dom/props/TransformsProps.h +68 -0
  97. package/cpp/rnskia/dom/props/UniformsProp.h +194 -0
  98. package/cpp/rnskia/dom/props/VertexModeProp.h +47 -0
  99. package/cpp/rnskia/dom/props/VerticesProps.h +67 -0
  100. package/cpp/rnskia/values/RNSkReadonlyValue.h +13 -4
  101. package/cpp/skia/include/android/SkAndroidFrameworkUtils.h +35 -1
  102. package/cpp/skia/include/codec/SkAndroidCodec.h +17 -1
  103. package/cpp/skia/include/codec/SkCodec.h +8 -5
  104. package/cpp/skia/include/core/SkAnnotation.h +2 -0
  105. package/cpp/skia/include/core/SkBitmap.h +52 -1
  106. package/cpp/skia/include/core/SkBlendMode.h +2 -0
  107. package/cpp/skia/include/core/SkCanvas.h +52 -31
  108. package/cpp/skia/include/core/SkCapabilities.h +44 -0
  109. package/cpp/skia/include/core/SkColor.h +7 -0
  110. package/cpp/skia/include/core/SkColorFilter.h +37 -0
  111. package/cpp/skia/include/core/SkColorSpace.h +1 -1
  112. package/cpp/skia/include/core/SkFont.h +4 -0
  113. package/cpp/skia/include/core/SkFontMgr.h +3 -0
  114. package/cpp/skia/include/core/SkGraphics.h +9 -0
  115. package/cpp/skia/include/core/SkImage.h +77 -17
  116. package/cpp/skia/include/core/SkImageEncoder.h +5 -3
  117. package/cpp/skia/include/core/SkImageGenerator.h +27 -17
  118. package/cpp/skia/include/core/SkM44.h +1 -0
  119. package/cpp/skia/include/core/SkMesh.h +120 -34
  120. package/cpp/skia/include/core/SkMilestone.h +1 -1
  121. package/cpp/skia/include/core/SkOverdrawCanvas.h +2 -1
  122. package/cpp/skia/include/core/SkPaint.h +15 -2
  123. package/cpp/skia/include/core/SkPath.h +4 -0
  124. package/cpp/skia/include/core/SkPathBuilder.h +1 -1
  125. package/cpp/skia/include/core/SkPicture.h +0 -3
  126. package/cpp/skia/include/core/SkPictureRecorder.h +0 -2
  127. package/cpp/skia/include/core/SkPixmap.h +19 -0
  128. package/cpp/skia/include/core/SkRasterHandleAllocator.h +3 -1
  129. package/cpp/skia/include/core/SkRect.h +11 -4
  130. package/cpp/skia/include/core/SkRefCnt.h +13 -1
  131. package/cpp/skia/include/core/SkRegion.h +6 -0
  132. package/cpp/skia/include/core/SkSamplingOptions.h +8 -6
  133. package/cpp/skia/include/core/SkScalar.h +6 -25
  134. package/cpp/skia/include/core/SkShader.h +20 -12
  135. package/cpp/skia/include/core/SkSpan.h +51 -19
  136. package/cpp/skia/include/core/SkStream.h +2 -2
  137. package/cpp/skia/include/core/SkString.h +11 -3
  138. package/cpp/skia/include/core/SkSurface.h +85 -8
  139. package/cpp/skia/include/core/SkTextBlob.h +5 -2
  140. package/cpp/skia/include/core/SkTypes.h +11 -10
  141. package/cpp/skia/include/docs/SkPDFDocument.h +0 -5
  142. package/cpp/skia/include/effects/Sk1DPathEffect.h +6 -1
  143. package/cpp/skia/include/effects/Sk2DPathEffect.h +4 -1
  144. package/cpp/skia/include/effects/SkColorMatrix.h +1 -0
  145. package/cpp/skia/include/effects/SkColorMatrixFilter.h +5 -8
  146. package/cpp/skia/include/effects/SkCornerPathEffect.h +5 -1
  147. package/cpp/skia/include/effects/SkDashPathEffect.h +5 -1
  148. package/cpp/skia/include/effects/SkGradientShader.h +68 -38
  149. package/cpp/skia/include/effects/SkHighContrastFilter.h +5 -1
  150. package/cpp/skia/include/effects/SkImageFilters.h +5 -4
  151. package/cpp/skia/include/effects/SkLumaColorFilter.h +4 -1
  152. package/cpp/skia/include/effects/SkOpPathEffect.h +6 -2
  153. package/cpp/skia/include/effects/SkOverdrawColorFilter.h +5 -2
  154. package/cpp/skia/include/effects/SkRuntimeEffect.h +54 -62
  155. package/cpp/skia/include/effects/SkShaderMaskFilter.h +3 -1
  156. package/cpp/skia/include/effects/SkTableColorFilter.h +8 -21
  157. package/cpp/skia/include/effects/SkTableMaskFilter.h +5 -1
  158. package/cpp/skia/include/effects/SkTrimPathEffect.h +5 -1
  159. package/cpp/skia/include/encode/SkEncoder.h +17 -0
  160. package/cpp/skia/include/encode/SkWebpEncoder.h +17 -0
  161. package/cpp/skia/include/gpu/GpuTypes.h +18 -0
  162. package/cpp/skia/include/gpu/GrBackendSurface.h +38 -17
  163. package/cpp/skia/include/gpu/GrBackendSurfaceMutableState.h +6 -71
  164. package/cpp/skia/include/gpu/GrContextOptions.h +1 -1
  165. package/cpp/skia/include/gpu/GrContextThreadSafeProxy.h +10 -9
  166. package/cpp/skia/include/gpu/GrDirectContext.h +42 -22
  167. package/cpp/skia/include/gpu/GrRecordingContext.h +6 -3
  168. package/cpp/skia/include/gpu/GrTypes.h +11 -11
  169. package/cpp/skia/include/gpu/MutableTextureState.h +122 -0
  170. package/cpp/skia/include/gpu/gl/GrGLFunctions.h +1 -0
  171. package/cpp/skia/include/gpu/gl/GrGLInterface.h +1 -0
  172. package/cpp/skia/include/gpu/graphite/BackendTexture.h +7 -0
  173. package/cpp/skia/include/gpu/graphite/CombinationBuilder.h +195 -0
  174. package/cpp/skia/include/gpu/graphite/Context.h +47 -55
  175. package/cpp/skia/include/gpu/graphite/ContextOptions.h +85 -0
  176. package/cpp/skia/include/gpu/graphite/GraphiteTypes.h +1 -17
  177. package/cpp/skia/include/gpu/graphite/ImageProvider.h +61 -0
  178. package/cpp/skia/include/gpu/graphite/Recorder.h +87 -8
  179. package/cpp/skia/include/gpu/graphite/Recording.h +19 -9
  180. package/cpp/skia/include/gpu/graphite/TextureInfo.h +40 -8
  181. package/cpp/skia/include/gpu/graphite/dawn/DawnBackendContext.h +25 -0
  182. package/cpp/skia/include/gpu/graphite/mtl/MtlBackendContext.h +3 -2
  183. package/cpp/skia/include/gpu/graphite/vk/VulkanGraphiteTypes.h +69 -0
  184. package/cpp/skia/include/gpu/mtl/MtlMemoryAllocator.h +39 -0
  185. package/cpp/skia/include/gpu/vk/GrVkBackendContext.h +21 -19
  186. package/cpp/skia/include/gpu/vk/GrVkExtensions.h +2 -50
  187. package/cpp/skia/include/gpu/vk/GrVkMemoryAllocator.h +2 -127
  188. package/cpp/skia/include/gpu/vk/GrVkTypes.h +5 -43
  189. package/cpp/skia/include/gpu/vk/VulkanBackendContext.h +46 -0
  190. package/cpp/skia/include/gpu/vk/VulkanExtensions.h +67 -0
  191. package/cpp/skia/include/gpu/vk/VulkanMemoryAllocator.h +116 -0
  192. package/cpp/skia/include/gpu/vk/VulkanTypes.h +59 -0
  193. package/cpp/skia/include/pathops/SkPathOps.h +1 -1
  194. package/cpp/skia/include/private/SkColorData.h +10 -40
  195. package/cpp/skia/include/private/SkEncodedInfo.h +9 -3
  196. package/cpp/skia/include/private/SkFloatingPoint.h +9 -6
  197. package/cpp/skia/include/private/SkHalf.h +5 -52
  198. package/cpp/skia/include/private/SkMacros.h +1 -1
  199. package/cpp/skia/include/private/SkMalloc.h +4 -0
  200. package/cpp/skia/include/private/SkPathRef.h +10 -10
  201. package/cpp/skia/include/private/SkSLModifiers.h +59 -23
  202. package/cpp/skia/include/private/SkSLProgramKind.h +1 -0
  203. package/cpp/skia/include/private/SkSLSymbol.h +7 -3
  204. package/cpp/skia/include/private/SkStringView.h +4 -0
  205. package/cpp/skia/include/private/SkTArray.h +21 -7
  206. package/cpp/skia/include/private/SkTDArray.h +173 -285
  207. package/cpp/skia/include/private/SkTHash.h +33 -32
  208. package/cpp/skia/include/private/SkTemplates.h +24 -26
  209. package/cpp/skia/include/private/SkVx.h +218 -135
  210. package/cpp/skia/include/private/chromium/GrSlug.h +3 -65
  211. package/cpp/skia/include/private/chromium/SkChromeRemoteGlyphCache.h +6 -3
  212. package/cpp/skia/include/private/chromium/Slug.h +76 -0
  213. package/cpp/skia/include/private/gpu/ganesh/GrTypesPriv.h +6 -1
  214. package/cpp/skia/include/private/gpu/ganesh/GrVkTypesPriv.h +5 -39
  215. package/cpp/skia/include/private/gpu/graphite/VulkanGraphiteTypesPriv.h +63 -0
  216. package/cpp/skia/include/{gpu/vk/GrVkVulkan.h → private/gpu/vk/SkiaVulkan.h} +2 -2
  217. package/cpp/skia/include/private/gpu/vk/VulkanTypesPriv.h +57 -0
  218. package/cpp/skia/include/sksl/DSL.h +0 -1
  219. package/cpp/skia/include/sksl/DSLBlock.h +4 -18
  220. package/cpp/skia/include/sksl/DSLCase.h +2 -8
  221. package/cpp/skia/include/sksl/DSLCore.h +8 -15
  222. package/cpp/skia/include/sksl/DSLExpression.h +51 -142
  223. package/cpp/skia/include/sksl/DSLFunction.h +7 -15
  224. package/cpp/skia/include/sksl/DSLModifiers.h +5 -2
  225. package/cpp/skia/include/sksl/DSLStatement.h +4 -39
  226. package/cpp/skia/include/sksl/DSLSymbols.h +1 -11
  227. package/cpp/skia/include/sksl/DSLType.h +20 -12
  228. package/cpp/skia/include/sksl/DSLVar.h +56 -146
  229. package/cpp/skia/include/sksl/SkSLErrorReporter.h +2 -15
  230. package/cpp/skia/include/sksl/SkSLOperator.h +62 -59
  231. package/cpp/skia/include/sksl/SkSLPosition.h +2 -0
  232. package/cpp/skia/include/sksl/SkSLVersion.h +27 -0
  233. package/cpp/skia/include/svg/SkSVGCanvas.h +1 -0
  234. package/cpp/skia/include/utils/SkAnimCodecPlayer.h +1 -1
  235. package/cpp/skia/include/utils/SkBase64.h +2 -0
  236. package/cpp/skia/include/utils/SkCustomTypeface.h +24 -11
  237. package/cpp/skia/include/utils/SkEventTracer.h +12 -1
  238. package/cpp/skia/include/utils/SkNWayCanvas.h +11 -4
  239. package/cpp/skia/include/utils/SkPaintFilterCanvas.h +9 -4
  240. package/cpp/skia/include/utils/SkParse.h +3 -0
  241. package/cpp/skia/include/utils/SkShadowUtils.h +2 -0
  242. package/cpp/skia/include/utils/SkTextUtils.h +2 -1
  243. package/cpp/skia/{include/third_party → modules}/skcms/skcms.h +10 -0
  244. package/cpp/skia/modules/skcms/skcms_internal.h +56 -0
  245. package/cpp/skia/modules/skcms/src/Transform_inl.h +1609 -0
  246. package/cpp/skia/modules/skparagraph/include/DartTypes.h +153 -0
  247. package/cpp/skia/modules/skparagraph/include/FontArguments.h +46 -0
  248. package/cpp/skia/modules/skparagraph/include/FontCollection.h +84 -0
  249. package/cpp/skia/modules/skparagraph/include/Metrics.h +98 -0
  250. package/cpp/skia/modules/skparagraph/include/Paragraph.h +111 -0
  251. package/cpp/skia/modules/skparagraph/include/ParagraphBuilder.h +69 -0
  252. package/cpp/skia/modules/skparagraph/include/ParagraphCache.h +77 -0
  253. package/cpp/skia/modules/skparagraph/include/ParagraphStyle.h +143 -0
  254. package/cpp/skia/modules/skparagraph/include/TextShadow.h +30 -0
  255. package/cpp/skia/modules/skparagraph/include/TextStyle.h +352 -0
  256. package/cpp/skia/modules/skparagraph/include/TypefaceFontProvider.h +81 -0
  257. package/cpp/skia/modules/svg/include/SkSVGAttributeParser.h +1 -1
  258. package/cpp/skia/modules/svg/include/SkSVGTypes.h +3 -3
  259. package/cpp/skia/src/core/SkLRUCache.h +126 -0
  260. package/cpp/skia/src/core/SkTInternalLList.h +302 -0
  261. package/cpp/utils/RNSkTimingInfo.h +1 -0
  262. package/ios/RNSkia-iOS/RNSkMetalCanvasProvider.h +15 -4
  263. package/ios/RNSkia-iOS/RNSkMetalCanvasProvider.mm +40 -54
  264. package/ios/RNSkia-iOS/SkiaDomViewManager.h +8 -0
  265. package/ios/RNSkia-iOS/SkiaDomViewManager.mm +51 -0
  266. package/lib/commonjs/dom/nodes/JsiSkDOM.js +56 -56
  267. package/lib/commonjs/dom/nodes/JsiSkDOM.js.map +1 -1
  268. package/lib/commonjs/dom/nodes/RenderNode.js +1 -1
  269. package/lib/commonjs/dom/nodes/RenderNode.js.map +1 -1
  270. package/lib/commonjs/renderer/Canvas.js +19 -63
  271. package/lib/commonjs/renderer/Canvas.js.map +1 -1
  272. package/lib/commonjs/renderer/DependencyManager.js +0 -5
  273. package/lib/commonjs/renderer/DependencyManager.js.map +1 -1
  274. package/lib/commonjs/renderer/HostComponents.js.map +1 -1
  275. package/lib/commonjs/renderer/useCanvas.js +4 -18
  276. package/lib/commonjs/renderer/useCanvas.js.map +1 -1
  277. package/lib/commonjs/views/SkiaBaseWebView.js +7 -0
  278. package/lib/commonjs/views/SkiaBaseWebView.js.map +1 -1
  279. package/lib/commonjs/views/SkiaDomView.js +152 -0
  280. package/lib/commonjs/views/SkiaDomView.js.map +1 -0
  281. package/lib/commonjs/views/SkiaDomView.web.js +55 -0
  282. package/lib/commonjs/views/SkiaDomView.web.js.map +1 -0
  283. package/lib/commonjs/views/SkiaPictureView.js +16 -2
  284. package/lib/commonjs/views/SkiaPictureView.js.map +1 -1
  285. package/lib/commonjs/views/SkiaView.js +17 -2
  286. package/lib/commonjs/views/SkiaView.js.map +1 -1
  287. package/lib/commonjs/views/index.js +13 -0
  288. package/lib/commonjs/views/index.js.map +1 -1
  289. package/lib/commonjs/views/types.js.map +1 -1
  290. package/lib/module/dom/nodes/JsiSkDOM.js +56 -56
  291. package/lib/module/dom/nodes/JsiSkDOM.js.map +1 -1
  292. package/lib/module/dom/nodes/RenderNode.js +1 -1
  293. package/lib/module/dom/nodes/RenderNode.js.map +1 -1
  294. package/lib/module/renderer/Canvas.js +20 -64
  295. package/lib/module/renderer/Canvas.js.map +1 -1
  296. package/lib/module/renderer/DependencyManager.js +0 -5
  297. package/lib/module/renderer/DependencyManager.js.map +1 -1
  298. package/lib/module/renderer/HostComponents.js.map +1 -1
  299. package/lib/module/renderer/useCanvas.js +2 -13
  300. package/lib/module/renderer/useCanvas.js.map +1 -1
  301. package/lib/module/views/SkiaBaseWebView.js +7 -0
  302. package/lib/module/views/SkiaBaseWebView.js.map +1 -1
  303. package/lib/module/views/SkiaDomView.js +128 -0
  304. package/lib/module/views/SkiaDomView.js.map +1 -0
  305. package/lib/module/views/SkiaDomView.web.js +41 -0
  306. package/lib/module/views/SkiaDomView.web.js.map +1 -0
  307. package/lib/module/views/SkiaPictureView.js +14 -2
  308. package/lib/module/views/SkiaPictureView.js.map +1 -1
  309. package/lib/module/views/SkiaView.js +15 -2
  310. package/lib/module/views/SkiaView.js.map +1 -1
  311. package/lib/module/views/index.js +1 -0
  312. package/lib/module/views/index.js.map +1 -1
  313. package/lib/module/views/types.js.map +1 -1
  314. package/lib/typescript/src/dom/nodes/JsiSkDOM.d.ts +57 -64
  315. package/lib/typescript/src/renderer/Canvas.d.ts +5 -8
  316. package/lib/typescript/src/renderer/DependencyManager.d.ts +0 -2
  317. package/lib/typescript/src/renderer/HostComponents.d.ts +66 -3
  318. package/lib/typescript/src/renderer/useCanvas.d.ts +0 -6
  319. package/lib/typescript/src/views/SkiaBaseWebView.d.ts +4 -0
  320. package/lib/typescript/src/views/SkiaDomView.d.ts +31 -0
  321. package/lib/typescript/src/views/SkiaDomView.web.d.ts +7 -0
  322. package/lib/typescript/src/views/index.d.ts +1 -0
  323. package/lib/typescript/src/views/types.d.ts +12 -2
  324. package/libs/android/arm64-v8a/libskia.a +0 -0
  325. package/libs/android/arm64-v8a/libskottie.a +0 -0
  326. package/libs/android/arm64-v8a/libskparagraph.a +0 -0
  327. package/libs/android/arm64-v8a/libsksg.a +0 -0
  328. package/libs/android/arm64-v8a/libskshaper.a +0 -0
  329. package/libs/android/arm64-v8a/libskunicode.a +0 -0
  330. package/libs/android/arm64-v8a/libsvg.a +0 -0
  331. package/libs/android/armeabi-v7a/libskia.a +0 -0
  332. package/libs/android/armeabi-v7a/libskottie.a +0 -0
  333. package/libs/android/armeabi-v7a/libskparagraph.a +0 -0
  334. package/libs/android/armeabi-v7a/libsksg.a +0 -0
  335. package/libs/android/armeabi-v7a/libskshaper.a +0 -0
  336. package/libs/android/armeabi-v7a/libskunicode.a +0 -0
  337. package/libs/android/armeabi-v7a/libsvg.a +0 -0
  338. package/libs/android/x86/libskia.a +0 -0
  339. package/libs/android/x86/libskottie.a +0 -0
  340. package/libs/android/x86/libskparagraph.a +0 -0
  341. package/libs/android/x86/libsksg.a +0 -0
  342. package/libs/android/x86/libskshaper.a +0 -0
  343. package/libs/android/x86/libskunicode.a +0 -0
  344. package/libs/android/x86/libsvg.a +0 -0
  345. package/libs/android/x86_64/libskia.a +0 -0
  346. package/libs/android/x86_64/libskottie.a +0 -0
  347. package/libs/android/x86_64/libskparagraph.a +0 -0
  348. package/libs/android/x86_64/libsksg.a +0 -0
  349. package/libs/android/x86_64/libskshaper.a +0 -0
  350. package/libs/android/x86_64/libskunicode.a +0 -0
  351. package/libs/android/x86_64/libsvg.a +0 -0
  352. package/libs/ios/libskia.xcframework/ios-arm64_arm64e/libskia.a +0 -0
  353. package/libs/ios/libskia.xcframework/ios-arm64_arm64e_x86_64-simulator/libskia.a +0 -0
  354. package/libs/ios/libskottie.xcframework/ios-arm64_arm64e/libskottie.a +0 -0
  355. package/libs/ios/libskottie.xcframework/ios-arm64_arm64e_x86_64-simulator/libskottie.a +0 -0
  356. package/libs/ios/libskparagraph.xcframework/Info.plist +42 -0
  357. package/libs/ios/libskparagraph.xcframework/ios-arm64_arm64e/libskparagraph.a +0 -0
  358. package/libs/ios/libskparagraph.xcframework/ios-arm64_arm64e_x86_64-simulator/libskparagraph.a +0 -0
  359. package/libs/ios/libsksg.xcframework/Info.plist +5 -5
  360. package/libs/ios/libsksg.xcframework/ios-arm64_arm64e/libsksg.a +0 -0
  361. package/libs/ios/libsksg.xcframework/ios-arm64_arm64e_x86_64-simulator/libsksg.a +0 -0
  362. package/libs/ios/libskshaper.xcframework/ios-arm64_arm64e/libskshaper.a +0 -0
  363. package/libs/ios/libskshaper.xcframework/ios-arm64_arm64e_x86_64-simulator/libskshaper.a +0 -0
  364. package/libs/ios/libskunicode.xcframework/Info.plist +42 -0
  365. package/libs/ios/libskunicode.xcframework/ios-arm64_arm64e/libskunicode.a +0 -0
  366. package/libs/ios/libskunicode.xcframework/ios-arm64_arm64e_x86_64-simulator/libskunicode.a +0 -0
  367. package/libs/ios/libsvg.xcframework/ios-arm64_arm64e/libsvg.a +0 -0
  368. package/libs/ios/libsvg.xcframework/ios-arm64_arm64e_x86_64-simulator/libsvg.a +0 -0
  369. package/package.json +5 -3
  370. package/react-native-skia.podspec +3 -1
  371. package/src/dom/nodes/JsiSkDOM.ts +170 -56
  372. package/src/dom/nodes/RenderNode.ts +1 -1
  373. package/src/renderer/Canvas.tsx +32 -56
  374. package/src/renderer/DependencyManager.tsx +0 -5
  375. package/src/renderer/HostComponents.ts +152 -1
  376. package/src/renderer/useCanvas.ts +1 -15
  377. package/src/views/SkiaBaseWebView.tsx +4 -0
  378. package/src/views/SkiaDomView.tsx +120 -0
  379. package/src/views/SkiaDomView.web.tsx +37 -0
  380. package/src/views/SkiaPictureView.tsx +10 -2
  381. package/src/views/SkiaView.tsx +11 -3
  382. package/src/views/index.ts +1 -0
  383. package/src/views/types.ts +19 -2
  384. package/cpp/jsi/JsiSimpleValueWrapper.h +0 -99
  385. package/cpp/skia/include/c/sk_canvas.h +0 -159
  386. package/cpp/skia/include/c/sk_colorspace.h +0 -25
  387. package/cpp/skia/include/c/sk_data.h +0 -65
  388. package/cpp/skia/include/c/sk_image.h +0 -71
  389. package/cpp/skia/include/c/sk_imageinfo.h +0 -62
  390. package/cpp/skia/include/c/sk_maskfilter.h +0 -47
  391. package/cpp/skia/include/c/sk_matrix.h +0 -49
  392. package/cpp/skia/include/c/sk_paint.h +0 -145
  393. package/cpp/skia/include/c/sk_path.h +0 -102
  394. package/cpp/skia/include/c/sk_picture.h +0 -70
  395. package/cpp/skia/include/c/sk_shader.h +0 -143
  396. package/cpp/skia/include/c/sk_surface.h +0 -73
  397. package/cpp/skia/include/c/sk_types.h +0 -278
  398. package/cpp/skia/include/gpu/graphite/SkStuff.h +0 -47
  399. package/cpp/skia/include/private/SkNx.h +0 -430
  400. package/cpp/skia/include/private/SkNx_neon.h +0 -713
  401. package/cpp/skia/include/private/SkNx_sse.h +0 -823
  402. package/cpp/skia/include/sksl/DSLRuntimeEffects.h +0 -32
  403. package/cpp/skia/include/sksl/DSLWrapper.h +0 -77
@@ -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