@shopify/react-native-skia 1.3.13 → 1.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/android/CMakeLists.txt +9 -4
- package/android/cpp/rnskia-android/RNSkAndroidPlatformContext.h +6 -0
- package/android/cpp/rnskia-android/SkiaOpenGLSurfaceFactory.cpp +81 -0
- package/android/cpp/rnskia-android/SkiaOpenGLSurfaceFactory.h +40 -0
- package/cpp/api/JsiSkApi.h +2 -0
- package/cpp/api/JsiSkPath.h +29 -19
- package/cpp/api/JsiSkRuntimeEffect.h +7 -0
- package/cpp/api/JsiSkiaContext.h +79 -0
- package/cpp/rnskia/RNSkPlatformContext.h +4 -0
- package/cpp/rnskia/SkiaContext.h +22 -0
- package/cpp/skia/include/android/GrAHardwareBufferUtils.h +2 -2
- package/cpp/skia/include/android/SkImageAndroid.h +1 -1
- package/cpp/skia/include/android/SkSurfaceAndroid.h +1 -1
- package/cpp/skia/include/codec/SkAndroidCodec.h +13 -9
- package/cpp/skia/include/codec/SkCodec.h +28 -5
- package/cpp/skia/include/core/SkArc.h +69 -0
- package/cpp/skia/include/core/SkBitmap.h +10 -0
- package/cpp/skia/include/core/SkBlender.h +2 -3
- package/cpp/skia/include/core/SkCanvas.h +86 -16
- package/cpp/skia/include/core/SkCapabilities.h +0 -4
- package/cpp/skia/include/core/SkColorFilter.h +4 -4
- package/cpp/skia/include/core/SkColorPriv.h +5 -7
- package/cpp/skia/include/core/SkColorType.h +2 -0
- package/cpp/skia/include/core/SkFlattenable.h +1 -1
- package/cpp/skia/include/core/SkFontArguments.h +3 -1
- package/cpp/skia/include/core/SkFontParameters.h +3 -2
- package/cpp/skia/include/core/SkFourByteTag.h +19 -0
- package/cpp/skia/include/core/SkImage.h +41 -1
- package/cpp/skia/include/core/SkImageGenerator.h +0 -5
- package/cpp/skia/include/core/SkImageInfo.h +20 -0
- package/cpp/skia/include/core/SkM44.h +1 -1
- package/cpp/skia/include/core/SkMatrix.h +2 -1
- package/cpp/skia/include/core/SkMilestone.h +1 -1
- package/cpp/skia/include/core/SkPaint.h +1 -1
- package/cpp/skia/include/core/SkPath.h +20 -6
- package/cpp/skia/include/core/SkPathMeasure.h +1 -0
- package/cpp/skia/include/core/SkPicture.h +5 -5
- package/cpp/skia/include/core/SkPoint3.h +2 -12
- package/cpp/skia/include/core/SkRRect.h +5 -0
- package/cpp/skia/include/core/SkRect.h +5 -16
- package/cpp/skia/include/core/SkRefCnt.h +2 -0
- package/cpp/skia/include/core/SkScalar.h +20 -32
- package/cpp/skia/include/core/SkShader.h +17 -0
- package/cpp/skia/include/core/SkSize.h +2 -1
- package/cpp/skia/include/core/SkStream.h +2 -3
- package/cpp/skia/include/core/SkStrokeRec.h +6 -1
- package/cpp/skia/include/core/SkSurface.h +13 -4
- package/cpp/skia/include/core/SkSurfaceProps.h +5 -0
- package/cpp/skia/include/core/SkSwizzle.h +3 -1
- package/cpp/skia/include/core/SkTypeface.h +1 -0
- package/cpp/skia/include/core/SkTypes.h +1 -19
- package/cpp/skia/include/core/SkUnPreMultiply.h +4 -5
- package/cpp/skia/include/core/SkVertices.h +4 -2
- package/cpp/skia/include/docs/SkPDFDocument.h +11 -14
- package/cpp/skia/include/effects/SkHighContrastFilter.h +6 -6
- package/cpp/skia/include/effects/SkImageFilters.h +49 -23
- package/cpp/skia/include/effects/SkRuntimeEffect.h +51 -70
- package/cpp/skia/include/effects/SkShaderMaskFilter.h +2 -0
- package/cpp/skia/include/effects/SkTableMaskFilter.h +2 -0
- package/cpp/skia/include/gpu/GrBackendSemaphore.h +2 -120
- package/cpp/skia/include/gpu/GrBackendSurface.h +2 -466
- package/cpp/skia/include/gpu/GrContextOptions.h +2 -368
- package/cpp/skia/include/gpu/GrContextThreadSafeProxy.h +2 -179
- package/cpp/skia/include/gpu/GrDirectContext.h +2 -1011
- package/cpp/skia/include/gpu/GrDriverBugWorkarounds.h +2 -47
- package/cpp/skia/include/gpu/GrDriverBugWorkaroundsAutogen.h +2 -41
- package/cpp/skia/include/gpu/GrRecordingContext.h +2 -279
- package/cpp/skia/include/gpu/GrTypes.h +2 -238
- package/cpp/skia/include/gpu/GrYUVABackendTextures.h +2 -118
- package/cpp/skia/include/gpu/d3d/GrD3DBackendContext.h +2 -29
- package/cpp/skia/include/gpu/d3d/GrD3DTypes.h +2 -242
- package/cpp/skia/include/gpu/ganesh/GrBackendSemaphore.h +80 -0
- package/cpp/skia/include/gpu/ganesh/GrBackendSurface.h +412 -0
- package/cpp/skia/include/gpu/ganesh/GrContextOptions.h +386 -0
- package/cpp/skia/include/gpu/ganesh/GrContextThreadSafeProxy.h +175 -0
- package/cpp/skia/include/gpu/ganesh/GrDirectContext.h +993 -0
- package/cpp/skia/include/gpu/ganesh/GrDriverBugWorkarounds.h +53 -0
- package/cpp/skia/include/gpu/ganesh/GrDriverBugWorkaroundsAutogen.h +45 -0
- package/cpp/skia/include/gpu/ganesh/GrExternalTextureGenerator.h +1 -1
- package/cpp/skia/include/gpu/ganesh/GrRecordingContext.h +285 -0
- package/cpp/skia/include/gpu/ganesh/GrTypes.h +177 -0
- package/cpp/skia/include/gpu/ganesh/GrYUVABackendTextures.h +130 -0
- package/cpp/skia/include/gpu/ganesh/SkImageGanesh.h +1 -1
- package/cpp/skia/include/gpu/ganesh/SkSurfaceGanesh.h +1 -1
- package/cpp/skia/include/gpu/ganesh/d3d/GrD3DBackendContext.h +35 -0
- package/cpp/skia/include/gpu/ganesh/d3d/GrD3DTypes.h +248 -0
- package/cpp/skia/include/gpu/ganesh/gl/GrGLAssembleHelpers.h +17 -0
- package/cpp/skia/include/gpu/ganesh/gl/GrGLAssembleInterface.h +45 -0
- package/cpp/skia/include/gpu/ganesh/gl/GrGLBackendSurface.h +1 -1
- package/cpp/skia/include/gpu/ganesh/gl/GrGLConfig.h +69 -0
- package/cpp/skia/include/gpu/ganesh/gl/GrGLExtensions.h +79 -0
- package/cpp/skia/include/gpu/ganesh/gl/GrGLFunctions.h +306 -0
- package/cpp/skia/include/gpu/ganesh/gl/GrGLInterface.h +338 -0
- package/cpp/skia/include/gpu/ganesh/gl/GrGLMakeWebGLInterface.h +19 -0
- package/cpp/skia/include/gpu/ganesh/gl/GrGLTypes.h +219 -0
- package/cpp/skia/include/gpu/{gl → ganesh/gl}/egl/GrGLMakeEGLInterface.h +2 -2
- package/cpp/skia/include/gpu/ganesh/gl/epoxy/GrGLMakeEpoxyEGLInterface.h +20 -0
- package/cpp/skia/include/gpu/ganesh/gl/ios/GrGLMakeIOSInterface.h +20 -0
- package/cpp/skia/include/gpu/ganesh/gl/mac/GrGLMakeMacInterface.h +20 -0
- package/cpp/skia/include/gpu/ganesh/gl/win/GrGLMakeWinInterface.h +20 -0
- package/cpp/skia/include/gpu/ganesh/mock/GrMockTypes.h +166 -0
- package/cpp/skia/include/gpu/{mtl → ganesh/mtl}/GrMtlBackendContext.h +2 -2
- package/cpp/skia/include/gpu/ganesh/mtl/GrMtlBackendSemaphore.h +23 -0
- package/cpp/skia/include/gpu/ganesh/mtl/GrMtlBackendSurface.h +44 -0
- package/cpp/skia/include/gpu/ganesh/mtl/GrMtlDirectContext.h +30 -0
- package/cpp/skia/include/gpu/{mtl → ganesh/mtl}/GrMtlTypes.h +1 -3
- package/cpp/skia/include/gpu/ganesh/mtl/SkSurfaceMetal.h +2 -2
- package/cpp/skia/include/gpu/ganesh/vk/GrBackendDrawableInfo.h +2 -2
- package/cpp/skia/include/gpu/ganesh/vk/GrVkBackendSemaphore.h +1 -1
- package/cpp/skia/include/gpu/ganesh/vk/GrVkBackendSurface.h +7 -3
- package/cpp/skia/include/gpu/ganesh/vk/GrVkDirectContext.h +6 -3
- package/cpp/skia/include/gpu/ganesh/vk/GrVkTypes.h +101 -0
- package/cpp/skia/include/gpu/gl/GrGLAssembleHelpers.h +2 -9
- package/cpp/skia/include/gpu/gl/GrGLAssembleInterface.h +2 -38
- package/cpp/skia/include/gpu/gl/GrGLConfig.h +2 -73
- package/cpp/skia/include/gpu/gl/GrGLExtensions.h +2 -72
- package/cpp/skia/include/gpu/gl/GrGLFunctions.h +2 -301
- package/cpp/skia/include/gpu/gl/GrGLInterface.h +2 -332
- package/cpp/skia/include/gpu/gl/GrGLTypes.h +2 -213
- package/cpp/skia/include/gpu/graphite/BackendSemaphore.h +20 -41
- package/cpp/skia/include/gpu/graphite/BackendTexture.h +18 -118
- package/cpp/skia/include/gpu/graphite/Context.h +122 -44
- package/cpp/skia/include/gpu/graphite/ContextOptions.h +30 -3
- package/cpp/skia/include/gpu/graphite/GraphiteTypes.h +45 -17
- package/cpp/skia/include/gpu/graphite/Image.h +56 -54
- package/cpp/skia/include/gpu/graphite/Recorder.h +68 -14
- package/cpp/skia/include/gpu/graphite/Recording.h +3 -3
- package/cpp/skia/include/gpu/graphite/Surface.h +6 -2
- package/cpp/skia/include/gpu/graphite/TextureInfo.h +36 -117
- package/cpp/skia/include/gpu/graphite/dawn/DawnTypes.h +108 -6
- package/cpp/skia/include/gpu/graphite/mtl/MtlBackendContext.h +4 -1
- package/cpp/skia/include/gpu/graphite/mtl/MtlGraphiteTypes.h +41 -25
- package/cpp/skia/include/gpu/graphite/precompile/PaintOptions.h +197 -0
- package/cpp/skia/include/gpu/graphite/precompile/Precompile.h +48 -0
- package/cpp/skia/include/gpu/graphite/precompile/PrecompileBase.h +84 -0
- package/cpp/skia/include/gpu/graphite/precompile/PrecompileBlender.h +56 -0
- package/cpp/skia/include/gpu/graphite/precompile/PrecompileColorFilter.h +85 -0
- package/cpp/skia/include/gpu/graphite/precompile/PrecompileImageFilter.h +119 -0
- package/cpp/skia/include/gpu/graphite/precompile/PrecompileMaskFilter.h +51 -0
- package/cpp/skia/include/gpu/graphite/precompile/PrecompileRuntimeEffect.h +47 -0
- package/cpp/skia/include/gpu/graphite/precompile/PrecompileShader.h +170 -0
- package/cpp/skia/include/gpu/graphite/vk/VulkanGraphiteTypes.h +24 -2
- package/cpp/skia/include/gpu/mock/GrMockTypes.h +2 -157
- package/cpp/skia/include/gpu/mtl/MtlMemoryAllocator.h +2 -0
- package/cpp/skia/include/gpu/vk/GrVkTypes.h +2 -101
- package/cpp/skia/include/gpu/vk/VulkanBackendContext.h +13 -8
- package/cpp/skia/include/gpu/vk/VulkanExtensions.h +9 -3
- package/cpp/skia/include/gpu/vk/VulkanMemoryAllocator.h +4 -1
- package/cpp/skia/include/gpu/vk/VulkanTypes.h +25 -8
- package/cpp/skia/include/ports/SkFontMgr_Fontations.h +20 -0
- package/cpp/skia/include/ports/SkFontMgr_android.h +7 -0
- package/cpp/skia/include/ports/SkImageGeneratorCG.h +3 -1
- package/cpp/skia/include/ports/SkTypeface_win.h +0 -17
- package/cpp/skia/include/private/SkEncodedInfo.h +8 -2
- package/cpp/skia/include/private/SkExif.h +28 -75
- package/cpp/skia/include/private/SkGainmapInfo.h +47 -7
- package/cpp/skia/include/private/SkJpegMetadataDecoder.h +12 -0
- package/cpp/skia/include/private/SkPathRef.h +52 -44
- package/cpp/skia/include/private/SkXmp.h +13 -4
- package/cpp/skia/include/private/base/SkASAN.h +56 -0
- package/cpp/skia/include/private/base/SkAlign.h +5 -0
- package/cpp/skia/include/private/base/SkContainers.h +10 -2
- package/cpp/skia/include/private/base/SkFeatures.h +22 -1
- package/cpp/skia/include/private/base/SkFloatingPoint.h +51 -65
- package/cpp/skia/include/private/base/SkMacros.h +67 -0
- package/cpp/skia/include/private/base/SkMalloc.h +8 -0
- package/cpp/skia/include/private/base/SkPoint_impl.h +2 -11
- package/cpp/skia/include/private/base/SkTArray.h +108 -23
- package/cpp/skia/include/private/base/SkTFitsIn.h +1 -12
- package/cpp/skia/include/private/chromium/GrDeferredDisplayList.h +1 -1
- package/cpp/skia/include/private/chromium/GrDeferredDisplayListRecorder.h +0 -39
- package/cpp/skia/include/private/chromium/GrPromiseImageTexture.h +1 -1
- package/cpp/skia/include/private/chromium/GrSurfaceCharacterization.h +3 -3
- package/cpp/skia/include/private/chromium/SkChromeRemoteGlyphCache.h +1 -4
- package/cpp/skia/include/private/chromium/Slug.h +5 -11
- package/cpp/skia/include/private/gpu/ganesh/GrContext_Base.h +1 -1
- package/cpp/skia/include/private/gpu/ganesh/GrD3DTypesMinimal.h +2 -2
- package/cpp/skia/include/private/gpu/ganesh/GrTextureGenerator.h +1 -1
- package/cpp/skia/include/private/gpu/ganesh/GrTypesPriv.h +21 -93
- package/cpp/skia/include/private/gpu/vk/SkiaVulkan.h +2 -2
- package/cpp/skia/include/utils/SkCustomTypeface.h +1 -0
- package/cpp/skia/include/utils/SkNWayCanvas.h +1 -1
- package/cpp/skia/include/utils/SkParse.h +0 -1
- package/cpp/skia/modules/skcms/src/Transform_inl.h +59 -56
- package/cpp/skia/modules/skcms/src/skcms_Transform.h +3 -0
- package/cpp/skia/modules/skcms/src/skcms_internals.h +2 -0
- package/cpp/skia/modules/skcms/src/skcms_public.h +46 -14
- package/cpp/skia/modules/skparagraph/include/ParagraphBuilder.h +15 -1
- package/cpp/skia/modules/skparagraph/include/TextStyle.h +2 -2
- package/cpp/skia/modules/skparagraph/include/TypefaceFontProvider.h +2 -4
- package/cpp/skia/modules/skresources/include/SkResources.h +1 -1
- package/cpp/skia/modules/skshaper/include/SkShaper.h +316 -0
- package/cpp/skia/modules/skshaper/include/SkShaper_coretext.h +19 -0
- package/cpp/skia/modules/skshaper/include/SkShaper_factory.h +41 -0
- package/cpp/skia/modules/skshaper/include/SkShaper_harfbuzz.h +39 -0
- package/cpp/skia/modules/skshaper/include/SkShaper_skunicode.h +28 -0
- package/cpp/skia/modules/skunicode/include/SkUnicode.h +6 -23
- package/cpp/skia/modules/svg/include/SkSVGAttribute.h +0 -3
- package/cpp/skia/modules/svg/include/SkSVGAttributeParser.h +12 -2
- package/cpp/skia/modules/svg/include/SkSVGCircle.h +13 -0
- package/cpp/skia/modules/svg/include/SkSVGClipPath.h +6 -0
- package/cpp/skia/modules/svg/include/SkSVGContainer.h +17 -1
- package/cpp/skia/modules/svg/include/SkSVGDOM.h +25 -15
- package/cpp/skia/modules/svg/include/SkSVGEllipse.h +13 -2
- package/cpp/skia/modules/svg/include/SkSVGFe.h +11 -2
- package/cpp/skia/modules/svg/include/SkSVGFeBlend.h +9 -0
- package/cpp/skia/modules/svg/include/SkSVGFeColorMatrix.h +9 -0
- package/cpp/skia/modules/svg/include/SkSVGFeComponentTransfer.h +82 -0
- package/cpp/skia/modules/svg/include/SkSVGFeComposite.h +10 -1
- package/cpp/skia/modules/svg/include/SkSVGFeDisplacementMap.h +10 -0
- package/cpp/skia/modules/svg/include/SkSVGFeFlood.h +10 -0
- package/cpp/skia/modules/svg/include/SkSVGFeGaussianBlur.h +9 -0
- package/cpp/skia/modules/svg/include/SkSVGFeImage.h +9 -0
- package/cpp/skia/modules/svg/include/SkSVGFeLightSource.h +5 -0
- package/cpp/skia/modules/svg/include/SkSVGFeLighting.h +11 -0
- package/cpp/skia/modules/svg/include/SkSVGFeMerge.h +63 -0
- package/cpp/skia/modules/svg/include/SkSVGFeMorphology.h +8 -0
- package/cpp/skia/modules/svg/include/SkSVGFeOffset.h +9 -0
- package/cpp/skia/modules/svg/include/SkSVGFeTurbulence.h +9 -0
- package/cpp/skia/modules/svg/include/SkSVGFilter.h +9 -0
- package/cpp/skia/modules/svg/include/SkSVGFilterContext.h +3 -3
- package/cpp/skia/modules/svg/include/SkSVGGradient.h +10 -2
- package/cpp/skia/modules/svg/include/SkSVGImage.h +9 -0
- package/cpp/skia/modules/svg/include/SkSVGLine.h +11 -0
- package/cpp/skia/modules/svg/include/SkSVGLinearGradient.h +10 -0
- package/cpp/skia/modules/svg/include/SkSVGMask.h +6 -0
- package/cpp/skia/modules/svg/include/SkSVGNode.h +13 -2
- package/cpp/skia/modules/svg/include/SkSVGOpenTypeSVGDecoder.h +5 -0
- package/cpp/skia/modules/svg/include/SkSVGPath.h +10 -0
- package/cpp/skia/modules/svg/include/SkSVGPattern.h +5 -0
- package/cpp/skia/modules/svg/include/SkSVGPoly.h +11 -0
- package/cpp/skia/modules/svg/include/SkSVGRadialGradient.h +11 -0
- package/cpp/skia/modules/svg/include/SkSVGRect.h +11 -0
- package/cpp/skia/modules/svg/include/SkSVGRenderContext.h +43 -7
- package/cpp/skia/modules/svg/include/SkSVGSVG.h +7 -0
- package/cpp/skia/modules/svg/include/SkSVGShape.h +8 -2
- package/cpp/skia/modules/svg/include/SkSVGStop.h +5 -3
- package/cpp/skia/modules/svg/include/SkSVGText.h +8 -2
- package/cpp/skia/modules/svg/include/SkSVGTransformableNode.h +8 -0
- package/cpp/skia/modules/svg/include/SkSVGTypes.h +9 -0
- package/cpp/skia/modules/svg/include/SkSVGUse.h +7 -0
- package/cpp/skia/src/base/SkMathPriv.h +337 -0
- package/cpp/skia/src/base/SkTLazy.h +208 -0
- package/cpp/skia/src/core/SkTHash.h +58 -7
- package/cpp/skia/src/gpu/ganesh/gl/GrGLDefines.h +3 -0
- package/ios/RNSkia-iOS/RNSkiOSPlatformContext.h +3 -0
- package/ios/RNSkia-iOS/RNSkiOSPlatformContext.mm +7 -0
- package/ios/RNSkia-iOS/SkiaCVPixelBufferUtils.mm +7 -2
- package/ios/RNSkia-iOS/SkiaMetalSurfaceFactory.h +78 -0
- package/ios/RNSkia-iOS/SkiaMetalSurfaceFactory.mm +20 -4
- package/lib/commonjs/renderer/HostConfig.js.map +1 -1
- package/lib/commonjs/skia/types/Paragraph/TextStyle.d.ts +2 -2
- package/lib/commonjs/skia/types/Paragraph/TextStyle.js.map +1 -1
- package/lib/commonjs/skia/types/Skia.d.ts +6 -1
- package/lib/commonjs/skia/types/Skia.js.map +1 -1
- package/lib/commonjs/skia/web/JsiSkia.js +4 -1
- package/lib/commonjs/skia/web/JsiSkia.js.map +1 -1
- package/lib/commonjs/web/WithSkiaWeb.d.ts +11 -4
- package/lib/commonjs/web/WithSkiaWeb.js +3 -2
- package/lib/commonjs/web/WithSkiaWeb.js.map +1 -1
- package/lib/module/renderer/HostConfig.js.map +1 -1
- package/lib/module/skia/types/Paragraph/TextStyle.d.ts +2 -2
- package/lib/module/skia/types/Paragraph/TextStyle.js.map +1 -1
- package/lib/module/skia/types/Skia.d.ts +6 -1
- package/lib/module/skia/types/Skia.js.map +1 -1
- package/lib/module/skia/web/JsiSkia.js +4 -1
- package/lib/module/skia/web/JsiSkia.js.map +1 -1
- package/lib/module/web/WithSkiaWeb.d.ts +11 -4
- package/lib/module/web/WithSkiaWeb.js +3 -2
- package/lib/module/web/WithSkiaWeb.js.map +1 -1
- package/lib/typescript/lib/commonjs/skia/web/JsiSkia.d.ts +1 -0
- package/lib/typescript/lib/commonjs/web/WithSkiaWeb.d.ts +2 -1
- package/lib/typescript/lib/module/skia/Skia.web.d.ts +1 -0
- package/lib/typescript/lib/module/skia/web/JsiSkia.d.ts +1 -0
- package/lib/typescript/lib/module/web/WithSkiaWeb.d.ts +2 -1
- package/lib/typescript/src/skia/types/Paragraph/TextStyle.d.ts +2 -2
- package/lib/typescript/src/skia/types/Skia.d.ts +6 -1
- package/lib/typescript/src/web/WithSkiaWeb.d.ts +11 -4
- package/libs/android/arm64-v8a/libskia.a +0 -0
- package/libs/android/arm64-v8a/libskottie.a +0 -0
- package/libs/android/arm64-v8a/libskparagraph.a +0 -0
- package/libs/android/arm64-v8a/libsksg.a +0 -0
- package/libs/android/arm64-v8a/libskshaper.a +0 -0
- package/libs/android/arm64-v8a/libskunicode_core.a +0 -0
- package/libs/android/arm64-v8a/libskunicode_icu.a +0 -0
- package/libs/android/arm64-v8a/libsvg.a +0 -0
- package/libs/android/armeabi-v7a/libskia.a +0 -0
- package/libs/android/armeabi-v7a/libskottie.a +0 -0
- package/libs/android/armeabi-v7a/libskparagraph.a +0 -0
- package/libs/android/armeabi-v7a/libsksg.a +0 -0
- package/libs/android/armeabi-v7a/libskshaper.a +0 -0
- package/libs/android/armeabi-v7a/libskunicode_core.a +0 -0
- package/libs/android/armeabi-v7a/libskunicode_icu.a +0 -0
- package/libs/android/armeabi-v7a/libsvg.a +0 -0
- package/libs/android/x86/libskia.a +0 -0
- package/libs/android/x86/libskottie.a +0 -0
- package/libs/android/x86/libskparagraph.a +0 -0
- package/libs/android/x86/libsksg.a +0 -0
- package/libs/android/x86/libskshaper.a +0 -0
- package/libs/android/x86/libskunicode_core.a +0 -0
- package/libs/android/x86/libskunicode_icu.a +0 -0
- package/libs/android/x86/libsvg.a +0 -0
- package/libs/android/x86_64/libskia.a +0 -0
- package/libs/android/x86_64/libskottie.a +0 -0
- package/libs/android/x86_64/libskparagraph.a +0 -0
- package/libs/android/x86_64/libsksg.a +0 -0
- package/libs/android/x86_64/libskshaper.a +0 -0
- package/libs/android/x86_64/libskunicode_core.a +0 -0
- package/libs/android/x86_64/libskunicode_icu.a +0 -0
- package/libs/android/x86_64/libsvg.a +0 -0
- package/libs/ios/libskia.xcframework/Info.plist +5 -5
- package/libs/ios/libskia.xcframework/ios-arm64_arm64e/libskia.a +0 -0
- package/libs/ios/libskia.xcframework/ios-arm64_arm64e_x86_64-simulator/libskia.a +0 -0
- package/libs/ios/libskottie.xcframework/Info.plist +5 -5
- package/libs/ios/libskottie.xcframework/ios-arm64_arm64e/libskottie.a +0 -0
- package/libs/ios/libskottie.xcframework/ios-arm64_arm64e_x86_64-simulator/libskottie.a +0 -0
- package/libs/ios/libskparagraph.xcframework/ios-arm64_arm64e/libskparagraph.a +0 -0
- package/libs/ios/libskparagraph.xcframework/ios-arm64_arm64e_x86_64-simulator/libskparagraph.a +0 -0
- package/libs/ios/libsksg.xcframework/Info.plist +5 -5
- package/libs/ios/libsksg.xcframework/ios-arm64_arm64e/libsksg.a +0 -0
- package/libs/ios/libsksg.xcframework/ios-arm64_arm64e_x86_64-simulator/libsksg.a +0 -0
- package/libs/ios/libskshaper.xcframework/ios-arm64_arm64e/libskshaper.a +0 -0
- package/libs/ios/libskshaper.xcframework/ios-arm64_arm64e_x86_64-simulator/libskshaper.a +0 -0
- package/libs/ios/libsvg.xcframework/Info.plist +5 -5
- package/libs/ios/libsvg.xcframework/ios-arm64_arm64e/libsvg.a +0 -0
- package/libs/ios/libsvg.xcframework/ios-arm64_arm64e_x86_64-simulator/libsvg.a +0 -0
- package/package.json +3 -5
- package/react-native-skia.podspec +2 -1
- package/src/renderer/HostConfig.ts +5 -1
- package/src/renderer/__tests__/e2e/ImageFilters.spec.tsx +5 -2
- package/src/renderer/__tests__/e2e/Paths.spec.tsx +12 -5
- package/src/renderer/__tests__/e2e/SDF.spec.tsx +1 -1
- package/src/renderer/__tests__/e2e/Snapshot.spec.tsx +1 -1
- package/src/skia/types/Paragraph/TextStyle.ts +2 -2
- package/src/skia/types/Skia.ts +7 -1
- package/src/skia/web/JsiSkia.ts +3 -0
- package/src/web/WithSkiaWeb.tsx +17 -6
- package/cpp/skia/include/core/SkDrawLooper.h +0 -135
- package/cpp/skia/include/effects/SkBlurDrawLooper.h +0 -26
- package/cpp/skia/include/effects/SkLayerDrawLooper.h +0 -161
- package/cpp/skia/include/gpu/gl/GrGLConfig_chrome.h +0 -14
- package/cpp/skia/include/gpu/vk/GrVkBackendContext.h +0 -84
- package/cpp/skia/include/gpu/vk/GrVkExtensions.h +0 -15
- package/cpp/skia/include/gpu/vk/GrVkMemoryAllocator.h +0 -15
- package/cpp/skia/include/ports/SkFontMgr_indirect.h +0 -102
- package/cpp/skia/include/ports/SkRemotableFontMgr.h +0 -139
- package/cpp/skia/include/private/base/SkFloatBits.h +0 -90
- package/cpp/skia/include/private/gpu/graphite/ContextOptionsPriv.h +0 -69
- package/cpp/skia/include/private/gpu/graphite/DawnTypesPriv.h +0 -54
- package/cpp/skia/include/private/gpu/graphite/MtlGraphiteTypesPriv.h +0 -95
- package/cpp/skia/include/private/gpu/graphite/VulkanGraphiteTypesPriv.h +0 -83
- package/cpp/skia/src/core/SkPathEnums.h +0 -25
- package/cpp/skia/src/core/SkPathPriv.h +0 -540
- package/libs/android/arm64-v8a/libskunicode.a +0 -0
- package/libs/android/armeabi-v7a/libskunicode.a +0 -0
- package/libs/android/x86/libskunicode.a +0 -0
- package/libs/android/x86_64/libskunicode.a +0 -0
- package/libs/ios/libskunicode.xcframework/Info.plist +0 -46
- package/libs/ios/libskunicode.xcframework/ios-arm64_arm64e/libskunicode.a +0 -0
- package/libs/ios/libskunicode.xcframework/ios-arm64_arm64e_x86_64-simulator/libskunicode.a +0 -0
- /package/cpp/skia/include/gpu/{gl → ganesh/gl}/glx/GrGLMakeGLXInterface.h +0 -0
|
@@ -16,7 +16,6 @@
|
|
|
16
16
|
#include "include/private/base/SkTArray.h"
|
|
17
17
|
|
|
18
18
|
#include <chrono>
|
|
19
|
-
#include <vector>
|
|
20
19
|
|
|
21
20
|
struct AHardwareBuffer;
|
|
22
21
|
class SkCanvas;
|
|
@@ -45,16 +44,18 @@ class DrawBufferManager;
|
|
|
45
44
|
class GlobalCache;
|
|
46
45
|
class ImageProvider;
|
|
47
46
|
class ProxyCache;
|
|
47
|
+
class ProxyReadCountMap;
|
|
48
48
|
class RecorderPriv;
|
|
49
49
|
class ResourceProvider;
|
|
50
50
|
class RuntimeEffectDictionary;
|
|
51
51
|
class SharedContext;
|
|
52
52
|
class Task;
|
|
53
|
-
class
|
|
53
|
+
class TaskList;
|
|
54
54
|
class TextureDataBlock;
|
|
55
55
|
class TextureInfo;
|
|
56
56
|
class UniformDataBlock;
|
|
57
57
|
class UploadBufferManager;
|
|
58
|
+
class UploadList;
|
|
58
59
|
|
|
59
60
|
template<typename T> class PipelineDataCache;
|
|
60
61
|
using UniformDataCache = PipelineDataCache<UniformDataBlock>;
|
|
@@ -88,6 +89,11 @@ public:
|
|
|
88
89
|
ImageProvider* clientImageProvider() { return fClientImageProvider.get(); }
|
|
89
90
|
const ImageProvider* clientImageProvider() const { return fClientImageProvider.get(); }
|
|
90
91
|
|
|
92
|
+
/**
|
|
93
|
+
* Gets the maximum supported texture size.
|
|
94
|
+
*/
|
|
95
|
+
int maxTextureSize() const;
|
|
96
|
+
|
|
91
97
|
/**
|
|
92
98
|
* Creates a new backend gpu texture matching the dimensions and TextureInfo. If an invalid
|
|
93
99
|
* TextureInfo or a TextureInfo Skia can't support is passed in, this will return an invalid
|
|
@@ -115,7 +121,9 @@ public:
|
|
|
115
121
|
* to insert a Recording into the Context and call `submit` to send the upload work to the gpu.
|
|
116
122
|
* The backend texture must be compatible with the provided pixmap(s). Compatible, in this case,
|
|
117
123
|
* means that the backend format is compatible with the base pixmap's colortype. The src data
|
|
118
|
-
* can be deleted when this call returns.
|
|
124
|
+
* can be deleted when this call returns. When the BackendTexture is safe to be destroyed by the
|
|
125
|
+
* client, Skia will call the passed in GpuFinishedProc. The BackendTexture should not be
|
|
126
|
+
* destroyed before that.
|
|
119
127
|
* If the backend texture is mip mapped, the data for all the mipmap levels must be provided.
|
|
120
128
|
* In the mipmapped case all the colortypes of the provided pixmaps must be the same.
|
|
121
129
|
* Additionally, all the miplevels must be sized correctly (please see
|
|
@@ -126,7 +134,27 @@ public:
|
|
|
126
134
|
*/
|
|
127
135
|
bool updateBackendTexture(const BackendTexture&,
|
|
128
136
|
const SkPixmap srcData[],
|
|
129
|
-
int numLevels
|
|
137
|
+
int numLevels,
|
|
138
|
+
GpuFinishedProc = nullptr,
|
|
139
|
+
GpuFinishedContext = nullptr);
|
|
140
|
+
|
|
141
|
+
/**
|
|
142
|
+
* If possible, updates a compressed backend texture filled with the provided raw data. The
|
|
143
|
+
* client should check the return value to see if the update was successful. The client is
|
|
144
|
+
* required to insert a Recording into the Context and call `submit` to send the upload work to
|
|
145
|
+
* the gpu. When the BackendTexture is safe to be destroyed by the client, Skia will call the
|
|
146
|
+
* passed in GpuFinishedProc. The BackendTexture should not be destroyed before that.
|
|
147
|
+
* If the backend texture is mip mapped, the data for all the mipmap levels must be provided.
|
|
148
|
+
* Additionally, all the miplevels must be sized correctly (please see
|
|
149
|
+
* SkMipMap::ComputeLevelSize and ComputeLevelCount).
|
|
150
|
+
* For the Vulkan backend after a successful update the layout of the created VkImage will be:
|
|
151
|
+
* VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL
|
|
152
|
+
*/
|
|
153
|
+
bool updateCompressedBackendTexture(const BackendTexture&,
|
|
154
|
+
const void* data,
|
|
155
|
+
size_t dataSize,
|
|
156
|
+
GpuFinishedProc = nullptr,
|
|
157
|
+
GpuFinishedContext = nullptr);
|
|
130
158
|
|
|
131
159
|
/**
|
|
132
160
|
* Called to delete the passed in BackendTexture. This should only be called if the
|
|
@@ -167,10 +195,21 @@ public:
|
|
|
167
195
|
void performDeferredCleanup(std::chrono::milliseconds msNotUsed);
|
|
168
196
|
|
|
169
197
|
/**
|
|
170
|
-
* Returns the number of bytes of gpu memory
|
|
198
|
+
* Returns the number of bytes of the Recorder's gpu memory cache budget that are currently in
|
|
199
|
+
* use.
|
|
171
200
|
*/
|
|
172
201
|
size_t currentBudgetedBytes() const;
|
|
173
202
|
|
|
203
|
+
/**
|
|
204
|
+
* Returns the number of bytes of the Recorder's resource cache that are currently purgeable.
|
|
205
|
+
*/
|
|
206
|
+
size_t currentPurgeableBytes() const;
|
|
207
|
+
|
|
208
|
+
/**
|
|
209
|
+
* Returns the size of Recorder's gpu memory cache budget in bytes.
|
|
210
|
+
*/
|
|
211
|
+
size_t maxBudgetedBytes() const;
|
|
212
|
+
|
|
174
213
|
/**
|
|
175
214
|
* Enumerates all cached GPU resources owned by the Recorder and dumps their memory to
|
|
176
215
|
* traceMemoryDump.
|
|
@@ -186,7 +225,9 @@ private:
|
|
|
186
225
|
friend class Device; // For registering and deregistering Devices;
|
|
187
226
|
friend class RecorderPriv; // for ctor and hidden methods
|
|
188
227
|
|
|
189
|
-
Recorder
|
|
228
|
+
// If Context is non-null, the Recorder will use the Context's resource provider
|
|
229
|
+
// instead of creating its own.
|
|
230
|
+
Recorder(sk_sp<SharedContext>, const RecorderOptions&, const Context*);
|
|
190
231
|
|
|
191
232
|
SingleOwner* singleOwner() const { return &fSingleOwner; }
|
|
192
233
|
|
|
@@ -196,9 +237,10 @@ private:
|
|
|
196
237
|
// SkSurface/Device first we will flush all the Device's into the Recorder before deregistering
|
|
197
238
|
// it from the Recorder.
|
|
198
239
|
//
|
|
199
|
-
// We
|
|
200
|
-
//
|
|
201
|
-
//
|
|
240
|
+
// We take a ref on the Device so that ~Device() does not have to deregister the recorder
|
|
241
|
+
// (which can happen on any thread if the Device outlives the Surface via an Image view).
|
|
242
|
+
// Recorder::flushTrackedDevices() cleans up uniquely held and immutable Devices on the recorder
|
|
243
|
+
// thread so this extra ref is not significantly increasing the Device lifetime.
|
|
202
244
|
//
|
|
203
245
|
// Note: We could probably get by with only registering Devices directly connected to
|
|
204
246
|
// SkSurfaces. All other one off Devices will be created in a controlled scope where the
|
|
@@ -207,19 +249,31 @@ private:
|
|
|
207
249
|
// then either deletes the SkSurface or Recorder before calling restore. For simplicity we just
|
|
208
250
|
// register every device for now, but if we see extra overhead in pushing back the extra
|
|
209
251
|
// pointers, we can look into only registering SkSurface Devices.
|
|
210
|
-
void registerDevice(Device
|
|
252
|
+
void registerDevice(sk_sp<Device>);
|
|
211
253
|
void deregisterDevice(const Device*);
|
|
212
254
|
|
|
213
255
|
sk_sp<SharedContext> fSharedContext;
|
|
214
|
-
|
|
256
|
+
ResourceProvider* fResourceProvider; // May point to the Context's resource provider
|
|
257
|
+
std::unique_ptr<ResourceProvider> fOwnedResourceProvider; // May be null
|
|
215
258
|
std::unique_ptr<RuntimeEffectDictionary> fRuntimeEffectDict;
|
|
216
259
|
|
|
217
|
-
|
|
260
|
+
// NOTE: These are stored by pointer to allow them to be forward declared.
|
|
261
|
+
std::unique_ptr<TaskList> fRootTaskList;
|
|
262
|
+
// Aggregated one-time uploads that preceed all tasks in the root task list.
|
|
263
|
+
std::unique_ptr<UploadList> fRootUploads;
|
|
264
|
+
|
|
218
265
|
std::unique_ptr<UniformDataCache> fUniformDataCache;
|
|
219
266
|
std::unique_ptr<TextureDataCache> fTextureDataCache;
|
|
220
267
|
std::unique_ptr<DrawBufferManager> fDrawBufferManager;
|
|
221
268
|
std::unique_ptr<UploadBufferManager> fUploadBufferManager;
|
|
222
|
-
std::
|
|
269
|
+
std::unique_ptr<ProxyReadCountMap> fProxyReadCounts;
|
|
270
|
+
|
|
271
|
+
// Iterating over tracked devices in flushTrackedDevices() needs to be re-entrant and support
|
|
272
|
+
// additions to fTrackedDevices if registerDevice() is triggered by a temporary device during
|
|
273
|
+
// flushing. Removals are handled by setting elements to null; final clean up is handled at the
|
|
274
|
+
// end of the initial call to flushTrackedDevices().
|
|
275
|
+
skia_private::TArray<sk_sp<Device>> fTrackedDevices;
|
|
276
|
+
int fFlushingDevicesIndex = -1;
|
|
223
277
|
|
|
224
278
|
uint32_t fUniqueID; // Needed for MessageBox handling for text
|
|
225
279
|
uint32_t fNextRecordingID = 1;
|
|
@@ -240,7 +294,7 @@ private:
|
|
|
240
294
|
|
|
241
295
|
skia_private::TArray<sk_sp<RefCntedCallback>> fFinishedProcs;
|
|
242
296
|
|
|
243
|
-
#if defined(
|
|
297
|
+
#if defined(GPU_TEST_UTILS)
|
|
244
298
|
// For testing use only -- the Context used to create this Recorder
|
|
245
299
|
Context* fContext = nullptr;
|
|
246
300
|
#endif
|
|
@@ -25,7 +25,7 @@ class CommandBuffer;
|
|
|
25
25
|
class RecordingPriv;
|
|
26
26
|
class Resource;
|
|
27
27
|
class ResourceProvider;
|
|
28
|
-
class
|
|
28
|
+
class TaskList;
|
|
29
29
|
class Texture;
|
|
30
30
|
class TextureInfo;
|
|
31
31
|
class TextureProxy;
|
|
@@ -62,7 +62,6 @@ private:
|
|
|
62
62
|
|
|
63
63
|
Recording(uint32_t uniqueID,
|
|
64
64
|
uint32_t recorderID,
|
|
65
|
-
std::unique_ptr<TaskGraph>,
|
|
66
65
|
std::unordered_set<sk_sp<TextureProxy>, ProxyHash>&& nonVolatileLazyProxies,
|
|
67
66
|
std::unordered_set<sk_sp<TextureProxy>, ProxyHash>&& volatileLazyProxies,
|
|
68
67
|
std::unique_ptr<LazyProxyData> targetProxyData,
|
|
@@ -75,7 +74,8 @@ private:
|
|
|
75
74
|
uint32_t fUniqueID;
|
|
76
75
|
uint32_t fRecorderID;
|
|
77
76
|
|
|
78
|
-
|
|
77
|
+
// This is held by a pointer instead of being inline to allow TaskList to be forward declared.
|
|
78
|
+
std::unique_ptr<TaskList> fRootTaskList;
|
|
79
79
|
// We don't always take refs to all resources used by specific Tasks (e.g. a common buffer used
|
|
80
80
|
// for uploads). Instead we'll just hold onto one ref for those Resources outside the Tasks.
|
|
81
81
|
// Those refs are stored in the array here and will eventually be passed onto a CommandBuffer
|
|
@@ -12,6 +12,8 @@
|
|
|
12
12
|
#include "include/core/SkSurface.h"
|
|
13
13
|
#include "include/gpu/GpuTypes.h"
|
|
14
14
|
|
|
15
|
+
#include <string_view>
|
|
16
|
+
|
|
15
17
|
class SkImage;
|
|
16
18
|
struct SkImageInfo;
|
|
17
19
|
|
|
@@ -59,7 +61,8 @@ SK_API sk_sp<SkImage> AsImageCopy(sk_sp<const SkSurface>,
|
|
|
59
61
|
SK_API sk_sp<SkSurface> RenderTarget(skgpu::graphite::Recorder*,
|
|
60
62
|
const SkImageInfo& imageInfo,
|
|
61
63
|
skgpu::Mipmapped = skgpu::Mipmapped::kNo,
|
|
62
|
-
const SkSurfaceProps* surfaceProps = nullptr
|
|
64
|
+
const SkSurfaceProps* surfaceProps = nullptr,
|
|
65
|
+
std::string_view label = {});
|
|
63
66
|
|
|
64
67
|
/**
|
|
65
68
|
* Wraps a GPU-backed texture in an SkSurface. Depending on the backend gpu API, the caller may
|
|
@@ -80,7 +83,8 @@ SK_API sk_sp<SkSurface> WrapBackendTexture(skgpu::graphite::Recorder*,
|
|
|
80
83
|
sk_sp<SkColorSpace> colorSpace,
|
|
81
84
|
const SkSurfaceProps* props,
|
|
82
85
|
TextureReleaseProc = nullptr,
|
|
83
|
-
ReleaseContext = nullptr
|
|
86
|
+
ReleaseContext = nullptr,
|
|
87
|
+
std::string_view label = {});
|
|
84
88
|
} // namespace SkSurfaces
|
|
85
89
|
|
|
86
90
|
#endif // skgpu_graphite_Surface_DEFINED
|
|
@@ -9,63 +9,22 @@
|
|
|
9
9
|
#define skgpu_graphite_TextureInfo_DEFINED
|
|
10
10
|
|
|
11
11
|
#include "include/core/SkString.h"
|
|
12
|
+
#include "include/core/SkTextureCompressionType.h"
|
|
12
13
|
#include "include/gpu/graphite/GraphiteTypes.h"
|
|
13
|
-
|
|
14
|
-
#
|
|
15
|
-
#include "include/private/gpu/graphite/DawnTypesPriv.h"
|
|
16
|
-
#endif
|
|
17
|
-
|
|
18
|
-
#ifdef SK_METAL
|
|
19
|
-
#include "include/private/gpu/graphite/MtlGraphiteTypesPriv.h"
|
|
20
|
-
#endif
|
|
21
|
-
|
|
22
|
-
#ifdef SK_VULKAN
|
|
23
|
-
#include "include/private/gpu/graphite/VulkanGraphiteTypesPriv.h"
|
|
24
|
-
#endif
|
|
14
|
+
#include "include/private/base/SkAPI.h"
|
|
15
|
+
#include "include/private/base/SkAnySubclass.h"
|
|
25
16
|
|
|
26
17
|
struct SkISize;
|
|
27
18
|
|
|
28
19
|
namespace skgpu::graphite {
|
|
29
20
|
|
|
21
|
+
class TextureInfoData;
|
|
22
|
+
|
|
30
23
|
class SK_API TextureInfo {
|
|
31
24
|
public:
|
|
32
|
-
TextureInfo()
|
|
33
|
-
|
|
34
|
-
TextureInfo(const
|
|
35
|
-
: fBackend(BackendApi::kDawn)
|
|
36
|
-
, fValid(true)
|
|
37
|
-
, fSampleCount(dawnInfo.fSampleCount)
|
|
38
|
-
, fMipmapped(dawnInfo.fMipmapped)
|
|
39
|
-
, fProtected(Protected::kNo)
|
|
40
|
-
, fDawnSpec(dawnInfo) {}
|
|
41
|
-
#endif
|
|
42
|
-
|
|
43
|
-
#ifdef SK_METAL
|
|
44
|
-
TextureInfo(const MtlTextureInfo& mtlInfo)
|
|
45
|
-
: fBackend(BackendApi::kMetal)
|
|
46
|
-
, fValid(true)
|
|
47
|
-
, fSampleCount(mtlInfo.fSampleCount)
|
|
48
|
-
, fMipmapped(mtlInfo.fMipmapped)
|
|
49
|
-
, fProtected(Protected::kNo)
|
|
50
|
-
, fMtlSpec(mtlInfo) {}
|
|
51
|
-
#endif
|
|
52
|
-
|
|
53
|
-
#ifdef SK_VULKAN
|
|
54
|
-
TextureInfo(const VulkanTextureInfo& vkInfo)
|
|
55
|
-
: fBackend(BackendApi::kVulkan)
|
|
56
|
-
, fValid(true)
|
|
57
|
-
, fSampleCount(vkInfo.fSampleCount)
|
|
58
|
-
, fMipmapped(vkInfo.fMipmapped)
|
|
59
|
-
, fProtected(Protected::kNo)
|
|
60
|
-
, fVkSpec(vkInfo) {
|
|
61
|
-
if (vkInfo.fFlags & VK_IMAGE_CREATE_PROTECTED_BIT) {
|
|
62
|
-
fProtected = Protected::kYes;
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
#endif
|
|
66
|
-
|
|
67
|
-
~TextureInfo() {}
|
|
68
|
-
TextureInfo(const TextureInfo&) = default;
|
|
25
|
+
TextureInfo();
|
|
26
|
+
~TextureInfo();
|
|
27
|
+
TextureInfo(const TextureInfo&);
|
|
69
28
|
TextureInfo& operator=(const TextureInfo&);
|
|
70
29
|
|
|
71
30
|
bool operator==(const TextureInfo&) const;
|
|
@@ -77,71 +36,42 @@ public:
|
|
|
77
36
|
uint32_t numSamples() const { return fSampleCount; }
|
|
78
37
|
Mipmapped mipmapped() const { return fMipmapped; }
|
|
79
38
|
Protected isProtected() const { return fProtected; }
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
bool getDawnTextureInfo(DawnTextureInfo* info) const;
|
|
83
|
-
#endif
|
|
84
|
-
|
|
85
|
-
#ifdef SK_METAL
|
|
86
|
-
bool getMtlTextureInfo(MtlTextureInfo* info) const {
|
|
87
|
-
if (!this->isValid() || fBackend != BackendApi::kMetal) {
|
|
88
|
-
return false;
|
|
89
|
-
}
|
|
90
|
-
*info = MtlTextureSpecToTextureInfo(fMtlSpec, fSampleCount, fMipmapped);
|
|
91
|
-
return true;
|
|
92
|
-
}
|
|
93
|
-
#endif
|
|
94
|
-
|
|
95
|
-
#ifdef SK_VULKAN
|
|
96
|
-
bool getVulkanTextureInfo(VulkanTextureInfo* info) const {
|
|
97
|
-
if (!this->isValid() || fBackend != BackendApi::kVulkan) {
|
|
98
|
-
return false;
|
|
99
|
-
}
|
|
100
|
-
*info = VulkanTextureSpecToTextureInfo(fVkSpec, fSampleCount, fMipmapped);
|
|
101
|
-
return true;
|
|
102
|
-
}
|
|
103
|
-
#endif
|
|
39
|
+
SkTextureCompressionType compressionType() const;
|
|
40
|
+
bool isMemoryless() const;
|
|
104
41
|
|
|
105
42
|
bool isCompatible(const TextureInfo& that) const;
|
|
43
|
+
// Return a string containing the full description of this TextureInfo.
|
|
106
44
|
SkString toString() const;
|
|
45
|
+
// Return a string containing only the info relevant for its use as a RenderPass attachment.
|
|
46
|
+
SkString toRPAttachmentString() const;
|
|
107
47
|
|
|
108
48
|
private:
|
|
49
|
+
friend class TextureInfoData;
|
|
50
|
+
friend class TextureInfoPriv;
|
|
51
|
+
|
|
52
|
+
// Size determined by looking at the TextureInfoData subclasses, then guessing-and-checking.
|
|
53
|
+
// Compiler will complain if this is too small - in that case, just increase the number.
|
|
54
|
+
inline constexpr static size_t kMaxSubclassSize = 112;
|
|
55
|
+
using AnyTextureInfoData = SkAnySubclass<TextureInfoData, kMaxSubclassSize>;
|
|
56
|
+
|
|
57
|
+
template <typename SomeTextureInfoData>
|
|
58
|
+
TextureInfo(BackendApi backend,
|
|
59
|
+
uint32_t sampleCount,
|
|
60
|
+
skgpu::Mipmapped mipped,
|
|
61
|
+
skgpu::Protected isProtected,
|
|
62
|
+
const SomeTextureInfoData& textureInfoData)
|
|
63
|
+
: fBackend(backend)
|
|
64
|
+
, fValid(true)
|
|
65
|
+
, fSampleCount(sampleCount)
|
|
66
|
+
, fMipmapped(mipped)
|
|
67
|
+
, fProtected(isProtected) {
|
|
68
|
+
fTextureInfoData.emplace<SomeTextureInfoData>(textureInfoData);
|
|
69
|
+
}
|
|
70
|
+
|
|
109
71
|
friend size_t ComputeSize(SkISize dimensions, const TextureInfo&); // for bytesPerPixel
|
|
110
72
|
|
|
111
73
|
size_t bytesPerPixel() const;
|
|
112
74
|
|
|
113
|
-
#ifdef SK_DAWN
|
|
114
|
-
friend class DawnCaps;
|
|
115
|
-
friend class DawnCommandBuffer;
|
|
116
|
-
friend class DawnComputePipeline;
|
|
117
|
-
friend class DawnGraphicsPipeline;
|
|
118
|
-
friend class DawnResourceProvider;
|
|
119
|
-
friend class DawnTexture;
|
|
120
|
-
const DawnTextureSpec& dawnTextureSpec() const {
|
|
121
|
-
SkASSERT(fValid && fBackend == BackendApi::kDawn);
|
|
122
|
-
return fDawnSpec;
|
|
123
|
-
}
|
|
124
|
-
#endif
|
|
125
|
-
|
|
126
|
-
#ifdef SK_METAL
|
|
127
|
-
friend class MtlCaps;
|
|
128
|
-
friend class MtlGraphicsPipeline;
|
|
129
|
-
friend class MtlTexture;
|
|
130
|
-
const MtlTextureSpec& mtlTextureSpec() const {
|
|
131
|
-
SkASSERT(fValid && fBackend == BackendApi::kMetal);
|
|
132
|
-
return fMtlSpec;
|
|
133
|
-
}
|
|
134
|
-
#endif
|
|
135
|
-
|
|
136
|
-
#ifdef SK_VULKAN
|
|
137
|
-
friend class VulkanCaps;
|
|
138
|
-
friend class VulkanTexture;
|
|
139
|
-
const VulkanTextureSpec& vulkanTextureSpec() const {
|
|
140
|
-
SkASSERT(fValid && fBackend == BackendApi::kVulkan);
|
|
141
|
-
return fVkSpec;
|
|
142
|
-
}
|
|
143
|
-
#endif
|
|
144
|
-
|
|
145
75
|
BackendApi fBackend = BackendApi::kMock;
|
|
146
76
|
bool fValid = false;
|
|
147
77
|
|
|
@@ -149,18 +79,7 @@ private:
|
|
|
149
79
|
Mipmapped fMipmapped = Mipmapped::kNo;
|
|
150
80
|
Protected fProtected = Protected::kNo;
|
|
151
81
|
|
|
152
|
-
|
|
153
|
-
#ifdef SK_DAWN
|
|
154
|
-
DawnTextureSpec fDawnSpec;
|
|
155
|
-
#endif
|
|
156
|
-
#ifdef SK_METAL
|
|
157
|
-
MtlTextureSpec fMtlSpec;
|
|
158
|
-
#endif
|
|
159
|
-
#ifdef SK_VULKAN
|
|
160
|
-
VulkanTextureSpec fVkSpec;
|
|
161
|
-
#endif
|
|
162
|
-
void* fEnsureUnionNonEmpty;
|
|
163
|
-
};
|
|
82
|
+
AnyTextureInfoData fTextureInfoData;
|
|
164
83
|
};
|
|
165
84
|
|
|
166
85
|
} // namespace skgpu::graphite
|
|
@@ -8,37 +8,139 @@
|
|
|
8
8
|
#ifndef skgpu_graphite_DawnTypes_DEFINED
|
|
9
9
|
#define skgpu_graphite_DawnTypes_DEFINED
|
|
10
10
|
|
|
11
|
+
#include "include/core/SkSize.h"
|
|
11
12
|
#include "include/gpu/graphite/GraphiteTypes.h"
|
|
13
|
+
#include "include/private/base/SkAPI.h"
|
|
14
|
+
|
|
12
15
|
#include "webgpu/webgpu_cpp.h" // NO_G3_REWRITE
|
|
13
16
|
|
|
14
17
|
namespace skgpu::graphite {
|
|
18
|
+
class BackendTexture;
|
|
19
|
+
class TextureInfo;
|
|
15
20
|
|
|
16
21
|
struct DawnTextureInfo {
|
|
17
22
|
uint32_t fSampleCount = 1;
|
|
18
23
|
Mipmapped fMipmapped = Mipmapped::kNo;
|
|
19
24
|
|
|
20
25
|
// wgpu::TextureDescriptor properties
|
|
21
|
-
// `fFormat` for multiplanar formats corresponds to the plane TextureView's format.
|
|
22
26
|
wgpu::TextureFormat fFormat = wgpu::TextureFormat::Undefined;
|
|
27
|
+
// `fViewFormat` for multiplanar formats corresponds to the plane TextureView's format.
|
|
28
|
+
wgpu::TextureFormat fViewFormat = wgpu::TextureFormat::Undefined;
|
|
23
29
|
wgpu::TextureUsage fUsage = wgpu::TextureUsage::None;
|
|
24
30
|
// TODO(b/308944094): Migrate aspect information to BackendTextureViews.
|
|
25
31
|
wgpu::TextureAspect fAspect = wgpu::TextureAspect::All;
|
|
32
|
+
uint32_t fSlice = 0;
|
|
33
|
+
|
|
34
|
+
#if !defined(__EMSCRIPTEN__)
|
|
35
|
+
// The descriptor of the YCbCr info (if any) for this texture. Dawn's YCbCr
|
|
36
|
+
// sampling will be used for this texture if this info is set. Setting the
|
|
37
|
+
// info is supported only on Android and only if using Vulkan as the
|
|
38
|
+
// underlying GPU driver.
|
|
39
|
+
wgpu::YCbCrVkDescriptor fYcbcrVkDescriptor = {};
|
|
40
|
+
#endif
|
|
41
|
+
|
|
42
|
+
wgpu::TextureFormat getViewFormat() const {
|
|
43
|
+
return fViewFormat != wgpu::TextureFormat::Undefined ? fViewFormat : fFormat;
|
|
44
|
+
}
|
|
26
45
|
|
|
27
46
|
DawnTextureInfo() = default;
|
|
28
|
-
|
|
47
|
+
|
|
29
48
|
DawnTextureInfo(uint32_t sampleCount,
|
|
30
49
|
Mipmapped mipmapped,
|
|
31
|
-
wgpu::TextureFormat
|
|
50
|
+
wgpu::TextureFormat format,
|
|
32
51
|
wgpu::TextureUsage usage,
|
|
33
52
|
wgpu::TextureAspect aspect)
|
|
53
|
+
: DawnTextureInfo(sampleCount,
|
|
54
|
+
mipmapped,
|
|
55
|
+
/*format=*/format,
|
|
56
|
+
/*viewFormat=*/format,
|
|
57
|
+
usage,
|
|
58
|
+
aspect,
|
|
59
|
+
/*slice=*/0) {}
|
|
60
|
+
|
|
61
|
+
DawnTextureInfo(uint32_t sampleCount,
|
|
62
|
+
Mipmapped mipmapped,
|
|
63
|
+
wgpu::TextureFormat format,
|
|
64
|
+
wgpu::TextureFormat viewFormat,
|
|
65
|
+
wgpu::TextureUsage usage,
|
|
66
|
+
wgpu::TextureAspect aspect,
|
|
67
|
+
uint32_t slice)
|
|
68
|
+
: fSampleCount(sampleCount)
|
|
69
|
+
, fMipmapped(mipmapped)
|
|
70
|
+
, fFormat(format)
|
|
71
|
+
, fViewFormat(viewFormat)
|
|
72
|
+
, fUsage(usage)
|
|
73
|
+
, fAspect(aspect)
|
|
74
|
+
, fSlice(slice) {}
|
|
75
|
+
|
|
76
|
+
#if !defined(__EMSCRIPTEN__)
|
|
77
|
+
DawnTextureInfo(uint32_t sampleCount,
|
|
78
|
+
Mipmapped mipmapped,
|
|
79
|
+
wgpu::TextureFormat format,
|
|
80
|
+
wgpu::TextureFormat viewFormat,
|
|
81
|
+
wgpu::TextureUsage usage,
|
|
82
|
+
wgpu::TextureAspect aspect,
|
|
83
|
+
uint32_t slice,
|
|
84
|
+
wgpu::YCbCrVkDescriptor ycbcrVkDescriptor)
|
|
34
85
|
: fSampleCount(sampleCount)
|
|
35
86
|
, fMipmapped(mipmapped)
|
|
36
|
-
, fFormat(
|
|
87
|
+
, fFormat(format)
|
|
88
|
+
, fViewFormat(viewFormat)
|
|
37
89
|
, fUsage(usage)
|
|
38
|
-
, fAspect(aspect)
|
|
90
|
+
, fAspect(aspect)
|
|
91
|
+
, fSlice(slice)
|
|
92
|
+
, fYcbcrVkDescriptor(ycbcrVkDescriptor) {}
|
|
93
|
+
#endif
|
|
39
94
|
};
|
|
40
95
|
|
|
41
|
-
|
|
96
|
+
namespace TextureInfos {
|
|
97
|
+
SK_API TextureInfo MakeDawn(const DawnTextureInfo& dawnInfo);
|
|
98
|
+
|
|
99
|
+
SK_API bool GetDawnTextureInfo(const TextureInfo&, DawnTextureInfo*);
|
|
100
|
+
} // namespace TextureInfos
|
|
101
|
+
|
|
102
|
+
namespace BackendTextures {
|
|
103
|
+
// Create a BackendTexture from a WGPUTexture. Texture info will be queried from the texture.
|
|
104
|
+
//
|
|
105
|
+
// This is the recommended way of specifying a BackendTexture for Dawn. See the note below on
|
|
106
|
+
// the constructor that takes a WGPUTextureView for a fuller explanation.
|
|
107
|
+
//
|
|
108
|
+
// The BackendTexture will not call retain or release on the passed in WGPUTexture. Thus, the
|
|
109
|
+
// client must keep the WGPUTexture valid until they are no longer using the BackendTexture.
|
|
110
|
+
// However, any SkImage or SkSurface that wraps the BackendTexture *will* retain and release
|
|
111
|
+
// the WGPUTexture.
|
|
112
|
+
SK_API BackendTexture MakeDawn(WGPUTexture);
|
|
113
|
+
|
|
114
|
+
// Create a BackendTexture from a WGPUTexture. Texture planeDimensions, plane aspect and
|
|
115
|
+
// info have to be provided. This is intended to be used only when accessing a plane
|
|
116
|
+
// of a WGPUTexture.
|
|
117
|
+
//
|
|
118
|
+
// The BackendTexture will not call retain or release on the passed in WGPUTexture. Thus, the
|
|
119
|
+
// client must keep the WGPUTexture valid until they are no longer using the BackendTexture.
|
|
120
|
+
// However, any SkImage or SkSurface that wraps the BackendTexture *will* retain and release
|
|
121
|
+
// the WGPUTexture.
|
|
122
|
+
SK_API BackendTexture MakeDawn(SkISize planeDimensions, const DawnTextureInfo&, WGPUTexture);
|
|
123
|
+
|
|
124
|
+
// Create a BackendTexture from a WGPUTextureView. Texture dimensions and
|
|
125
|
+
// info have to be provided.
|
|
126
|
+
//
|
|
127
|
+
// Using a WGPUTextureView rather than a WGPUTexture is less effecient for operations that
|
|
128
|
+
// require buffer transfers to or from the texture (e.g. methods on graphite::Context that read
|
|
129
|
+
// pixels or SkSurface::writePixels). In such cases an intermediate copy to or from a
|
|
130
|
+
// WGPUTexture is required. Thus, it is recommended to use this functionality only for cases
|
|
131
|
+
// where a WGPUTexture is unavailable, in particular when using wgpu::SwapChain.
|
|
132
|
+
//
|
|
133
|
+
// The BackendTexture will not call retain or release on the passed in WGPUTextureView. Thus,
|
|
134
|
+
// the client must keep the WGPUTextureView valid until they are no longer using the
|
|
135
|
+
// BackendTexture. However, any SkImage or SkSurface that wraps the BackendTexture *will* retain
|
|
136
|
+
// and release the WGPUTextureView.
|
|
137
|
+
SK_API BackendTexture MakeDawn(SkISize dimensions,
|
|
138
|
+
const DawnTextureInfo& info,
|
|
139
|
+
WGPUTextureView textureView);
|
|
140
|
+
|
|
141
|
+
} // namespace BackendTextures
|
|
142
|
+
|
|
143
|
+
} // namespace skgpu::graphite
|
|
42
144
|
|
|
43
145
|
#endif // skgpu_graphite_DawnTypes_DEFINED
|
|
44
146
|
|
|
@@ -8,7 +8,10 @@
|
|
|
8
8
|
#ifndef skgpu_graphite_MtlBackendContext_DEFINED
|
|
9
9
|
#define skgpu_graphite_MtlBackendContext_DEFINED
|
|
10
10
|
|
|
11
|
-
#include "include/
|
|
11
|
+
#include "include/ports/SkCFObject.h"
|
|
12
|
+
#include "include/private/base/SkAPI.h"
|
|
13
|
+
|
|
14
|
+
#import <CoreFoundation/CoreFoundation.h>
|
|
12
15
|
|
|
13
16
|
namespace skgpu::graphite {
|
|
14
17
|
|
|
@@ -8,15 +8,18 @@
|
|
|
8
8
|
#ifndef skgpu_graphite_MtlGraphiteTypes_DEFINED
|
|
9
9
|
#define skgpu_graphite_MtlGraphiteTypes_DEFINED
|
|
10
10
|
|
|
11
|
+
#include "include/core/SkTypes.h"
|
|
12
|
+
|
|
13
|
+
#if __OBJC__ // <Metal/Metal.h> only works when compiled for Objective C
|
|
14
|
+
#include "include/gpu/graphite/BackendTexture.h"
|
|
11
15
|
#include "include/gpu/graphite/GraphiteTypes.h"
|
|
16
|
+
#include "include/gpu/graphite/TextureInfo.h"
|
|
12
17
|
#include "include/ports/SkCFObject.h"
|
|
18
|
+
#include "include/private/base/SkAPI.h"
|
|
13
19
|
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
#
|
|
17
|
-
|
|
18
|
-
#include <CoreFoundation/CoreFoundation.h>
|
|
19
|
-
#include <TargetConditionals.h>
|
|
20
|
+
#import <CoreFoundation/CoreFoundation.h>
|
|
21
|
+
#import <Metal/Metal.h>
|
|
22
|
+
#import <TargetConditionals.h>
|
|
20
23
|
|
|
21
24
|
#if TARGET_OS_SIMULATOR
|
|
22
25
|
#define SK_API_AVAILABLE_CA_METAL_LAYER SK_API_AVAILABLE(macos(10.11), ios(13.0), tvos(13.0))
|
|
@@ -24,36 +27,24 @@
|
|
|
24
27
|
#define SK_API_AVAILABLE_CA_METAL_LAYER SK_API_AVAILABLE(macos(10.11), ios(8.0), tvos(9.0))
|
|
25
28
|
#endif // TARGET_OS_SIMULATOR
|
|
26
29
|
|
|
27
|
-
#endif // __APPLE__
|
|
28
|
-
|
|
29
|
-
|
|
30
30
|
namespace skgpu::graphite {
|
|
31
31
|
|
|
32
|
-
|
|
33
|
-
* Declares typedefs for Metal types used in Graphite cpp code
|
|
34
|
-
*/
|
|
35
|
-
using MtlPixelFormat = unsigned int;
|
|
36
|
-
using MtlTextureUsage = unsigned int;
|
|
37
|
-
using MtlStorageMode = unsigned int;
|
|
38
|
-
|
|
39
|
-
struct MtlTextureInfo {
|
|
32
|
+
struct SK_API MtlTextureInfo {
|
|
40
33
|
uint32_t fSampleCount = 1;
|
|
41
34
|
skgpu::Mipmapped fMipmapped = skgpu::Mipmapped::kNo;
|
|
42
35
|
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
MtlTextureUsage fUsage = 0; // MTLTextureUsage fUsage = MTLTextureUsageUnknown;
|
|
47
|
-
MtlStorageMode fStorageMode = 0; // MTLStorageMode fStorageMode = MTLStorageModeShared;
|
|
36
|
+
MTLPixelFormat fFormat = MTLPixelFormatInvalid;
|
|
37
|
+
MTLTextureUsage fUsage = MTLTextureUsageUnknown;
|
|
38
|
+
MTLStorageMode fStorageMode = MTLStorageModeShared;
|
|
48
39
|
bool fFramebufferOnly = false;
|
|
49
40
|
|
|
50
41
|
MtlTextureInfo() = default;
|
|
51
42
|
MtlTextureInfo(CFTypeRef mtlTexture);
|
|
52
43
|
MtlTextureInfo(uint32_t sampleCount,
|
|
53
44
|
skgpu::Mipmapped mipmapped,
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
45
|
+
MTLPixelFormat format,
|
|
46
|
+
MTLTextureUsage usage,
|
|
47
|
+
MTLStorageMode storageMode,
|
|
57
48
|
bool framebufferOnly)
|
|
58
49
|
: fSampleCount(sampleCount)
|
|
59
50
|
, fMipmapped(mipmapped)
|
|
@@ -63,6 +54,31 @@ struct MtlTextureInfo {
|
|
|
63
54
|
, fFramebufferOnly(framebufferOnly) {}
|
|
64
55
|
};
|
|
65
56
|
|
|
57
|
+
namespace TextureInfos {
|
|
58
|
+
SK_API TextureInfo MakeMetal(const MtlTextureInfo&);
|
|
59
|
+
SK_API TextureInfo MakeMetal(CFTypeRef mtlTexture);
|
|
60
|
+
|
|
61
|
+
SK_API bool GetMtlTextureInfo(const TextureInfo&, MtlTextureInfo*);
|
|
62
|
+
} // namespace TextureInfos
|
|
63
|
+
|
|
64
|
+
namespace BackendTextures {
|
|
65
|
+
// The BackendTexture will not call retain or release on the passed in CFTypeRef. Thus the
|
|
66
|
+
// client must keep the CFTypeRef valid until they are no longer using the BackendTexture.
|
|
67
|
+
SK_API BackendTexture MakeMetal(SkISize dimensions, CFTypeRef mtlTexture);
|
|
68
|
+
|
|
69
|
+
SK_API CFTypeRef GetMtlTexture(const BackendTexture&);
|
|
70
|
+
} // namespace BackendTextures
|
|
71
|
+
|
|
72
|
+
namespace BackendSemaphores {
|
|
73
|
+
// TODO(b/286088355) Determine creator's responsibility for setting refcnt.
|
|
74
|
+
SK_API BackendSemaphore MakeMetal(CFTypeRef mtlEvent, uint64_t value);
|
|
75
|
+
|
|
76
|
+
SK_API CFTypeRef GetMtlEvent(const BackendSemaphore&);
|
|
77
|
+
SK_API uint64_t GetMtlValue(const BackendSemaphore&);
|
|
78
|
+
} // namespace BackendSemaphores
|
|
79
|
+
|
|
66
80
|
} // namespace skgpu::graphite
|
|
67
81
|
|
|
82
|
+
#endif // __OBJC__
|
|
83
|
+
|
|
68
84
|
#endif // skgpu_graphite_MtlGraphiteTypes_DEFINED
|