@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
@@ -8,133 +8,8 @@
8
8
  #ifndef GrVkMemoryAllocator_DEFINED
9
9
  #define GrVkMemoryAllocator_DEFINED
10
10
 
11
- #include "include/core/SkRefCnt.h"
12
- #include "include/gpu/GrTypes.h"
13
- #include "include/gpu/vk/GrVkTypes.h"
11
+ #include "include/gpu/vk/VulkanMemoryAllocator.h"
14
12
 
15
- class GrVkMemoryAllocator : public SkRefCnt {
16
- public:
17
- enum class AllocationPropertyFlags {
18
- kNone = 0,
19
- // Allocation will be placed in its own VkDeviceMemory and not suballocated from some larger
20
- // block.
21
- kDedicatedAllocation = 0x1,
22
- // Says that the backing memory can only be accessed by the device. Additionally the device
23
- // may lazily allocate the memory. This cannot be used with buffers that will be host
24
- // visible. Setting this flag does not guarantee that we will allocate memory that respects
25
- // it, but we will try to prefer memory that can respect it.
26
- kLazyAllocation = 0x2,
27
- // The allocation will be mapped immediately and stay mapped until it is destroyed. This
28
- // flag is only valid for buffers which are host visible (i.e. must have a usage other than
29
- // BufferUsage::kGpuOnly).
30
- kPersistentlyMapped = 0x4,
31
- // Allocation can only be accessed by the device using a protected context.
32
- kProtected = 0x8,
33
- };
34
-
35
- GR_DECL_BITFIELD_CLASS_OPS_FRIENDS(AllocationPropertyFlags);
36
-
37
- enum class BufferUsage {
38
- // Buffers that will only be accessed from the device (large const buffers). Will always be
39
- // in device local memory.
40
- kGpuOnly,
41
- // Buffers that typically will be updated multiple times by the host and read on the gpu
42
- // (e.g. uniform or vertex buffers). CPU writes will generally be sequential in the buffer
43
- // and will try to take advantage of the write-combined nature of the gpu buffers. Thus this
44
- // will always be mappable and coherent memory, and it will prefer to be in device local
45
- // memory.
46
- kCpuWritesGpuReads,
47
- // Buffers that will be accessed on the host and copied to another GPU resource (transfer
48
- // buffers). Will always be mappable and coherent memory.
49
- kTransfersFromCpuToGpu,
50
- // Buffers which are typically writted to by the GPU and then read on the host. Will always
51
- // be mappable memory, and will prefer cached memory.
52
- kTransfersFromGpuToCpu,
53
- };
54
-
55
- // DEPRECATED: Use and implement allocateImageMemory instead
56
- virtual bool allocateMemoryForImage(VkImage, AllocationPropertyFlags, GrVkBackendMemory*) {
57
- // The default implementation here is so clients can delete this virtual as the switch to
58
- // the new one which returns a VkResult.
59
- return false;
60
- }
61
-
62
- virtual VkResult allocateImageMemory(VkImage image, AllocationPropertyFlags flags,
63
- GrVkBackendMemory* memory) {
64
- bool result = this->allocateMemoryForImage(image, flags, memory);
65
- // VK_ERROR_INITIALIZATION_FAILED is a bogus result to return from this function, but it is
66
- // just something to return that is not VK_SUCCESS and can't be interpreted by a caller to
67
- // mean something specific happened like device lost or oom. This will be removed once we
68
- // update clients to implement this virtual.
69
- return result ? VK_SUCCESS : VK_ERROR_INITIALIZATION_FAILED;
70
- }
71
-
72
- // DEPRECATED: Use and implement allocateBufferMemory instead
73
- virtual bool allocateMemoryForBuffer(VkBuffer, BufferUsage, AllocationPropertyFlags,
74
- GrVkBackendMemory*) {
75
- // The default implementation here is so clients can delete this virtual as the switch to
76
- // the new one which returns a VkResult.
77
- return false;
78
- }
79
-
80
- virtual VkResult allocateBufferMemory(VkBuffer buffer,
81
- BufferUsage usage,
82
- AllocationPropertyFlags flags,
83
- GrVkBackendMemory* memory) {
84
- bool result = this->allocateMemoryForBuffer(buffer, usage, flags, memory);
85
- // VK_ERROR_INITIALIZATION_FAILED is a bogus result to return from this function, but it is
86
- // just something to return that is not VK_SUCCESS and can't be interpreted by a caller to
87
- // mean something specific happened like device lost or oom. This will be removed once we
88
- // update clients to implement this virtual.
89
- return result ? VK_SUCCESS : VK_ERROR_INITIALIZATION_FAILED;
90
- }
91
-
92
-
93
- // Fills out the passed in GrVkAlloc struct for the passed in GrVkBackendMemory.
94
- virtual void getAllocInfo(const GrVkBackendMemory&, GrVkAlloc*) const = 0;
95
-
96
- // Maps the entire allocation and returns a pointer to the start of the allocation. The
97
- // implementation may map more memory than just the allocation, but the returned pointer must
98
- // point at the start of the memory for the requested allocation.
99
- virtual void* mapMemory(const GrVkBackendMemory&) { return nullptr; }
100
- virtual VkResult mapMemory(const GrVkBackendMemory& memory, void** data) {
101
- *data = this->mapMemory(memory);
102
- // VK_ERROR_INITIALIZATION_FAILED is a bogus result to return from this function, but it is
103
- // just something to return that is not VK_SUCCESS and can't be interpreted by a caller to
104
- // mean something specific happened like device lost or oom. This will be removed once we
105
- // update clients to implement this virtual.
106
- return *data ? VK_SUCCESS : VK_ERROR_INITIALIZATION_FAILED;
107
- }
108
- virtual void unmapMemory(const GrVkBackendMemory&) = 0;
109
-
110
- // The following two calls are used for managing non-coherent memory. The offset is relative to
111
- // the start of the allocation and not the underlying VkDeviceMemory. Additionaly the client
112
- // must make sure that the offset + size passed in is less that or equal to the allocation size.
113
- // It is the responsibility of the implementation to make sure all alignment requirements are
114
- // followed. The client should not have to deal with any sort of alignment issues.
115
- virtual void flushMappedMemory(const GrVkBackendMemory&, VkDeviceSize, VkDeviceSize) {}
116
- virtual VkResult flushMemory(const GrVkBackendMemory& memory, VkDeviceSize offset,
117
- VkDeviceSize size) {
118
- this->flushMappedMemory(memory, offset, size);
119
- return VK_SUCCESS;
120
- }
121
- virtual void invalidateMappedMemory(const GrVkBackendMemory&, VkDeviceSize, VkDeviceSize) {}
122
- virtual VkResult invalidateMemory(const GrVkBackendMemory& memory, VkDeviceSize offset,
123
- VkDeviceSize size) {
124
- this->invalidateMappedMemory(memory, offset, size);
125
- return VK_SUCCESS;
126
- }
127
-
128
- virtual void freeMemory(const GrVkBackendMemory&) = 0;
129
-
130
- // Returns the total amount of memory that is allocated and in use by an allocation for this
131
- // allocator.
132
- virtual uint64_t totalUsedMemory() const = 0;
133
-
134
- // Returns the total amount of memory that is allocated by this allocator.
135
- virtual uint64_t totalAllocatedMemory() const = 0;
136
- };
137
-
138
- GR_MAKE_BITFIELD_CLASS_OPS(GrVkMemoryAllocator::AllocationPropertyFlags)
13
+ using GrVkMemoryAllocator = skgpu::VulkanMemoryAllocator;
139
14
 
140
15
  #endif
@@ -9,45 +9,11 @@
9
9
  #ifndef GrVkTypes_DEFINED
10
10
  #define GrVkTypes_DEFINED
11
11
 
12
- #include "include/core/SkTypes.h"
13
- #include "include/gpu/vk/GrVkVulkan.h"
14
-
15
- #ifndef VK_VERSION_1_1
16
- #error Skia requires the use of Vulkan 1.1 headers
17
- #endif
18
-
19
- #include <functional>
20
12
  #include "include/gpu/GrTypes.h"
13
+ #include "include/gpu/vk/VulkanTypes.h"
21
14
 
22
- typedef intptr_t GrVkBackendMemory;
23
-
24
- /**
25
- * Types for interacting with Vulkan resources created externally to Skia. GrBackendObjects for
26
- * Vulkan textures are really const GrVkImageInfo*
27
- */
28
- struct GrVkAlloc {
29
- // can be VK_NULL_HANDLE iff is an RT and is borrowed
30
- VkDeviceMemory fMemory = VK_NULL_HANDLE;
31
- VkDeviceSize fOffset = 0;
32
- VkDeviceSize fSize = 0; // this can be indeterminate iff Tex uses borrow semantics
33
- uint32_t fFlags = 0;
34
- GrVkBackendMemory fBackendMemory = 0; // handle to memory allocated via GrVkMemoryAllocator.
35
-
36
- enum Flag {
37
- kNoncoherent_Flag = 0x1, // memory must be flushed to device after mapping
38
- kMappable_Flag = 0x2, // memory is able to be mapped.
39
- kLazilyAllocated_Flag = 0x4, // memory was created with lazy allocation
40
- };
41
-
42
- bool operator==(const GrVkAlloc& that) const {
43
- return fMemory == that.fMemory && fOffset == that.fOffset && fSize == that.fSize &&
44
- fFlags == that.fFlags && fUsesSystemHeap == that.fUsesSystemHeap;
45
- }
46
-
47
- private:
48
- friend class GrVkHeap; // For access to usesSystemHeap
49
- bool fUsesSystemHeap = false;
50
- };
15
+ using GrVkBackendMemory = skgpu::VulkanBackendMemory;
16
+ using GrVkAlloc = skgpu::VulkanAlloc;
51
17
 
52
18
  // This struct is used to pass in the necessary information to create a VkSamplerYcbcrConversion
53
19
  // object for an VkExternalFormatANDROID.
@@ -98,7 +64,7 @@ struct GrVkYcbcrConversionInfo {
98
64
  */
99
65
  struct GrVkImageInfo {
100
66
  VkImage fImage = VK_NULL_HANDLE;
101
- GrVkAlloc fAlloc;
67
+ skgpu::VulkanAlloc fAlloc;
102
68
  VkImageTiling fImageTiling = VK_IMAGE_TILING_OPTIMAL;
103
69
  VkImageLayout fImageLayout = VK_IMAGE_LAYOUT_UNDEFINED;
104
70
  VkFormat fFormat = VK_FORMAT_UNDEFINED;
@@ -134,11 +100,7 @@ struct GrVkImageInfo {
134
100
  #endif
135
101
  };
136
102
 
137
- using GrVkGetProc = std::function<PFN_vkVoidFunction(
138
- const char*, // function name
139
- VkInstance, // instance or VK_NULL_HANDLE
140
- VkDevice // device or VK_NULL_HANDLE
141
- )>;
103
+ using GrVkGetProc = skgpu::VulkanGetProc;
142
104
 
143
105
  /**
144
106
  * This object is wrapped in a GrBackendDrawableInfo and passed in as an argument to
@@ -0,0 +1,46 @@
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_VulkanBackendContext_DEFINED
9
+ #define skgpu_VulkanBackendContext_DEFINED
10
+
11
+ #include "include/gpu/GpuTypes.h"
12
+ #include "include/gpu/vk/VulkanMemoryAllocator.h"
13
+ #include "include/gpu/vk/VulkanTypes.h"
14
+
15
+ namespace skgpu {
16
+
17
+ class VulkanExtensions;
18
+
19
+ // The VkBackendContext contains all of the base Vk objects needed by the skia Vulkan context.
20
+ struct SK_API VulkanBackendContext {
21
+ VkInstance fInstance;
22
+ VkPhysicalDevice fPhysicalDevice;
23
+ VkDevice fDevice;
24
+ VkQueue fQueue;
25
+ uint32_t fGraphicsQueueIndex;
26
+ // The max api version set here should match the value set in VkApplicationInfo::apiVersion when
27
+ // then VkInstance was created.
28
+ uint32_t fMaxAPIVersion;
29
+ const skgpu::VulkanExtensions* fVkExtensions = nullptr;
30
+ // The client can create their VkDevice with either a VkPhysicalDeviceFeatures or
31
+ // VkPhysicalDeviceFeatures2 struct, thus we have to support taking both. The
32
+ // VkPhysicalDeviceFeatures2 struct is needed so we know if the client enabled any extension
33
+ // specific features. If fDeviceFeatures2 is not null then we ignore fDeviceFeatures. If both
34
+ // fDeviceFeatures and fDeviceFeatures2 are null we will assume no features are enabled.
35
+ const VkPhysicalDeviceFeatures* fDeviceFeatures = nullptr;
36
+ const VkPhysicalDeviceFeatures2* fDeviceFeatures2 = nullptr;
37
+ // Optional. The client may provide an inplementation of a VulkanMemoryAllocator for Skia to use
38
+ // for allocating Vulkan resources that use VkDeviceMemory.
39
+ sk_sp<VulkanMemoryAllocator> fMemoryAllocator;
40
+ skgpu::VulkanGetProc fGetProc;
41
+ Protected fProtectedContext;
42
+ };
43
+
44
+ } // namespace skgpu::graphite
45
+
46
+ #endif // skgpu_VulkanBackendContext_DEFINED
@@ -0,0 +1,67 @@
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_VulkanExtensions_DEFINED
9
+ #define skgpu_VulkanExtensions_DEFINED
10
+
11
+ #include "include/core/SkString.h"
12
+ #include "include/gpu/vk/VulkanTypes.h"
13
+ #include "include/private/SkTArray.h"
14
+
15
+ namespace skgpu {
16
+
17
+ /**
18
+ * Helper class that eats in an array of extensions strings for instance and device and allows for
19
+ * quicker querying if an extension is present.
20
+ */
21
+ class SK_API VulkanExtensions {
22
+ public:
23
+ VulkanExtensions() {}
24
+
25
+ void init(VulkanGetProc, VkInstance, VkPhysicalDevice,
26
+ uint32_t instanceExtensionCount, const char* const* instanceExtensions,
27
+ uint32_t deviceExtensionCount, const char* const* deviceExtensions);
28
+
29
+ bool hasExtension(const char[], uint32_t minVersion) const;
30
+
31
+ struct Info {
32
+ Info() {}
33
+ Info(const char* name) : fName(name), fSpecVersion(0) {}
34
+
35
+ SkString fName;
36
+ uint32_t fSpecVersion;
37
+
38
+ struct Less {
39
+ bool operator()(const Info& a, const SkString& b) const {
40
+ return strcmp(a.fName.c_str(), b.c_str()) < 0;
41
+ }
42
+ bool operator()(const SkString& a, const VulkanExtensions::Info& b) const {
43
+ return strcmp(a.c_str(), b.fName.c_str()) < 0;
44
+ }
45
+ };
46
+ };
47
+
48
+ #ifdef SK_DEBUG
49
+ void dump() const {
50
+ SkDebugf("**Vulkan Extensions**\n");
51
+ for (int i = 0; i < fExtensions.count(); ++i) {
52
+ SkDebugf("%s. Version: %d\n",
53
+ fExtensions[i].fName.c_str(), fExtensions[i].fSpecVersion);
54
+ }
55
+ SkDebugf("**End Vulkan Extensions**\n");
56
+ }
57
+ #endif
58
+
59
+ private:
60
+ void getSpecVersions(VulkanGetProc getProc, VkInstance, VkPhysicalDevice);
61
+
62
+ SkTArray<Info> fExtensions;
63
+ };
64
+
65
+ } // namespace skgpu
66
+
67
+ #endif // skgpu_VulkanExtensions_DEFINED
@@ -0,0 +1,116 @@
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_VulkanMemoryAllocator_DEFINED
9
+ #define skgpu_VulkanMemoryAllocator_DEFINED
10
+
11
+ #include "include/core/SkRefCnt.h"
12
+ #include "include/gpu/GpuTypes.h"
13
+ #include "include/gpu/vk/VulkanTypes.h"
14
+
15
+ namespace skgpu {
16
+
17
+ class VulkanMemoryAllocator : public SkRefCnt {
18
+ public:
19
+ enum AllocationPropertyFlags {
20
+ kNone_AllocationPropertyFlag = 0b0000,
21
+ // Allocation will be placed in its own VkDeviceMemory and not suballocated from some larger
22
+ // block.
23
+ kDedicatedAllocation_AllocationPropertyFlag = 0b0001,
24
+ // Says that the backing memory can only be accessed by the device. Additionally the device
25
+ // may lazily allocate the memory. This cannot be used with buffers that will be host
26
+ // visible. Setting this flag does not guarantee that we will allocate memory that respects
27
+ // it, but we will try to prefer memory that can respect it.
28
+ kLazyAllocation_AllocationPropertyFlag = 0b0010,
29
+ // The allocation will be mapped immediately and stay mapped until it is destroyed. This
30
+ // flag is only valid for buffers which are host visible (i.e. must have a usage other than
31
+ // BufferUsage::kGpuOnly).
32
+ kPersistentlyMapped_AllocationPropertyFlag = 0b0100,
33
+ // Allocation can only be accessed by the device using a protected context.
34
+ kProtected_AllocationPropertyFlag = 0b1000,
35
+ };
36
+
37
+ enum class BufferUsage {
38
+ // Buffers that will only be accessed from the device (large const buffers). Will always be
39
+ // in device local memory.
40
+ kGpuOnly,
41
+ // Buffers that typically will be updated multiple times by the host and read on the gpu
42
+ // (e.g. uniform or vertex buffers). CPU writes will generally be sequential in the buffer
43
+ // and will try to take advantage of the write-combined nature of the gpu buffers. Thus this
44
+ // will always be mappable and coherent memory, and it will prefer to be in device local
45
+ // memory.
46
+ kCpuWritesGpuReads,
47
+ // Buffers that will be accessed on the host and copied to another GPU resource (transfer
48
+ // buffers). Will always be mappable and coherent memory.
49
+ kTransfersFromCpuToGpu,
50
+ // Buffers which are typically writted to by the GPU and then read on the host. Will always
51
+ // be mappable memory, and will prefer cached memory.
52
+ kTransfersFromGpuToCpu,
53
+ };
54
+
55
+ virtual VkResult allocateImageMemory(VkImage image,
56
+ uint32_t allocationPropertyFlags,
57
+ skgpu::VulkanBackendMemory* memory) = 0;
58
+
59
+ virtual VkResult allocateBufferMemory(VkBuffer buffer,
60
+ BufferUsage usage,
61
+ uint32_t allocationPropertyFlags,
62
+ skgpu::VulkanBackendMemory* memory) = 0;
63
+
64
+ // Fills out the passed in skgpu::VulkanAlloc struct for the passed in
65
+ // skgpu::VulkanBackendMemory.
66
+ virtual void getAllocInfo(const skgpu::VulkanBackendMemory&, skgpu::VulkanAlloc*) const = 0;
67
+
68
+ // Maps the entire allocation and returns a pointer to the start of the allocation. The
69
+ // implementation may map more memory than just the allocation, but the returned pointer must
70
+ // point at the start of the memory for the requested allocation.
71
+ virtual void* mapMemory(const skgpu::VulkanBackendMemory&) { return nullptr; }
72
+ virtual VkResult mapMemory(const skgpu::VulkanBackendMemory& memory, void** data) {
73
+ *data = this->mapMemory(memory);
74
+ // VK_ERROR_INITIALIZATION_FAILED is a bogus result to return from this function, but it is
75
+ // just something to return that is not VK_SUCCESS and can't be interpreted by a caller to
76
+ // mean something specific happened like device lost or oom. This will be removed once we
77
+ // update clients to implement this virtual.
78
+ return *data ? VK_SUCCESS : VK_ERROR_INITIALIZATION_FAILED;
79
+ }
80
+ virtual void unmapMemory(const skgpu::VulkanBackendMemory&) = 0;
81
+
82
+ // The following two calls are used for managing non-coherent memory. The offset is relative to
83
+ // the start of the allocation and not the underlying VkDeviceMemory. Additionaly the client
84
+ // must make sure that the offset + size passed in is less that or equal to the allocation size.
85
+ // It is the responsibility of the implementation to make sure all alignment requirements are
86
+ // followed. The client should not have to deal with any sort of alignment issues.
87
+ virtual void flushMappedMemory(const skgpu::VulkanBackendMemory&, VkDeviceSize, VkDeviceSize) {}
88
+ virtual VkResult flushMemory(const skgpu::VulkanBackendMemory& memory,
89
+ VkDeviceSize offset,
90
+ VkDeviceSize size) {
91
+ this->flushMappedMemory(memory, offset, size);
92
+ return VK_SUCCESS;
93
+ }
94
+ virtual void invalidateMappedMemory(const skgpu::VulkanBackendMemory&,
95
+ VkDeviceSize,
96
+ VkDeviceSize) {}
97
+ virtual VkResult invalidateMemory(const skgpu::VulkanBackendMemory& memory,
98
+ VkDeviceSize offset,
99
+ VkDeviceSize size) {
100
+ this->invalidateMappedMemory(memory, offset, size);
101
+ return VK_SUCCESS;
102
+ }
103
+
104
+ virtual void freeMemory(const skgpu::VulkanBackendMemory&) = 0;
105
+
106
+ // Returns the total amount of memory that is allocated and in use by an allocation for this
107
+ // allocator.
108
+ virtual uint64_t totalUsedMemory() const = 0;
109
+
110
+ // Returns the total amount of memory that is allocated by this allocator.
111
+ virtual uint64_t totalAllocatedMemory() const = 0;
112
+ };
113
+
114
+ } // namespace skgpu
115
+
116
+ #endif // skgpu_VulkanMemoryAllocator_DEFINED
@@ -0,0 +1,59 @@
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_VulkanTypes_DEFINED
9
+ #define skgpu_VulkanTypes_DEFINED
10
+
11
+ #include "include/core/SkTypes.h"
12
+ #include "include/private/gpu/vk/SkiaVulkan.h"
13
+
14
+ #include <functional>
15
+
16
+ #ifndef VK_VERSION_1_1
17
+ #error Skia requires the use of Vulkan 1.1 headers
18
+ #endif
19
+
20
+ namespace skgpu {
21
+
22
+ using VulkanGetProc = std::function<PFN_vkVoidFunction(
23
+ const char*, // function name
24
+ VkInstance, // instance or VK_NULL_HANDLE
25
+ VkDevice // device or VK_NULL_HANDLE
26
+ )>;
27
+
28
+ typedef intptr_t VulkanBackendMemory;
29
+
30
+ /**
31
+ * Types for interacting with Vulkan resources created externally to Skia.
32
+ */
33
+ struct VulkanAlloc {
34
+ // can be VK_NULL_HANDLE iff is an RT and is borrowed
35
+ VkDeviceMemory fMemory = VK_NULL_HANDLE;
36
+ VkDeviceSize fOffset = 0;
37
+ VkDeviceSize fSize = 0; // this can be indeterminate iff Tex uses borrow semantics
38
+ uint32_t fFlags = 0;
39
+ // handle to memory allocated via skgpu::VulkanMemoryAllocator.
40
+ VulkanBackendMemory fBackendMemory = 0;
41
+
42
+ enum Flag {
43
+ kNoncoherent_Flag = 0x1, // memory must be flushed to device after mapping
44
+ kMappable_Flag = 0x2, // memory is able to be mapped.
45
+ kLazilyAllocated_Flag = 0x4, // memory was created with lazy allocation
46
+ };
47
+
48
+ bool operator==(const VulkanAlloc& that) const {
49
+ return fMemory == that.fMemory && fOffset == that.fOffset && fSize == that.fSize &&
50
+ fFlags == that.fFlags && fUsesSystemHeap == that.fUsesSystemHeap;
51
+ }
52
+
53
+ private:
54
+ bool fUsesSystemHeap = false;
55
+ };
56
+
57
+ } // namespace skgpu
58
+
59
+ #endif // skgpu_VulkanTypes_DEFINED
@@ -7,11 +7,11 @@
7
7
  #ifndef SkPathOps_DEFINED
8
8
  #define SkPathOps_DEFINED
9
9
 
10
+ #include "include/core/SkPath.h"
10
11
  #include "include/core/SkTypes.h"
11
12
  #include "include/private/SkTArray.h"
12
13
  #include "include/private/SkTDArray.h"
13
14
 
14
- class SkPath;
15
15
  struct SkRect;
16
16
 
17
17
 
@@ -10,8 +10,8 @@
10
10
 
11
11
  #include "include/core/SkColor.h"
12
12
  #include "include/core/SkColorPriv.h"
13
- #include "include/private/SkNx.h"
14
13
  #include "include/private/SkTo.h"
14
+ #include "include/private/SkVx.h"
15
15
 
16
16
  ////////////////////////////////////////////////////////////////////////////////////////////
17
17
  // Convert a 16bit pixel to a 32bit pixel
@@ -330,27 +330,6 @@ static inline U16CPU SkPack888ToRGB16(U8CPU r, U8CPU g, U8CPU b) {
330
330
 
331
331
  /////////////////////////////////////////////////////////////////////////////////////////
332
332
 
333
- /* SrcOver the 32bit src color with the 16bit dst, returning a 16bit value
334
- (with dirt in the high 16bits, so caller beware).
335
- */
336
- static inline U16CPU SkSrcOver32To16(SkPMColor src, uint16_t dst) {
337
- unsigned sr = SkGetPackedR32(src);
338
- unsigned sg = SkGetPackedG32(src);
339
- unsigned sb = SkGetPackedB32(src);
340
-
341
- unsigned dr = SkGetPackedR16(dst);
342
- unsigned dg = SkGetPackedG16(dst);
343
- unsigned db = SkGetPackedB16(dst);
344
-
345
- unsigned isa = 255 - SkGetPackedA32(src);
346
-
347
- dr = (sr + SkMul16ShiftRound(dr, isa, SK_R16_BITS)) >> (8 - SK_R16_BITS);
348
- dg = (sg + SkMul16ShiftRound(dg, isa, SK_G16_BITS)) >> (8 - SK_G16_BITS);
349
- db = (sb + SkMul16ShiftRound(db, isa, SK_B16_BITS)) >> (8 - SK_B16_BITS);
350
-
351
- return SkPackRGB16(dr, dg, db);
352
- }
353
-
354
333
  static inline SkColor SkPixel16ToColor(U16CPU src) {
355
334
  SkASSERT(src == SkToU16(src));
356
335
 
@@ -395,11 +374,11 @@ static inline SkPMColor SkPixel4444ToPixel32(U16CPU c) {
395
374
  return d | (d << 4);
396
375
  }
397
376
 
398
- static inline Sk4f swizzle_rb(const Sk4f& x) {
399
- return SkNx_shuffle<2, 1, 0, 3>(x);
377
+ static inline skvx::float4 swizzle_rb(const skvx::float4& x) {
378
+ return skvx::shuffle<2, 1, 0, 3>(x);
400
379
  }
401
380
 
402
- static inline Sk4f swizzle_rb_if_bgra(const Sk4f& x) {
381
+ static inline skvx::float4 swizzle_rb_if_bgra(const skvx::float4& x) {
403
382
  #ifdef SK_PMCOLOR_IS_BGRA
404
383
  return swizzle_rb(x);
405
384
  #else
@@ -407,24 +386,15 @@ static inline Sk4f swizzle_rb_if_bgra(const Sk4f& x) {
407
386
  #endif
408
387
  }
409
388
 
410
- static inline Sk4f Sk4f_fromL32(uint32_t px) {
411
- return SkNx_cast<float>(Sk4b::Load(&px)) * (1 / 255.0f);
389
+ static inline skvx::float4 Sk4f_fromL32(uint32_t px) {
390
+ return skvx::cast<float>(skvx::byte4::Load(&px)) * (1 / 255.0f);
412
391
  }
413
392
 
414
- static inline uint32_t Sk4f_toL32(const Sk4f& px) {
415
- Sk4f v = px;
416
-
417
- #if !defined(SKNX_NO_SIMD) && SK_CPU_SSE_LEVEL >= SK_CPU_SSE_LEVEL_SSE2
418
- // SkNx_cast<uint8_t, int32_t>() pins, and we don't anticipate giant floats
419
- #elif !defined(SKNX_NO_SIMD) && defined(SK_ARM_HAS_NEON)
420
- // SkNx_cast<uint8_t, int32_t>() pins, and so does Sk4f_round().
421
- #else
422
- // No guarantee of a pin.
423
- v = Sk4f::Max(0, Sk4f::Min(v, 1));
424
- #endif
425
-
393
+ static inline uint32_t Sk4f_toL32(const skvx::float4& px) {
426
394
  uint32_t l32;
427
- SkNx_cast<uint8_t>(Sk4f_round(v * 255.0f)).store(&l32);
395
+ // For the expected positive color values, the +0.5 before the pin and cast effectively rounds
396
+ // to the nearest int without having to call round() or lrint().
397
+ skvx::cast<uint8_t>(pin(px * 255.f + 0.5f, skvx::float4(0.f), skvx::float4(255.f))).store(&l32);
428
398
  return l32;
429
399
  }
430
400
 
@@ -8,12 +8,18 @@
8
8
  #ifndef SkEncodedInfo_DEFINED
9
9
  #define SkEncodedInfo_DEFINED
10
10
 
11
- #include <memory>
12
-
11
+ #include "include/core/SkAlphaType.h"
13
12
  #include "include/core/SkColorSpace.h"
13
+ #include "include/core/SkColorType.h"
14
14
  #include "include/core/SkData.h"
15
15
  #include "include/core/SkImageInfo.h"
16
- #include "include/third_party/skcms/skcms.h"
16
+ #include "include/core/SkRefCnt.h"
17
+ #include "include/core/SkTypes.h"
18
+ #include "modules/skcms/skcms.h"
19
+
20
+ #include <cstdint>
21
+ #include <memory>
22
+ #include <utility>
17
23
 
18
24
  struct SkEncodedInfo {
19
25
  public:
@@ -57,7 +57,10 @@ constexpr float sk_float_radians_to_degrees(float radians) {
57
57
  return radians * (180 / SK_FloatPI);
58
58
  }
59
59
 
60
- #define sk_float_round(x) sk_float_floor((x) + 0.5f)
60
+ // floor(double+0.5) vs. floorf(float+0.5f) give comparable performance, but upcasting to double
61
+ // means tricky values like 0.49999997 and 2^24 get rounded correctly. If these were rounded
62
+ // as floatf(x + .5f), they would be 1 higher than expected.
63
+ #define sk_float_round(x) (float)sk_double_round((double)(x))
61
64
 
62
65
  // can't find log2f on android, but maybe that just a tool bug?
63
66
  #ifdef SK_BUILD_FOR_ANDROID
@@ -130,19 +133,19 @@ static inline int64_t sk_float_saturate2int64(float x) {
130
133
  }
131
134
 
132
135
  #define sk_float_floor2int(x) sk_float_saturate2int(sk_float_floor(x))
133
- #define sk_float_round2int(x) sk_float_saturate2int(sk_float_floor((x) + 0.5f))
136
+ #define sk_float_round2int(x) sk_float_saturate2int(sk_float_round(x))
134
137
  #define sk_float_ceil2int(x) sk_float_saturate2int(sk_float_ceil(x))
135
138
 
136
139
  #define sk_float_floor2int_no_saturate(x) (int)sk_float_floor(x)
137
- #define sk_float_round2int_no_saturate(x) (int)sk_float_floor((x) + 0.5f)
140
+ #define sk_float_round2int_no_saturate(x) (int)sk_float_round(x)
138
141
  #define sk_float_ceil2int_no_saturate(x) (int)sk_float_ceil(x)
139
142
 
140
143
  #define sk_double_floor(x) floor(x)
141
144
  #define sk_double_round(x) floor((x) + 0.5)
142
145
  #define sk_double_ceil(x) ceil(x)
143
- #define sk_double_floor2int(x) (int)floor(x)
144
- #define sk_double_round2int(x) (int)floor((x) + 0.5)
145
- #define sk_double_ceil2int(x) (int)ceil(x)
146
+ #define sk_double_floor2int(x) (int)sk_double_floor(x)
147
+ #define sk_double_round2int(x) (int)sk_double_round(x)
148
+ #define sk_double_ceil2int(x) (int)sk_double_ceil(x)
146
149
 
147
150
  // Cast double to float, ignoring any warning about too-large finite values being cast to float.
148
151
  // Clang thinks this is undefined, but it's actually implementation defined to return either