@shopify/react-native-skia 0.1.192 → 0.1.193

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 (301) hide show
  1. package/android/CMakeLists.txt +1 -1
  2. package/android/build.gradle +1 -0
  3. package/android/cpp/jni/JniPlatformContext.cpp +1 -1
  4. package/cpp/api/JsiSkImage.h +25 -4
  5. package/cpp/api/JsiSkImageFactory.h +2 -2
  6. package/cpp/api/JsiSkPath.h +8 -6
  7. package/cpp/rnskia/dom/base/Declaration.h +5 -7
  8. package/cpp/rnskia/dom/nodes/JsiBlurMaskNode.h +1 -0
  9. package/cpp/rnskia/dom/nodes/JsiPathNode.h +2 -2
  10. package/cpp/rnskia/dom/props/BoxShadowProps.h +2 -0
  11. package/cpp/skia/include/android/SkAndroidFrameworkUtils.h +2 -8
  12. package/cpp/skia/include/android/SkImageAndroid.h +101 -0
  13. package/cpp/skia/include/codec/SkAndroidCodec.h +26 -8
  14. package/cpp/skia/include/codec/SkCodec.h +31 -17
  15. package/cpp/skia/include/codec/SkEncodedImageFormat.h +36 -0
  16. package/cpp/skia/include/codec/SkPixmapUtils.h +31 -0
  17. package/cpp/skia/include/config/SkUserConfig.h +61 -29
  18. package/cpp/skia/include/core/SkBitmap.h +25 -25
  19. package/cpp/skia/include/core/SkBlurTypes.h +0 -2
  20. package/cpp/skia/include/core/SkCanvas.h +32 -15
  21. package/cpp/skia/include/core/SkCapabilities.h +2 -2
  22. package/cpp/skia/include/core/SkColor.h +2 -0
  23. package/cpp/skia/include/core/SkColorPriv.h +19 -4
  24. package/cpp/skia/include/core/SkColorSpace.h +14 -17
  25. package/cpp/skia/include/core/SkColorType.h +1 -0
  26. package/cpp/skia/include/core/SkContourMeasure.h +1 -1
  27. package/cpp/skia/include/core/SkCoverageMode.h +0 -2
  28. package/cpp/skia/include/core/SkCubicMap.h +2 -0
  29. package/cpp/skia/include/core/SkData.h +5 -2
  30. package/cpp/skia/include/core/SkDataTable.h +6 -2
  31. package/cpp/skia/include/core/SkDeferredDisplayList.h +11 -10
  32. package/cpp/skia/include/core/SkDeferredDisplayListRecorder.h +9 -8
  33. package/cpp/skia/include/core/SkDrawable.h +10 -2
  34. package/cpp/skia/include/core/SkEncodedImageFormat.h +3 -30
  35. package/cpp/skia/include/core/SkFlattenable.h +4 -2
  36. package/cpp/skia/include/core/SkFont.h +1 -0
  37. package/cpp/skia/include/core/SkFontMetrics.h +1 -0
  38. package/cpp/skia/include/core/SkFontMgr.h +20 -29
  39. package/cpp/skia/include/core/SkFontStyle.h +4 -1
  40. package/cpp/skia/include/core/SkGraphics.h +21 -18
  41. package/cpp/skia/include/core/SkICC.h +3 -13
  42. package/cpp/skia/include/core/SkImage.h +395 -717
  43. package/cpp/skia/include/core/SkImageGenerator.h +19 -74
  44. package/cpp/skia/include/core/SkImageInfo.h +7 -5
  45. package/cpp/skia/include/core/SkM44.h +11 -0
  46. package/cpp/skia/include/core/SkMaskFilter.h +6 -3
  47. package/cpp/skia/include/core/SkMatrix.h +14 -4
  48. package/cpp/skia/include/core/SkMesh.h +52 -18
  49. package/cpp/skia/include/core/SkMilestone.h +1 -1
  50. package/cpp/skia/include/core/SkPaint.h +11 -34
  51. package/cpp/skia/include/core/SkPath.h +23 -4
  52. package/cpp/skia/include/core/SkPathBuilder.h +13 -5
  53. package/cpp/skia/include/core/SkPathMeasure.h +1 -1
  54. package/cpp/skia/include/core/SkPathTypes.h +0 -2
  55. package/cpp/skia/include/core/SkPathUtils.h +42 -0
  56. package/cpp/skia/include/core/SkPicture.h +3 -2
  57. package/cpp/skia/include/core/SkPictureRecorder.h +2 -0
  58. package/cpp/skia/include/core/SkPixelRef.h +4 -8
  59. package/cpp/skia/include/core/SkPixmap.h +12 -20
  60. package/cpp/skia/include/core/SkPoint.h +4 -2
  61. package/cpp/skia/include/core/SkPromiseImageTexture.h +2 -2
  62. package/cpp/skia/include/core/SkRRect.h +5 -1
  63. package/cpp/skia/include/core/SkRect.h +6 -3
  64. package/cpp/skia/include/core/SkRefCnt.h +9 -14
  65. package/cpp/skia/include/core/SkRegion.h +1 -1
  66. package/cpp/skia/include/core/SkScalar.h +2 -4
  67. package/cpp/skia/include/core/SkSerialProcs.h +18 -10
  68. package/cpp/skia/include/core/SkShader.h +1 -64
  69. package/cpp/skia/include/core/SkSize.h +2 -0
  70. package/cpp/skia/include/core/SkSpan.h +4 -112
  71. package/cpp/skia/include/core/SkStream.h +11 -12
  72. package/cpp/skia/include/core/SkString.h +9 -25
  73. package/cpp/skia/include/core/SkStrokeRec.h +1 -1
  74. package/cpp/skia/include/core/SkSurface.h +83 -61
  75. package/cpp/skia/include/core/SkSurfaceCharacterization.h +3 -3
  76. package/cpp/skia/include/core/SkSurfaceProps.h +9 -1
  77. package/cpp/skia/include/core/SkTextBlob.h +2 -2
  78. package/cpp/skia/include/core/SkTextureCompressionType.h +30 -0
  79. package/cpp/skia/include/core/SkTime.h +1 -1
  80. package/cpp/skia/include/core/SkTypeface.h +9 -2
  81. package/cpp/skia/include/core/SkTypes.h +37 -466
  82. package/cpp/skia/include/core/SkVertices.h +2 -0
  83. package/cpp/skia/include/core/SkYUVAInfo.h +4 -0
  84. package/cpp/skia/include/core/SkYUVAPixmaps.h +7 -1
  85. package/cpp/skia/include/docs/SkPDFDocument.h +12 -1
  86. package/cpp/skia/include/effects/SkColorMatrix.h +2 -1
  87. package/cpp/skia/include/effects/SkGradientShader.h +65 -14
  88. package/cpp/skia/include/effects/SkImageFilters.h +0 -11
  89. package/cpp/skia/include/effects/SkRuntimeEffect.h +41 -11
  90. package/cpp/skia/include/encode/SkEncoder.h +7 -3
  91. package/cpp/skia/include/encode/SkICC.h +36 -0
  92. package/cpp/skia/include/encode/SkJpegEncoder.h +102 -71
  93. package/cpp/skia/include/encode/SkPngEncoder.h +89 -71
  94. package/cpp/skia/include/encode/SkWebpEncoder.h +65 -38
  95. package/cpp/skia/include/gpu/GpuTypes.h +23 -1
  96. package/cpp/skia/include/gpu/GrBackendSurface.h +9 -7
  97. package/cpp/skia/include/gpu/GrContextOptions.h +28 -9
  98. package/cpp/skia/include/gpu/GrContextThreadSafeProxy.h +6 -4
  99. package/cpp/skia/include/gpu/GrDirectContext.h +84 -63
  100. package/cpp/skia/include/gpu/GrDriverBugWorkarounds.h +2 -1
  101. package/cpp/skia/include/gpu/GrRecordingContext.h +9 -5
  102. package/cpp/skia/include/gpu/GrTypes.h +18 -18
  103. package/cpp/skia/include/gpu/d3d/GrD3DTypes.h +4 -4
  104. package/cpp/skia/include/gpu/dawn/GrDawnTypes.h +3 -3
  105. package/cpp/skia/include/gpu/ganesh/GrTextureGenerator.h +77 -0
  106. package/cpp/skia/include/gpu/ganesh/SkImageGanesh.h +385 -0
  107. package/cpp/skia/include/gpu/gl/GrGLExtensions.h +3 -3
  108. package/cpp/skia/include/gpu/gl/GrGLFunctions.h +1 -1
  109. package/cpp/skia/include/gpu/gl/GrGLInterface.h +0 -3
  110. package/cpp/skia/include/gpu/gl/GrGLTypes.h +2 -1
  111. package/cpp/skia/include/gpu/graphite/BackendTexture.h +72 -3
  112. package/cpp/skia/include/gpu/graphite/Context.h +85 -32
  113. package/cpp/skia/include/gpu/graphite/ContextOptions.h +15 -11
  114. package/cpp/skia/include/gpu/graphite/GraphiteTypes.h +55 -5
  115. package/cpp/skia/include/gpu/graphite/ImageProvider.h +6 -4
  116. package/cpp/skia/include/gpu/graphite/Recorder.h +41 -11
  117. package/cpp/skia/include/gpu/graphite/Recording.h +50 -3
  118. package/cpp/skia/include/gpu/graphite/TextureInfo.h +47 -8
  119. package/cpp/skia/include/gpu/graphite/YUVABackendTextures.h +139 -0
  120. package/cpp/skia/include/gpu/graphite/dawn/DawnTypes.h +40 -0
  121. package/cpp/skia/include/gpu/graphite/dawn/DawnUtils.h +28 -0
  122. package/cpp/skia/include/gpu/graphite/mtl/MtlBackendContext.h +1 -1
  123. package/cpp/skia/include/gpu/graphite/mtl/{MtlTypes.h → MtlGraphiteTypes.h} +7 -6
  124. package/cpp/skia/include/gpu/graphite/mtl/MtlGraphiteUtils.h +27 -0
  125. package/cpp/skia/include/gpu/graphite/vk/VulkanGraphiteTypes.h +4 -9
  126. package/cpp/skia/include/gpu/graphite/vk/VulkanGraphiteUtils.h +28 -0
  127. package/cpp/skia/include/gpu/mock/GrMockTypes.h +17 -13
  128. package/cpp/skia/include/gpu/mtl/GrMtlTypes.h +2 -2
  129. package/cpp/skia/include/gpu/vk/GrVkBackendContext.h +1 -1
  130. package/cpp/skia/include/gpu/vk/GrVkTypes.h +3 -3
  131. package/cpp/skia/include/gpu/vk/VulkanExtensions.h +3 -3
  132. package/cpp/skia/include/gpu/vk/VulkanMemoryAllocator.h +5 -7
  133. package/cpp/skia/include/pathops/SkPathOps.h +3 -3
  134. package/cpp/skia/include/ports/SkFontMgr_data.h +22 -0
  135. package/cpp/skia/include/ports/SkFontMgr_indirect.h +14 -14
  136. package/cpp/skia/include/ports/SkRemotableFontMgr.h +2 -2
  137. package/cpp/skia/include/ports/SkTypeface_win.h +2 -1
  138. package/cpp/skia/include/private/SkChecksum.h +32 -7
  139. package/cpp/skia/include/private/SkColorData.h +1 -26
  140. package/cpp/skia/include/private/SkGainmapInfo.h +97 -0
  141. package/cpp/skia/include/private/SkGainmapShader.h +53 -0
  142. package/cpp/skia/include/private/SkIDChangeListener.h +4 -3
  143. package/cpp/skia/include/private/SkJpegGainmapEncoder.h +71 -0
  144. package/cpp/skia/include/private/SkJpegMetadataDecoder.h +61 -0
  145. package/cpp/skia/include/private/SkOpts_spi.h +3 -1
  146. package/cpp/skia/include/private/SkPathRef.h +64 -47
  147. package/cpp/skia/include/private/SkSLDefines.h +5 -5
  148. package/cpp/skia/include/private/SkSLSampleUsage.h +0 -4
  149. package/cpp/skia/include/private/SkSpinlock.h +1 -1
  150. package/cpp/skia/include/private/SkWeakRefCnt.h +3 -0
  151. package/cpp/skia/include/private/{SingleOwner.h → base/SingleOwner.h} +8 -5
  152. package/cpp/skia/include/private/base/SkAPI.h +52 -0
  153. package/cpp/skia/include/private/base/SkAlign.h +39 -0
  154. package/cpp/skia/include/private/base/SkAlignedStorage.h +32 -0
  155. package/cpp/skia/include/private/base/SkAssert.h +92 -0
  156. package/cpp/skia/include/private/base/SkAttributes.h +102 -0
  157. package/cpp/skia/include/private/base/SkCPUTypes.h +25 -0
  158. package/cpp/skia/include/private/base/SkContainers.h +46 -0
  159. package/cpp/skia/include/private/base/SkDebug.h +27 -0
  160. package/cpp/skia/include/private/{SkDeque.h → base/SkDeque.h} +3 -1
  161. package/cpp/skia/include/private/base/SkFeatures.h +151 -0
  162. package/cpp/skia/include/private/{SkFixed.h → base/SkFixed.h} +9 -7
  163. package/cpp/skia/include/private/{SkFloatBits.h → base/SkFloatBits.h} +2 -3
  164. package/cpp/skia/include/private/{SkFloatingPoint.h → base/SkFloatingPoint.h} +18 -9
  165. package/cpp/skia/include/private/base/SkLoadUserConfig.h +63 -0
  166. package/cpp/skia/include/private/{SkMacros.h → base/SkMacros.h} +17 -2
  167. package/cpp/skia/include/private/{SkMalloc.h → base/SkMalloc.h} +4 -7
  168. package/cpp/skia/include/{core → private/base}/SkMath.h +25 -2
  169. package/cpp/skia/include/private/{SkMutex.h → base/SkMutex.h} +5 -5
  170. package/cpp/skia/include/private/{SkNoncopyable.h → base/SkNoncopyable.h} +2 -2
  171. package/cpp/skia/include/private/{SkOnce.h → base/SkOnce.h} +3 -1
  172. package/cpp/skia/include/private/base/SkPathEnums.h +25 -0
  173. package/cpp/skia/include/private/{SkSafe32.h → base/SkSafe32.h} +16 -1
  174. package/cpp/skia/include/private/{SkSemaphore.h → base/SkSemaphore.h} +4 -3
  175. package/cpp/skia/include/private/base/SkSpan_impl.h +129 -0
  176. package/cpp/skia/include/private/base/SkTArray.h +694 -0
  177. package/cpp/skia/include/private/{SkTDArray.h → base/SkTDArray.h} +17 -54
  178. package/cpp/skia/include/private/{SkTFitsIn.h → base/SkTFitsIn.h} +14 -8
  179. package/cpp/skia/include/private/{SkTLogic.h → base/SkTLogic.h} +1 -1
  180. package/cpp/skia/include/private/{SkTemplates.h → base/SkTemplates.h} +63 -88
  181. package/cpp/skia/include/private/{SkThreadID.h → base/SkThreadID.h} +5 -2
  182. package/cpp/skia/include/private/{SkTo.h → base/SkTo.h} +13 -2
  183. package/cpp/skia/include/private/base/SkTypeTraits.h +33 -0
  184. package/cpp/skia/include/private/chromium/GrVkSecondaryCBDrawContext.h +130 -0
  185. package/cpp/skia/include/private/chromium/SkChromeRemoteGlyphCache.h +5 -9
  186. package/cpp/skia/include/private/chromium/SkDiscardableMemory.h +70 -0
  187. package/cpp/skia/include/private/chromium/Slug.h +0 -9
  188. package/cpp/skia/include/private/gpu/ganesh/GrContext_Base.h +2 -1
  189. package/cpp/skia/include/private/gpu/ganesh/GrD3DTypesMinimal.h +1 -1
  190. package/cpp/skia/include/private/gpu/ganesh/GrDawnTypesPriv.h +1 -1
  191. package/cpp/skia/include/private/gpu/ganesh/GrGLTypesPriv.h +1 -1
  192. package/cpp/skia/include/private/gpu/ganesh/GrImageContext.h +1 -1
  193. package/cpp/skia/include/private/gpu/ganesh/GrMockTypesPriv.h +3 -2
  194. package/cpp/skia/include/private/gpu/ganesh/GrMtlTypesPriv.h +1 -1
  195. package/cpp/skia/include/private/gpu/ganesh/GrTypesPriv.h +17 -23
  196. package/cpp/skia/include/private/gpu/ganesh/GrVkTypesPriv.h +2 -2
  197. package/cpp/skia/include/private/gpu/graphite/DawnTypesPriv.h +38 -0
  198. package/cpp/skia/include/private/gpu/graphite/{MtlTypesPriv.h → MtlGraphiteTypesPriv.h} +5 -5
  199. package/cpp/skia/include/private/gpu/graphite/VulkanGraphiteTypesPriv.h +1 -9
  200. package/cpp/skia/include/private/gpu/vk/SkiaVulkan.h +4 -0
  201. package/cpp/skia/include/utils/SkCamera.h +1 -1
  202. package/cpp/skia/include/utils/SkCustomTypeface.h +7 -1
  203. package/cpp/skia/include/utils/SkNWayCanvas.h +6 -6
  204. package/cpp/skia/include/utils/SkOrderedFontMgr.h +7 -6
  205. package/cpp/skia/include/utils/SkPaintFilterCanvas.h +2 -2
  206. package/cpp/skia/include/utils/SkParsePath.h +1 -1
  207. package/cpp/skia/modules/skcms/skcms.h +14 -0
  208. package/cpp/skia/modules/skcms/src/Transform_inl.h +19 -0
  209. package/cpp/skia/modules/skparagraph/include/FontCollection.h +2 -2
  210. package/cpp/skia/modules/skparagraph/include/Paragraph.h +72 -2
  211. package/cpp/skia/modules/skparagraph/include/ParagraphCache.h +1 -11
  212. package/cpp/skia/modules/skparagraph/include/ParagraphPainter.h +63 -0
  213. package/cpp/skia/modules/skparagraph/include/TextStyle.h +27 -4
  214. package/cpp/skia/modules/skparagraph/include/TypefaceFontProvider.h +13 -13
  215. package/cpp/skia/modules/skresources/include/SkResources.h +18 -4
  216. package/cpp/skia/modules/svg/include/SkSVGAttribute.h +1 -1
  217. package/cpp/skia/modules/svg/include/SkSVGAttributeParser.h +2 -2
  218. package/cpp/skia/modules/svg/include/SkSVGContainer.h +2 -2
  219. package/cpp/skia/modules/svg/include/SkSVGDOM.h +1 -1
  220. package/cpp/skia/modules/svg/include/SkSVGFilterContext.h +2 -2
  221. package/cpp/skia/modules/svg/include/SkSVGGradient.h +2 -2
  222. package/cpp/skia/modules/svg/include/SkSVGIDMapper.h +2 -2
  223. package/cpp/skia/modules/svg/include/SkSVGRenderContext.h +3 -3
  224. package/cpp/skia/modules/svg/include/SkSVGSVG.h +1 -1
  225. package/cpp/skia/modules/svg/include/SkSVGTypes.h +22 -21
  226. package/cpp/skia/modules/svg/include/SkSVGValue.h +1 -1
  227. package/cpp/skia/{include/private → src/core}/SkTHash.h +41 -37
  228. package/ios/RNSkia-iOS/ViewScreenshotService.mm +1 -1
  229. package/libs/android/arm64-v8a/libskia.a +0 -0
  230. package/libs/android/arm64-v8a/libskottie.a +0 -0
  231. package/libs/android/arm64-v8a/libsksg.a +0 -0
  232. package/libs/android/arm64-v8a/libskshaper.a +0 -0
  233. package/libs/android/arm64-v8a/libsvg.a +0 -0
  234. package/libs/android/armeabi-v7a/libskia.a +0 -0
  235. package/libs/android/armeabi-v7a/libskottie.a +0 -0
  236. package/libs/android/armeabi-v7a/libsksg.a +0 -0
  237. package/libs/android/armeabi-v7a/libskshaper.a +0 -0
  238. package/libs/android/armeabi-v7a/libsvg.a +0 -0
  239. package/libs/android/x86/libskia.a +0 -0
  240. package/libs/android/x86/libskottie.a +0 -0
  241. package/libs/android/x86/libsksg.a +0 -0
  242. package/libs/android/x86/libskshaper.a +0 -0
  243. package/libs/android/x86/libsvg.a +0 -0
  244. package/libs/android/x86_64/libskia.a +0 -0
  245. package/libs/android/x86_64/libskottie.a +0 -0
  246. package/libs/android/x86_64/libsksg.a +0 -0
  247. package/libs/android/x86_64/libskshaper.a +0 -0
  248. package/libs/android/x86_64/libsvg.a +0 -0
  249. package/libs/ios/libskia.xcframework/Info.plist +5 -5
  250. package/libs/ios/libskia.xcframework/ios-arm64_arm64e/libskia.a +0 -0
  251. package/libs/ios/libskia.xcframework/ios-arm64_arm64e_x86_64-simulator/libskia.a +0 -0
  252. package/libs/ios/libskottie.xcframework/ios-arm64_arm64e/libskottie.a +0 -0
  253. package/libs/ios/libskottie.xcframework/ios-arm64_arm64e_x86_64-simulator/libskottie.a +0 -0
  254. package/libs/ios/libsksg.xcframework/ios-arm64_arm64e/libsksg.a +0 -0
  255. package/libs/ios/libsksg.xcframework/ios-arm64_arm64e_x86_64-simulator/libsksg.a +0 -0
  256. package/libs/ios/libskshaper.xcframework/ios-arm64_arm64e/libskshaper.a +0 -0
  257. package/libs/ios/libskshaper.xcframework/ios-arm64_arm64e_x86_64-simulator/libskshaper.a +0 -0
  258. package/libs/ios/libsvg.xcframework/ios-arm64_arm64e/libsvg.a +0 -0
  259. package/libs/ios/libsvg.xcframework/ios-arm64_arm64e_x86_64-simulator/libsvg.a +0 -0
  260. package/package.json +1 -1
  261. package/react-native-skia.podspec +1 -1
  262. package/scripts/install-npm.js +11 -1
  263. package/cpp/skia/include/core/SkImageEncoder.h +0 -71
  264. package/cpp/skia/include/gpu/GrConfig.h +0 -53
  265. package/cpp/skia/include/gpu/graphite/CombinationBuilder.h +0 -195
  266. package/cpp/skia/include/private/SkHalf.h +0 -38
  267. package/cpp/skia/include/private/SkImageInfoPriv.h +0 -199
  268. package/cpp/skia/include/private/SkSLIRNode.h +0 -64
  269. package/cpp/skia/include/private/SkSLLayout.h +0 -144
  270. package/cpp/skia/include/private/SkSLModifiers.h +0 -178
  271. package/cpp/skia/include/private/SkSLProgramElement.h +0 -77
  272. package/cpp/skia/include/private/SkSLProgramKind.h +0 -35
  273. package/cpp/skia/include/private/SkSLStatement.h +0 -86
  274. package/cpp/skia/include/private/SkSLString.h +0 -41
  275. package/cpp/skia/include/private/SkSLSymbol.h +0 -94
  276. package/cpp/skia/include/private/SkSafe_math.h +0 -52
  277. package/cpp/skia/include/private/SkStringView.h +0 -51
  278. package/cpp/skia/include/private/SkTArray.h +0 -655
  279. package/cpp/skia/include/private/SkUniquePaintParamsID.h +0 -35
  280. package/cpp/skia/include/private/SkVx.h +0 -1026
  281. package/cpp/skia/include/sksl/DSL.h +0 -37
  282. package/cpp/skia/include/sksl/DSLBlock.h +0 -58
  283. package/cpp/skia/include/sksl/DSLCase.h +0 -62
  284. package/cpp/skia/include/sksl/DSLCore.h +0 -492
  285. package/cpp/skia/include/sksl/DSLExpression.h +0 -241
  286. package/cpp/skia/include/sksl/DSLFunction.h +0 -113
  287. package/cpp/skia/include/sksl/DSLLayout.h +0 -92
  288. package/cpp/skia/include/sksl/DSLModifiers.h +0 -69
  289. package/cpp/skia/include/sksl/DSLStatement.h +0 -82
  290. package/cpp/skia/include/sksl/DSLSymbols.h +0 -61
  291. package/cpp/skia/include/sksl/DSLType.h +0 -271
  292. package/cpp/skia/include/sksl/DSLVar.h +0 -231
  293. package/cpp/skia/include/sksl/SkSLErrorReporter.h +0 -65
  294. package/cpp/skia/include/sksl/SkSLOperator.h +0 -154
  295. package/cpp/skia/include/sksl/SkSLPosition.h +0 -104
  296. package/cpp/skia/include/utils/SkRandom.h +0 -169
  297. package/cpp/skia/src/core/SkLRUCache.h +0 -126
  298. package/cpp/skia/src/core/SkTInternalLList.h +0 -302
  299. /package/cpp/skia/include/{core → codec}/SkPngChunkReader.h +0 -0
  300. /package/cpp/skia/include/private/{SkTPin.h → base/SkTPin.h} +0 -0
  301. /package/cpp/skia/include/private/{SkThreadAnnotations.h → base/SkThreadAnnotations.h} +0 -0
@@ -0,0 +1,385 @@
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 SkImageGanesh_DEFINED
9
+ #define SkImageGanesh_DEFINED
10
+
11
+ #include "include/core/SkImage.h"
12
+ #include "include/core/SkRefCnt.h"
13
+ #include "include/gpu/GpuTypes.h"
14
+ #include "include/gpu/GrTypes.h"
15
+ #include "include/private/base/SkAPI.h"
16
+
17
+ #include <functional>
18
+ #include <utility>
19
+
20
+ class GrBackendFormat;
21
+ class GrBackendTexture;
22
+ class GrContextThreadSafeProxy;
23
+ class GrDirectContext;
24
+ class GrRecordingContext;
25
+ class GrYUVABackendTextureInfo;
26
+ class GrYUVABackendTextures;
27
+ class SkColorSpace;
28
+ class SkData;
29
+ class SkPixmap;
30
+ class SkPromiseImageTexture;
31
+ class SkYUVAPixmaps;
32
+ enum SkAlphaType : int;
33
+ enum SkColorType : int;
34
+ enum class SkTextureCompressionType;
35
+ struct SkISize;
36
+
37
+ /**
38
+ * All factories in this file refer to the Ganesh GPU backend when they say GPU.
39
+ */
40
+
41
+ namespace SkImages {
42
+ /** Defines a callback function, taking one parameter of type GrBackendTexture with
43
+ no return value. Function is called when backend texture is to be released.
44
+ */
45
+ using BackendTextureReleaseProc = std::function<void(GrBackendTexture)>;
46
+ /** User function called when supplied texture may be deleted. */
47
+ using TextureReleaseProc = void (*)(ReleaseContext);
48
+
49
+ /** Creates GPU-backed SkImage from backendTexture associated with context.
50
+ Skia will assume ownership of the resource and will release it when no longer needed.
51
+ A non-null SkImage is returned if format of backendTexture is recognized and supported.
52
+ Recognized formats vary by GPU backend.
53
+ @param context GPU context
54
+ @param backendTexture texture residing on GPU
55
+ @param textureOrigin origin of backendTexture
56
+ @param colorType color type of the resulting image
57
+ @param alphaType alpha type of the resulting image
58
+ @param colorSpace range of colors; may be nullptr
59
+ @return created SkImage, or nullptr
60
+ */
61
+ SK_API sk_sp<SkImage> AdoptTextureFrom(GrRecordingContext* context,
62
+ const GrBackendTexture& backendTexture,
63
+ GrSurfaceOrigin textureOrigin,
64
+ SkColorType colorType);
65
+ SK_API sk_sp<SkImage> AdoptTextureFrom(GrRecordingContext* context,
66
+ const GrBackendTexture& backendTexture,
67
+ GrSurfaceOrigin textureOrigin,
68
+ SkColorType colorType,
69
+ SkAlphaType alphaType);
70
+ SK_API sk_sp<SkImage> AdoptTextureFrom(GrRecordingContext* context,
71
+ const GrBackendTexture& backendTexture,
72
+ GrSurfaceOrigin textureOrigin,
73
+ SkColorType colorType,
74
+ SkAlphaType alphaType,
75
+ sk_sp<SkColorSpace> colorSpace);
76
+
77
+ /** Creates GPU-backed SkImage from the provided GPU texture associated with context.
78
+ GPU texture must stay valid and unchanged until textureReleaseProc is called by Skia.
79
+ Skia will call textureReleaseProc with the passed-in releaseContext when SkImage
80
+ is deleted or no longer refers to the texture.
81
+ A non-null SkImage is returned if format of backendTexture is recognized and supported.
82
+ Recognized formats vary by GPU backend.
83
+ @note When using a DDL recording context, textureReleaseProc will be called on the
84
+ GPU thread after the DDL is played back on the direct context.
85
+ @param context GPU context
86
+ @param backendTexture texture residing on GPU
87
+ @param colorSpace This describes the color space of this image's contents, as
88
+ seen after sampling. In general, if the format of the backend
89
+ texture is SRGB, some linear colorSpace should be supplied
90
+ (e.g., SkColorSpace::MakeSRGBLinear()). If the format of the
91
+ backend texture is linear, then the colorSpace should include
92
+ a description of the transfer function as
93
+ well (e.g., SkColorSpace::MakeSRGB()).
94
+ @param textureReleaseProc function called when texture can be released
95
+ @param releaseContext state passed to textureReleaseProc
96
+ @return created SkImage, or nullptr
97
+ */
98
+ SK_API sk_sp<SkImage> BorrowTextureFrom(GrRecordingContext* context,
99
+ const GrBackendTexture& backendTexture,
100
+ GrSurfaceOrigin origin,
101
+ SkColorType colorType,
102
+ SkAlphaType alphaType,
103
+ sk_sp<SkColorSpace> colorSpace,
104
+ TextureReleaseProc textureReleaseProc = nullptr,
105
+ ReleaseContext releaseContext = nullptr);
106
+
107
+ /** Creates a GPU-backed SkImage from pixmap. It is uploaded to GPU backend using context.
108
+ Created SkImage is available to other GPU contexts, and is available across thread
109
+ boundaries. All contexts must be in the same GPU share group, or otherwise
110
+ share resources.
111
+ When SkImage is no longer referenced, context releases texture memory
112
+ asynchronously.
113
+ SkColorSpace of SkImage is determined by pixmap.colorSpace().
114
+ SkImage is returned referring to GPU backend if context is not nullptr,
115
+ format of data is recognized and supported, and if context supports moving
116
+ resources between contexts. Otherwise, pixmap pixel data is copied and SkImage
117
+ as returned in raster format if possible; nullptr may be returned.
118
+ Recognized GPU formats vary by platform and GPU backend.
119
+ @param context GPU context
120
+ @param pixmap SkImageInfo, pixel address, and row bytes
121
+ @param buildMips create SkImage as mip map if true
122
+ @param limitToMaxTextureSize downscale image to GPU maximum texture size, if necessary
123
+ @return created SkImage, or nullptr
124
+ */
125
+ SK_API sk_sp<SkImage> CrossContextTextureFromPixmap(GrDirectContext* context,
126
+ const SkPixmap& pixmap,
127
+ bool buildMips,
128
+ bool limitToMaxTextureSize = false);
129
+
130
+ /** Creates a GPU-backed SkImage from a GPU backend texture. The backend texture must stay
131
+ valid and unchanged until textureReleaseProc is called. The textureReleaseProc is
132
+ called when the SkImage is deleted or no longer refers to the texture and will be
133
+ passed the releaseContext.
134
+ An SkImage is returned if the format of backendTexture is recognized and supported.
135
+ Recognized formats vary by GPU backend.
136
+ @note When using a DDL recording context, textureReleaseProc will be called on the
137
+ GPU thread after the DDL is played back on the direct context.
138
+ @param context the GPU context
139
+ @param backendTexture a texture already allocated by the GPU
140
+ @param alphaType This characterizes the nature of the alpha values in the
141
+ backend texture. For opaque compressed formats (e.g., ETC1)
142
+ this should usually be set to kOpaq
143
+ ue_SkAlphaType.
144
+ @param colorSpace This describes the color space of this image's contents, as
145
+ seen after sampling. In general, if the format of the backend
146
+ texture is SRGB, some linear colorSpace should be supplied
147
+ (e.g., SkColorSpace::MakeSRGBLinear()). If the format of the
148
+ backend texture is linear, then the colorSpace should include
149
+ a description of the transfer function as
150
+ well (e.g., SkColorSpace::MakeSRGB()).
151
+ @param textureReleaseProc function called when the backend texture can be released
152
+ @param releaseContext state passed to textureReleaseProc
153
+ @return created SkImage, or nullptr
154
+ */
155
+ SK_API sk_sp<SkImage> TextureFromCompressedTexture(GrRecordingContext* context,
156
+ const GrBackendTexture& backendTexture,
157
+ GrSurfaceOrigin origin,
158
+ SkAlphaType alphaType,
159
+ sk_sp<SkColorSpace> colorSpace,
160
+ TextureReleaseProc textureReleaseProc = nullptr,
161
+ ReleaseContext releaseContext = nullptr);
162
+
163
+ /** Creates a GPU-backed SkImage from compressed data.
164
+ This method will return an SkImage representing the compressed data.
165
+ If the GPU doesn't support the specified compression method, the data
166
+ will be decompressed and then wrapped in a GPU-backed image.
167
+ Note: one can query the supported compression formats via
168
+ GrRecordingContext::compressedBackendFormat.
169
+ @param context GPU context
170
+ @param data compressed data to store in SkImage
171
+ @param width width of full SkImage
172
+ @param height height of full SkImage
173
+ @param type type of compression used
174
+ @param mipmapped does 'data' contain data for all the mipmap levels?
175
+ @param isProtected do the contents of 'data' require DRM protection (on Vulkan)?
176
+ @return created SkImage, or nullptr
177
+ */
178
+ SK_API sk_sp<SkImage> TextureFromCompressedTextureData(GrDirectContext* direct,
179
+ sk_sp<SkData> data,
180
+ int width,
181
+ int height,
182
+ SkTextureCompressionType type,
183
+ GrMipmapped mipmapped = GrMipmapped::kNo,
184
+ GrProtected isProtected = GrProtected::kNo);
185
+
186
+ /** Returns SkImage backed by GPU texture associated with context. Returned SkImage is
187
+ compatible with SkSurface created with dstColorSpace. The returned SkImage respects
188
+ mipmapped setting; if mipmapped equals skgpu::Mipmapped::kYes, the backing texture
189
+ allocates mip map levels.
190
+ The mipmapped parameter is effectively treated as kNo if MIP maps are not supported by the
191
+ GPU.
192
+ Returns original SkImage if the image is already texture-backed, the context matches, and
193
+ mipmapped is compatible with the backing GPU texture. skgpu::Budgeted is ignored in this
194
+ case.
195
+ Returns nullptr if context is nullptr, or if SkImage was created with another
196
+ GrDirectContext.
197
+ @param GrDirectContext the GrDirectContext in play, if it exists
198
+ @param SkImage a non-null pointer to an SkImage.
199
+ @param skgpu::Mipmapped Whether created SkImage texture must allocate mip map levels.
200
+ Defaults to no.
201
+ @param skgpu::Budgeted Whether to count a newly created texture for the returned image
202
+ counts against the context's budget. Defaults to yes.
203
+ @return created SkImage, or nullptr
204
+ */
205
+ SK_API sk_sp<SkImage> TextureFromImage(GrDirectContext*,
206
+ const SkImage*,
207
+ skgpu::Mipmapped = skgpu::Mipmapped::kNo,
208
+ skgpu::Budgeted = skgpu::Budgeted::kYes);
209
+ inline sk_sp<SkImage> TextureFromImage(GrDirectContext* ctx,
210
+ sk_sp<const SkImage> img,
211
+ skgpu::Mipmapped m = skgpu::Mipmapped::kNo,
212
+ skgpu::Budgeted b = skgpu::Budgeted::kYes) {
213
+ return TextureFromImage(ctx, img.get(), m, b);
214
+ }
215
+
216
+ /** Creates a GPU-backed SkImage from SkYUVAPixmaps.
217
+ The image will remain planar with each plane converted to a texture using the passed
218
+ GrRecordingContext.
219
+ SkYUVAPixmaps has a SkYUVAInfo which specifies the transformation from YUV to RGB.
220
+ The SkColorSpace of the resulting RGB values is specified by imageColorSpace. This will
221
+ be the SkColorSpace reported by the image and when drawn the RGB values will be converted
222
+ from this space into the destination space (if the destination is tagged).
223
+ Currently, this is only supported using the GPU backend and will fail if context is nullptr.
224
+ SkYUVAPixmaps does not need to remain valid after this returns.
225
+ @param context GPU context
226
+ @param pixmaps The planes as pixmaps with supported SkYUVAInfo that
227
+ specifies conversion to RGB.
228
+ @param buildMips create internal YUVA textures as mip map if kYes. This is
229
+ silently ignored if the context does not support mip maps.
230
+ @param limitToMaxTextureSize downscale image to GPU maximum texture size, if necessary
231
+ @param imageColorSpace range of colors of the resulting image; may be nullptr
232
+ @return created SkImage, or nullptr
233
+ */
234
+ SK_API sk_sp<SkImage> TextureFromYUVAPixmaps(GrRecordingContext* context,
235
+ const SkYUVAPixmaps& pixmaps,
236
+ GrMipmapped buildMips,
237
+ bool limitToMaxTextureSize,
238
+ sk_sp<SkColorSpace> imageColorSpace);
239
+ SK_API sk_sp<SkImage> TextureFromYUVAPixmaps(GrRecordingContext* context,
240
+ const SkYUVAPixmaps& pixmaps,
241
+ GrMipmapped buildMips = GrMipmapped::kNo,
242
+ bool limitToMaxTextureSize = false);
243
+
244
+ /** Creates a GPU-backed SkImage from YUV[A] planar textures. This requires that the textures
245
+ * stay valid for the lifetime of the image. The ReleaseContext can be used to know when it is
246
+ * safe to either delete or overwrite the textures. If ReleaseProc is provided it is also called
247
+ * before return on failure.
248
+ @param context GPU context
249
+ @param yuvaTextures A set of textures containing YUVA data and a description of the
250
+ data and transformation to RGBA.
251
+ @param imageColorSpace range of colors of the resulting image after conversion to RGB;
252
+ may be nullptr
253
+ @param textureReleaseProc called when the backend textures can be released
254
+ @param releaseContext state passed to textureReleaseProc
255
+ @return created SkImage, or nullptr
256
+ */
257
+ SK_API sk_sp<SkImage> TextureFromYUVATextures(GrRecordingContext* context,
258
+ const GrYUVABackendTextures& yuvaTextures,
259
+ sk_sp<SkColorSpace> imageColorSpace,
260
+ TextureReleaseProc textureReleaseProc = nullptr,
261
+ ReleaseContext releaseContext = nullptr);
262
+ SK_API sk_sp<SkImage> TextureFromYUVATextures(GrRecordingContext* context,
263
+ const GrYUVABackendTextures& yuvaTextures);
264
+
265
+ using PromiseImageTextureContext = void*;
266
+ using PromiseImageTextureFulfillProc = sk_sp<SkPromiseImageTexture> (*)(PromiseImageTextureContext);
267
+ using PromiseImageTextureReleaseProc = void (*)(PromiseImageTextureContext);
268
+
269
+ /** Create a new GPU-backed SkImage that is very similar to an SkImage created by BorrowTextureFrom.
270
+ The difference is that the caller need not have created the texture nor populated it with the
271
+ image pixel data. Moreover, the SkImage may be created on a thread as the creation of the
272
+ image does not require access to the backend API or GrDirectContext. Instead of passing a
273
+ GrBackendTexture the client supplies a description of the texture consisting of
274
+ GrBackendFormat, width, height, and GrMipmapped state. The resulting SkImage can be drawn
275
+ to a SkDeferredDisplayListRecorder or directly to a GPU-backed SkSurface.
276
+ When the actual texture is required to perform a backend API draw, textureFulfillProc will
277
+ be called to receive a GrBackendTexture. The properties of the GrBackendTexture must match
278
+ those set during the SkImage creation, and it must refer to a valid existing texture in the
279
+ backend API context/device, and be populated with the image pixel data. The texture cannot
280
+ be deleted until textureReleaseProc is called.
281
+ There is at most one call to each of textureFulfillProc and textureReleaseProc.
282
+ textureReleaseProc is always called even if image creation fails or if the
283
+ image is never fulfilled (e.g. it is never drawn or all draws are clipped out)
284
+ @param gpuContextProxy the thread-safe proxy of the gpu context. required.
285
+ @param backendFormat format of promised gpu texture
286
+ @param dimensions width & height of promised gpu texture
287
+ @param mipmapped mip mapped state of promised gpu texture
288
+ @param origin surface origin of promised gpu texture
289
+ @param colorType color type of promised gpu texture
290
+ @param alphaType alpha type of promised gpu texture
291
+ @param colorSpace range of colors; may be nullptr
292
+ @param textureFulfillProc function called to get actual gpu texture
293
+ @param textureReleaseProc function called when texture can be deleted
294
+ @param textureContext state passed to textureFulfillProc and textureReleaseProc
295
+ @return created SkImage, or nullptr
296
+ */
297
+ SK_API sk_sp<SkImage> PromiseTextureFrom(sk_sp<GrContextThreadSafeProxy> gpuContextProxy,
298
+ const GrBackendFormat& backendFormat,
299
+ SkISize dimensions,
300
+ GrMipmapped mipmapped,
301
+ GrSurfaceOrigin origin,
302
+ SkColorType colorType,
303
+ SkAlphaType alphaType,
304
+ sk_sp<SkColorSpace> colorSpace,
305
+ PromiseImageTextureFulfillProc textureFulfillProc,
306
+ PromiseImageTextureReleaseProc textureReleaseProc,
307
+ PromiseImageTextureContext textureContext);
308
+
309
+ /** This is similar to 'PromiseTextureFrom' but it creates a GPU-backed SkImage from YUV[A] data.
310
+ The source data may be planar (i.e. spread across multiple textures). In
311
+ the extreme Y, U, V, and A are all in different planes and thus the image is specified by
312
+ four textures. 'backendTextureInfo' describes the planar arrangement, texture formats,
313
+ conversion to RGB, and origin of the textures. Separate 'textureFulfillProc' and
314
+ 'textureReleaseProc' calls are made for each texture. Each texture has its own
315
+ PromiseImageTextureContext. If 'backendTextureInfo' is not valid then no release proc
316
+ calls are made. Otherwise, the calls will be made even on failure. 'textureContexts' has one
317
+ entry for each of the up to four textures, as indicated by 'backendTextureInfo'.
318
+ Currently the mip mapped property of 'backendTextureInfo' is ignored. However, in the
319
+ near future it will be required that if it is kYes then textureFulfillProc must return
320
+ a mip mapped texture for each plane in order to successfully draw the image.
321
+ @param gpuContextProxy the thread-safe proxy of the gpu context. required.
322
+ @param backendTextureInfo info about the promised yuva gpu texture
323
+ @param imageColorSpace range of colors; may be nullptr
324
+ @param textureFulfillProc function called to get actual gpu texture
325
+ @param textureReleaseProc function called when texture can be deleted
326
+ @param textureContexts state passed to textureFulfillProc and textureReleaseProc
327
+ @return created SkImage, or nullptr
328
+ */
329
+ SK_API sk_sp<SkImage> PromiseTextureFromYUVA(sk_sp<GrContextThreadSafeProxy> gpuContextProxy,
330
+ const GrYUVABackendTextureInfo& backendTextureInfo,
331
+ sk_sp<SkColorSpace> imageColorSpace,
332
+ PromiseImageTextureFulfillProc textureFulfillProc,
333
+ PromiseImageTextureReleaseProc textureReleaseProc,
334
+ PromiseImageTextureContext textureContexts[]);
335
+
336
+ /** Retrieves the existing backend texture. If SkImage is not a Ganesh-backend texture image
337
+ or otherwise does not have such a texture, false is returned. Otherwise, outTexture will
338
+ be set to the image's texture.
339
+
340
+ If flushPendingGrContextIO is true, completes deferred I/O operations.
341
+ If origin in not nullptr, copies location of content drawn into SkImage.
342
+ @param outTexture Will be set to the underlying texture of the image if non-null.
343
+ @param flushPendingGrContextIO flag to flush outstanding requests
344
+ @param origin Will be set to the origin orientation of the image if non-null.
345
+ @return false if a Ganesh backend texture cannot be retrieved.
346
+ */
347
+ SK_API bool GetBackendTextureFromImage(const SkImage* img,
348
+ GrBackendTexture* outTexture,
349
+ bool flushPendingGrContextIO,
350
+ GrSurfaceOrigin* origin = nullptr);
351
+ inline bool GetBackendTextureFromImage(sk_sp<const SkImage> img,
352
+ GrBackendTexture* outTexture,
353
+ bool flushPendingGrContextIO,
354
+ GrSurfaceOrigin* origin = nullptr) {
355
+ return GetBackendTextureFromImage(img.get(), outTexture, flushPendingGrContextIO, origin);
356
+ }
357
+
358
+ /** Extracts the backendTexture from an existing SkImage.
359
+ If the image is not already GPU-backed, the raster data will be uploaded as a texture
360
+ and returned.
361
+ If this is the only reference to the image, the old image's texture will be
362
+ moved out of the passed in image.
363
+ If the image is shared (has a refcount > 1), the texture will be copied and then returned.
364
+ @param context GPU context
365
+ @param image image, either CPU-backed or GPU-backed
366
+ @param backendTexture Will be set to the underlying texture of the image.
367
+ @param backendTextureReleaseProc Called when the texture is released
368
+ @return false if image cannot be uploaded.
369
+ */
370
+ SK_API bool MakeBackendTextureFromImage(GrDirectContext* context,
371
+ sk_sp<SkImage> image,
372
+ GrBackendTexture* backendTexture,
373
+ BackendTextureReleaseProc* backendTextureReleaseProc);
374
+ // Legacy name
375
+ inline bool GetBackendTextureFromImage(GrDirectContext* context,
376
+ sk_sp<SkImage> image,
377
+ GrBackendTexture* backendTexture,
378
+ BackendTextureReleaseProc* backendTextureReleaseProc) {
379
+ return MakeBackendTextureFromImage(context, std::move(image), backendTexture,
380
+ backendTextureReleaseProc);
381
+ }
382
+
383
+ } // namespace SkImages
384
+
385
+ #endif
@@ -10,7 +10,7 @@
10
10
 
11
11
  #include "include/core/SkString.h"
12
12
  #include "include/gpu/gl/GrGLFunctions.h"
13
- #include "include/private/SkTArray.h"
13
+ #include "include/private/base/SkTArray.h"
14
14
 
15
15
  #include <utility>
16
16
 
@@ -66,13 +66,13 @@ public:
66
66
  */
67
67
  void add(const char[]);
68
68
 
69
- void reset() { fStrings.reset(); }
69
+ void reset() { fStrings.clear(); }
70
70
 
71
71
  void dumpJSON(SkJSONWriter*) const;
72
72
 
73
73
  private:
74
74
  bool fInitialized = false;
75
- SkTArray<SkString> fStrings;
75
+ skia_private::TArray<SkString> fStrings;
76
76
  };
77
77
 
78
78
  #endif
@@ -11,7 +11,7 @@
11
11
 
12
12
  #include <cstring>
13
13
  #include "include/gpu/gl/GrGLTypes.h"
14
- #include "include/private/SkTLogic.h"
14
+ #include "include/private/base/SkTLogic.h"
15
15
 
16
16
 
17
17
  extern "C" {
@@ -304,9 +304,6 @@ public:
304
304
  GrGLFunction<GrGLVertexAttribPointerFn> fVertexAttribPointer;
305
305
  GrGLFunction<GrGLViewportFn> fViewport;
306
306
 
307
- /* NV_framebuffer_mixed_samples */
308
- GrGLFunction<GrGLCoverageModulationFn> fCoverageModulation;
309
-
310
307
  /* ARB_sync */
311
308
  GrGLFunction<GrGLFenceSyncFn> fFenceSync;
312
309
  GrGLFunction<GrGLIsSyncFn> fIsSync;
@@ -10,6 +10,7 @@
10
10
  #define GrGLTypes_DEFINED
11
11
 
12
12
  #include "include/core/SkRefCnt.h"
13
+ #include "include/gpu/GpuTypes.h"
13
14
  #include "include/gpu/gl/GrGLConfig.h"
14
15
 
15
16
  /**
@@ -198,7 +199,7 @@ struct GrGLFramebufferInfo {
198
199
  struct GrGLSurfaceInfo {
199
200
  uint32_t fSampleCount = 1;
200
201
  uint32_t fLevelCount = 0;
201
- GrProtected fProtected = GrProtected::kNo;
202
+ skgpu::Protected fProtected = skgpu::Protected::kNo;
202
203
 
203
204
  GrGLenum fTarget = 0;
204
205
  GrGLenum fFormat = 0;
@@ -8,29 +8,71 @@
8
8
  #ifndef skgpu_graphite_BackendTexture_DEFINED
9
9
  #define skgpu_graphite_BackendTexture_DEFINED
10
10
 
11
+ #include "include/core/SkRefCnt.h"
11
12
  #include "include/core/SkSize.h"
12
13
  #include "include/gpu/graphite/GraphiteTypes.h"
13
14
  #include "include/gpu/graphite/TextureInfo.h"
14
15
 
16
+ #ifdef SK_DAWN
17
+ #include "include/gpu/graphite/dawn/DawnTypes.h"
18
+ #endif
19
+
15
20
  #ifdef SK_METAL
16
- #include "include/gpu/graphite/mtl/MtlTypes.h"
21
+ #include "include/gpu/graphite/mtl/MtlGraphiteTypes.h"
17
22
  #endif
18
23
 
19
24
  #ifdef SK_VULKAN
20
25
  #include "include/private/gpu/vk/SkiaVulkan.h"
21
26
  #endif
22
27
 
28
+ namespace skgpu {
29
+ class MutableTextureState;
30
+ class MutableTextureStateRef;
31
+ }
32
+
23
33
  namespace skgpu::graphite {
24
34
 
25
- class BackendTexture {
35
+ class SK_API BackendTexture {
26
36
  public:
27
- BackendTexture() {}
37
+ BackendTexture();
38
+ #ifdef SK_DAWN
39
+ // Create a BackendTexture from a WGPUTexture. Texture info will be
40
+ // queried from the texture. Comparing to WGPUTextureView,
41
+ // SkImage::readPixels(), SkSurface::readPixels() and
42
+ // SkSurface::writePixels() are implemented by direct buffer copy. They
43
+ // should be more efficient. For WGPUTextureView, those methods will use
44
+ // create an intermediate WGPUTexture, and use it to transfer pixels.
45
+ // Note:
46
+ // - for better performance, using WGPUTexture IS RECOMMENDED.
47
+ // - The BackendTexture will not call retain or release on the passed in
48
+ // WGPUTexture. Thus the client must keep the WGPUTexture valid until
49
+ // they are no longer using the BackendTexture.
50
+ BackendTexture(WGPUTexture texture);
51
+ // Create a BackendTexture from a WGPUTextureView. Texture dimensions and
52
+ // info have to be provided.
53
+ // Note:
54
+ // - this method is for importing WGPUTextureView from wgpu::SwapChain only.
55
+ // - The BackendTexture will not call retain or release on the passed in
56
+ // WGPUTextureView. Thus the client must keep the WGPUTextureView valid
57
+ // until they are no longer using the BackendTexture.
58
+ BackendTexture(SkISize dimensions,
59
+ const DawnTextureInfo& info,
60
+ WGPUTextureView textureView);
61
+ #endif
28
62
  #ifdef SK_METAL
29
63
  // The BackendTexture will not call retain or release on the passed in MtlHandle. Thus the
30
64
  // client must keep the MtlHandle valid until they are no longer using the BackendTexture.
31
65
  BackendTexture(SkISize dimensions, MtlHandle mtlTexture);
32
66
  #endif
33
67
 
68
+ #ifdef SK_VULKAN
69
+ BackendTexture(SkISize dimensions,
70
+ const VulkanTextureInfo&,
71
+ VkImageLayout,
72
+ uint32_t queueFamilyIndex,
73
+ VkImage);
74
+ #endif
75
+
34
76
  BackendTexture(const BackendTexture&);
35
77
 
36
78
  ~BackendTexture();
@@ -47,15 +89,42 @@ public:
47
89
 
48
90
  const TextureInfo& info() const { return fInfo; }
49
91
 
92
+ // If the client changes any of the mutable backend of the GrBackendTexture they should call
93
+ // this function to inform Skia that those values have changed. The backend API specific state
94
+ // that can be set from this function are:
95
+ //
96
+ // Vulkan: VkImageLayout and QueueFamilyIndex
97
+ void setMutableState(const skgpu::MutableTextureState&);
98
+
99
+ #ifdef SK_DAWN
100
+ WGPUTexture getDawnTexturePtr() const;
101
+ WGPUTextureView getDawnTextureViewPtr() const;
102
+ #endif
50
103
  #ifdef SK_METAL
51
104
  MtlHandle getMtlTexture() const;
52
105
  #endif
53
106
 
107
+ #ifdef SK_VULKAN
108
+ VkImage getVkImage() const;
109
+ VkImageLayout getVkImageLayout() const;
110
+ uint32_t getVkQueueFamilyIndex() const;
111
+ #endif
112
+
54
113
  private:
114
+ sk_sp<MutableTextureStateRef> mutableState() const;
115
+
55
116
  SkISize fDimensions;
56
117
  TextureInfo fInfo;
57
118
 
119
+ sk_sp<MutableTextureStateRef> fMutableState;
120
+
58
121
  union {
122
+ #ifdef SK_DAWN
123
+ struct {
124
+ WGPUTexture fDawnTexture;
125
+ WGPUTextureView fDawnTextureView;
126
+ };
127
+ #endif
59
128
  #ifdef SK_METAL
60
129
  MtlHandle fMtlTexture;
61
130
  #endif