@shopify/react-native-skia 0.1.234 → 0.1.237

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 (425) hide show
  1. package/cpp/api/JsiSkApi.h +2 -0
  2. package/cpp/api/JsiSkCanvas.h +36 -0
  3. package/cpp/api/JsiSkRSXform.h +35 -7
  4. package/cpp/api/JsiSkTypefaceFactory.h +2 -1
  5. package/cpp/rnskia/dom/JsiDomApi.h +2 -0
  6. package/cpp/rnskia/dom/nodes/JsiAtlasNode.h +60 -0
  7. package/cpp/rnskia/dom/props/RSXformProp.h +52 -0
  8. package/cpp/rnskia/dom/props/RectProp.h +31 -0
  9. package/cpp/skia/include/android/AHardwareBufferUtils.h +23 -0
  10. package/cpp/skia/include/android/GrAHardwareBufferUtils.h +2 -0
  11. package/cpp/skia/include/android/graphite/SurfaceAndroid.h +59 -0
  12. package/cpp/skia/include/codec/SkAvifDecoder.h +1 -1
  13. package/cpp/skia/include/codec/SkBmpDecoder.h +1 -1
  14. package/cpp/skia/include/codec/SkCodec.h +21 -3
  15. package/cpp/skia/include/codec/SkGifDecoder.h +1 -1
  16. package/cpp/skia/include/codec/SkIcoDecoder.h +1 -1
  17. package/cpp/skia/include/codec/SkJpegDecoder.h +1 -1
  18. package/cpp/skia/include/codec/SkJpegxlDecoder.h +1 -1
  19. package/cpp/skia/include/codec/SkPngDecoder.h +1 -1
  20. package/cpp/skia/include/codec/SkRawDecoder.h +1 -1
  21. package/cpp/skia/include/codec/SkWbmpDecoder.h +1 -1
  22. package/cpp/skia/include/codec/SkWebpDecoder.h +1 -1
  23. package/cpp/skia/include/config/SkUserConfig.h +3 -1
  24. package/cpp/skia/include/core/SkCanvas.h +66 -37
  25. package/cpp/skia/include/core/SkColorFilter.h +5 -2
  26. package/cpp/skia/include/core/SkContourMeasure.h +1 -0
  27. package/cpp/skia/include/core/SkDocument.h +1 -0
  28. package/cpp/skia/include/core/SkFont.h +14 -24
  29. package/cpp/skia/include/core/SkFontArguments.h +1 -1
  30. package/cpp/skia/include/core/SkFontMetrics.h +1 -1
  31. package/cpp/skia/include/core/SkFontMgr.h +0 -7
  32. package/cpp/skia/include/core/SkGraphics.h +13 -0
  33. package/cpp/skia/include/core/SkMesh.h +9 -13
  34. package/cpp/skia/include/core/SkMilestone.h +1 -1
  35. package/cpp/skia/include/core/SkPathMeasure.h +2 -0
  36. package/cpp/skia/include/core/SkSerialProcs.h +29 -11
  37. package/cpp/skia/include/core/SkSize.h +3 -3
  38. package/cpp/skia/include/core/SkStream.h +3 -13
  39. package/cpp/skia/include/core/SkSurface.h +6 -3
  40. package/cpp/skia/include/core/SkSurfaceProps.h +2 -4
  41. package/cpp/skia/include/core/SkTraceMemoryDump.h +15 -0
  42. package/cpp/skia/include/core/SkTypeface.h +8 -56
  43. package/cpp/skia/include/core/SkTypes.h +8 -0
  44. package/cpp/skia/include/core/SkVertices.h +1 -1
  45. package/cpp/skia/include/docs/SkMultiPictureDocument.h +53 -0
  46. package/cpp/skia/include/docs/SkPDFDocument.h +11 -0
  47. package/cpp/skia/include/effects/SkGradientShader.h +9 -0
  48. package/cpp/skia/include/effects/SkRuntimeEffect.h +3 -7
  49. package/cpp/skia/include/gpu/GrBackendSemaphore.h +33 -47
  50. package/cpp/skia/include/gpu/GrBackendSurface.h +2 -3
  51. package/cpp/skia/include/gpu/GrContextOptions.h +0 -6
  52. package/cpp/skia/include/gpu/GrContextThreadSafeProxy.h +44 -28
  53. package/cpp/skia/include/gpu/GrDirectContext.h +12 -31
  54. package/cpp/skia/include/gpu/GrTypes.h +1 -16
  55. package/cpp/skia/include/gpu/MutableTextureState.h +35 -80
  56. package/cpp/skia/include/gpu/ShaderErrorHandler.h +11 -1
  57. package/cpp/skia/include/gpu/ganesh/SkImageGanesh.h +2 -2
  58. package/cpp/skia/include/gpu/ganesh/SkSurfaceGanesh.h +1 -1
  59. package/cpp/skia/include/gpu/ganesh/gl/GrGLDirectContext.h +3 -2
  60. package/cpp/skia/include/gpu/ganesh/vk/GrVkBackendSemaphore.h +20 -0
  61. package/cpp/skia/include/gpu/ganesh/vk/GrVkDirectContext.h +30 -0
  62. package/cpp/skia/include/gpu/gl/GrGLFunctions.h +1 -1
  63. package/cpp/skia/include/gpu/gl/GrGLInterface.h +2 -0
  64. package/cpp/skia/include/gpu/gl/glx/GrGLMakeGLXInterface.h +6 -0
  65. package/cpp/skia/include/gpu/graphite/BackendSemaphore.h +3 -3
  66. package/cpp/skia/include/gpu/graphite/BackendTexture.h +39 -27
  67. package/cpp/skia/include/gpu/graphite/Context.h +39 -13
  68. package/cpp/skia/include/gpu/graphite/ContextOptions.h +2 -0
  69. package/cpp/skia/include/gpu/graphite/GraphiteTypes.h +2 -1
  70. package/cpp/skia/include/gpu/graphite/Image.h +106 -87
  71. package/cpp/skia/include/gpu/graphite/Recorder.h +24 -3
  72. package/cpp/skia/include/gpu/graphite/Surface.h +7 -2
  73. package/cpp/skia/include/gpu/graphite/dawn/DawnBackendContext.h +41 -2
  74. package/cpp/skia/include/gpu/graphite/dawn/DawnTypes.h +11 -6
  75. package/cpp/skia/include/gpu/graphite/mtl/MtlGraphiteTypes.h +1 -2
  76. package/cpp/skia/include/gpu/graphite/vk/VulkanGraphiteTypes.h +6 -6
  77. package/cpp/skia/include/gpu/mock/GrMockTypes.h +1 -0
  78. package/cpp/skia/include/gpu/vk/GrVkBackendContext.h +1 -1
  79. package/cpp/skia/include/gpu/vk/GrVkTypes.h +1 -44
  80. package/cpp/skia/include/gpu/vk/VulkanExtensions.h +1 -1
  81. package/cpp/skia/include/gpu/vk/VulkanMutableTextureState.h +25 -0
  82. package/cpp/skia/include/gpu/vk/VulkanTypes.h +44 -0
  83. package/cpp/skia/include/ports/SkFontConfigInterface.h +3 -6
  84. package/cpp/skia/include/private/SkEncodedInfo.h +5 -0
  85. package/cpp/skia/include/private/SkExif.h +102 -0
  86. package/cpp/skia/include/private/SkGainmapInfo.h +11 -1
  87. package/cpp/skia/include/private/base/SkAssert.h +16 -0
  88. package/cpp/skia/include/private/base/SkDeque.h +2 -7
  89. package/cpp/skia/include/private/base/SkLoadUserConfig.h +1 -1
  90. package/cpp/skia/include/private/base/SkTArray.h +69 -28
  91. package/cpp/skia/include/private/base/SkThreadAnnotations.h +18 -5
  92. package/cpp/skia/include/private/chromium/GrSurfaceCharacterization.h +26 -30
  93. package/cpp/skia/include/private/chromium/GrVkSecondaryCBDrawContext.h +4 -3
  94. package/cpp/skia/include/private/chromium/SkImageChromium.h +1 -1
  95. package/cpp/skia/include/private/gpu/ganesh/GrTypesPriv.h +8 -6
  96. package/cpp/skia/include/private/gpu/graphite/ContextOptionsPriv.h +29 -0
  97. package/cpp/skia/include/private/gpu/graphite/DawnTypesPriv.h +12 -9
  98. package/cpp/skia/include/private/gpu/graphite/VulkanGraphiteTypesPriv.h +16 -11
  99. package/cpp/skia/include/third_party/vulkan/vulkan/vk_platform.h +2 -2
  100. package/cpp/skia/include/third_party/vulkan/vulkan/vk_video/vulkan_video_codec_h264std.h +312 -0
  101. package/cpp/skia/include/third_party/vulkan/vulkan/vk_video/vulkan_video_codec_h264std_decode.h +77 -0
  102. package/cpp/skia/include/third_party/vulkan/vulkan/vk_video/vulkan_video_codec_h265std.h +446 -0
  103. package/cpp/skia/include/third_party/vulkan/vulkan/vk_video/vulkan_video_codec_h265std_decode.h +67 -0
  104. package/cpp/skia/include/third_party/vulkan/vulkan/vk_video/vulkan_video_codecs_common.h +36 -0
  105. package/cpp/skia/include/third_party/vulkan/vulkan/vulkan.h +9 -2
  106. package/cpp/skia/include/third_party/vulkan/vulkan/vulkan_android.h +31 -3
  107. package/cpp/skia/include/third_party/vulkan/vulkan/vulkan_core.h +10624 -5716
  108. package/cpp/skia/include/third_party/vulkan/vulkan/vulkan_ios.h +2 -1
  109. package/cpp/skia/include/third_party/vulkan/vulkan/vulkan_macos.h +2 -1
  110. package/cpp/skia/include/third_party/vulkan/vulkan/vulkan_win32.h +28 -1
  111. package/cpp/skia/include/third_party/vulkan/vulkan/vulkan_xcb.h +2 -1
  112. package/cpp/skia/include/utils/mac/SkCGUtils.h +23 -11
  113. package/cpp/skia/modules/skcms/skcms.h +2 -410
  114. package/cpp/skia/modules/skcms/src/Transform_inl.h +831 -704
  115. package/cpp/skia/modules/skcms/src/skcms_Transform.h +161 -0
  116. package/cpp/skia/modules/skcms/src/skcms_internals.h +136 -0
  117. package/cpp/skia/modules/skcms/src/skcms_public.h +404 -0
  118. package/cpp/skia/modules/skparagraph/include/FontArguments.h +1 -1
  119. package/cpp/skia/modules/skparagraph/include/FontCollection.h +2 -0
  120. package/cpp/skia/modules/skparagraph/include/Paragraph.h +2 -2
  121. package/cpp/skia/modules/skparagraph/include/TextStyle.h +4 -3
  122. package/cpp/skia/modules/skparagraph/include/TypefaceFontProvider.h +1 -3
  123. package/cpp/skia/modules/skresources/include/SkResources.h +28 -17
  124. package/cpp/skia/modules/skunicode/include/SkUnicode.h +12 -0
  125. package/cpp/skia/modules/svg/include/SkSVGDOM.h +4 -1
  126. package/cpp/skia/modules/svg/include/SkSVGRenderContext.h +4 -1
  127. package/cpp/skia/src/base/SkUTF.h +7 -0
  128. package/cpp/skia/src/core/SkTHash.h +20 -8
  129. package/lib/commonjs/dom/nodes/JsiSkDOM.d.ts +5 -3
  130. package/lib/commonjs/dom/nodes/JsiSkDOM.js +60 -57
  131. package/lib/commonjs/dom/nodes/JsiSkDOM.js.map +1 -1
  132. package/lib/commonjs/dom/nodes/drawings/AtlasNode.d.ts +8 -0
  133. package/lib/commonjs/dom/nodes/drawings/AtlasNode.js +47 -0
  134. package/lib/commonjs/dom/nodes/drawings/AtlasNode.js.map +1 -0
  135. package/lib/commonjs/dom/nodes/drawings/index.d.ts +1 -0
  136. package/lib/commonjs/dom/nodes/drawings/index.js +13 -0
  137. package/lib/commonjs/dom/nodes/drawings/index.js.map +1 -1
  138. package/lib/commonjs/dom/types/Drawings.d.ts +7 -1
  139. package/lib/commonjs/dom/types/Drawings.js.map +1 -1
  140. package/lib/commonjs/dom/types/NodeType.d.ts +1 -0
  141. package/lib/commonjs/dom/types/NodeType.js +1 -0
  142. package/lib/commonjs/dom/types/NodeType.js.map +1 -1
  143. package/lib/commonjs/dom/types/SkDOM.d.ts +2 -1
  144. package/lib/commonjs/dom/types/SkDOM.js.map +1 -1
  145. package/lib/commonjs/external/reanimated/buffers.d.ts +5 -0
  146. package/lib/commonjs/external/reanimated/buffers.js +48 -0
  147. package/lib/commonjs/external/reanimated/buffers.js.map +1 -0
  148. package/lib/commonjs/external/reanimated/index.d.ts +2 -0
  149. package/lib/commonjs/external/reanimated/index.js +26 -0
  150. package/lib/commonjs/external/reanimated/index.js.map +1 -1
  151. package/lib/commonjs/external/reanimated/interpolators.js +13 -1
  152. package/lib/commonjs/external/reanimated/interpolators.js.map +1 -1
  153. package/lib/commonjs/external/reanimated/moduleWrapper.d.ts +1 -0
  154. package/lib/commonjs/external/reanimated/moduleWrapper.js +5 -3
  155. package/lib/commonjs/external/reanimated/moduleWrapper.js.map +1 -1
  156. package/lib/commonjs/external/reanimated/textures.d.ts +5 -0
  157. package/lib/commonjs/external/reanimated/textures.js +38 -0
  158. package/lib/commonjs/external/reanimated/textures.js.map +1 -0
  159. package/lib/commonjs/external/reanimated/useAnimatedImageValue.js +8 -1
  160. package/lib/commonjs/external/reanimated/useAnimatedImageValue.js.map +1 -1
  161. package/lib/commonjs/headless/index.js +1 -1
  162. package/lib/commonjs/headless/index.js.map +1 -1
  163. package/lib/commonjs/mock/index.js +8 -0
  164. package/lib/commonjs/mock/index.js.map +1 -1
  165. package/lib/commonjs/renderer/Canvas.js +1 -1
  166. package/lib/commonjs/renderer/Canvas.js.map +1 -1
  167. package/lib/commonjs/renderer/Container.d.ts +1 -1
  168. package/lib/commonjs/renderer/Container.js +2 -1
  169. package/lib/commonjs/renderer/Container.js.map +1 -1
  170. package/lib/commonjs/renderer/HostComponents.d.ts +3 -1
  171. package/lib/commonjs/renderer/HostComponents.js +3 -0
  172. package/lib/commonjs/renderer/HostComponents.js.map +1 -1
  173. package/lib/commonjs/renderer/Offscreen.d.ts +4 -1
  174. package/lib/commonjs/renderer/Offscreen.js +28 -10
  175. package/lib/commonjs/renderer/Offscreen.js.map +1 -1
  176. package/lib/commonjs/renderer/Reconciler.d.ts +1 -1
  177. package/lib/commonjs/renderer/Reconciler.js +7 -4
  178. package/lib/commonjs/renderer/Reconciler.js.map +1 -1
  179. package/lib/commonjs/renderer/components/shapes/Atlas.d.ts +4 -0
  180. package/lib/commonjs/renderer/components/shapes/Atlas.js +17 -0
  181. package/lib/commonjs/renderer/components/shapes/Atlas.js.map +1 -0
  182. package/lib/commonjs/renderer/components/shapes/index.d.ts +1 -0
  183. package/lib/commonjs/renderer/components/shapes/index.js +13 -0
  184. package/lib/commonjs/renderer/components/shapes/index.js.map +1 -1
  185. package/lib/commonjs/skia/core/AnimatedImage.d.ts +1 -1
  186. package/lib/commonjs/skia/core/AnimatedImage.js +4 -1
  187. package/lib/commonjs/skia/core/AnimatedImage.js.map +1 -1
  188. package/lib/commonjs/skia/core/Data.d.ts +1 -1
  189. package/lib/commonjs/skia/core/Data.js +11 -4
  190. package/lib/commonjs/skia/core/Data.js.map +1 -1
  191. package/lib/commonjs/skia/core/Rect.d.ts +2 -2
  192. package/lib/commonjs/skia/types/Canvas.d.ts +16 -1
  193. package/lib/commonjs/skia/types/Canvas.js.map +1 -1
  194. package/lib/commonjs/skia/types/Image/Image.d.ts +8 -0
  195. package/lib/commonjs/skia/types/Image/Image.js.map +1 -1
  196. package/lib/commonjs/skia/types/Matrix4.d.ts +2 -2
  197. package/lib/commonjs/skia/types/Matrix4.js.map +1 -1
  198. package/lib/commonjs/skia/types/RSXform.d.ts +7 -1
  199. package/lib/commonjs/skia/types/RSXform.js.map +1 -1
  200. package/lib/commonjs/skia/types/Rect.d.ts +4 -0
  201. package/lib/commonjs/skia/types/Rect.js.map +1 -1
  202. package/lib/commonjs/skia/types/Shader/Shader.d.ts +1 -1
  203. package/lib/commonjs/skia/types/Shader/Shader.js.map +1 -1
  204. package/lib/commonjs/skia/types/Skia.d.ts +3 -2
  205. package/lib/commonjs/skia/types/Skia.js.map +1 -1
  206. package/lib/commonjs/skia/web/JsiSkCanvas.d.ts +2 -1
  207. package/lib/commonjs/skia/web/JsiSkCanvas.js +19 -0
  208. package/lib/commonjs/skia/web/JsiSkCanvas.js.map +1 -1
  209. package/lib/commonjs/skia/web/JsiSkRSXform.d.ts +8 -2
  210. package/lib/commonjs/skia/web/JsiSkRSXform.js +33 -2
  211. package/lib/commonjs/skia/web/JsiSkRSXform.js.map +1 -1
  212. package/lib/commonjs/skia/web/JsiSkRect.d.ts +3 -2
  213. package/lib/commonjs/skia/web/JsiSkRect.js +7 -0
  214. package/lib/commonjs/skia/web/JsiSkRect.js.map +1 -1
  215. package/lib/commonjs/skia/web/JsiSkTextBlobFactory.js +2 -1
  216. package/lib/commonjs/skia/web/JsiSkTextBlobFactory.js.map +1 -1
  217. package/lib/commonjs/skia/web/JsiSkia.js +5 -0
  218. package/lib/commonjs/skia/web/JsiSkia.js.map +1 -1
  219. package/lib/module/dom/nodes/JsiSkDOM.d.ts +5 -3
  220. package/lib/module/dom/nodes/JsiSkDOM.js +61 -57
  221. package/lib/module/dom/nodes/JsiSkDOM.js.map +1 -1
  222. package/lib/module/dom/nodes/drawings/AtlasNode.d.ts +8 -0
  223. package/lib/module/dom/nodes/drawings/AtlasNode.js +34 -0
  224. package/lib/module/dom/nodes/drawings/AtlasNode.js.map +1 -0
  225. package/lib/module/dom/nodes/drawings/index.d.ts +1 -0
  226. package/lib/module/dom/nodes/drawings/index.js +1 -0
  227. package/lib/module/dom/nodes/drawings/index.js.map +1 -1
  228. package/lib/module/dom/types/Drawings.d.ts +7 -1
  229. package/lib/module/dom/types/Drawings.js.map +1 -1
  230. package/lib/module/dom/types/NodeType.d.ts +1 -0
  231. package/lib/module/dom/types/NodeType.js +1 -0
  232. package/lib/module/dom/types/NodeType.js.map +1 -1
  233. package/lib/module/dom/types/SkDOM.d.ts +2 -1
  234. package/lib/module/dom/types/SkDOM.js.map +1 -1
  235. package/lib/module/external/reanimated/buffers.d.ts +5 -0
  236. package/lib/module/external/reanimated/buffers.js +27 -0
  237. package/lib/module/external/reanimated/buffers.js.map +1 -0
  238. package/lib/module/external/reanimated/index.d.ts +2 -0
  239. package/lib/module/external/reanimated/index.js +2 -0
  240. package/lib/module/external/reanimated/index.js.map +1 -1
  241. package/lib/module/external/reanimated/interpolators.js +13 -1
  242. package/lib/module/external/reanimated/interpolators.js.map +1 -1
  243. package/lib/module/external/reanimated/moduleWrapper.d.ts +1 -0
  244. package/lib/module/external/reanimated/moduleWrapper.js +3 -2
  245. package/lib/module/external/reanimated/moduleWrapper.js.map +1 -1
  246. package/lib/module/external/reanimated/textures.d.ts +5 -0
  247. package/lib/module/external/reanimated/textures.js +24 -0
  248. package/lib/module/external/reanimated/textures.js.map +1 -0
  249. package/lib/module/external/reanimated/useAnimatedImageValue.js +7 -1
  250. package/lib/module/external/reanimated/useAnimatedImageValue.js.map +1 -1
  251. package/lib/module/headless/index.js +1 -1
  252. package/lib/module/headless/index.js.map +1 -1
  253. package/lib/module/mock/index.js +8 -0
  254. package/lib/module/mock/index.js.map +1 -1
  255. package/lib/module/renderer/Canvas.js +1 -1
  256. package/lib/module/renderer/Canvas.js.map +1 -1
  257. package/lib/module/renderer/Container.d.ts +1 -1
  258. package/lib/module/renderer/Container.js +2 -1
  259. package/lib/module/renderer/Container.js.map +1 -1
  260. package/lib/module/renderer/HostComponents.d.ts +3 -1
  261. package/lib/module/renderer/HostComponents.js +3 -0
  262. package/lib/module/renderer/HostComponents.js.map +1 -1
  263. package/lib/module/renderer/Offscreen.d.ts +4 -1
  264. package/lib/module/renderer/Offscreen.js +19 -9
  265. package/lib/module/renderer/Offscreen.js.map +1 -1
  266. package/lib/module/renderer/Reconciler.d.ts +1 -1
  267. package/lib/module/renderer/Reconciler.js +7 -4
  268. package/lib/module/renderer/Reconciler.js.map +1 -1
  269. package/lib/module/renderer/components/shapes/Atlas.d.ts +4 -0
  270. package/lib/module/renderer/components/shapes/Atlas.js +5 -0
  271. package/lib/module/renderer/components/shapes/Atlas.js.map +1 -0
  272. package/lib/module/renderer/components/shapes/index.d.ts +1 -0
  273. package/lib/module/renderer/components/shapes/index.js +1 -0
  274. package/lib/module/renderer/components/shapes/index.js.map +1 -1
  275. package/lib/module/skia/core/AnimatedImage.d.ts +1 -1
  276. package/lib/module/skia/core/AnimatedImage.js +4 -1
  277. package/lib/module/skia/core/AnimatedImage.js.map +1 -1
  278. package/lib/module/skia/core/Data.d.ts +1 -1
  279. package/lib/module/skia/core/Data.js +11 -4
  280. package/lib/module/skia/core/Data.js.map +1 -1
  281. package/lib/module/skia/core/Rect.d.ts +2 -2
  282. package/lib/module/skia/types/Canvas.d.ts +16 -1
  283. package/lib/module/skia/types/Canvas.js.map +1 -1
  284. package/lib/module/skia/types/Image/Image.d.ts +8 -0
  285. package/lib/module/skia/types/Image/Image.js.map +1 -1
  286. package/lib/module/skia/types/Matrix4.d.ts +2 -2
  287. package/lib/module/skia/types/Matrix4.js.map +1 -1
  288. package/lib/module/skia/types/RSXform.d.ts +7 -1
  289. package/lib/module/skia/types/RSXform.js.map +1 -1
  290. package/lib/module/skia/types/Rect.d.ts +4 -0
  291. package/lib/module/skia/types/Rect.js.map +1 -1
  292. package/lib/module/skia/types/Shader/Shader.d.ts +1 -1
  293. package/lib/module/skia/types/Shader/Shader.js.map +1 -1
  294. package/lib/module/skia/types/Skia.d.ts +3 -2
  295. package/lib/module/skia/types/Skia.js.map +1 -1
  296. package/lib/module/skia/web/JsiSkCanvas.d.ts +2 -1
  297. package/lib/module/skia/web/JsiSkCanvas.js +18 -0
  298. package/lib/module/skia/web/JsiSkCanvas.js.map +1 -1
  299. package/lib/module/skia/web/JsiSkRSXform.d.ts +8 -2
  300. package/lib/module/skia/web/JsiSkRSXform.js +34 -3
  301. package/lib/module/skia/web/JsiSkRSXform.js.map +1 -1
  302. package/lib/module/skia/web/JsiSkRect.d.ts +3 -2
  303. package/lib/module/skia/web/JsiSkRect.js +7 -0
  304. package/lib/module/skia/web/JsiSkRect.js.map +1 -1
  305. package/lib/module/skia/web/JsiSkTextBlobFactory.js +2 -1
  306. package/lib/module/skia/web/JsiSkTextBlobFactory.js.map +1 -1
  307. package/lib/module/skia/web/JsiSkia.js +5 -0
  308. package/lib/module/skia/web/JsiSkia.js.map +1 -1
  309. package/lib/typescript/src/dom/nodes/JsiSkDOM.d.ts +5 -3
  310. package/lib/typescript/src/dom/nodes/drawings/AtlasNode.d.ts +8 -0
  311. package/lib/typescript/src/dom/nodes/drawings/index.d.ts +1 -0
  312. package/lib/typescript/src/dom/types/Drawings.d.ts +7 -1
  313. package/lib/typescript/src/dom/types/NodeType.d.ts +1 -0
  314. package/lib/typescript/src/dom/types/SkDOM.d.ts +2 -1
  315. package/lib/typescript/src/external/reanimated/buffers.d.ts +5 -0
  316. package/lib/typescript/src/external/reanimated/index.d.ts +2 -0
  317. package/lib/typescript/src/external/reanimated/moduleWrapper.d.ts +1 -0
  318. package/lib/typescript/src/external/reanimated/textures.d.ts +5 -0
  319. package/lib/typescript/src/renderer/Container.d.ts +1 -1
  320. package/lib/typescript/src/renderer/HostComponents.d.ts +3 -1
  321. package/lib/typescript/src/renderer/Offscreen.d.ts +4 -1
  322. package/lib/typescript/src/renderer/Reconciler.d.ts +1 -1
  323. package/lib/typescript/src/renderer/components/shapes/Atlas.d.ts +4 -0
  324. package/lib/typescript/src/renderer/components/shapes/index.d.ts +1 -0
  325. package/lib/typescript/src/skia/core/AnimatedImage.d.ts +1 -1
  326. package/lib/typescript/src/skia/core/Data.d.ts +1 -1
  327. package/lib/typescript/src/skia/core/Rect.d.ts +2 -2
  328. package/lib/typescript/src/skia/types/Canvas.d.ts +16 -1
  329. package/lib/typescript/src/skia/types/Image/Image.d.ts +8 -0
  330. package/lib/typescript/src/skia/types/Matrix4.d.ts +2 -2
  331. package/lib/typescript/src/skia/types/RSXform.d.ts +7 -1
  332. package/lib/typescript/src/skia/types/Rect.d.ts +4 -0
  333. package/lib/typescript/src/skia/types/Shader/Shader.d.ts +1 -1
  334. package/lib/typescript/src/skia/types/Skia.d.ts +3 -2
  335. package/lib/typescript/src/skia/web/JsiSkCanvas.d.ts +2 -1
  336. package/lib/typescript/src/skia/web/JsiSkRSXform.d.ts +8 -2
  337. package/lib/typescript/src/skia/web/JsiSkRect.d.ts +3 -2
  338. package/libs/android/arm64-v8a/libskia.a +0 -0
  339. package/libs/android/arm64-v8a/libskottie.a +0 -0
  340. package/libs/android/arm64-v8a/libskparagraph.a +0 -0
  341. package/libs/android/arm64-v8a/libsksg.a +0 -0
  342. package/libs/android/arm64-v8a/libskshaper.a +0 -0
  343. package/libs/android/arm64-v8a/libskunicode.a +0 -0
  344. package/libs/android/arm64-v8a/libsvg.a +0 -0
  345. package/libs/android/armeabi-v7a/libskia.a +0 -0
  346. package/libs/android/armeabi-v7a/libskottie.a +0 -0
  347. package/libs/android/armeabi-v7a/libskparagraph.a +0 -0
  348. package/libs/android/armeabi-v7a/libsksg.a +0 -0
  349. package/libs/android/armeabi-v7a/libskshaper.a +0 -0
  350. package/libs/android/armeabi-v7a/libskunicode.a +0 -0
  351. package/libs/android/armeabi-v7a/libsvg.a +0 -0
  352. package/libs/android/x86/libskia.a +0 -0
  353. package/libs/android/x86/libskottie.a +0 -0
  354. package/libs/android/x86/libskparagraph.a +0 -0
  355. package/libs/android/x86/libsksg.a +0 -0
  356. package/libs/android/x86/libskshaper.a +0 -0
  357. package/libs/android/x86/libskunicode.a +0 -0
  358. package/libs/android/x86/libsvg.a +0 -0
  359. package/libs/android/x86_64/libskia.a +0 -0
  360. package/libs/android/x86_64/libskottie.a +0 -0
  361. package/libs/android/x86_64/libskparagraph.a +0 -0
  362. package/libs/android/x86_64/libsksg.a +0 -0
  363. package/libs/android/x86_64/libskshaper.a +0 -0
  364. package/libs/android/x86_64/libskunicode.a +0 -0
  365. package/libs/android/x86_64/libsvg.a +0 -0
  366. package/libs/ios/libskia.xcframework/ios-arm64_arm64e/libskia.a +0 -0
  367. package/libs/ios/libskia.xcframework/ios-arm64_arm64e_x86_64-simulator/libskia.a +0 -0
  368. package/libs/ios/libskottie.xcframework/ios-arm64_arm64e/libskottie.a +0 -0
  369. package/libs/ios/libskottie.xcframework/ios-arm64_arm64e_x86_64-simulator/libskottie.a +0 -0
  370. package/libs/ios/libskparagraph.xcframework/ios-arm64_arm64e/libskparagraph.a +0 -0
  371. package/libs/ios/libskparagraph.xcframework/ios-arm64_arm64e_x86_64-simulator/libskparagraph.a +0 -0
  372. package/libs/ios/libsksg.xcframework/ios-arm64_arm64e/libsksg.a +0 -0
  373. package/libs/ios/libsksg.xcframework/ios-arm64_arm64e_x86_64-simulator/libsksg.a +0 -0
  374. package/libs/ios/libskshaper.xcframework/Info.plist +5 -5
  375. package/libs/ios/libskshaper.xcframework/ios-arm64_arm64e/libskshaper.a +0 -0
  376. package/libs/ios/libskshaper.xcframework/ios-arm64_arm64e_x86_64-simulator/libskshaper.a +0 -0
  377. package/libs/ios/libskunicode.xcframework/ios-arm64_arm64e/libskunicode.a +0 -0
  378. package/libs/ios/libskunicode.xcframework/ios-arm64_arm64e_x86_64-simulator/libskunicode.a +0 -0
  379. package/libs/ios/libsvg.xcframework/Info.plist +5 -5
  380. package/libs/ios/libsvg.xcframework/ios-arm64_arm64e/libsvg.a +0 -0
  381. package/libs/ios/libsvg.xcframework/ios-arm64_arm64e_x86_64-simulator/libsvg.a +0 -0
  382. package/package.json +1 -1
  383. package/src/dom/nodes/JsiSkDOM.ts +63 -56
  384. package/src/dom/nodes/drawings/AtlasNode.ts +24 -0
  385. package/src/dom/nodes/drawings/index.ts +1 -0
  386. package/src/dom/types/Drawings.ts +9 -0
  387. package/src/dom/types/NodeType.ts +1 -0
  388. package/src/dom/types/SkDOM.ts +2 -0
  389. package/src/external/reanimated/buffers.ts +53 -0
  390. package/src/external/reanimated/index.ts +2 -0
  391. package/src/external/reanimated/interpolators.ts +15 -2
  392. package/src/external/reanimated/moduleWrapper.ts +1 -0
  393. package/src/external/reanimated/textures.tsx +38 -0
  394. package/src/external/reanimated/useAnimatedImageValue.ts +15 -4
  395. package/src/headless/index.ts +1 -1
  396. package/src/mock/index.ts +8 -0
  397. package/src/renderer/Canvas.tsx +1 -1
  398. package/src/renderer/Container.tsx +3 -2
  399. package/src/renderer/HostComponents.ts +6 -1
  400. package/src/renderer/Offscreen.tsx +24 -11
  401. package/src/renderer/Reconciler.tsx +5 -2
  402. package/src/renderer/components/shapes/Atlas.tsx +8 -0
  403. package/src/renderer/components/shapes/index.ts +1 -0
  404. package/src/skia/core/AnimatedImage.ts +3 -2
  405. package/src/skia/core/Data.ts +8 -4
  406. package/src/skia/types/Canvas.ts +32 -1
  407. package/src/skia/types/Image/Image.ts +10 -0
  408. package/src/skia/types/Matrix4.ts +2 -2
  409. package/src/skia/types/RSXform.ts +7 -1
  410. package/src/skia/types/Rect.ts +6 -0
  411. package/src/skia/types/Shader/Shader.ts +6 -1
  412. package/src/skia/types/Skia.ts +10 -2
  413. package/src/skia/web/JsiSkCanvas.ts +60 -23
  414. package/src/skia/web/JsiSkRSXform.ts +28 -4
  415. package/src/skia/web/JsiSkRect.ts +12 -2
  416. package/src/skia/web/JsiSkTextBlobFactory.ts +5 -5
  417. package/src/skia/web/JsiSkia.ts +15 -0
  418. package/cpp/skia/include/gpu/GrSurfaceInfo.h +0 -142
  419. package/cpp/skia/include/private/gpu/ganesh/GrGLTypesPriv.h +0 -107
  420. package/cpp/skia/include/private/gpu/ganesh/GrMockTypesPriv.h +0 -32
  421. package/cpp/skia/include/private/gpu/ganesh/GrMtlTypesPriv.h +0 -83
  422. package/cpp/skia/include/private/gpu/ganesh/GrVkTypesPriv.h +0 -47
  423. package/cpp/skia/include/private/gpu/vk/VulkanTypesPriv.h +0 -57
  424. package/cpp/skia/include/utils/SkBase64.h +0 -53
  425. package/cpp/skia/modules/skcms/skcms_internal.h +0 -56
@@ -16,7 +16,6 @@
16
16
  class GrBackendSemaphore;
17
17
 
18
18
  namespace skgpu {
19
- enum class Mipmapped : bool;
20
19
  enum class Protected : bool;
21
20
  enum class Renderable : bool;
22
21
  }
@@ -129,14 +128,6 @@ static constexpr GrBackendApi kMock_GrBackend = GrBackendApi::kMock;
129
128
 
130
129
  ///////////////////////////////////////////////////////////////////////////////
131
130
 
132
- /**
133
- * Used to say whether a texture has mip levels allocated or not.
134
- */
135
- /** Deprecated legacy alias of skgpu::Mipmapped. */
136
- using GrMipmapped = skgpu::Mipmapped;
137
- /** Deprecated legacy alias of skgpu::Mipmapped. */
138
- using GrMipMapped = skgpu::Mipmapped;
139
-
140
131
  /*
141
132
  * Can a GrBackendObject be rendered to?
142
133
  */
@@ -220,13 +211,7 @@ typedef void (*GrDirectContextDestroyedProc)(GrDirectContextDestroyedContext des
220
211
  * The submittedProc is useful to the client to know when semaphores that were sent with the flush
221
212
  * have actually been submitted to the GPU so that they can be waited on (or deleted if the submit
222
213
  * fails).
223
- * Note about GL: In GL work gets sent to the driver immediately during the flush call, but we don't
224
- * really know when the driver sends the work to the GPU. Therefore, we treat the submitted proc as
225
- * we do in other backends. It will be called when the next GrContext::submit is called after the
226
- * flush (or possibly during the flush if there is no work to be done for the flush). The main use
227
- * case for the submittedProc is to know when semaphores have been sent to the GPU and even in GL
228
- * it is required to call GrContext::submit to flush them. So a client should be able to treat all
229
- * backend APIs the same in terms of how the submitted procs are treated.
214
+ * GrBackendSemaphores are not supported for the GL backend and will be ignored if set.
230
215
  */
231
216
  struct GrFlushInfo {
232
217
  size_t fNumSemaphores = 0;
@@ -8,21 +8,21 @@
8
8
  #ifndef skgpu_MutableTextureState_DEFINED
9
9
  #define skgpu_MutableTextureState_DEFINED
10
10
 
11
+ #include "include/core/SkRefCnt.h"
11
12
  #include "include/core/SkTypes.h"
12
- #include "include/gpu/GpuTypes.h"
13
+ #include "include/private/base/SkAnySubclass.h"
13
14
 
14
- #ifdef SK_VULKAN
15
+ #if defined(SK_VULKAN) && !defined(SK_DISABLE_LEGACY_VULKAN_MUTABLE_TEXTURE_STATE)
15
16
  #include "include/private/gpu/vk/SkiaVulkan.h"
16
- #include "include/private/gpu/vk/VulkanTypesPriv.h"
17
17
 
18
18
  #include <cstdint>
19
19
  #endif
20
20
 
21
- #include <new>
22
-
23
- class GrVkGpu;
21
+ #include <cstddef>
24
22
 
25
23
  namespace skgpu {
24
+ enum class BackendApi : unsigned int;
25
+ class MutableTextureStateData;
26
26
 
27
27
  /**
28
28
  * Since Skia and clients can both modify gpu textures and their connected state, Skia needs a way
@@ -30,95 +30,50 @@ namespace skgpu {
30
30
  * for every single API and state, we use this class to be a generic wrapper around all the mutable
31
31
  * state. This class is used for calls that inform Skia of these texture/image state changes by the
32
32
  * client as well as for requesting state changes to be done by Skia. The backend specific state
33
- * that is wrapped by this class are:
34
- *
35
- * Vulkan: VkImageLayout and QueueFamilyIndex
33
+ * that is wrapped by this class are located in files like:
34
+ * - include/gpu/vk/VulkanMutableTextureState.h
36
35
  */
37
- class SK_API MutableTextureState {
36
+ class SK_API MutableTextureState : public SkRefCnt {
38
37
  public:
39
- MutableTextureState() {}
40
-
41
- #ifdef SK_VULKAN
42
- MutableTextureState(VkImageLayout layout, uint32_t queueFamilyIndex)
43
- : fVkState(layout, queueFamilyIndex)
44
- , fBackend(BackendApi::kVulkan)
45
- , fIsValid(true) {}
46
- #endif
38
+ MutableTextureState();
39
+ ~MutableTextureState() override;
47
40
 
48
- MutableTextureState(const MutableTextureState& that)
49
- : fBackend(that.fBackend), fIsValid(that.fIsValid) {
50
- if (!fIsValid) {
51
- return;
52
- }
53
- switch (fBackend) {
54
- case BackendApi::kVulkan:
55
- #ifdef SK_VULKAN
56
- SkASSERT(that.fBackend == BackendApi::kVulkan);
57
- fVkState = that.fVkState;
58
- #endif
59
- break;
60
- default:
61
- (void)that;
62
- SkUNREACHABLE;
63
- }
64
- }
41
+ MutableTextureState(const MutableTextureState& that);
65
42
 
66
- MutableTextureState& operator=(const MutableTextureState& that) {
67
- if (this != &that) {
68
- this->~MutableTextureState();
69
- new (this) MutableTextureState(that);
70
- }
71
- return *this;
72
- }
43
+ MutableTextureState& operator=(const MutableTextureState& that);
73
44
 
74
- #ifdef SK_VULKAN
75
- // If this class is not Vulkan backed it will return value of VK_IMAGE_LAYOUT_UNDEFINED.
76
- // Otherwise it will return the VkImageLayout.
77
- VkImageLayout getVkImageLayout() const {
78
- if (this->isValid() && fBackend != BackendApi::kVulkan) {
79
- return VK_IMAGE_LAYOUT_UNDEFINED;
80
- }
81
- return fVkState.getImageLayout();
82
- }
83
-
84
- // If this class is not Vulkan backed it will return value of VK_QUEUE_FAMILY_IGNORED.
85
- // Otherwise it will return the VkImageLayout.
86
- uint32_t getQueueFamilyIndex() const {
87
- if (this->isValid() && fBackend != BackendApi::kVulkan) {
88
- return VK_QUEUE_FAMILY_IGNORED;
89
- }
90
- return fVkState.getQueueFamilyIndex();
91
- }
92
- #endif
45
+ void set(const MutableTextureState& that);
93
46
 
94
47
  BackendApi backend() const { return fBackend; }
95
48
 
96
49
  // Returns true if the backend mutable state has been initialized.
97
50
  bool isValid() const { return fIsValid; }
98
51
 
52
+ #if defined(SK_VULKAN) && !defined(SK_DISABLE_LEGACY_VULKAN_MUTABLE_TEXTURE_STATE)
53
+ MutableTextureState(VkImageLayout layout, uint32_t queueFamilyIndex);
54
+
55
+ VkImageLayout getVkImageLayout() const;
56
+ uint32_t getQueueFamilyIndex() const;
57
+ #endif
58
+
99
59
  private:
100
- friend class MutableTextureStateRef;
101
- friend class ::GrVkGpu;
102
-
103
- #ifdef SK_VULKAN
104
- void setVulkanState(VkImageLayout layout, uint32_t queueFamilyIndex) {
105
- SkASSERT(!this->isValid() || fBackend == BackendApi::kVulkan);
106
- fVkState.setImageLayout(layout);
107
- fVkState.setQueueFamilyIndex(queueFamilyIndex);
108
- fBackend = BackendApi::kVulkan;
109
- fIsValid = true;
60
+ friend class MutableTextureStateData;
61
+ friend class MutableTextureStatePriv;
62
+ // Size determined by looking at the MutableTextureStateData subclasses, then
63
+ // guessing-and-checking. Compiler will complain if this is too small - in that case,
64
+ // just increase the number.
65
+ inline constexpr static size_t kMaxSubclassSize = 16;
66
+ using AnyStateData = SkAnySubclass<MutableTextureStateData, kMaxSubclassSize>;
67
+
68
+ template <typename StateData>
69
+ MutableTextureState(BackendApi api, const StateData& data) : fBackend(api), fIsValid(true) {
70
+ fStateData.emplace<StateData>(data);
110
71
  }
111
- #endif
112
72
 
113
- union {
114
- char fPlaceholder;
115
- #ifdef SK_VULKAN
116
- VulkanMutableTextureState fVkState;
117
- #endif
118
- };
73
+ AnyStateData fStateData;
119
74
 
120
- BackendApi fBackend = BackendApi::kMock;
121
- bool fIsValid = false;
75
+ BackendApi fBackend;
76
+ bool fIsValid;
122
77
  };
123
78
 
124
79
  } // namespace skgpu
@@ -18,7 +18,17 @@ class SK_API ShaderErrorHandler {
18
18
  public:
19
19
  virtual ~ShaderErrorHandler() = default;
20
20
 
21
- virtual void compileError(const char* shader, const char* errors) = 0;
21
+ /**
22
+ * compileError(shader, errors) is kept for backward compatibility with older clients.
23
+ */
24
+ virtual void compileError([[maybe_unused]] const char* shader,
25
+ [[maybe_unused]] const char* errors) {}
26
+ virtual void compileError(const char* shader,
27
+ const char* errors,
28
+ [[maybe_unused]] bool shaderWasCached) {
29
+ // Default implementation. Ignore shaderWasCached.
30
+ this->compileError(shader, errors);
31
+ }
22
32
 
23
33
  protected:
24
34
  ShaderErrorHandler() = default;
@@ -206,7 +206,7 @@ SK_API sk_sp<SkImage> TextureFromImage(GrDirectContext*,
206
206
  skgpu::Mipmapped = skgpu::Mipmapped::kNo,
207
207
  skgpu::Budgeted = skgpu::Budgeted::kYes);
208
208
  inline sk_sp<SkImage> TextureFromImage(GrDirectContext* ctx,
209
- sk_sp<const SkImage> img,
209
+ const sk_sp<const SkImage>& img,
210
210
  skgpu::Mipmapped m = skgpu::Mipmapped::kNo,
211
211
  skgpu::Budgeted b = skgpu::Budgeted::kYes) {
212
212
  return TextureFromImage(ctx, img.get(), m, b);
@@ -276,7 +276,7 @@ SK_API bool GetBackendTextureFromImage(const SkImage* img,
276
276
  GrBackendTexture* outTexture,
277
277
  bool flushPendingGrContextIO,
278
278
  GrSurfaceOrigin* origin = nullptr);
279
- inline bool GetBackendTextureFromImage(sk_sp<const SkImage> img,
279
+ inline bool GetBackendTextureFromImage(const sk_sp<const SkImage>& img,
280
280
  GrBackendTexture* outTexture,
281
281
  bool flushPendingGrContextIO,
282
282
  GrSurfaceOrigin* origin = nullptr) {
@@ -199,7 +199,7 @@ SK_API GrBackendRenderTarget GetBackendRenderTarget(SkSurface*, BackendHandleAcc
199
199
  GrDirectContext::flush.
200
200
  */
201
201
  SK_API void ResolveMSAA(SkSurface* surface);
202
- inline void ResolveMSAA(sk_sp<SkSurface> surface) {
202
+ inline void ResolveMSAA(const sk_sp<SkSurface>& surface) {
203
203
  return ResolveMSAA(surface.get());
204
204
  }
205
205
 
@@ -17,13 +17,14 @@ struct GrGLInterface;
17
17
 
18
18
  namespace GrDirectContexts {
19
19
  /**
20
- * Creates a GrDirectContext for a backend context. If no GrGLInterface is provided then the
21
- * result of GrGLMakeNativeInterface() is used if it succeeds.
20
+ * Creates a GrDirectContext for a backend context. GrGLInterface must be non-null.
22
21
  */
23
22
  SK_API sk_sp<GrDirectContext> MakeGL(sk_sp<const GrGLInterface>, const GrContextOptions&);
24
23
  SK_API sk_sp<GrDirectContext> MakeGL(sk_sp<const GrGLInterface>);
24
+ #if !defined(SK_DISABLE_LEGACY_GL_MAKE_NATIVE_INTERFACE)
25
25
  SK_API sk_sp<GrDirectContext> MakeGL(const GrContextOptions&);
26
26
  SK_API sk_sp<GrDirectContext> MakeGL();
27
+ #endif
27
28
  }
28
29
 
29
30
  #endif
@@ -0,0 +1,20 @@
1
+ /*
2
+ * Copyright 2023 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 GrVkBackendSemaphore_DEFINED
9
+ #define GrVkBackendSemaphore_DEFINED
10
+
11
+ #include "include/gpu/GrBackendSemaphore.h"
12
+ #include "include/private/base/SkAPI.h"
13
+ #include "include/private/gpu/vk/SkiaVulkan.h"
14
+
15
+ namespace GrBackendSemaphores {
16
+ SK_API GrBackendSemaphore MakeVk(VkSemaphore semaphore);
17
+ SK_API VkSemaphore GetVkSemaphore(const GrBackendSemaphore&);
18
+ } // namespace GrBackendSemaphores
19
+
20
+ #endif
@@ -0,0 +1,30 @@
1
+ /*
2
+ * Copyright 2023 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 GrVkDirectContext_DEFINED
9
+ #define GrVkDirectContext_DEFINED
10
+
11
+ #include "include/core/SkRefCnt.h"
12
+ #include "include/private/base/SkAPI.h"
13
+
14
+ class GrDirectContext;
15
+ struct GrContextOptions;
16
+ struct GrVkBackendContext;
17
+
18
+ namespace GrDirectContexts {
19
+ /**
20
+ * The Vulkan context (VkQueue, VkDevice, VkInstance) must be kept alive until the returned
21
+ * GrDirectContext is destroyed. This also means that any objects created with this
22
+ * GrDirectContext (e.g. SkSurfaces, SkImages, etc.) must also be released as they may hold
23
+ * refs on the GrDirectContext. Once all these objects and the GrDirectContext are released,
24
+ * then it is safe to delete the vulkan objects.
25
+ */
26
+ SK_API sk_sp<GrDirectContext> MakeVulkan(const GrVkBackendContext&, const GrContextOptions&);
27
+ SK_API sk_sp<GrDirectContext> MakeVulkan(const GrVkBackendContext&);
28
+ }
29
+
30
+ #endif
@@ -268,7 +268,7 @@ public:
268
268
  if (fn_ptr) {
269
269
  memcpy(fBuf, &fn_ptr, sizeof(fn_ptr));
270
270
  fCall = [](const void* buf, Args... args) {
271
- return (*(Fn**)buf)(std::forward<Args>(args)...);
271
+ return (*(Fn* const *)buf)(std::forward<Args>(args)...);
272
272
  };
273
273
  }
274
274
  }
@@ -18,6 +18,7 @@ typedef void(*GrGLFuncPtr)();
18
18
  struct GrGLInterface;
19
19
 
20
20
 
21
+ #if !defined(SK_DISABLE_LEGACY_GL_MAKE_NATIVE_INTERFACE)
21
22
  /**
22
23
  * Rather than depend on platform-specific GL headers and libraries, we require
23
24
  * the client to provide a struct of GL function pointers. This struct can be
@@ -31,6 +32,7 @@ struct GrGLInterface;
31
32
  * appropriate one to build.
32
33
  */
33
34
  SK_API sk_sp<const GrGLInterface> GrGLMakeNativeInterface();
35
+ #endif
34
36
 
35
37
  /**
36
38
  * GrContext uses the following interface to make all calls into OpenGL. When a
@@ -11,4 +11,10 @@
11
11
 
12
12
  struct GrGLInterface;
13
13
 
14
+ namespace GrGLInterfaces {
15
+ sk_sp<const GrGLInterface> MakeGLX();
16
+ }
17
+
18
+ #if !defined(SK_DISABLE_LEGACY_GLXINTERFACE_FACTORY)
14
19
  sk_sp<const GrGLInterface> GrGLMakeGLXInterface();
20
+ #endif
@@ -26,7 +26,7 @@ public:
26
26
  BackendSemaphore();
27
27
  #ifdef SK_METAL
28
28
  // TODO: Determine creator's responsibility for setting refcnt.
29
- BackendSemaphore(MtlHandle mtlEvent, uint64_t value);
29
+ BackendSemaphore(CFTypeRef mtlEvent, uint64_t value);
30
30
  #endif
31
31
 
32
32
  #ifdef SK_VULKAN
@@ -43,7 +43,7 @@ public:
43
43
  BackendApi backend() const { return fBackend; }
44
44
 
45
45
  #ifdef SK_METAL
46
- MtlHandle getMtlEvent() const;
46
+ CFTypeRef getMtlEvent() const;
47
47
  uint64_t getMtlValue() const;
48
48
  #endif
49
49
 
@@ -59,7 +59,7 @@ private:
59
59
  #endif
60
60
  #ifdef SK_METAL
61
61
  struct {
62
- MtlHandle fMtlEvent; // Expected to be an id<MTLEvent>
62
+ CFTypeRef fMtlEvent; // Expected to be an id<MTLEvent>
63
63
  uint64_t fMtlValue;
64
64
  };
65
65
  #endif
@@ -28,7 +28,6 @@
28
28
 
29
29
  namespace skgpu {
30
30
  class MutableTextureState;
31
- class MutableTextureStateRef;
32
31
  }
33
32
 
34
33
  namespace skgpu::graphite {
@@ -37,33 +36,46 @@ class SK_API BackendTexture {
37
36
  public:
38
37
  BackendTexture();
39
38
  #ifdef SK_DAWN
40
- // Create a BackendTexture from a WGPUTexture. Texture info will be
41
- // queried from the texture. Comparing to WGPUTextureView,
42
- // SkImage::readPixels(), SkSurface::readPixels() and
43
- // SkSurface::writePixels() are implemented by direct buffer copy. They
44
- // should be more efficient. For WGPUTextureView, those methods will use
45
- // create an intermediate WGPUTexture, and use it to transfer pixels.
46
- // Note:
47
- // - for better performance, using WGPUTexture IS RECOMMENDED.
48
- // - The BackendTexture will not call retain or release on the passed in
49
- // WGPUTexture. Thus the client must keep the WGPUTexture valid until
50
- // they are no longer using the BackendTexture.
39
+ // Create a BackendTexture from a WGPUTexture. Texture info will be queried from the texture.
40
+ //
41
+ // This is the recommended way of specifying a BackendTexture for Dawn. See the note below on
42
+ // the constructor that takes a WGPUTextureView for a fuller explanation.
43
+ //
44
+ // The BackendTexture will not call retain or release on the passed in WGPUTexture. Thus, the
45
+ // client must keep the WGPUTexture valid until they are no longer using the BackendTexture.
46
+ // However, any SkImage or SkSurface that wraps the BackendTexture *will* retain and release
47
+ // the WGPUTexture.
51
48
  BackendTexture(WGPUTexture texture);
49
+
50
+ // Create a BackendTexture from a WGPUTexture. Texture planeDimensions, plane aspect and
51
+ // info have to be provided. This is intended to be used only when accessing a plane
52
+ // of a WGPUTexture.
53
+ //
54
+ // The BackendTexture will not call retain or release on the passed in WGPUTexture. Thus, the
55
+ // client must keep the WGPUTexture valid until they are no longer using the BackendTexture.
56
+ // However, any SkImage or SkSurface that wraps the BackendTexture *will* retain and release
57
+ // the WGPUTexture.
58
+ BackendTexture(SkISize planeDimensions, const DawnTextureInfo& info, WGPUTexture texture);
59
+
52
60
  // Create a BackendTexture from a WGPUTextureView. Texture dimensions and
53
61
  // info have to be provided.
54
- // Note:
55
- // - this method is for importing WGPUTextureView from wgpu::SwapChain only.
56
- // - The BackendTexture will not call retain or release on the passed in
57
- // WGPUTextureView. Thus the client must keep the WGPUTextureView valid
58
- // until they are no longer using the BackendTexture.
59
- BackendTexture(SkISize dimensions,
60
- const DawnTextureInfo& info,
61
- WGPUTextureView textureView);
62
+ //
63
+ // Using a WGPUTextureView rather than a WGPUTexture is less effecient for operations that
64
+ // require buffer transfers to or from the texture (e.g. methods on graphite::Context that read
65
+ // pixels or SkSurface::writePixels). In such cases an intermediate copy to or from a
66
+ // WGPUTexture is required. Thus, it is recommended to use this functionality only for cases
67
+ // where a WGPUTexture is unavailable, in particular when using wgpu::SwapChain.
68
+ //
69
+ // The BackendTexture will not call retain or release on the passed in WGPUTextureView. Thus,
70
+ // the client must keep the WGPUTextureView valid until they are no longer using the
71
+ // BackendTexture. However, any SkImage or SkSurface that wraps the BackendTexture *will* retain
72
+ // and release the WGPUTextureView.
73
+ BackendTexture(SkISize dimensions, const DawnTextureInfo& info, WGPUTextureView textureView);
62
74
  #endif
63
75
  #ifdef SK_METAL
64
- // The BackendTexture will not call retain or release on the passed in MtlHandle. Thus the
65
- // client must keep the MtlHandle valid until they are no longer using the BackendTexture.
66
- BackendTexture(SkISize dimensions, MtlHandle mtlTexture);
76
+ // The BackendTexture will not call retain or release on the passed in CFTypeRef. Thus the
77
+ // client must keep the CFTypeRef valid until they are no longer using the BackendTexture.
78
+ BackendTexture(SkISize dimensions, CFTypeRef mtlTexture);
67
79
  #endif
68
80
 
69
81
  #ifdef SK_VULKAN
@@ -103,7 +115,7 @@ public:
103
115
  WGPUTextureView getDawnTextureViewPtr() const;
104
116
  #endif
105
117
  #ifdef SK_METAL
106
- MtlHandle getMtlTexture() const;
118
+ CFTypeRef getMtlTexture() const;
107
119
  #endif
108
120
 
109
121
  #ifdef SK_VULKAN
@@ -115,12 +127,12 @@ public:
115
127
 
116
128
  private:
117
129
  friend class VulkanResourceProvider; // for getMutableState
118
- sk_sp<MutableTextureStateRef> getMutableState() const;
130
+ sk_sp<MutableTextureState> getMutableState() const;
119
131
 
120
132
  SkISize fDimensions;
121
133
  TextureInfo fInfo;
122
134
 
123
- sk_sp<MutableTextureStateRef> fMutableState;
135
+ sk_sp<MutableTextureState> fMutableState;
124
136
 
125
137
  #ifdef SK_VULKAN
126
138
  // fMemoryAlloc == VulkanAlloc() if the client has already created their own VkImage and
@@ -137,7 +149,7 @@ private:
137
149
  };
138
150
  #endif
139
151
  #ifdef SK_METAL
140
- MtlHandle fMtlTexture;
152
+ CFTypeRef fMtlTexture;
141
153
  #endif
142
154
  #ifdef SK_VULKAN
143
155
  VkImage fVkImage = VK_NULL_HANDLE;
@@ -22,6 +22,7 @@
22
22
 
23
23
  class SkColorSpace;
24
24
  class SkRuntimeEffect;
25
+ class SkTraceMemoryDump;
25
26
 
26
27
  namespace skgpu::graphite {
27
28
 
@@ -55,6 +56,9 @@ public:
55
56
  bool insertRecording(const InsertRecordingInfo&);
56
57
  bool submit(SyncToCpu = SyncToCpu::kNo);
57
58
 
59
+ /** Returns true if there is work that was submitted to the GPU that has not finished. */
60
+ bool hasUnfinishedGpuWork() const;
61
+
58
62
  void asyncRescaleAndReadPixels(const SkImage* image,
59
63
  const SkImageInfo& dstImageInfo,
60
64
  const SkIRect& srcRect,
@@ -142,6 +146,22 @@ public:
142
146
  */
143
147
  void performDeferredCleanup(std::chrono::milliseconds msNotUsed);
144
148
 
149
+ /**
150
+ * Returns the number of bytes of gpu memory currently budgeted in the Context's cache.
151
+ */
152
+ size_t currentBudgetedBytes() const;
153
+
154
+ /**
155
+ * Enumerates all cached GPU resources owned by the Context and dumps their memory to
156
+ * traceMemoryDump.
157
+ */
158
+ void dumpMemoryStatistics(SkTraceMemoryDump* traceMemoryDump) const;
159
+
160
+ /*
161
+ * Does this context support protected content?
162
+ */
163
+ bool supportsProtectedContent() const;
164
+
145
165
  // Provides access to functions that aren't part of the public API.
146
166
  ContextPriv priv();
147
167
  const ContextPriv priv() const; // NOLINT(readability-const-return-type)
@@ -172,6 +192,21 @@ private:
172
192
  friend class ContextPriv;
173
193
  friend class ContextCtorAccessor;
174
194
 
195
+ struct PixelTransferResult {
196
+ using ConversionFn = void(void* dst, const void* mappedBuffer);
197
+ // If null then the transfer could not be performed. Otherwise this buffer will contain
198
+ // the pixel data when the transfer is complete.
199
+ sk_sp<Buffer> fTransferBuffer;
200
+ // Size of the read.
201
+ SkISize fSize;
202
+ // RowBytes for transfer buffer data
203
+ size_t fRowBytes;
204
+ // If this is null then the transfer buffer will contain the data in the requested
205
+ // color type. Otherwise, when the transfer is done this must be called to convert
206
+ // from the transfer buffer's color type to the requested color type.
207
+ std::function<ConversionFn> fPixelConverter;
208
+ };
209
+
175
210
  SingleOwner* singleOwner() const { return &fSingleOwner; }
176
211
 
177
212
  // Must be called in Make() to handle one-time GPU setup operations that can possibly fail and
@@ -204,19 +239,11 @@ private:
204
239
  SkImage::ReadPixelsCallback callback,
205
240
  SkImage::ReadPixelsContext context);
206
241
 
242
+ void finalizeAsyncReadPixels(SkSpan<PixelTransferResult>,
243
+ SkImage::ReadPixelsCallback callback,
244
+ SkImage::ReadPixelsContext callbackContext);
245
+
207
246
  // Inserts a texture to buffer transfer task, used by asyncReadPixels methods
208
- struct PixelTransferResult {
209
- using ConversionFn = void(void* dst, const void* mappedBuffer);
210
- // If null then the transfer could not be performed. Otherwise this buffer will contain
211
- // the pixel data when the transfer is complete.
212
- sk_sp<Buffer> fTransferBuffer;
213
- // RowBytes for transfer buffer data
214
- size_t fRowBytes;
215
- // If this is null then the transfer buffer will contain the data in the requested
216
- // color type. Otherwise, when the transfer is done this must be called to convert
217
- // from the transfer buffer's color type to the requested color type.
218
- std::function<ConversionFn> fPixelConverter;
219
- };
220
247
  PixelTransferResult transferPixels(const TextureProxy*,
221
248
  const SkImageInfo& srcImageInfo,
222
249
  const SkColorInfo& dstColorInfo,
@@ -226,7 +253,6 @@ private:
226
253
  std::unique_ptr<ResourceProvider> fResourceProvider;
227
254
  std::unique_ptr<QueueManager> fQueueManager;
228
255
  std::unique_ptr<ClientMappedBufferManager> fMappedBufferManager;
229
- std::unique_ptr<PlotUploadTracker> fPlotUploadTracker;
230
256
 
231
257
  // In debug builds we guard against improper thread handling. This guard is passed to the
232
258
  // ResourceCache for the Context.
@@ -80,6 +80,8 @@ struct SK_API ContextOptions {
80
80
  /**
81
81
  * Disable caching of glyph uploads at the start of each Recording. These can add additional
82
82
  * overhead and are only necessary if Recordings are replayed or played out of order.
83
+ *
84
+ * Deprecated, now only used to set requireOrderedRecordings Caps.
83
85
  */
84
86
  bool fDisableCachedGlyphUploads = false;
85
87
 
@@ -46,7 +46,8 @@ using GpuFinishedProc = void (*)(GpuFinishedContext finishedContext, CallbackRes
46
46
  *
47
47
  * The client may pass in two arrays of initialized BackendSemaphores to be included in the
48
48
  * command stream. At some time before issuing commands in the Recording, the fWaitSemaphores will
49
- * be waited on by the gpu. Similarly, at some time after issuing the Recording's commands, the
49
+ * be waited on by the gpu. We only guarantee these wait semaphores block transfer and fragment
50
+ * shader work. Similarly, at some time after issuing the Recording's commands, the
50
51
  * fSignalSemaphores will be signaled by the gpu. Depending on the platform, the timing of the wait
51
52
  * and signal operations will either be immediately before or after the given Recording's command
52
53
  * stream, respectively, or before and after the entire CommandBuffer's command stream. The