@shopify/react-native-skia 1.3.13 → 1.4.0

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 (361) hide show
  1. package/android/CMakeLists.txt +9 -4
  2. package/android/cpp/rnskia-android/RNSkAndroidPlatformContext.h +6 -0
  3. package/android/cpp/rnskia-android/SkiaOpenGLSurfaceFactory.cpp +81 -0
  4. package/android/cpp/rnskia-android/SkiaOpenGLSurfaceFactory.h +40 -0
  5. package/cpp/api/JsiSkApi.h +2 -0
  6. package/cpp/api/JsiSkPath.h +29 -19
  7. package/cpp/api/JsiSkRuntimeEffect.h +7 -0
  8. package/cpp/api/JsiSkiaContext.h +79 -0
  9. package/cpp/rnskia/RNSkPlatformContext.h +4 -0
  10. package/cpp/rnskia/SkiaContext.h +22 -0
  11. package/cpp/skia/include/android/GrAHardwareBufferUtils.h +2 -2
  12. package/cpp/skia/include/android/SkImageAndroid.h +1 -1
  13. package/cpp/skia/include/android/SkSurfaceAndroid.h +1 -1
  14. package/cpp/skia/include/codec/SkAndroidCodec.h +13 -9
  15. package/cpp/skia/include/codec/SkCodec.h +28 -5
  16. package/cpp/skia/include/core/SkArc.h +69 -0
  17. package/cpp/skia/include/core/SkBitmap.h +10 -0
  18. package/cpp/skia/include/core/SkBlender.h +2 -3
  19. package/cpp/skia/include/core/SkCanvas.h +86 -16
  20. package/cpp/skia/include/core/SkCapabilities.h +0 -4
  21. package/cpp/skia/include/core/SkColorFilter.h +4 -4
  22. package/cpp/skia/include/core/SkColorPriv.h +5 -7
  23. package/cpp/skia/include/core/SkColorType.h +2 -0
  24. package/cpp/skia/include/core/SkFlattenable.h +1 -1
  25. package/cpp/skia/include/core/SkFontArguments.h +3 -1
  26. package/cpp/skia/include/core/SkFontParameters.h +3 -2
  27. package/cpp/skia/include/core/SkFourByteTag.h +19 -0
  28. package/cpp/skia/include/core/SkImage.h +41 -1
  29. package/cpp/skia/include/core/SkImageGenerator.h +0 -5
  30. package/cpp/skia/include/core/SkImageInfo.h +20 -0
  31. package/cpp/skia/include/core/SkM44.h +1 -1
  32. package/cpp/skia/include/core/SkMatrix.h +2 -1
  33. package/cpp/skia/include/core/SkMilestone.h +1 -1
  34. package/cpp/skia/include/core/SkPaint.h +1 -1
  35. package/cpp/skia/include/core/SkPath.h +20 -6
  36. package/cpp/skia/include/core/SkPathMeasure.h +1 -0
  37. package/cpp/skia/include/core/SkPicture.h +5 -5
  38. package/cpp/skia/include/core/SkPoint3.h +2 -12
  39. package/cpp/skia/include/core/SkRRect.h +5 -0
  40. package/cpp/skia/include/core/SkRect.h +5 -16
  41. package/cpp/skia/include/core/SkRefCnt.h +2 -0
  42. package/cpp/skia/include/core/SkScalar.h +20 -32
  43. package/cpp/skia/include/core/SkShader.h +17 -0
  44. package/cpp/skia/include/core/SkSize.h +2 -1
  45. package/cpp/skia/include/core/SkStream.h +2 -3
  46. package/cpp/skia/include/core/SkStrokeRec.h +6 -1
  47. package/cpp/skia/include/core/SkSurface.h +13 -4
  48. package/cpp/skia/include/core/SkSurfaceProps.h +5 -0
  49. package/cpp/skia/include/core/SkSwizzle.h +3 -1
  50. package/cpp/skia/include/core/SkTypeface.h +1 -0
  51. package/cpp/skia/include/core/SkTypes.h +1 -19
  52. package/cpp/skia/include/core/SkUnPreMultiply.h +4 -5
  53. package/cpp/skia/include/core/SkVertices.h +4 -2
  54. package/cpp/skia/include/docs/SkPDFDocument.h +11 -14
  55. package/cpp/skia/include/effects/SkHighContrastFilter.h +6 -6
  56. package/cpp/skia/include/effects/SkImageFilters.h +49 -23
  57. package/cpp/skia/include/effects/SkRuntimeEffect.h +51 -70
  58. package/cpp/skia/include/effects/SkShaderMaskFilter.h +2 -0
  59. package/cpp/skia/include/effects/SkTableMaskFilter.h +2 -0
  60. package/cpp/skia/include/gpu/GrBackendSemaphore.h +2 -120
  61. package/cpp/skia/include/gpu/GrBackendSurface.h +2 -466
  62. package/cpp/skia/include/gpu/GrContextOptions.h +2 -368
  63. package/cpp/skia/include/gpu/GrContextThreadSafeProxy.h +2 -179
  64. package/cpp/skia/include/gpu/GrDirectContext.h +2 -1011
  65. package/cpp/skia/include/gpu/GrDriverBugWorkarounds.h +2 -47
  66. package/cpp/skia/include/gpu/GrDriverBugWorkaroundsAutogen.h +2 -41
  67. package/cpp/skia/include/gpu/GrRecordingContext.h +2 -279
  68. package/cpp/skia/include/gpu/GrTypes.h +2 -238
  69. package/cpp/skia/include/gpu/GrYUVABackendTextures.h +2 -118
  70. package/cpp/skia/include/gpu/d3d/GrD3DBackendContext.h +2 -29
  71. package/cpp/skia/include/gpu/d3d/GrD3DTypes.h +2 -242
  72. package/cpp/skia/include/gpu/ganesh/GrBackendSemaphore.h +80 -0
  73. package/cpp/skia/include/gpu/ganesh/GrBackendSurface.h +412 -0
  74. package/cpp/skia/include/gpu/ganesh/GrContextOptions.h +386 -0
  75. package/cpp/skia/include/gpu/ganesh/GrContextThreadSafeProxy.h +175 -0
  76. package/cpp/skia/include/gpu/ganesh/GrDirectContext.h +993 -0
  77. package/cpp/skia/include/gpu/ganesh/GrDriverBugWorkarounds.h +53 -0
  78. package/cpp/skia/include/gpu/ganesh/GrDriverBugWorkaroundsAutogen.h +45 -0
  79. package/cpp/skia/include/gpu/ganesh/GrExternalTextureGenerator.h +1 -1
  80. package/cpp/skia/include/gpu/ganesh/GrRecordingContext.h +285 -0
  81. package/cpp/skia/include/gpu/ganesh/GrTypes.h +177 -0
  82. package/cpp/skia/include/gpu/ganesh/GrYUVABackendTextures.h +130 -0
  83. package/cpp/skia/include/gpu/ganesh/SkImageGanesh.h +1 -1
  84. package/cpp/skia/include/gpu/ganesh/SkSurfaceGanesh.h +1 -1
  85. package/cpp/skia/include/gpu/ganesh/d3d/GrD3DBackendContext.h +35 -0
  86. package/cpp/skia/include/gpu/ganesh/d3d/GrD3DTypes.h +248 -0
  87. package/cpp/skia/include/gpu/ganesh/gl/GrGLAssembleHelpers.h +17 -0
  88. package/cpp/skia/include/gpu/ganesh/gl/GrGLAssembleInterface.h +45 -0
  89. package/cpp/skia/include/gpu/ganesh/gl/GrGLBackendSurface.h +1 -1
  90. package/cpp/skia/include/gpu/ganesh/gl/GrGLConfig.h +69 -0
  91. package/cpp/skia/include/gpu/ganesh/gl/GrGLExtensions.h +79 -0
  92. package/cpp/skia/include/gpu/ganesh/gl/GrGLFunctions.h +306 -0
  93. package/cpp/skia/include/gpu/ganesh/gl/GrGLInterface.h +338 -0
  94. package/cpp/skia/include/gpu/ganesh/gl/GrGLMakeWebGLInterface.h +19 -0
  95. package/cpp/skia/include/gpu/ganesh/gl/GrGLTypes.h +219 -0
  96. package/cpp/skia/include/gpu/{gl → ganesh/gl}/egl/GrGLMakeEGLInterface.h +2 -2
  97. package/cpp/skia/include/gpu/ganesh/gl/epoxy/GrGLMakeEpoxyEGLInterface.h +20 -0
  98. package/cpp/skia/include/gpu/ganesh/gl/ios/GrGLMakeIOSInterface.h +20 -0
  99. package/cpp/skia/include/gpu/ganesh/gl/mac/GrGLMakeMacInterface.h +20 -0
  100. package/cpp/skia/include/gpu/ganesh/gl/win/GrGLMakeWinInterface.h +20 -0
  101. package/cpp/skia/include/gpu/ganesh/mock/GrMockTypes.h +166 -0
  102. package/cpp/skia/include/gpu/{mtl → ganesh/mtl}/GrMtlBackendContext.h +2 -2
  103. package/cpp/skia/include/gpu/ganesh/mtl/GrMtlBackendSemaphore.h +23 -0
  104. package/cpp/skia/include/gpu/ganesh/mtl/GrMtlBackendSurface.h +44 -0
  105. package/cpp/skia/include/gpu/ganesh/mtl/GrMtlDirectContext.h +30 -0
  106. package/cpp/skia/include/gpu/{mtl → ganesh/mtl}/GrMtlTypes.h +1 -3
  107. package/cpp/skia/include/gpu/ganesh/mtl/SkSurfaceMetal.h +2 -2
  108. package/cpp/skia/include/gpu/ganesh/vk/GrBackendDrawableInfo.h +2 -2
  109. package/cpp/skia/include/gpu/ganesh/vk/GrVkBackendSemaphore.h +1 -1
  110. package/cpp/skia/include/gpu/ganesh/vk/GrVkBackendSurface.h +7 -3
  111. package/cpp/skia/include/gpu/ganesh/vk/GrVkDirectContext.h +6 -3
  112. package/cpp/skia/include/gpu/ganesh/vk/GrVkTypes.h +101 -0
  113. package/cpp/skia/include/gpu/gl/GrGLAssembleHelpers.h +2 -9
  114. package/cpp/skia/include/gpu/gl/GrGLAssembleInterface.h +2 -38
  115. package/cpp/skia/include/gpu/gl/GrGLConfig.h +2 -73
  116. package/cpp/skia/include/gpu/gl/GrGLExtensions.h +2 -72
  117. package/cpp/skia/include/gpu/gl/GrGLFunctions.h +2 -301
  118. package/cpp/skia/include/gpu/gl/GrGLInterface.h +2 -332
  119. package/cpp/skia/include/gpu/gl/GrGLTypes.h +2 -213
  120. package/cpp/skia/include/gpu/graphite/BackendSemaphore.h +20 -41
  121. package/cpp/skia/include/gpu/graphite/BackendTexture.h +18 -118
  122. package/cpp/skia/include/gpu/graphite/Context.h +122 -44
  123. package/cpp/skia/include/gpu/graphite/ContextOptions.h +30 -3
  124. package/cpp/skia/include/gpu/graphite/GraphiteTypes.h +45 -17
  125. package/cpp/skia/include/gpu/graphite/Image.h +56 -54
  126. package/cpp/skia/include/gpu/graphite/Recorder.h +68 -14
  127. package/cpp/skia/include/gpu/graphite/Recording.h +3 -3
  128. package/cpp/skia/include/gpu/graphite/Surface.h +6 -2
  129. package/cpp/skia/include/gpu/graphite/TextureInfo.h +36 -117
  130. package/cpp/skia/include/gpu/graphite/dawn/DawnTypes.h +108 -6
  131. package/cpp/skia/include/gpu/graphite/mtl/MtlBackendContext.h +4 -1
  132. package/cpp/skia/include/gpu/graphite/mtl/MtlGraphiteTypes.h +41 -25
  133. package/cpp/skia/include/gpu/graphite/precompile/PaintOptions.h +197 -0
  134. package/cpp/skia/include/gpu/graphite/precompile/Precompile.h +48 -0
  135. package/cpp/skia/include/gpu/graphite/precompile/PrecompileBase.h +84 -0
  136. package/cpp/skia/include/gpu/graphite/precompile/PrecompileBlender.h +56 -0
  137. package/cpp/skia/include/gpu/graphite/precompile/PrecompileColorFilter.h +85 -0
  138. package/cpp/skia/include/gpu/graphite/precompile/PrecompileImageFilter.h +119 -0
  139. package/cpp/skia/include/gpu/graphite/precompile/PrecompileMaskFilter.h +51 -0
  140. package/cpp/skia/include/gpu/graphite/precompile/PrecompileRuntimeEffect.h +47 -0
  141. package/cpp/skia/include/gpu/graphite/precompile/PrecompileShader.h +170 -0
  142. package/cpp/skia/include/gpu/graphite/vk/VulkanGraphiteTypes.h +24 -2
  143. package/cpp/skia/include/gpu/mock/GrMockTypes.h +2 -157
  144. package/cpp/skia/include/gpu/mtl/MtlMemoryAllocator.h +2 -0
  145. package/cpp/skia/include/gpu/vk/GrVkTypes.h +2 -101
  146. package/cpp/skia/include/gpu/vk/VulkanBackendContext.h +13 -8
  147. package/cpp/skia/include/gpu/vk/VulkanExtensions.h +9 -3
  148. package/cpp/skia/include/gpu/vk/VulkanMemoryAllocator.h +4 -1
  149. package/cpp/skia/include/gpu/vk/VulkanTypes.h +25 -8
  150. package/cpp/skia/include/ports/SkFontMgr_Fontations.h +20 -0
  151. package/cpp/skia/include/ports/SkFontMgr_android.h +7 -0
  152. package/cpp/skia/include/ports/SkImageGeneratorCG.h +3 -1
  153. package/cpp/skia/include/ports/SkTypeface_win.h +0 -17
  154. package/cpp/skia/include/private/SkEncodedInfo.h +8 -2
  155. package/cpp/skia/include/private/SkExif.h +28 -75
  156. package/cpp/skia/include/private/SkGainmapInfo.h +47 -7
  157. package/cpp/skia/include/private/SkJpegMetadataDecoder.h +12 -0
  158. package/cpp/skia/include/private/SkPathRef.h +52 -44
  159. package/cpp/skia/include/private/SkXmp.h +13 -4
  160. package/cpp/skia/include/private/base/SkASAN.h +56 -0
  161. package/cpp/skia/include/private/base/SkAlign.h +5 -0
  162. package/cpp/skia/include/private/base/SkContainers.h +10 -2
  163. package/cpp/skia/include/private/base/SkFeatures.h +22 -1
  164. package/cpp/skia/include/private/base/SkFloatingPoint.h +51 -65
  165. package/cpp/skia/include/private/base/SkMacros.h +67 -0
  166. package/cpp/skia/include/private/base/SkMalloc.h +8 -0
  167. package/cpp/skia/include/private/base/SkPoint_impl.h +2 -11
  168. package/cpp/skia/include/private/base/SkTArray.h +108 -23
  169. package/cpp/skia/include/private/base/SkTFitsIn.h +1 -12
  170. package/cpp/skia/include/private/chromium/GrDeferredDisplayList.h +1 -1
  171. package/cpp/skia/include/private/chromium/GrDeferredDisplayListRecorder.h +0 -39
  172. package/cpp/skia/include/private/chromium/GrPromiseImageTexture.h +1 -1
  173. package/cpp/skia/include/private/chromium/GrSurfaceCharacterization.h +3 -3
  174. package/cpp/skia/include/private/chromium/SkChromeRemoteGlyphCache.h +1 -4
  175. package/cpp/skia/include/private/chromium/Slug.h +5 -11
  176. package/cpp/skia/include/private/gpu/ganesh/GrContext_Base.h +1 -1
  177. package/cpp/skia/include/private/gpu/ganesh/GrD3DTypesMinimal.h +2 -2
  178. package/cpp/skia/include/private/gpu/ganesh/GrTextureGenerator.h +1 -1
  179. package/cpp/skia/include/private/gpu/ganesh/GrTypesPriv.h +21 -93
  180. package/cpp/skia/include/private/gpu/vk/SkiaVulkan.h +2 -2
  181. package/cpp/skia/include/utils/SkCustomTypeface.h +1 -0
  182. package/cpp/skia/include/utils/SkNWayCanvas.h +1 -1
  183. package/cpp/skia/include/utils/SkParse.h +0 -1
  184. package/cpp/skia/modules/skcms/src/Transform_inl.h +59 -56
  185. package/cpp/skia/modules/skcms/src/skcms_Transform.h +3 -0
  186. package/cpp/skia/modules/skcms/src/skcms_internals.h +2 -0
  187. package/cpp/skia/modules/skcms/src/skcms_public.h +46 -14
  188. package/cpp/skia/modules/skparagraph/include/ParagraphBuilder.h +15 -1
  189. package/cpp/skia/modules/skparagraph/include/TextStyle.h +2 -2
  190. package/cpp/skia/modules/skparagraph/include/TypefaceFontProvider.h +2 -4
  191. package/cpp/skia/modules/skresources/include/SkResources.h +1 -1
  192. package/cpp/skia/modules/skshaper/include/SkShaper.h +316 -0
  193. package/cpp/skia/modules/skshaper/include/SkShaper_coretext.h +19 -0
  194. package/cpp/skia/modules/skshaper/include/SkShaper_factory.h +41 -0
  195. package/cpp/skia/modules/skshaper/include/SkShaper_harfbuzz.h +39 -0
  196. package/cpp/skia/modules/skshaper/include/SkShaper_skunicode.h +28 -0
  197. package/cpp/skia/modules/skunicode/include/SkUnicode.h +6 -23
  198. package/cpp/skia/modules/svg/include/SkSVGAttribute.h +0 -3
  199. package/cpp/skia/modules/svg/include/SkSVGAttributeParser.h +12 -2
  200. package/cpp/skia/modules/svg/include/SkSVGCircle.h +13 -0
  201. package/cpp/skia/modules/svg/include/SkSVGClipPath.h +6 -0
  202. package/cpp/skia/modules/svg/include/SkSVGContainer.h +17 -1
  203. package/cpp/skia/modules/svg/include/SkSVGDOM.h +25 -15
  204. package/cpp/skia/modules/svg/include/SkSVGEllipse.h +13 -2
  205. package/cpp/skia/modules/svg/include/SkSVGFe.h +11 -2
  206. package/cpp/skia/modules/svg/include/SkSVGFeBlend.h +9 -0
  207. package/cpp/skia/modules/svg/include/SkSVGFeColorMatrix.h +9 -0
  208. package/cpp/skia/modules/svg/include/SkSVGFeComponentTransfer.h +82 -0
  209. package/cpp/skia/modules/svg/include/SkSVGFeComposite.h +10 -1
  210. package/cpp/skia/modules/svg/include/SkSVGFeDisplacementMap.h +10 -0
  211. package/cpp/skia/modules/svg/include/SkSVGFeFlood.h +10 -0
  212. package/cpp/skia/modules/svg/include/SkSVGFeGaussianBlur.h +9 -0
  213. package/cpp/skia/modules/svg/include/SkSVGFeImage.h +9 -0
  214. package/cpp/skia/modules/svg/include/SkSVGFeLightSource.h +5 -0
  215. package/cpp/skia/modules/svg/include/SkSVGFeLighting.h +11 -0
  216. package/cpp/skia/modules/svg/include/SkSVGFeMerge.h +63 -0
  217. package/cpp/skia/modules/svg/include/SkSVGFeMorphology.h +8 -0
  218. package/cpp/skia/modules/svg/include/SkSVGFeOffset.h +9 -0
  219. package/cpp/skia/modules/svg/include/SkSVGFeTurbulence.h +9 -0
  220. package/cpp/skia/modules/svg/include/SkSVGFilter.h +9 -0
  221. package/cpp/skia/modules/svg/include/SkSVGFilterContext.h +3 -3
  222. package/cpp/skia/modules/svg/include/SkSVGGradient.h +10 -2
  223. package/cpp/skia/modules/svg/include/SkSVGImage.h +9 -0
  224. package/cpp/skia/modules/svg/include/SkSVGLine.h +11 -0
  225. package/cpp/skia/modules/svg/include/SkSVGLinearGradient.h +10 -0
  226. package/cpp/skia/modules/svg/include/SkSVGMask.h +6 -0
  227. package/cpp/skia/modules/svg/include/SkSVGNode.h +13 -2
  228. package/cpp/skia/modules/svg/include/SkSVGOpenTypeSVGDecoder.h +5 -0
  229. package/cpp/skia/modules/svg/include/SkSVGPath.h +10 -0
  230. package/cpp/skia/modules/svg/include/SkSVGPattern.h +5 -0
  231. package/cpp/skia/modules/svg/include/SkSVGPoly.h +11 -0
  232. package/cpp/skia/modules/svg/include/SkSVGRadialGradient.h +11 -0
  233. package/cpp/skia/modules/svg/include/SkSVGRect.h +11 -0
  234. package/cpp/skia/modules/svg/include/SkSVGRenderContext.h +43 -7
  235. package/cpp/skia/modules/svg/include/SkSVGSVG.h +7 -0
  236. package/cpp/skia/modules/svg/include/SkSVGShape.h +8 -2
  237. package/cpp/skia/modules/svg/include/SkSVGStop.h +5 -3
  238. package/cpp/skia/modules/svg/include/SkSVGText.h +8 -2
  239. package/cpp/skia/modules/svg/include/SkSVGTransformableNode.h +8 -0
  240. package/cpp/skia/modules/svg/include/SkSVGTypes.h +9 -0
  241. package/cpp/skia/modules/svg/include/SkSVGUse.h +7 -0
  242. package/cpp/skia/src/base/SkMathPriv.h +337 -0
  243. package/cpp/skia/src/base/SkTLazy.h +208 -0
  244. package/cpp/skia/src/core/SkTHash.h +58 -7
  245. package/cpp/skia/src/gpu/ganesh/gl/GrGLDefines.h +3 -0
  246. package/ios/RNSkia-iOS/RNSkiOSPlatformContext.h +3 -0
  247. package/ios/RNSkia-iOS/RNSkiOSPlatformContext.mm +7 -0
  248. package/ios/RNSkia-iOS/SkiaCVPixelBufferUtils.mm +7 -2
  249. package/ios/RNSkia-iOS/SkiaMetalSurfaceFactory.h +78 -0
  250. package/ios/RNSkia-iOS/SkiaMetalSurfaceFactory.mm +20 -4
  251. package/lib/commonjs/renderer/HostConfig.js.map +1 -1
  252. package/lib/commonjs/skia/types/Paragraph/TextStyle.d.ts +2 -2
  253. package/lib/commonjs/skia/types/Paragraph/TextStyle.js.map +1 -1
  254. package/lib/commonjs/skia/types/Skia.d.ts +6 -1
  255. package/lib/commonjs/skia/types/Skia.js.map +1 -1
  256. package/lib/commonjs/skia/web/JsiSkia.js +4 -1
  257. package/lib/commonjs/skia/web/JsiSkia.js.map +1 -1
  258. package/lib/commonjs/web/WithSkiaWeb.d.ts +11 -4
  259. package/lib/commonjs/web/WithSkiaWeb.js +3 -2
  260. package/lib/commonjs/web/WithSkiaWeb.js.map +1 -1
  261. package/lib/module/renderer/HostConfig.js.map +1 -1
  262. package/lib/module/skia/types/Paragraph/TextStyle.d.ts +2 -2
  263. package/lib/module/skia/types/Paragraph/TextStyle.js.map +1 -1
  264. package/lib/module/skia/types/Skia.d.ts +6 -1
  265. package/lib/module/skia/types/Skia.js.map +1 -1
  266. package/lib/module/skia/web/JsiSkia.js +4 -1
  267. package/lib/module/skia/web/JsiSkia.js.map +1 -1
  268. package/lib/module/web/WithSkiaWeb.d.ts +11 -4
  269. package/lib/module/web/WithSkiaWeb.js +3 -2
  270. package/lib/module/web/WithSkiaWeb.js.map +1 -1
  271. package/lib/typescript/lib/commonjs/skia/web/JsiSkia.d.ts +1 -0
  272. package/lib/typescript/lib/commonjs/web/WithSkiaWeb.d.ts +2 -1
  273. package/lib/typescript/lib/module/skia/Skia.web.d.ts +1 -0
  274. package/lib/typescript/lib/module/skia/web/JsiSkia.d.ts +1 -0
  275. package/lib/typescript/lib/module/web/WithSkiaWeb.d.ts +2 -1
  276. package/lib/typescript/src/skia/types/Paragraph/TextStyle.d.ts +2 -2
  277. package/lib/typescript/src/skia/types/Skia.d.ts +6 -1
  278. package/lib/typescript/src/web/WithSkiaWeb.d.ts +11 -4
  279. package/libs/android/arm64-v8a/libskia.a +0 -0
  280. package/libs/android/arm64-v8a/libskottie.a +0 -0
  281. package/libs/android/arm64-v8a/libskparagraph.a +0 -0
  282. package/libs/android/arm64-v8a/libsksg.a +0 -0
  283. package/libs/android/arm64-v8a/libskshaper.a +0 -0
  284. package/libs/android/arm64-v8a/libskunicode_core.a +0 -0
  285. package/libs/android/arm64-v8a/libskunicode_icu.a +0 -0
  286. package/libs/android/arm64-v8a/libsvg.a +0 -0
  287. package/libs/android/armeabi-v7a/libskia.a +0 -0
  288. package/libs/android/armeabi-v7a/libskottie.a +0 -0
  289. package/libs/android/armeabi-v7a/libskparagraph.a +0 -0
  290. package/libs/android/armeabi-v7a/libsksg.a +0 -0
  291. package/libs/android/armeabi-v7a/libskshaper.a +0 -0
  292. package/libs/android/armeabi-v7a/libskunicode_core.a +0 -0
  293. package/libs/android/armeabi-v7a/libskunicode_icu.a +0 -0
  294. package/libs/android/armeabi-v7a/libsvg.a +0 -0
  295. package/libs/android/x86/libskia.a +0 -0
  296. package/libs/android/x86/libskottie.a +0 -0
  297. package/libs/android/x86/libskparagraph.a +0 -0
  298. package/libs/android/x86/libsksg.a +0 -0
  299. package/libs/android/x86/libskshaper.a +0 -0
  300. package/libs/android/x86/libskunicode_core.a +0 -0
  301. package/libs/android/x86/libskunicode_icu.a +0 -0
  302. package/libs/android/x86/libsvg.a +0 -0
  303. package/libs/android/x86_64/libskia.a +0 -0
  304. package/libs/android/x86_64/libskottie.a +0 -0
  305. package/libs/android/x86_64/libskparagraph.a +0 -0
  306. package/libs/android/x86_64/libsksg.a +0 -0
  307. package/libs/android/x86_64/libskshaper.a +0 -0
  308. package/libs/android/x86_64/libskunicode_core.a +0 -0
  309. package/libs/android/x86_64/libskunicode_icu.a +0 -0
  310. package/libs/android/x86_64/libsvg.a +0 -0
  311. package/libs/ios/libskia.xcframework/Info.plist +5 -5
  312. package/libs/ios/libskia.xcframework/ios-arm64_arm64e/libskia.a +0 -0
  313. package/libs/ios/libskia.xcframework/ios-arm64_arm64e_x86_64-simulator/libskia.a +0 -0
  314. package/libs/ios/libskottie.xcframework/Info.plist +5 -5
  315. package/libs/ios/libskottie.xcframework/ios-arm64_arm64e/libskottie.a +0 -0
  316. package/libs/ios/libskottie.xcframework/ios-arm64_arm64e_x86_64-simulator/libskottie.a +0 -0
  317. package/libs/ios/libskparagraph.xcframework/ios-arm64_arm64e/libskparagraph.a +0 -0
  318. package/libs/ios/libskparagraph.xcframework/ios-arm64_arm64e_x86_64-simulator/libskparagraph.a +0 -0
  319. package/libs/ios/libsksg.xcframework/Info.plist +5 -5
  320. package/libs/ios/libsksg.xcframework/ios-arm64_arm64e/libsksg.a +0 -0
  321. package/libs/ios/libsksg.xcframework/ios-arm64_arm64e_x86_64-simulator/libsksg.a +0 -0
  322. package/libs/ios/libskshaper.xcframework/ios-arm64_arm64e/libskshaper.a +0 -0
  323. package/libs/ios/libskshaper.xcframework/ios-arm64_arm64e_x86_64-simulator/libskshaper.a +0 -0
  324. package/libs/ios/libsvg.xcframework/Info.plist +5 -5
  325. package/libs/ios/libsvg.xcframework/ios-arm64_arm64e/libsvg.a +0 -0
  326. package/libs/ios/libsvg.xcframework/ios-arm64_arm64e_x86_64-simulator/libsvg.a +0 -0
  327. package/package.json +3 -5
  328. package/react-native-skia.podspec +2 -1
  329. package/src/renderer/HostConfig.ts +5 -1
  330. package/src/renderer/__tests__/e2e/ImageFilters.spec.tsx +5 -2
  331. package/src/renderer/__tests__/e2e/Paths.spec.tsx +12 -5
  332. package/src/renderer/__tests__/e2e/SDF.spec.tsx +1 -1
  333. package/src/renderer/__tests__/e2e/Snapshot.spec.tsx +1 -1
  334. package/src/skia/types/Paragraph/TextStyle.ts +2 -2
  335. package/src/skia/types/Skia.ts +7 -1
  336. package/src/skia/web/JsiSkia.ts +3 -0
  337. package/src/web/WithSkiaWeb.tsx +17 -6
  338. package/cpp/skia/include/core/SkDrawLooper.h +0 -135
  339. package/cpp/skia/include/effects/SkBlurDrawLooper.h +0 -26
  340. package/cpp/skia/include/effects/SkLayerDrawLooper.h +0 -161
  341. package/cpp/skia/include/gpu/gl/GrGLConfig_chrome.h +0 -14
  342. package/cpp/skia/include/gpu/vk/GrVkBackendContext.h +0 -84
  343. package/cpp/skia/include/gpu/vk/GrVkExtensions.h +0 -15
  344. package/cpp/skia/include/gpu/vk/GrVkMemoryAllocator.h +0 -15
  345. package/cpp/skia/include/ports/SkFontMgr_indirect.h +0 -102
  346. package/cpp/skia/include/ports/SkRemotableFontMgr.h +0 -139
  347. package/cpp/skia/include/private/base/SkFloatBits.h +0 -90
  348. package/cpp/skia/include/private/gpu/graphite/ContextOptionsPriv.h +0 -69
  349. package/cpp/skia/include/private/gpu/graphite/DawnTypesPriv.h +0 -54
  350. package/cpp/skia/include/private/gpu/graphite/MtlGraphiteTypesPriv.h +0 -95
  351. package/cpp/skia/include/private/gpu/graphite/VulkanGraphiteTypesPriv.h +0 -83
  352. package/cpp/skia/src/core/SkPathEnums.h +0 -25
  353. package/cpp/skia/src/core/SkPathPriv.h +0 -540
  354. package/libs/android/arm64-v8a/libskunicode.a +0 -0
  355. package/libs/android/armeabi-v7a/libskunicode.a +0 -0
  356. package/libs/android/x86/libskunicode.a +0 -0
  357. package/libs/android/x86_64/libskunicode.a +0 -0
  358. package/libs/ios/libskunicode.xcframework/Info.plist +0 -46
  359. package/libs/ios/libskunicode.xcframework/ios-arm64_arm64e/libskunicode.a +0 -0
  360. package/libs/ios/libskunicode.xcframework/ios-arm64_arm64e_x86_64-simulator/libskunicode.a +0 -0
  361. /package/cpp/skia/include/gpu/{gl → ganesh/gl}/glx/GrGLMakeGLXInterface.h +0 -0
@@ -4,121 +4,5 @@
4
4
  * Use of this source code is governed by a BSD-style license that can be
5
5
  * found in the LICENSE file.
6
6
  */
7
-
8
- #ifndef GrYUVABackendTextures_DEFINED
9
- #define GrYUVABackendTextures_DEFINED
10
-
11
- #include "include/core/SkYUVAInfo.h"
12
- #include "include/gpu/GrBackendSurface.h"
13
-
14
- #include <tuple>
15
-
16
- /**
17
- * A description of a set GrBackendTextures that hold the planar data described by a SkYUVAInfo.
18
- */
19
- class SK_API GrYUVABackendTextureInfo {
20
- public:
21
- static constexpr auto kMaxPlanes = SkYUVAInfo::kMaxPlanes;
22
-
23
- /** Default GrYUVABackendTextureInfo is invalid. */
24
- GrYUVABackendTextureInfo() = default;
25
-
26
- /**
27
- * Initializes a GrYUVABackendTextureInfo to describe a set of textures that can store the
28
- * planes indicated by the SkYUVAInfo. The texture dimensions are taken from the SkYUVAInfo's
29
- * plane dimensions. All the described textures share a common origin. The planar image this
30
- * describes will be mip mapped if all the textures are individually mip mapped as indicated
31
- * by skgpu::Mipmapped. This will produce an invalid result (return false from isValid()) if the
32
- * passed formats' channels don't agree with SkYUVAInfo.
33
- */
34
- GrYUVABackendTextureInfo(const SkYUVAInfo&,
35
- const GrBackendFormat[kMaxPlanes],
36
- skgpu::Mipmapped,
37
- GrSurfaceOrigin);
38
-
39
- GrYUVABackendTextureInfo(const GrYUVABackendTextureInfo&) = default;
40
-
41
- GrYUVABackendTextureInfo& operator=(const GrYUVABackendTextureInfo&) = default;
42
-
43
- bool operator==(const GrYUVABackendTextureInfo&) const;
44
- bool operator!=(const GrYUVABackendTextureInfo& that) const { return !(*this == that); }
45
-
46
- const SkYUVAInfo& yuvaInfo() const { return fYUVAInfo; }
47
-
48
- SkYUVColorSpace yuvColorSpace() const { return fYUVAInfo.yuvColorSpace(); }
49
-
50
- skgpu::Mipmapped mipmapped() const { return fMipmapped; }
51
-
52
- GrSurfaceOrigin textureOrigin() const { return fTextureOrigin; }
53
-
54
- /** The number of SkPixmap planes, 0 if this GrYUVABackendTextureInfo is invalid. */
55
- int numPlanes() const { return fYUVAInfo.numPlanes(); }
56
-
57
- /** Format of the ith plane, or invalid format if i >= numPlanes() */
58
- const GrBackendFormat& planeFormat(int i) const { return fPlaneFormats[i]; }
59
-
60
- /**
61
- * Returns true if this has been configured with a valid SkYUVAInfo with compatible texture
62
- * formats.
63
- */
64
- bool isValid() const { return fYUVAInfo.isValid(); }
65
-
66
- /**
67
- * Computes a YUVALocations representation of the planar layout. The result is guaranteed to be
68
- * valid if this->isValid().
69
- */
70
- SkYUVAInfo::YUVALocations toYUVALocations() const;
71
-
72
- private:
73
- SkYUVAInfo fYUVAInfo;
74
- GrBackendFormat fPlaneFormats[kMaxPlanes];
75
- skgpu::Mipmapped fMipmapped = skgpu::Mipmapped::kNo;
76
- GrSurfaceOrigin fTextureOrigin = kTopLeft_GrSurfaceOrigin;
77
- };
78
-
79
- /**
80
- * A set of GrBackendTextures that hold the planar data for an image described a SkYUVAInfo.
81
- */
82
- class SK_API GrYUVABackendTextures {
83
- public:
84
- GrYUVABackendTextures() = default;
85
- GrYUVABackendTextures(const GrYUVABackendTextures&) = delete;
86
- GrYUVABackendTextures(GrYUVABackendTextures&&) = default;
87
-
88
- GrYUVABackendTextures& operator=(const GrYUVABackendTextures&) = delete;
89
- GrYUVABackendTextures& operator=(GrYUVABackendTextures&&) = default;
90
-
91
- GrYUVABackendTextures(const SkYUVAInfo&,
92
- const GrBackendTexture[SkYUVAInfo::kMaxPlanes],
93
- GrSurfaceOrigin textureOrigin);
94
-
95
- const std::array<GrBackendTexture, SkYUVAInfo::kMaxPlanes>& textures() const {
96
- return fTextures;
97
- }
98
-
99
- GrBackendTexture texture(int i) const {
100
- SkASSERT(i >= 0 && i < SkYUVAInfo::kMaxPlanes);
101
- return fTextures[static_cast<size_t>(i)];
102
- }
103
-
104
- const SkYUVAInfo& yuvaInfo() const { return fYUVAInfo; }
105
-
106
- int numPlanes() const { return fYUVAInfo.numPlanes(); }
107
-
108
- GrSurfaceOrigin textureOrigin() const { return fTextureOrigin; }
109
-
110
- bool isValid() const { return fYUVAInfo.isValid(); }
111
-
112
- /**
113
- * Computes a YUVALocations representation of the planar layout. The result is guaranteed to be
114
- * valid if this->isValid().
115
- */
116
- SkYUVAInfo::YUVALocations toYUVALocations() const;
117
-
118
- private:
119
- SkYUVAInfo fYUVAInfo;
120
- std::array<GrBackendTexture, SkYUVAInfo::kMaxPlanes> fTextures;
121
- GrSurfaceOrigin fTextureOrigin = kTopLeft_GrSurfaceOrigin;
122
- };
123
-
124
- #endif
7
+ // TODO(kjlubick, egdaniel) Delete this after migrating clients.
8
+ #include "include/gpu/ganesh/GrYUVABackendTextures.h"
@@ -4,32 +4,5 @@
4
4
  * Use of this source code is governed by a BSD-style license that can be
5
5
  * found in the LICENSE file.
6
6
  */
7
-
8
- #ifndef GrD3DBackendContext_DEFINED
9
- #define GrD3DBackendContext_DEFINED
10
-
11
- // GrD3DTypes.h includes d3d12.h, which in turn includes windows.h, which redefines many
12
- // common identifiers such as:
13
- // * interface
14
- // * small
15
- // * near
16
- // * far
17
- // * CreateSemaphore
18
- // * MemoryBarrier
19
- //
20
- // You should only include GrD3DBackendContext.h if you are prepared to rename those identifiers.
21
- #include "include/gpu/d3d/GrD3DTypes.h"
22
-
23
- #include "include/gpu/GrTypes.h"
24
-
25
- // The BackendContext contains all of the base D3D objects needed by the GrD3DGpu. The assumption
26
- // is that the client will set these up and pass them to the GrD3DGpu constructor.
27
- struct SK_API GrD3DBackendContext {
28
- gr_cp<IDXGIAdapter1> fAdapter;
29
- gr_cp<ID3D12Device> fDevice;
30
- gr_cp<ID3D12CommandQueue> fQueue;
31
- sk_sp<GrD3DMemoryAllocator> fMemoryAllocator;
32
- GrProtected fProtectedContext = GrProtected::kNo;
33
- };
34
-
35
- #endif
7
+ // TODO(kjlubick, egdaniel) Delete this after migrating clients.
8
+ #include "include/gpu/ganesh/d3d/GrD3DBackendContext.h"
@@ -1,248 +1,8 @@
1
-
2
1
  /*
3
2
  * Copyright 2020 Google LLC
4
3
  *
5
4
  * Use of this source code is governed by a BSD-style license that can be
6
5
  * found in the LICENSE file.
7
6
  */
8
-
9
- #ifndef GrD3DTypes_DEFINED
10
- #define GrD3DTypes_DEFINED
11
-
12
- // This file includes d3d12.h, which in turn includes windows.h, which redefines many
13
- // common identifiers such as:
14
- // * interface
15
- // * small
16
- // * near
17
- // * far
18
- // * CreateSemaphore
19
- // * MemoryBarrier
20
- //
21
- // You should only include this header if you need the Direct3D definitions and are
22
- // prepared to rename those identifiers.
23
-
24
- #include "include/core/SkRefCnt.h"
25
- #include "include/gpu/GpuTypes.h"
26
- #include <d3d12.h>
27
- #include <dxgi1_4.h>
28
-
29
- class GrD3DGpu;
30
-
31
- /** Check if the argument is non-null, and if so, call obj->AddRef() and return obj.
32
- */
33
- template <typename T> static inline T* GrSafeComAddRef(T* obj) {
34
- if (obj) {
35
- obj->AddRef();
36
- }
37
- return obj;
38
- }
39
-
40
- /** Check if the argument is non-null, and if so, call obj->Release()
41
- */
42
- template <typename T> static inline void GrSafeComRelease(T* obj) {
43
- if (obj) {
44
- obj->Release();
45
- }
46
- }
47
-
48
- template <typename T> class gr_cp {
49
- public:
50
- using element_type = T;
51
-
52
- constexpr gr_cp() : fObject(nullptr) {}
53
- constexpr gr_cp(std::nullptr_t) : fObject(nullptr) {}
54
-
55
- /**
56
- * Shares the underlying object by calling AddRef(), so that both the argument and the newly
57
- * created gr_cp both have a reference to it.
58
- */
59
- gr_cp(const gr_cp<T>& that) : fObject(GrSafeComAddRef(that.get())) {}
60
-
61
- /**
62
- * Move the underlying object from the argument to the newly created gr_cp. Afterwards only
63
- * the new gr_cp will have a reference to the object, and the argument will point to null.
64
- * No call to AddRef() or Release() will be made.
65
- */
66
- gr_cp(gr_cp<T>&& that) : fObject(that.release()) {}
67
-
68
- /**
69
- * Adopt the bare object into the newly created gr_cp.
70
- * No call to AddRef() or Release() will be made.
71
- */
72
- explicit gr_cp(T* obj) {
73
- fObject = obj;
74
- }
75
-
76
- /**
77
- * Calls Release() on the underlying object pointer.
78
- */
79
- ~gr_cp() {
80
- GrSafeComRelease(fObject);
81
- SkDEBUGCODE(fObject = nullptr);
82
- }
83
-
84
- /**
85
- * Shares the underlying object referenced by the argument by calling AddRef() on it. If this
86
- * gr_cp previously had a reference to an object (i.e. not null) it will call Release()
87
- * on that object.
88
- */
89
- gr_cp<T>& operator=(const gr_cp<T>& that) {
90
- if (this != &that) {
91
- this->reset(GrSafeComAddRef(that.get()));
92
- }
93
- return *this;
94
- }
95
-
96
- /**
97
- * Move the underlying object from the argument to the gr_cp. If the gr_cp
98
- * previously held a reference to another object, Release() will be called on that object.
99
- * No call to AddRef() will be made.
100
- */
101
- gr_cp<T>& operator=(gr_cp<T>&& that) {
102
- this->reset(that.release());
103
- return *this;
104
- }
105
-
106
- explicit operator bool() const { return this->get() != nullptr; }
107
-
108
- T* get() const { return fObject; }
109
- T* operator->() const { return fObject; }
110
- T** operator&() { return &fObject; }
111
-
112
- /**
113
- * Adopt the new object, and call Release() on any previously held object (if not null).
114
- * No call to AddRef() will be made.
115
- */
116
- void reset(T* object = nullptr) {
117
- T* oldObject = fObject;
118
- fObject = object;
119
- GrSafeComRelease(oldObject);
120
- }
121
-
122
- /**
123
- * Shares the new object by calling AddRef() on it. If this gr_cp previously had a
124
- * reference to an object (i.e. not null) it will call Release() on that object.
125
- */
126
- void retain(T* object) {
127
- if (this->fObject != object) {
128
- this->reset(GrSafeComAddRef(object));
129
- }
130
- }
131
-
132
- /**
133
- * Return the original object, and set the internal object to nullptr.
134
- * The caller must assume ownership of the object, and manage its reference count directly.
135
- * No call to Release() will be made.
136
- */
137
- [[nodiscard]] T* release() {
138
- T* obj = fObject;
139
- fObject = nullptr;
140
- return obj;
141
- }
142
-
143
- private:
144
- T* fObject;
145
- };
146
-
147
- template <typename T> inline bool operator==(const gr_cp<T>& a,
148
- const gr_cp<T>& b) {
149
- return a.get() == b.get();
150
- }
151
-
152
- template <typename T> inline bool operator!=(const gr_cp<T>& a,
153
- const gr_cp<T>& b) {
154
- return a.get() != b.get();
155
- }
156
-
157
- // interface classes for the GPU memory allocator
158
- class GrD3DAlloc : public SkRefCnt {
159
- public:
160
- ~GrD3DAlloc() override = default;
161
- };
162
-
163
- class GrD3DMemoryAllocator : public SkRefCnt {
164
- public:
165
- virtual gr_cp<ID3D12Resource> createResource(D3D12_HEAP_TYPE, const D3D12_RESOURCE_DESC*,
166
- D3D12_RESOURCE_STATES initialResourceState,
167
- sk_sp<GrD3DAlloc>* allocation,
168
- const D3D12_CLEAR_VALUE*) = 0;
169
- virtual gr_cp<ID3D12Resource> createAliasingResource(sk_sp<GrD3DAlloc>& allocation,
170
- uint64_t localOffset,
171
- const D3D12_RESOURCE_DESC*,
172
- D3D12_RESOURCE_STATES initialResourceState,
173
- const D3D12_CLEAR_VALUE*) = 0;
174
- };
175
-
176
- // Note: there is no notion of Borrowed or Adopted resources in the D3D backend,
177
- // so Ganesh will ref fResource once it's asked to wrap it.
178
- // Clients are responsible for releasing their own ref to avoid memory leaks.
179
- struct GrD3DTextureResourceInfo {
180
- gr_cp<ID3D12Resource> fResource = nullptr;
181
- sk_sp<GrD3DAlloc> fAlloc = nullptr;
182
- D3D12_RESOURCE_STATES fResourceState = D3D12_RESOURCE_STATE_COMMON;
183
- DXGI_FORMAT fFormat = DXGI_FORMAT_UNKNOWN;
184
- uint32_t fSampleCount = 1;
185
- uint32_t fLevelCount = 0;
186
- unsigned int fSampleQualityPattern = DXGI_STANDARD_MULTISAMPLE_QUALITY_PATTERN;
187
- skgpu::Protected fProtected = skgpu::Protected::kNo;
188
-
189
- GrD3DTextureResourceInfo() = default;
190
-
191
- GrD3DTextureResourceInfo(ID3D12Resource* resource,
192
- const sk_sp<GrD3DAlloc> alloc,
193
- D3D12_RESOURCE_STATES resourceState,
194
- DXGI_FORMAT format,
195
- uint32_t sampleCount,
196
- uint32_t levelCount,
197
- unsigned int sampleQualityLevel,
198
- skgpu::Protected isProtected = skgpu::Protected::kNo)
199
- : fResource(resource)
200
- , fAlloc(alloc)
201
- , fResourceState(resourceState)
202
- , fFormat(format)
203
- , fSampleCount(sampleCount)
204
- , fLevelCount(levelCount)
205
- , fSampleQualityPattern(sampleQualityLevel)
206
- , fProtected(isProtected) {}
207
-
208
- GrD3DTextureResourceInfo(const GrD3DTextureResourceInfo& info,
209
- D3D12_RESOURCE_STATES resourceState)
210
- : fResource(info.fResource)
211
- , fAlloc(info.fAlloc)
212
- , fResourceState(resourceState)
213
- , fFormat(info.fFormat)
214
- , fSampleCount(info.fSampleCount)
215
- , fLevelCount(info.fLevelCount)
216
- , fSampleQualityPattern(info.fSampleQualityPattern)
217
- , fProtected(info.fProtected) {}
218
-
219
- #if defined(GR_TEST_UTILS)
220
- bool operator==(const GrD3DTextureResourceInfo& that) const {
221
- return fResource == that.fResource && fResourceState == that.fResourceState &&
222
- fFormat == that.fFormat && fSampleCount == that.fSampleCount &&
223
- fLevelCount == that.fLevelCount &&
224
- fSampleQualityPattern == that.fSampleQualityPattern && fProtected == that.fProtected;
225
- }
226
- #endif
227
- };
228
-
229
- struct GrD3DFenceInfo {
230
- GrD3DFenceInfo()
231
- : fFence(nullptr)
232
- , fValue(0) {
233
- }
234
-
235
- gr_cp<ID3D12Fence> fFence;
236
- uint64_t fValue; // signal value for the fence
237
- };
238
-
239
- struct GrD3DSurfaceInfo {
240
- uint32_t fSampleCount = 1;
241
- uint32_t fLevelCount = 0;
242
- skgpu::Protected fProtected = skgpu::Protected::kNo;
243
-
244
- DXGI_FORMAT fFormat = DXGI_FORMAT_UNKNOWN;
245
- unsigned int fSampleQualityPattern = DXGI_STANDARD_MULTISAMPLE_QUALITY_PATTERN;
246
- };
247
-
248
- #endif
7
+ // TODO(kjlubick, egdaniel) Delete this after migrating clients.
8
+ #include "include/gpu/ganesh/d3d/GrD3DTypes.h"
@@ -0,0 +1,80 @@
1
+ /*
2
+ * Copyright 2017 Google Inc.
3
+ *
4
+ * Use of this source code is governed by a BSD-style license that can be
5
+ * found in the LICENSE file.
6
+ */
7
+
8
+ #ifndef GrBackendSemaphore_DEFINED
9
+ #define GrBackendSemaphore_DEFINED
10
+
11
+ #include "include/gpu/ganesh/GrTypes.h" // IWYU pragma: keep
12
+ #include "include/private/base/SkAPI.h"
13
+ #include "include/private/base/SkAnySubclass.h"
14
+
15
+ #ifdef SK_DIRECT3D
16
+ #include "include/private/gpu/ganesh/GrD3DTypesMinimal.h"
17
+ #endif
18
+
19
+ #include <cstddef>
20
+
21
+ class GrBackendSemaphoreData;
22
+
23
+ /**
24
+ * Wrapper class for passing into and receiving data from Ganesh about a backend semaphore object.
25
+ */
26
+ class SK_API GrBackendSemaphore {
27
+ public:
28
+ // The GrBackendSemaphore cannot be used until either init* is called, which will set the
29
+ // appropriate GrBackend.
30
+ GrBackendSemaphore();
31
+ ~GrBackendSemaphore();
32
+ GrBackendSemaphore(const GrBackendSemaphore&);
33
+ GrBackendSemaphore& operator=(const GrBackendSemaphore&);
34
+
35
+ #ifdef SK_DIRECT3D
36
+ void initDirect3D(const GrD3DFenceInfo& info) {
37
+ fBackend = GrBackendApi::kDirect3D;
38
+ this->assignD3DFenceInfo(info);
39
+ fIsInitialized = true;
40
+ }
41
+ #endif
42
+
43
+ bool isInitialized() const { return fIsInitialized; }
44
+ GrBackendApi backend() const { return fBackend; }
45
+
46
+ #ifdef SK_DIRECT3D
47
+ bool getD3DFenceInfo(GrD3DFenceInfo* outInfo) const;
48
+ #endif
49
+
50
+ private:
51
+ friend class GrBackendSemaphorePriv;
52
+ friend class GrBackendSemaphoreData;
53
+ // Size determined by looking at the GrBackendSemaphoreData subclasses, then
54
+ // guessing-and-checking. Compiler will complain if this is too small - in that case,
55
+ // just increase the number.
56
+ inline constexpr static size_t kMaxSubclassSize = 24;
57
+ using AnySemaphoreData = SkAnySubclass<GrBackendSemaphoreData, kMaxSubclassSize>;
58
+
59
+ template <typename SemaphoreData>
60
+ GrBackendSemaphore(GrBackendApi api, SemaphoreData data) : fBackend(api), fIsInitialized(true) {
61
+ fSemaphoreData.emplace<SemaphoreData>(data);
62
+ }
63
+
64
+ #ifdef SK_DIRECT3D
65
+ void assignD3DFenceInfo(const GrD3DFenceInfo& info);
66
+ #endif
67
+
68
+ GrBackendApi fBackend;
69
+ AnySemaphoreData fSemaphoreData;
70
+
71
+ union {
72
+ void* fPlaceholder; // TODO(293490566)
73
+ #ifdef SK_DIRECT3D
74
+ GrD3DFenceInfo* fD3DFenceInfo;
75
+ #endif
76
+ };
77
+ bool fIsInitialized;
78
+ };
79
+
80
+ #endif