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