@shopify/react-native-skia 1.3.13 → 1.4.1

Sign up to get free protection for your applications and to get access to all the features.
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
@@ -0,0 +1,386 @@
1
+ /*
2
+ * Copyright 2015 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 GrContextOptions_DEFINED
9
+ #define GrContextOptions_DEFINED
10
+
11
+ #include "include/core/SkData.h"
12
+ #include "include/core/SkString.h"
13
+ #include "include/core/SkTypes.h"
14
+ #include "include/gpu/ganesh/GrDriverBugWorkarounds.h"
15
+ #include "include/gpu/ganesh/GrTypes.h"
16
+ #include "include/gpu/ShaderErrorHandler.h"
17
+ #include "include/private/gpu/ganesh/GrTypesPriv.h"
18
+
19
+ #include <optional>
20
+ #include <vector>
21
+
22
+ class SkExecutor;
23
+
24
+ struct SK_API GrContextOptions {
25
+ enum class Enable {
26
+ /** Forces an option to be disabled. */
27
+ kNo,
28
+ /** Forces an option to be enabled. */
29
+ kYes,
30
+ /**
31
+ * Uses Skia's default behavior, which may use runtime properties (e.g. driver version).
32
+ */
33
+ kDefault
34
+ };
35
+
36
+ enum class ShaderCacheStrategy {
37
+ kSkSL,
38
+ kBackendSource,
39
+ kBackendBinary,
40
+ };
41
+
42
+ /**
43
+ * Abstract class which stores Skia data in a cache that persists between sessions. Currently,
44
+ * Skia stores compiled shader binaries (only when glProgramBinary / glGetProgramBinary are
45
+ * supported) when provided a persistent cache, but this may extend to other data in the future.
46
+ */
47
+ class SK_API PersistentCache {
48
+ public:
49
+ virtual ~PersistentCache() = default;
50
+
51
+ /**
52
+ * Returns the data for the key if it exists in the cache, otherwise returns null.
53
+ */
54
+ virtual sk_sp<SkData> load(const SkData& key) = 0;
55
+
56
+ // Placeholder until all clients override the 3-parameter store(), then remove this, and
57
+ // make that version pure virtual.
58
+ virtual void store(const SkData& /*key*/, const SkData& /*data*/) { SkASSERT(false); }
59
+
60
+ /**
61
+ * Stores data in the cache, indexed by key. description provides a human-readable
62
+ * version of the key.
63
+ */
64
+ virtual void store(const SkData& key, const SkData& data, const SkString& /*description*/) {
65
+ this->store(key, data);
66
+ }
67
+
68
+ protected:
69
+ PersistentCache() = default;
70
+ PersistentCache(const PersistentCache&) = delete;
71
+ PersistentCache& operator=(const PersistentCache&) = delete;
72
+ };
73
+
74
+ using ShaderErrorHandler = skgpu::ShaderErrorHandler;
75
+
76
+ GrContextOptions() {}
77
+
78
+ // Suppress prints for the GrContext.
79
+ bool fSuppressPrints = false;
80
+
81
+ /**
82
+ * Controls whether we check for GL errors after functions that allocate resources (e.g.
83
+ * glTexImage2D), at the end of a GPU submission, or checking framebuffer completeness. The
84
+ * results of shader compilation and program linking are always checked, regardless of this
85
+ * option. Ignored on backends other than GL.
86
+ */
87
+ Enable fSkipGLErrorChecks = Enable::kDefault;
88
+
89
+ /** Overrides: These options override feature detection using backend API queries. These
90
+ overrides can only reduce the feature set or limits, never increase them beyond the
91
+ detected values. */
92
+
93
+ int fMaxTextureSizeOverride = SK_MaxS32;
94
+
95
+ /** the threshold in bytes above which we will use a buffer mapping API to map vertex and index
96
+ buffers to CPU memory in order to update them. A value of -1 means the GrContext should
97
+ deduce the optimal value for this platform. */
98
+ int fBufferMapThreshold = -1;
99
+
100
+ /** Default minimum size to use when allocating buffers for uploading data to textures. The
101
+ larger the value the more uploads can be packed into one buffer, but at the cost of
102
+ more gpu memory allocated that may not be used. Uploads larger than the minimum will still
103
+ work by allocating a dedicated buffer. */
104
+ size_t fMinimumStagingBufferSize = 64 * 1024;
105
+
106
+ /**
107
+ * Executor to handle threaded work within Ganesh. If this is nullptr, then all work will be
108
+ * done serially on the main thread. To have worker threads assist with various tasks, set this
109
+ * to a valid SkExecutor instance. Currently, used for software path rendering, but may be used
110
+ * for other tasks.
111
+ */
112
+ SkExecutor* fExecutor = nullptr;
113
+
114
+ /** Construct mipmaps manually, via repeated downsampling draw-calls. This is used when
115
+ the driver's implementation (glGenerateMipmap) contains bugs. This requires mipmap
116
+ level control (ie desktop or ES3). */
117
+ bool fDoManualMipmapping = false;
118
+
119
+ /**
120
+ * Disables the use of coverage counting shortcuts to render paths. Coverage counting can cause
121
+ * artifacts along shared edges if care isn't taken to ensure both contours wind in the same
122
+ * direction.
123
+ */
124
+ // FIXME: Once this is removed from Chrome and Android, rename to fEnable"".
125
+ bool fDisableCoverageCountingPaths = true;
126
+
127
+ /**
128
+ * Disables distance field rendering for paths. Distance field computation can be expensive,
129
+ * and yields no benefit if a path is not rendered multiple times with different transforms.
130
+ */
131
+ bool fDisableDistanceFieldPaths = false;
132
+
133
+ /**
134
+ * If true this allows path mask textures to be cached. This is only really useful if paths
135
+ * are commonly rendered at the same scale and fractional translation.
136
+ */
137
+ bool fAllowPathMaskCaching = true;
138
+
139
+ /**
140
+ * If true, the GPU will not be used to perform YUV -> RGB conversion when generating
141
+ * textures from codec-backed images.
142
+ */
143
+ bool fDisableGpuYUVConversion = false;
144
+
145
+ /**
146
+ * The maximum size of cache textures used for Skia's Glyph cache.
147
+ */
148
+ size_t fGlyphCacheTextureMaximumBytes = 2048 * 1024 * 4;
149
+
150
+ /**
151
+ * Below this threshold size in device space distance field fonts won't be used. Distance field
152
+ * fonts don't support hinting which is more important at smaller sizes.
153
+ */
154
+ float fMinDistanceFieldFontSize = 18;
155
+
156
+ /**
157
+ * Above this threshold size in device space glyphs are drawn as individual paths.
158
+ */
159
+ #if defined(SK_BUILD_FOR_ANDROID)
160
+ float fGlyphsAsPathsFontSize = 384;
161
+ #elif defined(SK_BUILD_FOR_MAC)
162
+ float fGlyphsAsPathsFontSize = 256;
163
+ #else
164
+ float fGlyphsAsPathsFontSize = 324;
165
+ #endif
166
+
167
+ /**
168
+ * Can the glyph atlas use multiple textures. If allowed, the each texture's size is bound by
169
+ * fGlypheCacheTextureMaximumBytes.
170
+ */
171
+ Enable fAllowMultipleGlyphCacheTextures = Enable::kDefault;
172
+
173
+ /**
174
+ * Bugs on certain drivers cause stencil buffers to leak. This flag causes Skia to avoid
175
+ * allocating stencil buffers and use alternate rasterization paths, avoiding the leak.
176
+ */
177
+ bool fAvoidStencilBuffers = false;
178
+
179
+ /**
180
+ * Enables driver workaround to use draws instead of HW clears, e.g. glClear on the GL backend.
181
+ */
182
+ Enable fUseDrawInsteadOfClear = Enable::kDefault;
183
+
184
+ /**
185
+ * Allow Ganesh to more aggressively reorder operations to reduce the number of render passes.
186
+ * Offscreen draws will be done upfront instead of interrupting the main render pass when
187
+ * possible. May increase VRAM usage, but still observes the resource cache limit.
188
+ * Enabled by default.
189
+ */
190
+ Enable fReduceOpsTaskSplitting = Enable::kDefault;
191
+
192
+ /**
193
+ * Some ES3 contexts report the ES2 external image extension, but not the ES3 version.
194
+ * If support for external images is critical, enabling this option will cause Ganesh to limit
195
+ * shaders to the ES2 shading language in that situation.
196
+ */
197
+ bool fPreferExternalImagesOverES3 = false;
198
+
199
+ /**
200
+ * Disables correctness workarounds that are enabled for particular GPUs, OSes, or drivers.
201
+ * This does not affect code path choices that are made for perfomance reasons nor does it
202
+ * override other GrContextOption settings.
203
+ */
204
+ bool fDisableDriverCorrectnessWorkarounds = false;
205
+
206
+ /**
207
+ * Maximum number of GPU programs or pipelines to keep active in the runtime cache.
208
+ */
209
+ int fRuntimeProgramCacheSize = 256;
210
+
211
+ /**
212
+ * Cache in which to store compiled shader binaries between runs.
213
+ */
214
+ PersistentCache* fPersistentCache = nullptr;
215
+
216
+ /**
217
+ * This affects the usage of the PersistentCache. We can cache SkSL, backend source (GLSL), or
218
+ * backend binaries (GL program binaries). By default we cache binaries, but if the driver's
219
+ * binary loading/storing is believed to have bugs, this can be limited to caching GLSL.
220
+ * Caching GLSL strings still saves CPU work when a GL program is created.
221
+ */
222
+ ShaderCacheStrategy fShaderCacheStrategy = ShaderCacheStrategy::kBackendBinary;
223
+
224
+ /**
225
+ * If present, use this object to report shader compilation failures. If not, report failures
226
+ * via SkDebugf and assert.
227
+ */
228
+ ShaderErrorHandler* fShaderErrorHandler = nullptr;
229
+
230
+ /**
231
+ * Specifies the number of samples Ganesh should use when performing internal draws with MSAA
232
+ * (hardware capabilities permitting).
233
+ *
234
+ * If 0, Ganesh will disable internal code paths that use multisampling.
235
+ */
236
+ int fInternalMultisampleCount = 4;
237
+
238
+ /**
239
+ * In Skia's vulkan backend a single GrContext submit equates to the submission of a single
240
+ * primary command buffer to the VkQueue. This value specifies how many vulkan secondary command
241
+ * buffers we will cache for reuse on a given primary command buffer. A single submit may use
242
+ * more than this many secondary command buffers, but after the primary command buffer is
243
+ * finished on the GPU it will only hold on to this many secondary command buffers for reuse.
244
+ *
245
+ * A value of -1 means we will pick a limit value internally.
246
+ */
247
+ int fMaxCachedVulkanSecondaryCommandBuffers = -1;
248
+
249
+ /**
250
+ * If Skia is creating a default VMA allocator for the Vulkan backend this value will be used
251
+ * for the preferredLargeHeapBlockSize. If the value is not set, then Skia will use an
252
+ * inernally defined default size.
253
+ *
254
+ * However, it is highly discouraged to have Skia make a default allocator (and support for
255
+ * doing so will be removed soon, b/321962001). Instead clients should create their own
256
+ * allocator to pass into Skia where they can fine tune this value themeselves.
257
+ */
258
+ std::optional<uint64_t> fVulkanVMALargeHeapBlockSize;
259
+
260
+ /**
261
+ * If true, the caps will never support mipmaps.
262
+ */
263
+ bool fSuppressMipmapSupport = false;
264
+
265
+ /**
266
+ * If true, the TessellationPathRenderer will not be used for path rendering.
267
+ * If false, will fallback to any driver workarounds, if set.
268
+ */
269
+ bool fDisableTessellationPathRenderer = false;
270
+
271
+ /**
272
+ * If true, and if supported, enables hardware tessellation in the caps.
273
+ * DEPRECATED: This value is ignored; experimental hardware tessellation is always disabled.
274
+ */
275
+ bool fEnableExperimentalHardwareTessellation = false;
276
+
277
+ /**
278
+ * If true, then add 1 pixel padding to all glyph masks in the atlas to support bi-lerp
279
+ * rendering of all glyphs. This must be set to true to use Slugs.
280
+ */
281
+ bool fSupportBilerpFromGlyphAtlas = false;
282
+
283
+ /**
284
+ * Uses a reduced variety of shaders. May perform less optimally in steady state but can reduce
285
+ * jank due to shader compilations.
286
+ */
287
+ bool fReducedShaderVariations = false;
288
+
289
+ /**
290
+ * If true, then allow to enable MSAA on new Intel GPUs.
291
+ */
292
+ bool fAllowMSAAOnNewIntel = false;
293
+
294
+ /**
295
+ * Currently on ARM Android we disable the use of GL TexStorage because of memory regressions.
296
+ * However, some clients may still want to use TexStorage. For example, TexStorage support is
297
+ * required for creating protected textures.
298
+ *
299
+ * This flag has no impact on non GL backends.
300
+ */
301
+ bool fAlwaysUseTexStorageWhenAvailable = false;
302
+
303
+ /**
304
+ * Optional callback that can be passed into the GrDirectContext which will be called when the
305
+ * GrDirectContext is about to be destroyed. When this call is made, it will be safe for the
306
+ * client to delete the GPU backend context that is backing the GrDirectContext. The
307
+ * GrDirectContextDestroyedContext will be passed back to the client in the callback.
308
+ */
309
+ GrDirectContextDestroyedContext fContextDeleteContext = nullptr;
310
+ GrDirectContextDestroyedProc fContextDeleteProc = nullptr;
311
+
312
+ #if defined(GPU_TEST_UTILS)
313
+ /**
314
+ * Private options that are only meant for testing within Skia's tools.
315
+ */
316
+
317
+ /**
318
+ * Testing-only mode to exercise allocation failures in the flush-time callback objects.
319
+ * For now it only simulates allocation failure during the preFlush callback.
320
+ */
321
+ bool fFailFlushTimeCallbacks = false;
322
+
323
+ /**
324
+ * Prevents use of dual source blending, to test that all xfer modes work correctly without it.
325
+ */
326
+ bool fSuppressDualSourceBlending = false;
327
+
328
+ /**
329
+ * Prevents the use of non-coefficient-based blend equations, for testing dst reads, barriers,
330
+ * and in-shader blending.
331
+ */
332
+ bool fSuppressAdvancedBlendEquations = false;
333
+
334
+ /**
335
+ * Prevents the use of framebuffer fetches, for testing dst reads and texture barriers.
336
+ */
337
+ bool fSuppressFramebufferFetch = false;
338
+
339
+ /**
340
+ * If true, then all paths are processed as if "setIsVolatile" had been called.
341
+ */
342
+ bool fAllPathsVolatile = false;
343
+
344
+ /**
345
+ * Render everything in wireframe
346
+ */
347
+ bool fWireframeMode = false;
348
+
349
+ /**
350
+ * Enforces clearing of all textures when they're created.
351
+ */
352
+ bool fClearAllTextures = false;
353
+
354
+ /**
355
+ * Randomly generate a (false) GL_OUT_OF_MEMORY error
356
+ */
357
+ bool fRandomGLOOM = false;
358
+
359
+ /**
360
+ * Force off support for write/transfer pixels row bytes in caps.
361
+ */
362
+ bool fDisallowWriteAndTransferPixelRowBytes = false;
363
+
364
+ /**
365
+ * Include or exclude specific GPU path renderers.
366
+ */
367
+ GpuPathRenderers fGpuPathRenderers = GpuPathRenderers::kDefault;
368
+
369
+ /**
370
+ * Specify the GPU resource cache limit. Equivalent to calling `setResourceCacheLimit` on the
371
+ * context at construction time.
372
+ *
373
+ * A value of -1 means use the default limit value.
374
+ */
375
+ int fResourceCacheLimitOverride = -1;
376
+
377
+ /**
378
+ * Maximum width and height of internal texture atlases.
379
+ */
380
+ int fMaxTextureAtlasSize = 2048;
381
+ #endif
382
+
383
+ GrDriverBugWorkarounds fDriverBugWorkarounds;
384
+ };
385
+
386
+ #endif
@@ -0,0 +1,175 @@
1
+ /*
2
+ * Copyright 2019 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 GrContextThreadSafeProxy_DEFINED
9
+ #define GrContextThreadSafeProxy_DEFINED
10
+
11
+ #include "include/core/SkRefCnt.h"
12
+ #include "include/core/SkTypes.h"
13
+ #include "include/gpu/GpuTypes.h"
14
+ #include "include/gpu/ganesh/GrContextOptions.h"
15
+ #include "include/gpu/ganesh/GrTypes.h"
16
+
17
+ #include <atomic>
18
+ #include <cstddef>
19
+ #include <cstdint>
20
+ #include <memory>
21
+
22
+ class GrBackendFormat;
23
+ class GrCaps;
24
+ class GrContextThreadSafeProxyPriv;
25
+ class GrSurfaceCharacterization;
26
+ class GrThreadSafeCache;
27
+ class GrThreadSafePipelineBuilder;
28
+ class SkSurfaceProps;
29
+ enum SkColorType : int;
30
+ enum class SkTextureCompressionType;
31
+ struct SkImageInfo;
32
+
33
+ namespace sktext::gpu { class TextBlobRedrawCoordinator; }
34
+
35
+ /**
36
+ * Can be used to perform actions related to the generating GrContext in a thread safe manner. The
37
+ * proxy does not access the 3D API (e.g. OpenGL) that backs the generating GrContext.
38
+ */
39
+ class SK_API GrContextThreadSafeProxy : public SkNVRefCnt<GrContextThreadSafeProxy> {
40
+ public:
41
+ virtual ~GrContextThreadSafeProxy();
42
+
43
+ /**
44
+ * Create a surface characterization for a DDL that will be replayed into the GrContext
45
+ * that created this proxy. On failure the resulting characterization will be invalid (i.e.,
46
+ * "!c.isValid()").
47
+ *
48
+ * @param cacheMaxResourceBytes The max resource bytes limit that will be in effect
49
+ * when the DDL created with this characterization is
50
+ * replayed.
51
+ * Note: the contract here is that the DDL will be
52
+ * created as if it had a full 'cacheMaxResourceBytes'
53
+ * to use. If replayed into a GrContext that already has
54
+ * locked GPU memory, the replay can exceed the budget.
55
+ * To rephrase, all resource allocation decisions are
56
+ * made at record time and at playback time the budget
57
+ * limits will be ignored.
58
+ * @param ii The image info specifying properties of the SkSurface
59
+ * that the DDL created with this characterization will
60
+ * be replayed into.
61
+ * Note: Ganesh doesn't make use of the SkImageInfo's
62
+ * alphaType
63
+ * @param backendFormat Information about the format of the GPU surface that
64
+ * will back the SkSurface upon replay
65
+ * @param sampleCount The sample count of the SkSurface that the DDL
66
+ * created with this characterization will be replayed
67
+ * into
68
+ * @param origin The origin of the SkSurface that the DDL created with
69
+ * this characterization will be replayed into
70
+ * @param surfaceProps The surface properties of the SkSurface that the DDL
71
+ * created with this characterization will be replayed
72
+ * into
73
+ * @param isMipmapped Will the surface the DDL will be replayed into have
74
+ * space allocated for mipmaps?
75
+ * @param willUseGLFBO0 Will the surface the DDL will be replayed into be
76
+ * backed by GL FBO 0. This flag is only valid if using
77
+ * an GL backend.
78
+ * @param isTextureable Will the surface be able to act as a texture?
79
+ * @param isProtected Will the (Vulkan) surface be DRM protected?
80
+ * @param vkRTSupportsInputAttachment Can the vulkan surface be used as in input
81
+ attachment?
82
+ * @param forVulkanSecondaryCommandBuffer Will the surface be wrapping a vulkan secondary
83
+ * command buffer via a GrVkSecondaryCBDrawContext? If
84
+ * this is true then the following is required:
85
+ * isTexureable = false
86
+ * isMipmapped = false
87
+ * willUseGLFBO0 = false
88
+ * vkRTSupportsInputAttachment = false
89
+ */
90
+ GrSurfaceCharacterization createCharacterization(
91
+ size_t cacheMaxResourceBytes,
92
+ const SkImageInfo& ii,
93
+ const GrBackendFormat& backendFormat,
94
+ int sampleCount,
95
+ GrSurfaceOrigin origin,
96
+ const SkSurfaceProps& surfaceProps,
97
+ skgpu::Mipmapped isMipmapped,
98
+ bool willUseGLFBO0 = false,
99
+ bool isTextureable = true,
100
+ skgpu::Protected isProtected = GrProtected::kNo,
101
+ bool vkRTSupportsInputAttachment = false,
102
+ bool forVulkanSecondaryCommandBuffer = false);
103
+
104
+ /*
105
+ * Retrieve the default GrBackendFormat for a given SkColorType and renderability.
106
+ * It is guaranteed that this backend format will be the one used by the following
107
+ * SkColorType and GrSurfaceCharacterization-based createBackendTexture methods.
108
+ *
109
+ * The caller should check that the returned format is valid.
110
+ */
111
+ GrBackendFormat defaultBackendFormat(SkColorType ct, GrRenderable renderable) const;
112
+
113
+ /**
114
+ * Retrieve the GrBackendFormat for a given SkTextureCompressionType. This is
115
+ * guaranteed to match the backend format used by the following
116
+ * createCompressedBackendTexture methods that take a CompressionType.
117
+ *
118
+ * The caller should check that the returned format is valid.
119
+ */
120
+ GrBackendFormat compressedBackendFormat(SkTextureCompressionType c) const;
121
+
122
+ /**
123
+ * Gets the maximum supported sample count for a color type. 1 is returned if only non-MSAA
124
+ * rendering is supported for the color type. 0 is returned if rendering to this color type
125
+ * is not supported at all.
126
+ */
127
+ int maxSurfaceSampleCountForColorType(SkColorType colorType) const;
128
+
129
+ bool isValid() const { return nullptr != fCaps; }
130
+
131
+ bool operator==(const GrContextThreadSafeProxy& that) const {
132
+ // Each GrContext should only ever have a single thread-safe proxy.
133
+ SkASSERT((this == &that) == (this->fContextID == that.fContextID));
134
+ return this == &that;
135
+ }
136
+
137
+ bool operator!=(const GrContextThreadSafeProxy& that) const { return !(*this == that); }
138
+
139
+ // Provides access to functions that aren't part of the public API.
140
+ GrContextThreadSafeProxyPriv priv();
141
+ const GrContextThreadSafeProxyPriv priv() const; // NOLINT(readability-const-return-type)
142
+
143
+ protected:
144
+ // DDL TODO: need to add unit tests for backend & maybe options
145
+ GrContextThreadSafeProxy(GrBackendApi, const GrContextOptions&);
146
+
147
+ private:
148
+ friend class GrContextThreadSafeProxyPriv; // for ctor and hidden methods
149
+
150
+ void abandonContext();
151
+ bool abandoned() const;
152
+
153
+ // TODO: This should be part of the constructor but right now we have a chicken-and-egg problem
154
+ // with GrContext where we get the caps by creating a GPU which requires a context (see the
155
+ // `init` method on GrContext_Base).
156
+ void init(sk_sp<const GrCaps>, sk_sp<GrThreadSafePipelineBuilder>);
157
+
158
+ virtual bool isValidCharacterizationForVulkan(sk_sp<const GrCaps>,
159
+ bool isTextureable,
160
+ skgpu::Mipmapped isMipmapped,
161
+ skgpu::Protected isProtected,
162
+ bool vkRTSupportsInputAttachment,
163
+ bool forVulkanSecondaryCommandBuffer);
164
+
165
+ const GrBackendApi fBackend;
166
+ const GrContextOptions fOptions;
167
+ const uint32_t fContextID;
168
+ sk_sp<const GrCaps> fCaps;
169
+ std::unique_ptr<sktext::gpu::TextBlobRedrawCoordinator> fTextBlobRedrawCoordinator;
170
+ std::unique_ptr<GrThreadSafeCache> fThreadSafeCache;
171
+ sk_sp<GrThreadSafePipelineBuilder> fPipelineBuilder;
172
+ std::atomic<bool> fAbandoned{false};
173
+ };
174
+
175
+ #endif