@shopify/react-native-skia 0.1.158 → 0.1.159
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/android/CMakeLists.txt +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 +220 -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 +294 -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 +361 -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 +77 -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 +61 -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 +172 -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 +40 -54
- 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 +19 -63
- 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 +7 -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 +20 -64
- 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 +7 -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 +3 -1
- package/src/dom/nodes/JsiSkDOM.ts +170 -56
- package/src/dom/nodes/RenderNode.ts +1 -1
- package/src/renderer/Canvas.tsx +32 -56
- 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 +4 -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
|