@shopify/react-native-skia 0.1.158 → 0.1.160
Sign up to get free protection for your applications and to get access to all the features.
- package/android/CMakeLists.txt +35 -11
- package/android/build.gradle +21 -25
- package/android/cpp/jni/JniLoad.cpp +2 -0
- package/android/cpp/jni/include/JniSkiaDomView.h +89 -0
- package/android/cpp/rnskia-android/SkiaOpenGLRenderer.cpp +4 -3
- package/android/cpp/rnskia-android/SkiaOpenGLRenderer.h +4 -3
- package/android/src/main/java/com/shopify/reactnative/skia/RNSkiaPackage.java +2 -1
- package/android/src/main/java/com/shopify/reactnative/skia/SkiaDomView.java +45 -0
- package/android/src/main/java/com/shopify/reactnative/skia/SkiaDomViewManager.java +64 -0
- package/cpp/api/JsiSkHostObjects.h +6 -0
- package/cpp/api/JsiSkImageFilterFactory.h +1 -1
- package/cpp/api/JsiSkPaint.h +9 -2
- package/cpp/api/JsiSkPath.h +1 -0
- package/cpp/api/JsiSkRuntimeEffect.h +36 -36
- package/cpp/jsi/JsiHostObject.cpp +16 -28
- package/cpp/jsi/JsiHostObject.h +127 -7
- package/cpp/jsi/JsiValue.cpp +346 -0
- package/cpp/jsi/JsiValue.h +222 -0
- package/cpp/jsi/JsiValueWrapper.h +33 -5
- package/cpp/rnskia/RNSkDomView.cpp +222 -0
- package/cpp/rnskia/RNSkDomView.h +140 -0
- package/cpp/rnskia/RNSkJsView.cpp +0 -4
- package/cpp/rnskia/RNSkJsView.h +6 -4
- package/cpp/rnskia/RNSkManager.cpp +7 -0
- package/cpp/rnskia/RNSkPictureView.h +5 -8
- package/cpp/rnskia/RNSkView.h +113 -5
- package/cpp/rnskia/dom/JsiDomApi.h +167 -0
- package/cpp/rnskia/dom/base/BaseNodeProp.h +72 -0
- package/cpp/rnskia/dom/base/DerivedNodeProp.h +187 -0
- package/cpp/rnskia/dom/base/DrawingContext.cpp +227 -0
- package/cpp/rnskia/dom/base/DrawingContext.h +136 -0
- package/cpp/rnskia/dom/base/JsiDependencyManager.h +293 -0
- package/cpp/rnskia/dom/base/JsiDomDeclarationNode.h +176 -0
- package/cpp/rnskia/dom/base/JsiDomDrawingNode.h +50 -0
- package/cpp/rnskia/dom/base/JsiDomNode.h +384 -0
- package/cpp/rnskia/dom/base/JsiDomRenderNode.h +267 -0
- package/cpp/rnskia/dom/base/NodeProp.h +130 -0
- package/cpp/rnskia/dom/base/NodePropsContainer.h +119 -0
- package/cpp/rnskia/dom/nodes/JsiBackdropFilterNode.h +38 -0
- package/cpp/rnskia/dom/nodes/JsiBlendNode.h +112 -0
- package/cpp/rnskia/dom/nodes/JsiBlurMaskNode.h +78 -0
- package/cpp/rnskia/dom/nodes/JsiBoxNode.h +104 -0
- package/cpp/rnskia/dom/nodes/JsiBoxShadowNode.h +33 -0
- package/cpp/rnskia/dom/nodes/JsiCircleNode.h +38 -0
- package/cpp/rnskia/dom/nodes/JsiColorFilterNodes.h +192 -0
- package/cpp/rnskia/dom/nodes/JsiCustomDrawingNode.h +123 -0
- package/cpp/rnskia/dom/nodes/JsiDiffRectNode.h +42 -0
- package/cpp/rnskia/dom/nodes/JsiFillNode.h +22 -0
- package/cpp/rnskia/dom/nodes/JsiGlyphsNode.h +56 -0
- package/cpp/rnskia/dom/nodes/JsiGroupNode.h +26 -0
- package/cpp/rnskia/dom/nodes/JsiImageFilterNodes.h +415 -0
- package/cpp/rnskia/dom/nodes/JsiImageNode.h +34 -0
- package/cpp/rnskia/dom/nodes/JsiImageSvgNode.h +44 -0
- package/cpp/rnskia/dom/nodes/JsiLayerNode.h +64 -0
- package/cpp/rnskia/dom/nodes/JsiLineNode.h +43 -0
- package/cpp/rnskia/dom/nodes/JsiOvalNode.h +34 -0
- package/cpp/rnskia/dom/nodes/JsiPaintNode.h +79 -0
- package/cpp/rnskia/dom/nodes/JsiPatchNode.h +54 -0
- package/cpp/rnskia/dom/nodes/JsiPathEffectNodes.h +315 -0
- package/cpp/rnskia/dom/nodes/JsiPathNode.h +181 -0
- package/cpp/rnskia/dom/nodes/JsiPictureNode.h +32 -0
- package/cpp/rnskia/dom/nodes/JsiPointsNode.h +51 -0
- package/cpp/rnskia/dom/nodes/JsiRRectNode.h +34 -0
- package/cpp/rnskia/dom/nodes/JsiRectNode.h +34 -0
- package/cpp/rnskia/dom/nodes/JsiShaderNodes.h +517 -0
- package/cpp/rnskia/dom/nodes/JsiTextBlobNode.h +47 -0
- package/cpp/rnskia/dom/nodes/JsiTextNode.h +54 -0
- package/cpp/rnskia/dom/nodes/JsiTextPathNode.h +32 -0
- package/cpp/rnskia/dom/nodes/JsiVerticesNode.h +43 -0
- package/cpp/rnskia/dom/props/BezierProps.h +63 -0
- package/cpp/rnskia/dom/props/BlendModeProp.h +101 -0
- package/cpp/rnskia/dom/props/BoxShadowProps.h +62 -0
- package/cpp/rnskia/dom/props/CircleProp.h +46 -0
- package/cpp/rnskia/dom/props/ClipProp.h +62 -0
- package/cpp/rnskia/dom/props/ColorProp.h +80 -0
- package/cpp/rnskia/dom/props/DrawingProp.h +33 -0
- package/cpp/rnskia/dom/props/FontProp.h +34 -0
- package/cpp/rnskia/dom/props/GlyphsProp.h +53 -0
- package/cpp/rnskia/dom/props/ImageProps.h +173 -0
- package/cpp/rnskia/dom/props/LayerProp.h +50 -0
- package/cpp/rnskia/dom/props/MatrixProp.h +33 -0
- package/cpp/rnskia/dom/props/NumbersProp.h +63 -0
- package/cpp/rnskia/dom/props/PaintProps.h +171 -0
- package/cpp/rnskia/dom/props/PathProp.h +55 -0
- package/cpp/rnskia/dom/props/PictureProp.h +38 -0
- package/cpp/rnskia/dom/props/PointProp.h +72 -0
- package/cpp/rnskia/dom/props/PointsProp.h +83 -0
- package/cpp/rnskia/dom/props/RRectProp.h +134 -0
- package/cpp/rnskia/dom/props/RadiusProp.h +43 -0
- package/cpp/rnskia/dom/props/RectProp.h +118 -0
- package/cpp/rnskia/dom/props/StrokeProps.h +75 -0
- package/cpp/rnskia/dom/props/SvgProp.h +37 -0
- package/cpp/rnskia/dom/props/TextBlobProp.h +128 -0
- package/cpp/rnskia/dom/props/TileModeProp.h +50 -0
- package/cpp/rnskia/dom/props/TransformProp.h +80 -0
- package/cpp/rnskia/dom/props/TransformsProps.h +68 -0
- package/cpp/rnskia/dom/props/UniformsProp.h +194 -0
- package/cpp/rnskia/dom/props/VertexModeProp.h +47 -0
- package/cpp/rnskia/dom/props/VerticesProps.h +67 -0
- package/cpp/rnskia/values/RNSkReadonlyValue.h +13 -4
- package/cpp/skia/include/android/SkAndroidFrameworkUtils.h +35 -1
- package/cpp/skia/include/codec/SkAndroidCodec.h +17 -1
- package/cpp/skia/include/codec/SkCodec.h +8 -5
- package/cpp/skia/include/core/SkAnnotation.h +2 -0
- package/cpp/skia/include/core/SkBitmap.h +52 -1
- package/cpp/skia/include/core/SkBlendMode.h +2 -0
- package/cpp/skia/include/core/SkCanvas.h +52 -31
- package/cpp/skia/include/core/SkCapabilities.h +44 -0
- package/cpp/skia/include/core/SkColor.h +7 -0
- package/cpp/skia/include/core/SkColorFilter.h +37 -0
- package/cpp/skia/include/core/SkColorSpace.h +1 -1
- package/cpp/skia/include/core/SkFont.h +4 -0
- package/cpp/skia/include/core/SkFontMgr.h +3 -0
- package/cpp/skia/include/core/SkGraphics.h +9 -0
- package/cpp/skia/include/core/SkImage.h +77 -17
- package/cpp/skia/include/core/SkImageEncoder.h +5 -3
- package/cpp/skia/include/core/SkImageGenerator.h +27 -17
- package/cpp/skia/include/core/SkM44.h +1 -0
- package/cpp/skia/include/core/SkMesh.h +120 -34
- package/cpp/skia/include/core/SkMilestone.h +1 -1
- package/cpp/skia/include/core/SkOverdrawCanvas.h +2 -1
- package/cpp/skia/include/core/SkPaint.h +15 -2
- package/cpp/skia/include/core/SkPath.h +4 -0
- package/cpp/skia/include/core/SkPathBuilder.h +1 -1
- package/cpp/skia/include/core/SkPicture.h +0 -3
- package/cpp/skia/include/core/SkPictureRecorder.h +0 -2
- package/cpp/skia/include/core/SkPixmap.h +19 -0
- package/cpp/skia/include/core/SkRasterHandleAllocator.h +3 -1
- package/cpp/skia/include/core/SkRect.h +11 -4
- package/cpp/skia/include/core/SkRefCnt.h +13 -1
- package/cpp/skia/include/core/SkRegion.h +6 -0
- package/cpp/skia/include/core/SkSamplingOptions.h +8 -6
- package/cpp/skia/include/core/SkScalar.h +6 -25
- package/cpp/skia/include/core/SkShader.h +20 -12
- package/cpp/skia/include/core/SkSpan.h +51 -19
- package/cpp/skia/include/core/SkStream.h +2 -2
- package/cpp/skia/include/core/SkString.h +11 -3
- package/cpp/skia/include/core/SkSurface.h +85 -8
- package/cpp/skia/include/core/SkTextBlob.h +5 -2
- package/cpp/skia/include/core/SkTypes.h +11 -10
- package/cpp/skia/include/docs/SkPDFDocument.h +0 -5
- package/cpp/skia/include/effects/Sk1DPathEffect.h +6 -1
- package/cpp/skia/include/effects/Sk2DPathEffect.h +4 -1
- package/cpp/skia/include/effects/SkColorMatrix.h +1 -0
- package/cpp/skia/include/effects/SkColorMatrixFilter.h +5 -8
- package/cpp/skia/include/effects/SkCornerPathEffect.h +5 -1
- package/cpp/skia/include/effects/SkDashPathEffect.h +5 -1
- package/cpp/skia/include/effects/SkGradientShader.h +68 -38
- package/cpp/skia/include/effects/SkHighContrastFilter.h +5 -1
- package/cpp/skia/include/effects/SkImageFilters.h +5 -4
- package/cpp/skia/include/effects/SkLumaColorFilter.h +4 -1
- package/cpp/skia/include/effects/SkOpPathEffect.h +6 -2
- package/cpp/skia/include/effects/SkOverdrawColorFilter.h +5 -2
- package/cpp/skia/include/effects/SkRuntimeEffect.h +54 -62
- package/cpp/skia/include/effects/SkShaderMaskFilter.h +3 -1
- package/cpp/skia/include/effects/SkTableColorFilter.h +8 -21
- package/cpp/skia/include/effects/SkTableMaskFilter.h +5 -1
- package/cpp/skia/include/effects/SkTrimPathEffect.h +5 -1
- package/cpp/skia/include/encode/SkEncoder.h +17 -0
- package/cpp/skia/include/encode/SkWebpEncoder.h +17 -0
- package/cpp/skia/include/gpu/GpuTypes.h +18 -0
- package/cpp/skia/include/gpu/GrBackendSurface.h +38 -17
- package/cpp/skia/include/gpu/GrBackendSurfaceMutableState.h +6 -71
- package/cpp/skia/include/gpu/GrContextOptions.h +1 -1
- package/cpp/skia/include/gpu/GrContextThreadSafeProxy.h +10 -9
- package/cpp/skia/include/gpu/GrDirectContext.h +42 -22
- package/cpp/skia/include/gpu/GrRecordingContext.h +6 -3
- package/cpp/skia/include/gpu/GrTypes.h +11 -11
- package/cpp/skia/include/gpu/MutableTextureState.h +122 -0
- package/cpp/skia/include/gpu/gl/GrGLFunctions.h +1 -0
- package/cpp/skia/include/gpu/gl/GrGLInterface.h +1 -0
- package/cpp/skia/include/gpu/graphite/BackendTexture.h +7 -0
- package/cpp/skia/include/gpu/graphite/CombinationBuilder.h +195 -0
- package/cpp/skia/include/gpu/graphite/Context.h +47 -55
- package/cpp/skia/include/gpu/graphite/ContextOptions.h +85 -0
- package/cpp/skia/include/gpu/graphite/GraphiteTypes.h +1 -17
- package/cpp/skia/include/gpu/graphite/ImageProvider.h +61 -0
- package/cpp/skia/include/gpu/graphite/Recorder.h +87 -8
- package/cpp/skia/include/gpu/graphite/Recording.h +19 -9
- package/cpp/skia/include/gpu/graphite/TextureInfo.h +40 -8
- package/cpp/skia/include/gpu/graphite/dawn/DawnBackendContext.h +25 -0
- package/cpp/skia/include/gpu/graphite/mtl/MtlBackendContext.h +3 -2
- package/cpp/skia/include/gpu/graphite/vk/VulkanGraphiteTypes.h +69 -0
- package/cpp/skia/include/gpu/mtl/MtlMemoryAllocator.h +39 -0
- package/cpp/skia/include/gpu/vk/GrVkBackendContext.h +21 -19
- package/cpp/skia/include/gpu/vk/GrVkExtensions.h +2 -50
- package/cpp/skia/include/gpu/vk/GrVkMemoryAllocator.h +2 -127
- package/cpp/skia/include/gpu/vk/GrVkTypes.h +5 -43
- package/cpp/skia/include/gpu/vk/VulkanBackendContext.h +46 -0
- package/cpp/skia/include/gpu/vk/VulkanExtensions.h +67 -0
- package/cpp/skia/include/gpu/vk/VulkanMemoryAllocator.h +116 -0
- package/cpp/skia/include/gpu/vk/VulkanTypes.h +59 -0
- package/cpp/skia/include/pathops/SkPathOps.h +1 -1
- package/cpp/skia/include/private/SkColorData.h +10 -40
- package/cpp/skia/include/private/SkEncodedInfo.h +9 -3
- package/cpp/skia/include/private/SkFloatingPoint.h +9 -6
- package/cpp/skia/include/private/SkHalf.h +5 -52
- package/cpp/skia/include/private/SkMacros.h +1 -1
- package/cpp/skia/include/private/SkMalloc.h +4 -0
- package/cpp/skia/include/private/SkPathRef.h +10 -10
- package/cpp/skia/include/private/SkSLModifiers.h +59 -23
- package/cpp/skia/include/private/SkSLProgramKind.h +1 -0
- package/cpp/skia/include/private/SkSLSymbol.h +7 -3
- package/cpp/skia/include/private/SkStringView.h +4 -0
- package/cpp/skia/include/private/SkTArray.h +21 -7
- package/cpp/skia/include/private/SkTDArray.h +173 -285
- package/cpp/skia/include/private/SkTHash.h +33 -32
- package/cpp/skia/include/private/SkTemplates.h +24 -26
- package/cpp/skia/include/private/SkVx.h +218 -135
- package/cpp/skia/include/private/chromium/GrSlug.h +3 -65
- package/cpp/skia/include/private/chromium/SkChromeRemoteGlyphCache.h +6 -3
- package/cpp/skia/include/private/chromium/Slug.h +76 -0
- package/cpp/skia/include/private/gpu/ganesh/GrTypesPriv.h +6 -1
- package/cpp/skia/include/private/gpu/ganesh/GrVkTypesPriv.h +5 -39
- package/cpp/skia/include/private/gpu/graphite/VulkanGraphiteTypesPriv.h +63 -0
- package/cpp/skia/include/{gpu/vk/GrVkVulkan.h → private/gpu/vk/SkiaVulkan.h} +2 -2
- package/cpp/skia/include/private/gpu/vk/VulkanTypesPriv.h +57 -0
- package/cpp/skia/include/sksl/DSL.h +0 -1
- package/cpp/skia/include/sksl/DSLBlock.h +4 -18
- package/cpp/skia/include/sksl/DSLCase.h +2 -8
- package/cpp/skia/include/sksl/DSLCore.h +8 -15
- package/cpp/skia/include/sksl/DSLExpression.h +51 -142
- package/cpp/skia/include/sksl/DSLFunction.h +7 -15
- package/cpp/skia/include/sksl/DSLModifiers.h +5 -2
- package/cpp/skia/include/sksl/DSLStatement.h +4 -39
- package/cpp/skia/include/sksl/DSLSymbols.h +1 -11
- package/cpp/skia/include/sksl/DSLType.h +20 -12
- package/cpp/skia/include/sksl/DSLVar.h +56 -146
- package/cpp/skia/include/sksl/SkSLErrorReporter.h +2 -15
- package/cpp/skia/include/sksl/SkSLOperator.h +62 -59
- package/cpp/skia/include/sksl/SkSLPosition.h +2 -0
- package/cpp/skia/include/sksl/SkSLVersion.h +27 -0
- package/cpp/skia/include/svg/SkSVGCanvas.h +1 -0
- package/cpp/skia/include/utils/SkAnimCodecPlayer.h +1 -1
- package/cpp/skia/include/utils/SkBase64.h +2 -0
- package/cpp/skia/include/utils/SkCustomTypeface.h +24 -11
- package/cpp/skia/include/utils/SkEventTracer.h +12 -1
- package/cpp/skia/include/utils/SkNWayCanvas.h +11 -4
- package/cpp/skia/include/utils/SkPaintFilterCanvas.h +9 -4
- package/cpp/skia/include/utils/SkParse.h +3 -0
- package/cpp/skia/include/utils/SkShadowUtils.h +2 -0
- package/cpp/skia/include/utils/SkTextUtils.h +2 -1
- package/cpp/skia/{include/third_party → modules}/skcms/skcms.h +10 -0
- package/cpp/skia/modules/skcms/skcms_internal.h +56 -0
- package/cpp/skia/modules/skcms/src/Transform_inl.h +1609 -0
- package/cpp/skia/modules/skparagraph/include/DartTypes.h +153 -0
- package/cpp/skia/modules/skparagraph/include/FontArguments.h +46 -0
- package/cpp/skia/modules/skparagraph/include/FontCollection.h +84 -0
- package/cpp/skia/modules/skparagraph/include/Metrics.h +98 -0
- package/cpp/skia/modules/skparagraph/include/Paragraph.h +111 -0
- package/cpp/skia/modules/skparagraph/include/ParagraphBuilder.h +69 -0
- package/cpp/skia/modules/skparagraph/include/ParagraphCache.h +77 -0
- package/cpp/skia/modules/skparagraph/include/ParagraphStyle.h +143 -0
- package/cpp/skia/modules/skparagraph/include/TextShadow.h +30 -0
- package/cpp/skia/modules/skparagraph/include/TextStyle.h +352 -0
- package/cpp/skia/modules/skparagraph/include/TypefaceFontProvider.h +81 -0
- package/cpp/skia/modules/svg/include/SkSVGAttributeParser.h +1 -1
- package/cpp/skia/modules/svg/include/SkSVGTypes.h +3 -3
- package/cpp/skia/src/core/SkLRUCache.h +126 -0
- package/cpp/skia/src/core/SkTInternalLList.h +302 -0
- package/cpp/utils/RNSkTimingInfo.h +1 -0
- package/ios/RNSkia-iOS/RNSkMetalCanvasProvider.h +15 -4
- package/ios/RNSkia-iOS/RNSkMetalCanvasProvider.mm +41 -55
- package/ios/RNSkia-iOS/SkiaDomViewManager.h +8 -0
- package/ios/RNSkia-iOS/SkiaDomViewManager.mm +51 -0
- package/lib/commonjs/dom/nodes/JsiSkDOM.js +56 -56
- package/lib/commonjs/dom/nodes/JsiSkDOM.js.map +1 -1
- package/lib/commonjs/dom/nodes/RenderNode.js +1 -1
- package/lib/commonjs/dom/nodes/RenderNode.js.map +1 -1
- package/lib/commonjs/renderer/Canvas.js +24 -66
- package/lib/commonjs/renderer/Canvas.js.map +1 -1
- package/lib/commonjs/renderer/DependencyManager.js +0 -5
- package/lib/commonjs/renderer/DependencyManager.js.map +1 -1
- package/lib/commonjs/renderer/HostComponents.js.map +1 -1
- package/lib/commonjs/renderer/useCanvas.js +4 -18
- package/lib/commonjs/renderer/useCanvas.js.map +1 -1
- package/lib/commonjs/views/SkiaBaseWebView.js +15 -0
- package/lib/commonjs/views/SkiaBaseWebView.js.map +1 -1
- package/lib/commonjs/views/SkiaDomView.js +152 -0
- package/lib/commonjs/views/SkiaDomView.js.map +1 -0
- package/lib/commonjs/views/SkiaDomView.web.js +55 -0
- package/lib/commonjs/views/SkiaDomView.web.js.map +1 -0
- package/lib/commonjs/views/SkiaPictureView.js +16 -2
- package/lib/commonjs/views/SkiaPictureView.js.map +1 -1
- package/lib/commonjs/views/SkiaView.js +17 -2
- package/lib/commonjs/views/SkiaView.js.map +1 -1
- package/lib/commonjs/views/index.js +13 -0
- package/lib/commonjs/views/index.js.map +1 -1
- package/lib/commonjs/views/types.js.map +1 -1
- package/lib/module/dom/nodes/JsiSkDOM.js +56 -56
- package/lib/module/dom/nodes/JsiSkDOM.js.map +1 -1
- package/lib/module/dom/nodes/RenderNode.js +1 -1
- package/lib/module/dom/nodes/RenderNode.js.map +1 -1
- package/lib/module/renderer/Canvas.js +25 -66
- package/lib/module/renderer/Canvas.js.map +1 -1
- package/lib/module/renderer/DependencyManager.js +0 -5
- package/lib/module/renderer/DependencyManager.js.map +1 -1
- package/lib/module/renderer/HostComponents.js.map +1 -1
- package/lib/module/renderer/useCanvas.js +2 -13
- package/lib/module/renderer/useCanvas.js.map +1 -1
- package/lib/module/views/SkiaBaseWebView.js +15 -0
- package/lib/module/views/SkiaBaseWebView.js.map +1 -1
- package/lib/module/views/SkiaDomView.js +128 -0
- package/lib/module/views/SkiaDomView.js.map +1 -0
- package/lib/module/views/SkiaDomView.web.js +41 -0
- package/lib/module/views/SkiaDomView.web.js.map +1 -0
- package/lib/module/views/SkiaPictureView.js +14 -2
- package/lib/module/views/SkiaPictureView.js.map +1 -1
- package/lib/module/views/SkiaView.js +15 -2
- package/lib/module/views/SkiaView.js.map +1 -1
- package/lib/module/views/index.js +1 -0
- package/lib/module/views/index.js.map +1 -1
- package/lib/module/views/types.js.map +1 -1
- package/lib/typescript/src/dom/nodes/JsiSkDOM.d.ts +57 -64
- package/lib/typescript/src/renderer/Canvas.d.ts +5 -8
- package/lib/typescript/src/renderer/DependencyManager.d.ts +0 -2
- package/lib/typescript/src/renderer/HostComponents.d.ts +66 -3
- package/lib/typescript/src/renderer/useCanvas.d.ts +0 -6
- package/lib/typescript/src/views/SkiaBaseWebView.d.ts +4 -0
- package/lib/typescript/src/views/SkiaDomView.d.ts +31 -0
- package/lib/typescript/src/views/SkiaDomView.web.d.ts +7 -0
- package/lib/typescript/src/views/index.d.ts +1 -0
- package/lib/typescript/src/views/types.d.ts +12 -2
- 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.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.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.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.a +0 -0
- package/libs/android/x86_64/libsvg.a +0 -0
- 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/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/Info.plist +42 -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/libskunicode.xcframework/Info.plist +42 -0
- 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/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 +5 -3
- package/react-native-skia.podspec +5 -2
- package/src/dom/nodes/JsiSkDOM.ts +170 -56
- package/src/dom/nodes/RenderNode.ts +1 -1
- package/src/renderer/Canvas.tsx +37 -57
- package/src/renderer/DependencyManager.tsx +0 -5
- package/src/renderer/HostComponents.ts +152 -1
- package/src/renderer/useCanvas.ts +1 -15
- package/src/views/SkiaBaseWebView.tsx +9 -0
- package/src/views/SkiaDomView.tsx +120 -0
- package/src/views/SkiaDomView.web.tsx +37 -0
- package/src/views/SkiaPictureView.tsx +10 -2
- package/src/views/SkiaView.tsx +11 -3
- package/src/views/index.ts +1 -0
- package/src/views/types.ts +19 -2
- package/cpp/jsi/JsiSimpleValueWrapper.h +0 -99
- package/cpp/skia/include/c/sk_canvas.h +0 -159
- package/cpp/skia/include/c/sk_colorspace.h +0 -25
- package/cpp/skia/include/c/sk_data.h +0 -65
- package/cpp/skia/include/c/sk_image.h +0 -71
- package/cpp/skia/include/c/sk_imageinfo.h +0 -62
- package/cpp/skia/include/c/sk_maskfilter.h +0 -47
- package/cpp/skia/include/c/sk_matrix.h +0 -49
- package/cpp/skia/include/c/sk_paint.h +0 -145
- package/cpp/skia/include/c/sk_path.h +0 -102
- package/cpp/skia/include/c/sk_picture.h +0 -70
- package/cpp/skia/include/c/sk_shader.h +0 -143
- package/cpp/skia/include/c/sk_surface.h +0 -73
- package/cpp/skia/include/c/sk_types.h +0 -278
- package/cpp/skia/include/gpu/graphite/SkStuff.h +0 -47
- package/cpp/skia/include/private/SkNx.h +0 -430
- package/cpp/skia/include/private/SkNx_neon.h +0 -713
- package/cpp/skia/include/private/SkNx_sse.h +0 -823
- package/cpp/skia/include/sksl/DSLRuntimeEffects.h +0 -32
- package/cpp/skia/include/sksl/DSLWrapper.h +0 -77
@@ -8,133 +8,8 @@
|
|
8
8
|
#ifndef GrVkMemoryAllocator_DEFINED
|
9
9
|
#define GrVkMemoryAllocator_DEFINED
|
10
10
|
|
11
|
-
#include "include/
|
12
|
-
#include "include/gpu/GrTypes.h"
|
13
|
-
#include "include/gpu/vk/GrVkTypes.h"
|
11
|
+
#include "include/gpu/vk/VulkanMemoryAllocator.h"
|
14
12
|
|
15
|
-
|
16
|
-
public:
|
17
|
-
enum class AllocationPropertyFlags {
|
18
|
-
kNone = 0,
|
19
|
-
// Allocation will be placed in its own VkDeviceMemory and not suballocated from some larger
|
20
|
-
// block.
|
21
|
-
kDedicatedAllocation = 0x1,
|
22
|
-
// Says that the backing memory can only be accessed by the device. Additionally the device
|
23
|
-
// may lazily allocate the memory. This cannot be used with buffers that will be host
|
24
|
-
// visible. Setting this flag does not guarantee that we will allocate memory that respects
|
25
|
-
// it, but we will try to prefer memory that can respect it.
|
26
|
-
kLazyAllocation = 0x2,
|
27
|
-
// The allocation will be mapped immediately and stay mapped until it is destroyed. This
|
28
|
-
// flag is only valid for buffers which are host visible (i.e. must have a usage other than
|
29
|
-
// BufferUsage::kGpuOnly).
|
30
|
-
kPersistentlyMapped = 0x4,
|
31
|
-
// Allocation can only be accessed by the device using a protected context.
|
32
|
-
kProtected = 0x8,
|
33
|
-
};
|
34
|
-
|
35
|
-
GR_DECL_BITFIELD_CLASS_OPS_FRIENDS(AllocationPropertyFlags);
|
36
|
-
|
37
|
-
enum class BufferUsage {
|
38
|
-
// Buffers that will only be accessed from the device (large const buffers). Will always be
|
39
|
-
// in device local memory.
|
40
|
-
kGpuOnly,
|
41
|
-
// Buffers that typically will be updated multiple times by the host and read on the gpu
|
42
|
-
// (e.g. uniform or vertex buffers). CPU writes will generally be sequential in the buffer
|
43
|
-
// and will try to take advantage of the write-combined nature of the gpu buffers. Thus this
|
44
|
-
// will always be mappable and coherent memory, and it will prefer to be in device local
|
45
|
-
// memory.
|
46
|
-
kCpuWritesGpuReads,
|
47
|
-
// Buffers that will be accessed on the host and copied to another GPU resource (transfer
|
48
|
-
// buffers). Will always be mappable and coherent memory.
|
49
|
-
kTransfersFromCpuToGpu,
|
50
|
-
// Buffers which are typically writted to by the GPU and then read on the host. Will always
|
51
|
-
// be mappable memory, and will prefer cached memory.
|
52
|
-
kTransfersFromGpuToCpu,
|
53
|
-
};
|
54
|
-
|
55
|
-
// DEPRECATED: Use and implement allocateImageMemory instead
|
56
|
-
virtual bool allocateMemoryForImage(VkImage, AllocationPropertyFlags, GrVkBackendMemory*) {
|
57
|
-
// The default implementation here is so clients can delete this virtual as the switch to
|
58
|
-
// the new one which returns a VkResult.
|
59
|
-
return false;
|
60
|
-
}
|
61
|
-
|
62
|
-
virtual VkResult allocateImageMemory(VkImage image, AllocationPropertyFlags flags,
|
63
|
-
GrVkBackendMemory* memory) {
|
64
|
-
bool result = this->allocateMemoryForImage(image, flags, memory);
|
65
|
-
// VK_ERROR_INITIALIZATION_FAILED is a bogus result to return from this function, but it is
|
66
|
-
// just something to return that is not VK_SUCCESS and can't be interpreted by a caller to
|
67
|
-
// mean something specific happened like device lost or oom. This will be removed once we
|
68
|
-
// update clients to implement this virtual.
|
69
|
-
return result ? VK_SUCCESS : VK_ERROR_INITIALIZATION_FAILED;
|
70
|
-
}
|
71
|
-
|
72
|
-
// DEPRECATED: Use and implement allocateBufferMemory instead
|
73
|
-
virtual bool allocateMemoryForBuffer(VkBuffer, BufferUsage, AllocationPropertyFlags,
|
74
|
-
GrVkBackendMemory*) {
|
75
|
-
// The default implementation here is so clients can delete this virtual as the switch to
|
76
|
-
// the new one which returns a VkResult.
|
77
|
-
return false;
|
78
|
-
}
|
79
|
-
|
80
|
-
virtual VkResult allocateBufferMemory(VkBuffer buffer,
|
81
|
-
BufferUsage usage,
|
82
|
-
AllocationPropertyFlags flags,
|
83
|
-
GrVkBackendMemory* memory) {
|
84
|
-
bool result = this->allocateMemoryForBuffer(buffer, usage, flags, memory);
|
85
|
-
// VK_ERROR_INITIALIZATION_FAILED is a bogus result to return from this function, but it is
|
86
|
-
// just something to return that is not VK_SUCCESS and can't be interpreted by a caller to
|
87
|
-
// mean something specific happened like device lost or oom. This will be removed once we
|
88
|
-
// update clients to implement this virtual.
|
89
|
-
return result ? VK_SUCCESS : VK_ERROR_INITIALIZATION_FAILED;
|
90
|
-
}
|
91
|
-
|
92
|
-
|
93
|
-
// Fills out the passed in GrVkAlloc struct for the passed in GrVkBackendMemory.
|
94
|
-
virtual void getAllocInfo(const GrVkBackendMemory&, GrVkAlloc*) const = 0;
|
95
|
-
|
96
|
-
// Maps the entire allocation and returns a pointer to the start of the allocation. The
|
97
|
-
// implementation may map more memory than just the allocation, but the returned pointer must
|
98
|
-
// point at the start of the memory for the requested allocation.
|
99
|
-
virtual void* mapMemory(const GrVkBackendMemory&) { return nullptr; }
|
100
|
-
virtual VkResult mapMemory(const GrVkBackendMemory& memory, void** data) {
|
101
|
-
*data = this->mapMemory(memory);
|
102
|
-
// VK_ERROR_INITIALIZATION_FAILED is a bogus result to return from this function, but it is
|
103
|
-
// just something to return that is not VK_SUCCESS and can't be interpreted by a caller to
|
104
|
-
// mean something specific happened like device lost or oom. This will be removed once we
|
105
|
-
// update clients to implement this virtual.
|
106
|
-
return *data ? VK_SUCCESS : VK_ERROR_INITIALIZATION_FAILED;
|
107
|
-
}
|
108
|
-
virtual void unmapMemory(const GrVkBackendMemory&) = 0;
|
109
|
-
|
110
|
-
// The following two calls are used for managing non-coherent memory. The offset is relative to
|
111
|
-
// the start of the allocation and not the underlying VkDeviceMemory. Additionaly the client
|
112
|
-
// must make sure that the offset + size passed in is less that or equal to the allocation size.
|
113
|
-
// It is the responsibility of the implementation to make sure all alignment requirements are
|
114
|
-
// followed. The client should not have to deal with any sort of alignment issues.
|
115
|
-
virtual void flushMappedMemory(const GrVkBackendMemory&, VkDeviceSize, VkDeviceSize) {}
|
116
|
-
virtual VkResult flushMemory(const GrVkBackendMemory& memory, VkDeviceSize offset,
|
117
|
-
VkDeviceSize size) {
|
118
|
-
this->flushMappedMemory(memory, offset, size);
|
119
|
-
return VK_SUCCESS;
|
120
|
-
}
|
121
|
-
virtual void invalidateMappedMemory(const GrVkBackendMemory&, VkDeviceSize, VkDeviceSize) {}
|
122
|
-
virtual VkResult invalidateMemory(const GrVkBackendMemory& memory, VkDeviceSize offset,
|
123
|
-
VkDeviceSize size) {
|
124
|
-
this->invalidateMappedMemory(memory, offset, size);
|
125
|
-
return VK_SUCCESS;
|
126
|
-
}
|
127
|
-
|
128
|
-
virtual void freeMemory(const GrVkBackendMemory&) = 0;
|
129
|
-
|
130
|
-
// Returns the total amount of memory that is allocated and in use by an allocation for this
|
131
|
-
// allocator.
|
132
|
-
virtual uint64_t totalUsedMemory() const = 0;
|
133
|
-
|
134
|
-
// Returns the total amount of memory that is allocated by this allocator.
|
135
|
-
virtual uint64_t totalAllocatedMemory() const = 0;
|
136
|
-
};
|
137
|
-
|
138
|
-
GR_MAKE_BITFIELD_CLASS_OPS(GrVkMemoryAllocator::AllocationPropertyFlags)
|
13
|
+
using GrVkMemoryAllocator = skgpu::VulkanMemoryAllocator;
|
139
14
|
|
140
15
|
#endif
|
@@ -9,45 +9,11 @@
|
|
9
9
|
#ifndef GrVkTypes_DEFINED
|
10
10
|
#define GrVkTypes_DEFINED
|
11
11
|
|
12
|
-
#include "include/core/SkTypes.h"
|
13
|
-
#include "include/gpu/vk/GrVkVulkan.h"
|
14
|
-
|
15
|
-
#ifndef VK_VERSION_1_1
|
16
|
-
#error Skia requires the use of Vulkan 1.1 headers
|
17
|
-
#endif
|
18
|
-
|
19
|
-
#include <functional>
|
20
12
|
#include "include/gpu/GrTypes.h"
|
13
|
+
#include "include/gpu/vk/VulkanTypes.h"
|
21
14
|
|
22
|
-
|
23
|
-
|
24
|
-
/**
|
25
|
-
* Types for interacting with Vulkan resources created externally to Skia. GrBackendObjects for
|
26
|
-
* Vulkan textures are really const GrVkImageInfo*
|
27
|
-
*/
|
28
|
-
struct GrVkAlloc {
|
29
|
-
// can be VK_NULL_HANDLE iff is an RT and is borrowed
|
30
|
-
VkDeviceMemory fMemory = VK_NULL_HANDLE;
|
31
|
-
VkDeviceSize fOffset = 0;
|
32
|
-
VkDeviceSize fSize = 0; // this can be indeterminate iff Tex uses borrow semantics
|
33
|
-
uint32_t fFlags = 0;
|
34
|
-
GrVkBackendMemory fBackendMemory = 0; // handle to memory allocated via GrVkMemoryAllocator.
|
35
|
-
|
36
|
-
enum Flag {
|
37
|
-
kNoncoherent_Flag = 0x1, // memory must be flushed to device after mapping
|
38
|
-
kMappable_Flag = 0x2, // memory is able to be mapped.
|
39
|
-
kLazilyAllocated_Flag = 0x4, // memory was created with lazy allocation
|
40
|
-
};
|
41
|
-
|
42
|
-
bool operator==(const GrVkAlloc& that) const {
|
43
|
-
return fMemory == that.fMemory && fOffset == that.fOffset && fSize == that.fSize &&
|
44
|
-
fFlags == that.fFlags && fUsesSystemHeap == that.fUsesSystemHeap;
|
45
|
-
}
|
46
|
-
|
47
|
-
private:
|
48
|
-
friend class GrVkHeap; // For access to usesSystemHeap
|
49
|
-
bool fUsesSystemHeap = false;
|
50
|
-
};
|
15
|
+
using GrVkBackendMemory = skgpu::VulkanBackendMemory;
|
16
|
+
using GrVkAlloc = skgpu::VulkanAlloc;
|
51
17
|
|
52
18
|
// This struct is used to pass in the necessary information to create a VkSamplerYcbcrConversion
|
53
19
|
// object for an VkExternalFormatANDROID.
|
@@ -98,7 +64,7 @@ struct GrVkYcbcrConversionInfo {
|
|
98
64
|
*/
|
99
65
|
struct GrVkImageInfo {
|
100
66
|
VkImage fImage = VK_NULL_HANDLE;
|
101
|
-
|
67
|
+
skgpu::VulkanAlloc fAlloc;
|
102
68
|
VkImageTiling fImageTiling = VK_IMAGE_TILING_OPTIMAL;
|
103
69
|
VkImageLayout fImageLayout = VK_IMAGE_LAYOUT_UNDEFINED;
|
104
70
|
VkFormat fFormat = VK_FORMAT_UNDEFINED;
|
@@ -134,11 +100,7 @@ struct GrVkImageInfo {
|
|
134
100
|
#endif
|
135
101
|
};
|
136
102
|
|
137
|
-
using GrVkGetProc =
|
138
|
-
const char*, // function name
|
139
|
-
VkInstance, // instance or VK_NULL_HANDLE
|
140
|
-
VkDevice // device or VK_NULL_HANDLE
|
141
|
-
)>;
|
103
|
+
using GrVkGetProc = skgpu::VulkanGetProc;
|
142
104
|
|
143
105
|
/**
|
144
106
|
* This object is wrapped in a GrBackendDrawableInfo and passed in as an argument to
|
@@ -0,0 +1,46 @@
|
|
1
|
+
/*
|
2
|
+
* Copyright 2022 Google LLC
|
3
|
+
*
|
4
|
+
* Use of this source code is governed by a BSD-style license that can be
|
5
|
+
* found in the LICENSE file.
|
6
|
+
*/
|
7
|
+
|
8
|
+
#ifndef skgpu_VulkanBackendContext_DEFINED
|
9
|
+
#define skgpu_VulkanBackendContext_DEFINED
|
10
|
+
|
11
|
+
#include "include/gpu/GpuTypes.h"
|
12
|
+
#include "include/gpu/vk/VulkanMemoryAllocator.h"
|
13
|
+
#include "include/gpu/vk/VulkanTypes.h"
|
14
|
+
|
15
|
+
namespace skgpu {
|
16
|
+
|
17
|
+
class VulkanExtensions;
|
18
|
+
|
19
|
+
// The VkBackendContext contains all of the base Vk objects needed by the skia Vulkan context.
|
20
|
+
struct SK_API VulkanBackendContext {
|
21
|
+
VkInstance fInstance;
|
22
|
+
VkPhysicalDevice fPhysicalDevice;
|
23
|
+
VkDevice fDevice;
|
24
|
+
VkQueue fQueue;
|
25
|
+
uint32_t fGraphicsQueueIndex;
|
26
|
+
// The max api version set here should match the value set in VkApplicationInfo::apiVersion when
|
27
|
+
// then VkInstance was created.
|
28
|
+
uint32_t fMaxAPIVersion;
|
29
|
+
const skgpu::VulkanExtensions* fVkExtensions = nullptr;
|
30
|
+
// The client can create their VkDevice with either a VkPhysicalDeviceFeatures or
|
31
|
+
// VkPhysicalDeviceFeatures2 struct, thus we have to support taking both. The
|
32
|
+
// VkPhysicalDeviceFeatures2 struct is needed so we know if the client enabled any extension
|
33
|
+
// specific features. If fDeviceFeatures2 is not null then we ignore fDeviceFeatures. If both
|
34
|
+
// fDeviceFeatures and fDeviceFeatures2 are null we will assume no features are enabled.
|
35
|
+
const VkPhysicalDeviceFeatures* fDeviceFeatures = nullptr;
|
36
|
+
const VkPhysicalDeviceFeatures2* fDeviceFeatures2 = nullptr;
|
37
|
+
// Optional. The client may provide an inplementation of a VulkanMemoryAllocator for Skia to use
|
38
|
+
// for allocating Vulkan resources that use VkDeviceMemory.
|
39
|
+
sk_sp<VulkanMemoryAllocator> fMemoryAllocator;
|
40
|
+
skgpu::VulkanGetProc fGetProc;
|
41
|
+
Protected fProtectedContext;
|
42
|
+
};
|
43
|
+
|
44
|
+
} // namespace skgpu::graphite
|
45
|
+
|
46
|
+
#endif // skgpu_VulkanBackendContext_DEFINED
|
@@ -0,0 +1,67 @@
|
|
1
|
+
/*
|
2
|
+
* Copyright 2022 Google LLC.
|
3
|
+
*
|
4
|
+
* Use of this source code is governed by a BSD-style license that can be
|
5
|
+
* found in the LICENSE file.
|
6
|
+
*/
|
7
|
+
|
8
|
+
#ifndef skgpu_VulkanExtensions_DEFINED
|
9
|
+
#define skgpu_VulkanExtensions_DEFINED
|
10
|
+
|
11
|
+
#include "include/core/SkString.h"
|
12
|
+
#include "include/gpu/vk/VulkanTypes.h"
|
13
|
+
#include "include/private/SkTArray.h"
|
14
|
+
|
15
|
+
namespace skgpu {
|
16
|
+
|
17
|
+
/**
|
18
|
+
* Helper class that eats in an array of extensions strings for instance and device and allows for
|
19
|
+
* quicker querying if an extension is present.
|
20
|
+
*/
|
21
|
+
class SK_API VulkanExtensions {
|
22
|
+
public:
|
23
|
+
VulkanExtensions() {}
|
24
|
+
|
25
|
+
void init(VulkanGetProc, VkInstance, VkPhysicalDevice,
|
26
|
+
uint32_t instanceExtensionCount, const char* const* instanceExtensions,
|
27
|
+
uint32_t deviceExtensionCount, const char* const* deviceExtensions);
|
28
|
+
|
29
|
+
bool hasExtension(const char[], uint32_t minVersion) const;
|
30
|
+
|
31
|
+
struct Info {
|
32
|
+
Info() {}
|
33
|
+
Info(const char* name) : fName(name), fSpecVersion(0) {}
|
34
|
+
|
35
|
+
SkString fName;
|
36
|
+
uint32_t fSpecVersion;
|
37
|
+
|
38
|
+
struct Less {
|
39
|
+
bool operator()(const Info& a, const SkString& b) const {
|
40
|
+
return strcmp(a.fName.c_str(), b.c_str()) < 0;
|
41
|
+
}
|
42
|
+
bool operator()(const SkString& a, const VulkanExtensions::Info& b) const {
|
43
|
+
return strcmp(a.c_str(), b.fName.c_str()) < 0;
|
44
|
+
}
|
45
|
+
};
|
46
|
+
};
|
47
|
+
|
48
|
+
#ifdef SK_DEBUG
|
49
|
+
void dump() const {
|
50
|
+
SkDebugf("**Vulkan Extensions**\n");
|
51
|
+
for (int i = 0; i < fExtensions.count(); ++i) {
|
52
|
+
SkDebugf("%s. Version: %d\n",
|
53
|
+
fExtensions[i].fName.c_str(), fExtensions[i].fSpecVersion);
|
54
|
+
}
|
55
|
+
SkDebugf("**End Vulkan Extensions**\n");
|
56
|
+
}
|
57
|
+
#endif
|
58
|
+
|
59
|
+
private:
|
60
|
+
void getSpecVersions(VulkanGetProc getProc, VkInstance, VkPhysicalDevice);
|
61
|
+
|
62
|
+
SkTArray<Info> fExtensions;
|
63
|
+
};
|
64
|
+
|
65
|
+
} // namespace skgpu
|
66
|
+
|
67
|
+
#endif // skgpu_VulkanExtensions_DEFINED
|
@@ -0,0 +1,116 @@
|
|
1
|
+
/*
|
2
|
+
* Copyright 2022 Google LLC.
|
3
|
+
*
|
4
|
+
* Use of this source code is governed by a BSD-style license that can be
|
5
|
+
* found in the LICENSE file.
|
6
|
+
*/
|
7
|
+
|
8
|
+
#ifndef skgpu_VulkanMemoryAllocator_DEFINED
|
9
|
+
#define skgpu_VulkanMemoryAllocator_DEFINED
|
10
|
+
|
11
|
+
#include "include/core/SkRefCnt.h"
|
12
|
+
#include "include/gpu/GpuTypes.h"
|
13
|
+
#include "include/gpu/vk/VulkanTypes.h"
|
14
|
+
|
15
|
+
namespace skgpu {
|
16
|
+
|
17
|
+
class VulkanMemoryAllocator : public SkRefCnt {
|
18
|
+
public:
|
19
|
+
enum AllocationPropertyFlags {
|
20
|
+
kNone_AllocationPropertyFlag = 0b0000,
|
21
|
+
// Allocation will be placed in its own VkDeviceMemory and not suballocated from some larger
|
22
|
+
// block.
|
23
|
+
kDedicatedAllocation_AllocationPropertyFlag = 0b0001,
|
24
|
+
// Says that the backing memory can only be accessed by the device. Additionally the device
|
25
|
+
// may lazily allocate the memory. This cannot be used with buffers that will be host
|
26
|
+
// visible. Setting this flag does not guarantee that we will allocate memory that respects
|
27
|
+
// it, but we will try to prefer memory that can respect it.
|
28
|
+
kLazyAllocation_AllocationPropertyFlag = 0b0010,
|
29
|
+
// The allocation will be mapped immediately and stay mapped until it is destroyed. This
|
30
|
+
// flag is only valid for buffers which are host visible (i.e. must have a usage other than
|
31
|
+
// BufferUsage::kGpuOnly).
|
32
|
+
kPersistentlyMapped_AllocationPropertyFlag = 0b0100,
|
33
|
+
// Allocation can only be accessed by the device using a protected context.
|
34
|
+
kProtected_AllocationPropertyFlag = 0b1000,
|
35
|
+
};
|
36
|
+
|
37
|
+
enum class BufferUsage {
|
38
|
+
// Buffers that will only be accessed from the device (large const buffers). Will always be
|
39
|
+
// in device local memory.
|
40
|
+
kGpuOnly,
|
41
|
+
// Buffers that typically will be updated multiple times by the host and read on the gpu
|
42
|
+
// (e.g. uniform or vertex buffers). CPU writes will generally be sequential in the buffer
|
43
|
+
// and will try to take advantage of the write-combined nature of the gpu buffers. Thus this
|
44
|
+
// will always be mappable and coherent memory, and it will prefer to be in device local
|
45
|
+
// memory.
|
46
|
+
kCpuWritesGpuReads,
|
47
|
+
// Buffers that will be accessed on the host and copied to another GPU resource (transfer
|
48
|
+
// buffers). Will always be mappable and coherent memory.
|
49
|
+
kTransfersFromCpuToGpu,
|
50
|
+
// Buffers which are typically writted to by the GPU and then read on the host. Will always
|
51
|
+
// be mappable memory, and will prefer cached memory.
|
52
|
+
kTransfersFromGpuToCpu,
|
53
|
+
};
|
54
|
+
|
55
|
+
virtual VkResult allocateImageMemory(VkImage image,
|
56
|
+
uint32_t allocationPropertyFlags,
|
57
|
+
skgpu::VulkanBackendMemory* memory) = 0;
|
58
|
+
|
59
|
+
virtual VkResult allocateBufferMemory(VkBuffer buffer,
|
60
|
+
BufferUsage usage,
|
61
|
+
uint32_t allocationPropertyFlags,
|
62
|
+
skgpu::VulkanBackendMemory* memory) = 0;
|
63
|
+
|
64
|
+
// Fills out the passed in skgpu::VulkanAlloc struct for the passed in
|
65
|
+
// skgpu::VulkanBackendMemory.
|
66
|
+
virtual void getAllocInfo(const skgpu::VulkanBackendMemory&, skgpu::VulkanAlloc*) const = 0;
|
67
|
+
|
68
|
+
// Maps the entire allocation and returns a pointer to the start of the allocation. The
|
69
|
+
// implementation may map more memory than just the allocation, but the returned pointer must
|
70
|
+
// point at the start of the memory for the requested allocation.
|
71
|
+
virtual void* mapMemory(const skgpu::VulkanBackendMemory&) { return nullptr; }
|
72
|
+
virtual VkResult mapMemory(const skgpu::VulkanBackendMemory& memory, void** data) {
|
73
|
+
*data = this->mapMemory(memory);
|
74
|
+
// VK_ERROR_INITIALIZATION_FAILED is a bogus result to return from this function, but it is
|
75
|
+
// just something to return that is not VK_SUCCESS and can't be interpreted by a caller to
|
76
|
+
// mean something specific happened like device lost or oom. This will be removed once we
|
77
|
+
// update clients to implement this virtual.
|
78
|
+
return *data ? VK_SUCCESS : VK_ERROR_INITIALIZATION_FAILED;
|
79
|
+
}
|
80
|
+
virtual void unmapMemory(const skgpu::VulkanBackendMemory&) = 0;
|
81
|
+
|
82
|
+
// The following two calls are used for managing non-coherent memory. The offset is relative to
|
83
|
+
// the start of the allocation and not the underlying VkDeviceMemory. Additionaly the client
|
84
|
+
// must make sure that the offset + size passed in is less that or equal to the allocation size.
|
85
|
+
// It is the responsibility of the implementation to make sure all alignment requirements are
|
86
|
+
// followed. The client should not have to deal with any sort of alignment issues.
|
87
|
+
virtual void flushMappedMemory(const skgpu::VulkanBackendMemory&, VkDeviceSize, VkDeviceSize) {}
|
88
|
+
virtual VkResult flushMemory(const skgpu::VulkanBackendMemory& memory,
|
89
|
+
VkDeviceSize offset,
|
90
|
+
VkDeviceSize size) {
|
91
|
+
this->flushMappedMemory(memory, offset, size);
|
92
|
+
return VK_SUCCESS;
|
93
|
+
}
|
94
|
+
virtual void invalidateMappedMemory(const skgpu::VulkanBackendMemory&,
|
95
|
+
VkDeviceSize,
|
96
|
+
VkDeviceSize) {}
|
97
|
+
virtual VkResult invalidateMemory(const skgpu::VulkanBackendMemory& memory,
|
98
|
+
VkDeviceSize offset,
|
99
|
+
VkDeviceSize size) {
|
100
|
+
this->invalidateMappedMemory(memory, offset, size);
|
101
|
+
return VK_SUCCESS;
|
102
|
+
}
|
103
|
+
|
104
|
+
virtual void freeMemory(const skgpu::VulkanBackendMemory&) = 0;
|
105
|
+
|
106
|
+
// Returns the total amount of memory that is allocated and in use by an allocation for this
|
107
|
+
// allocator.
|
108
|
+
virtual uint64_t totalUsedMemory() const = 0;
|
109
|
+
|
110
|
+
// Returns the total amount of memory that is allocated by this allocator.
|
111
|
+
virtual uint64_t totalAllocatedMemory() const = 0;
|
112
|
+
};
|
113
|
+
|
114
|
+
} // namespace skgpu
|
115
|
+
|
116
|
+
#endif // skgpu_VulkanMemoryAllocator_DEFINED
|
@@ -0,0 +1,59 @@
|
|
1
|
+
/*
|
2
|
+
* Copyright 2022 Google LLC.
|
3
|
+
*
|
4
|
+
* Use of this source code is governed by a BSD-style license that can be
|
5
|
+
* found in the LICENSE file.
|
6
|
+
*/
|
7
|
+
|
8
|
+
#ifndef skgpu_VulkanTypes_DEFINED
|
9
|
+
#define skgpu_VulkanTypes_DEFINED
|
10
|
+
|
11
|
+
#include "include/core/SkTypes.h"
|
12
|
+
#include "include/private/gpu/vk/SkiaVulkan.h"
|
13
|
+
|
14
|
+
#include <functional>
|
15
|
+
|
16
|
+
#ifndef VK_VERSION_1_1
|
17
|
+
#error Skia requires the use of Vulkan 1.1 headers
|
18
|
+
#endif
|
19
|
+
|
20
|
+
namespace skgpu {
|
21
|
+
|
22
|
+
using VulkanGetProc = std::function<PFN_vkVoidFunction(
|
23
|
+
const char*, // function name
|
24
|
+
VkInstance, // instance or VK_NULL_HANDLE
|
25
|
+
VkDevice // device or VK_NULL_HANDLE
|
26
|
+
)>;
|
27
|
+
|
28
|
+
typedef intptr_t VulkanBackendMemory;
|
29
|
+
|
30
|
+
/**
|
31
|
+
* Types for interacting with Vulkan resources created externally to Skia.
|
32
|
+
*/
|
33
|
+
struct VulkanAlloc {
|
34
|
+
// can be VK_NULL_HANDLE iff is an RT and is borrowed
|
35
|
+
VkDeviceMemory fMemory = VK_NULL_HANDLE;
|
36
|
+
VkDeviceSize fOffset = 0;
|
37
|
+
VkDeviceSize fSize = 0; // this can be indeterminate iff Tex uses borrow semantics
|
38
|
+
uint32_t fFlags = 0;
|
39
|
+
// handle to memory allocated via skgpu::VulkanMemoryAllocator.
|
40
|
+
VulkanBackendMemory fBackendMemory = 0;
|
41
|
+
|
42
|
+
enum Flag {
|
43
|
+
kNoncoherent_Flag = 0x1, // memory must be flushed to device after mapping
|
44
|
+
kMappable_Flag = 0x2, // memory is able to be mapped.
|
45
|
+
kLazilyAllocated_Flag = 0x4, // memory was created with lazy allocation
|
46
|
+
};
|
47
|
+
|
48
|
+
bool operator==(const VulkanAlloc& that) const {
|
49
|
+
return fMemory == that.fMemory && fOffset == that.fOffset && fSize == that.fSize &&
|
50
|
+
fFlags == that.fFlags && fUsesSystemHeap == that.fUsesSystemHeap;
|
51
|
+
}
|
52
|
+
|
53
|
+
private:
|
54
|
+
bool fUsesSystemHeap = false;
|
55
|
+
};
|
56
|
+
|
57
|
+
} // namespace skgpu
|
58
|
+
|
59
|
+
#endif // skgpu_VulkanTypes_DEFINED
|
@@ -7,11 +7,11 @@
|
|
7
7
|
#ifndef SkPathOps_DEFINED
|
8
8
|
#define SkPathOps_DEFINED
|
9
9
|
|
10
|
+
#include "include/core/SkPath.h"
|
10
11
|
#include "include/core/SkTypes.h"
|
11
12
|
#include "include/private/SkTArray.h"
|
12
13
|
#include "include/private/SkTDArray.h"
|
13
14
|
|
14
|
-
class SkPath;
|
15
15
|
struct SkRect;
|
16
16
|
|
17
17
|
|
@@ -10,8 +10,8 @@
|
|
10
10
|
|
11
11
|
#include "include/core/SkColor.h"
|
12
12
|
#include "include/core/SkColorPriv.h"
|
13
|
-
#include "include/private/SkNx.h"
|
14
13
|
#include "include/private/SkTo.h"
|
14
|
+
#include "include/private/SkVx.h"
|
15
15
|
|
16
16
|
////////////////////////////////////////////////////////////////////////////////////////////
|
17
17
|
// Convert a 16bit pixel to a 32bit pixel
|
@@ -330,27 +330,6 @@ static inline U16CPU SkPack888ToRGB16(U8CPU r, U8CPU g, U8CPU b) {
|
|
330
330
|
|
331
331
|
/////////////////////////////////////////////////////////////////////////////////////////
|
332
332
|
|
333
|
-
/* SrcOver the 32bit src color with the 16bit dst, returning a 16bit value
|
334
|
-
(with dirt in the high 16bits, so caller beware).
|
335
|
-
*/
|
336
|
-
static inline U16CPU SkSrcOver32To16(SkPMColor src, uint16_t dst) {
|
337
|
-
unsigned sr = SkGetPackedR32(src);
|
338
|
-
unsigned sg = SkGetPackedG32(src);
|
339
|
-
unsigned sb = SkGetPackedB32(src);
|
340
|
-
|
341
|
-
unsigned dr = SkGetPackedR16(dst);
|
342
|
-
unsigned dg = SkGetPackedG16(dst);
|
343
|
-
unsigned db = SkGetPackedB16(dst);
|
344
|
-
|
345
|
-
unsigned isa = 255 - SkGetPackedA32(src);
|
346
|
-
|
347
|
-
dr = (sr + SkMul16ShiftRound(dr, isa, SK_R16_BITS)) >> (8 - SK_R16_BITS);
|
348
|
-
dg = (sg + SkMul16ShiftRound(dg, isa, SK_G16_BITS)) >> (8 - SK_G16_BITS);
|
349
|
-
db = (sb + SkMul16ShiftRound(db, isa, SK_B16_BITS)) >> (8 - SK_B16_BITS);
|
350
|
-
|
351
|
-
return SkPackRGB16(dr, dg, db);
|
352
|
-
}
|
353
|
-
|
354
333
|
static inline SkColor SkPixel16ToColor(U16CPU src) {
|
355
334
|
SkASSERT(src == SkToU16(src));
|
356
335
|
|
@@ -395,11 +374,11 @@ static inline SkPMColor SkPixel4444ToPixel32(U16CPU c) {
|
|
395
374
|
return d | (d << 4);
|
396
375
|
}
|
397
376
|
|
398
|
-
static inline
|
399
|
-
return
|
377
|
+
static inline skvx::float4 swizzle_rb(const skvx::float4& x) {
|
378
|
+
return skvx::shuffle<2, 1, 0, 3>(x);
|
400
379
|
}
|
401
380
|
|
402
|
-
static inline
|
381
|
+
static inline skvx::float4 swizzle_rb_if_bgra(const skvx::float4& x) {
|
403
382
|
#ifdef SK_PMCOLOR_IS_BGRA
|
404
383
|
return swizzle_rb(x);
|
405
384
|
#else
|
@@ -407,24 +386,15 @@ static inline Sk4f swizzle_rb_if_bgra(const Sk4f& x) {
|
|
407
386
|
#endif
|
408
387
|
}
|
409
388
|
|
410
|
-
static inline
|
411
|
-
return
|
389
|
+
static inline skvx::float4 Sk4f_fromL32(uint32_t px) {
|
390
|
+
return skvx::cast<float>(skvx::byte4::Load(&px)) * (1 / 255.0f);
|
412
391
|
}
|
413
392
|
|
414
|
-
static inline uint32_t Sk4f_toL32(const
|
415
|
-
Sk4f v = px;
|
416
|
-
|
417
|
-
#if !defined(SKNX_NO_SIMD) && SK_CPU_SSE_LEVEL >= SK_CPU_SSE_LEVEL_SSE2
|
418
|
-
// SkNx_cast<uint8_t, int32_t>() pins, and we don't anticipate giant floats
|
419
|
-
#elif !defined(SKNX_NO_SIMD) && defined(SK_ARM_HAS_NEON)
|
420
|
-
// SkNx_cast<uint8_t, int32_t>() pins, and so does Sk4f_round().
|
421
|
-
#else
|
422
|
-
// No guarantee of a pin.
|
423
|
-
v = Sk4f::Max(0, Sk4f::Min(v, 1));
|
424
|
-
#endif
|
425
|
-
|
393
|
+
static inline uint32_t Sk4f_toL32(const skvx::float4& px) {
|
426
394
|
uint32_t l32;
|
427
|
-
|
395
|
+
// For the expected positive color values, the +0.5 before the pin and cast effectively rounds
|
396
|
+
// to the nearest int without having to call round() or lrint().
|
397
|
+
skvx::cast<uint8_t>(pin(px * 255.f + 0.5f, skvx::float4(0.f), skvx::float4(255.f))).store(&l32);
|
428
398
|
return l32;
|
429
399
|
}
|
430
400
|
|
@@ -8,12 +8,18 @@
|
|
8
8
|
#ifndef SkEncodedInfo_DEFINED
|
9
9
|
#define SkEncodedInfo_DEFINED
|
10
10
|
|
11
|
-
#include
|
12
|
-
|
11
|
+
#include "include/core/SkAlphaType.h"
|
13
12
|
#include "include/core/SkColorSpace.h"
|
13
|
+
#include "include/core/SkColorType.h"
|
14
14
|
#include "include/core/SkData.h"
|
15
15
|
#include "include/core/SkImageInfo.h"
|
16
|
-
#include "include/
|
16
|
+
#include "include/core/SkRefCnt.h"
|
17
|
+
#include "include/core/SkTypes.h"
|
18
|
+
#include "modules/skcms/skcms.h"
|
19
|
+
|
20
|
+
#include <cstdint>
|
21
|
+
#include <memory>
|
22
|
+
#include <utility>
|
17
23
|
|
18
24
|
struct SkEncodedInfo {
|
19
25
|
public:
|
@@ -57,7 +57,10 @@ constexpr float sk_float_radians_to_degrees(float radians) {
|
|
57
57
|
return radians * (180 / SK_FloatPI);
|
58
58
|
}
|
59
59
|
|
60
|
-
|
60
|
+
// floor(double+0.5) vs. floorf(float+0.5f) give comparable performance, but upcasting to double
|
61
|
+
// means tricky values like 0.49999997 and 2^24 get rounded correctly. If these were rounded
|
62
|
+
// as floatf(x + .5f), they would be 1 higher than expected.
|
63
|
+
#define sk_float_round(x) (float)sk_double_round((double)(x))
|
61
64
|
|
62
65
|
// can't find log2f on android, but maybe that just a tool bug?
|
63
66
|
#ifdef SK_BUILD_FOR_ANDROID
|
@@ -130,19 +133,19 @@ static inline int64_t sk_float_saturate2int64(float x) {
|
|
130
133
|
}
|
131
134
|
|
132
135
|
#define sk_float_floor2int(x) sk_float_saturate2int(sk_float_floor(x))
|
133
|
-
#define sk_float_round2int(x) sk_float_saturate2int(
|
136
|
+
#define sk_float_round2int(x) sk_float_saturate2int(sk_float_round(x))
|
134
137
|
#define sk_float_ceil2int(x) sk_float_saturate2int(sk_float_ceil(x))
|
135
138
|
|
136
139
|
#define sk_float_floor2int_no_saturate(x) (int)sk_float_floor(x)
|
137
|
-
#define sk_float_round2int_no_saturate(x) (int)
|
140
|
+
#define sk_float_round2int_no_saturate(x) (int)sk_float_round(x)
|
138
141
|
#define sk_float_ceil2int_no_saturate(x) (int)sk_float_ceil(x)
|
139
142
|
|
140
143
|
#define sk_double_floor(x) floor(x)
|
141
144
|
#define sk_double_round(x) floor((x) + 0.5)
|
142
145
|
#define sk_double_ceil(x) ceil(x)
|
143
|
-
#define sk_double_floor2int(x) (int)
|
144
|
-
#define sk_double_round2int(x) (int)
|
145
|
-
#define sk_double_ceil2int(x) (int)
|
146
|
+
#define sk_double_floor2int(x) (int)sk_double_floor(x)
|
147
|
+
#define sk_double_round2int(x) (int)sk_double_round(x)
|
148
|
+
#define sk_double_ceil2int(x) (int)sk_double_ceil(x)
|
146
149
|
|
147
150
|
// Cast double to float, ignoring any warning about too-large finite values being cast to float.
|
148
151
|
// Clang thinks this is undefined, but it's actually implementation defined to return either
|