@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
|
@@ -9,33 +9,56 @@
|
|
|
9
9
|
#define skgpu_graphite_Recorder_DEFINED
|
|
10
10
|
|
|
11
11
|
#include "include/core/SkRefCnt.h"
|
|
12
|
+
#include "include/core/SkSize.h"
|
|
13
|
+
#include "include/gpu/graphite/GraphiteTypes.h"
|
|
12
14
|
#include "include/private/SingleOwner.h"
|
|
15
|
+
#include "include/private/SkTHash.h"
|
|
13
16
|
|
|
14
17
|
#include <vector>
|
|
15
18
|
|
|
19
|
+
class SkPixmap;
|
|
20
|
+
class SkRuntimeEffectDictionary;
|
|
16
21
|
class SkTextureDataBlock;
|
|
17
22
|
class SkUniformDataBlock;
|
|
18
|
-
|
|
23
|
+
|
|
24
|
+
namespace skgpu { class TokenTracker; }
|
|
25
|
+
|
|
26
|
+
namespace sktext::gpu {
|
|
27
|
+
class StrikeCache;
|
|
28
|
+
class TextBlobRedrawCoordinator;
|
|
29
|
+
}
|
|
19
30
|
|
|
20
31
|
namespace skgpu::graphite {
|
|
21
32
|
|
|
33
|
+
class AtlasManager;
|
|
34
|
+
class BackendTexture;
|
|
22
35
|
class Caps;
|
|
23
36
|
class Device;
|
|
24
37
|
class DrawBufferManager;
|
|
25
38
|
class GlobalCache;
|
|
26
|
-
class
|
|
39
|
+
class ImageProvider;
|
|
27
40
|
class RecorderPriv;
|
|
28
41
|
class Recording;
|
|
29
42
|
class ResourceProvider;
|
|
43
|
+
class SharedContext;
|
|
30
44
|
class Task;
|
|
31
45
|
class TaskGraph;
|
|
46
|
+
class TextureInfo;
|
|
32
47
|
class UploadBufferManager;
|
|
33
48
|
|
|
34
|
-
template<typename
|
|
35
|
-
using UniformDataCache = PipelineDataCache<
|
|
36
|
-
using TextureDataCache = PipelineDataCache<
|
|
49
|
+
template<typename T> class PipelineDataCache;
|
|
50
|
+
using UniformDataCache = PipelineDataCache<SkUniformDataBlock>;
|
|
51
|
+
using TextureDataCache = PipelineDataCache<SkTextureDataBlock>;
|
|
52
|
+
|
|
53
|
+
struct SK_API RecorderOptions final {
|
|
54
|
+
RecorderOptions();
|
|
55
|
+
RecorderOptions(const RecorderOptions&);
|
|
56
|
+
~RecorderOptions();
|
|
57
|
+
|
|
58
|
+
sk_sp<ImageProvider> fImageProvider;
|
|
59
|
+
};
|
|
37
60
|
|
|
38
|
-
class Recorder final {
|
|
61
|
+
class SK_API Recorder final {
|
|
39
62
|
public:
|
|
40
63
|
Recorder(const Recorder&) = delete;
|
|
41
64
|
Recorder(Recorder&&) = delete;
|
|
@@ -46,6 +69,52 @@ public:
|
|
|
46
69
|
|
|
47
70
|
std::unique_ptr<Recording> snap();
|
|
48
71
|
|
|
72
|
+
ImageProvider* clientImageProvider() { return fClientImageProvider.get(); }
|
|
73
|
+
const ImageProvider* clientImageProvider() const { return fClientImageProvider.get(); }
|
|
74
|
+
|
|
75
|
+
/**
|
|
76
|
+
* Creates a new backend gpu texture matching the dimensions and TextureInfo. If an invalid
|
|
77
|
+
* TextureInfo or a TextureInfo Skia can't support is passed in, this will return an invalid
|
|
78
|
+
* BackendTexture. Thus the client should check isValid on the returned BackendTexture to know
|
|
79
|
+
* if it succeeded or not.
|
|
80
|
+
*
|
|
81
|
+
* If this does return a valid BackendTexture, the caller is required to use
|
|
82
|
+
* Recorder::deleteBackendTexture or Context::deleteBackendTexture to delete the texture. It is
|
|
83
|
+
* safe to use the Context that created this Recorder or any other Recorder created from the
|
|
84
|
+
* same Context to call deleteBackendTexture.
|
|
85
|
+
*/
|
|
86
|
+
BackendTexture createBackendTexture(SkISize dimensions, const TextureInfo&);
|
|
87
|
+
|
|
88
|
+
/**
|
|
89
|
+
* If possible, updates a backend texture with the provided pixmap data. The client
|
|
90
|
+
* should check the return value to see if the update was successful. The client is required
|
|
91
|
+
* to insert a Recording into the Context and call `submit` to send the upload work to the gpu.
|
|
92
|
+
* The backend texture must be compatible with the provided pixmap(s). Compatible, in this case,
|
|
93
|
+
* means that the backend format is compatible with the base pixmap's colortype. The src data
|
|
94
|
+
* can be deleted when this call returns.
|
|
95
|
+
* If the backend texture is mip mapped, the data for all the mipmap levels must be provided.
|
|
96
|
+
* In the mipmapped case all the colortypes of the provided pixmaps must be the same.
|
|
97
|
+
* Additionally, all the miplevels must be sized correctly (please see
|
|
98
|
+
* SkMipmap::ComputeLevelSize and ComputeLevelCount).
|
|
99
|
+
* Note: the pixmap's alphatypes and colorspaces are ignored.
|
|
100
|
+
* For the Vulkan backend after a successful update the layout of the created VkImage will be:
|
|
101
|
+
* VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL
|
|
102
|
+
*/
|
|
103
|
+
bool updateBackendTexture(const BackendTexture&,
|
|
104
|
+
const SkPixmap srcData[],
|
|
105
|
+
int numLevels);
|
|
106
|
+
|
|
107
|
+
/**
|
|
108
|
+
* Called to delete the passed in BackendTexture. This should only be called if the
|
|
109
|
+
* BackendTexture was created by calling Recorder::createBackendTexture on a Recorder that is
|
|
110
|
+
* associated with the same Context. If the BackendTexture is not valid or does not match the
|
|
111
|
+
* BackendApi of the Recorder then nothing happens.
|
|
112
|
+
*
|
|
113
|
+
* Otherwise this will delete/release the backend object that is wrapped in the BackendTexture.
|
|
114
|
+
* The BackendTexture will be reset to an invalid state and should not be used again.
|
|
115
|
+
*/
|
|
116
|
+
void deleteBackendTexture(BackendTexture&);
|
|
117
|
+
|
|
49
118
|
// Provides access to functions that aren't part of the public API.
|
|
50
119
|
RecorderPriv priv();
|
|
51
120
|
const RecorderPriv priv() const; // NOLINT(readability-const-return-type)
|
|
@@ -59,10 +128,12 @@ private:
|
|
|
59
128
|
friend class Device; // For registering and deregistering Devices;
|
|
60
129
|
friend class RecorderPriv; // for ctor and hidden methods
|
|
61
130
|
|
|
62
|
-
Recorder(sk_sp<
|
|
131
|
+
Recorder(sk_sp<SharedContext>, const RecorderOptions&);
|
|
63
132
|
|
|
64
133
|
SingleOwner* singleOwner() const { return &fSingleOwner; }
|
|
65
134
|
|
|
135
|
+
BackendApi backend() const;
|
|
136
|
+
|
|
66
137
|
// We keep track of all Devices that are connected to a Recorder. This allows the client to
|
|
67
138
|
// safely delete an SkSurface or a Recorder in any order. If the client deletes the Recorder
|
|
68
139
|
// we need to notify all Devices that the Recorder is no longer valid. If we delete the
|
|
@@ -83,8 +154,9 @@ private:
|
|
|
83
154
|
void registerDevice(Device*);
|
|
84
155
|
void deregisterDevice(const Device*);
|
|
85
156
|
|
|
86
|
-
sk_sp<
|
|
157
|
+
sk_sp<SharedContext> fSharedContext;
|
|
87
158
|
std::unique_ptr<ResourceProvider> fResourceProvider;
|
|
159
|
+
std::unique_ptr<SkRuntimeEffectDictionary> fRuntimeEffectDict;
|
|
88
160
|
|
|
89
161
|
std::unique_ptr<TaskGraph> fGraph;
|
|
90
162
|
std::unique_ptr<UniformDataCache> fUniformDataCache;
|
|
@@ -93,6 +165,13 @@ private:
|
|
|
93
165
|
std::unique_ptr<UploadBufferManager> fUploadBufferManager;
|
|
94
166
|
std::vector<Device*> fTrackedDevices;
|
|
95
167
|
|
|
168
|
+
uint32_t fRecorderID; // Needed for MessageBox handling for text
|
|
169
|
+
std::unique_ptr<AtlasManager> fAtlasManager;
|
|
170
|
+
std::unique_ptr<TokenTracker> fTokenTracker;
|
|
171
|
+
std::unique_ptr<sktext::gpu::StrikeCache> fStrikeCache;
|
|
172
|
+
std::unique_ptr<sktext::gpu::TextBlobRedrawCoordinator> fTextBlobCache;
|
|
173
|
+
sk_sp<ImageProvider> fClientImageProvider;
|
|
174
|
+
|
|
96
175
|
// In debug builds we guard against improper thread handling
|
|
97
176
|
// This guard is passed to the ResourceCache.
|
|
98
177
|
// TODO: Should we also pass this to Device, DrawContext, and similar classes?
|
|
@@ -10,28 +10,38 @@
|
|
|
10
10
|
|
|
11
11
|
#include "include/core/SkRefCnt.h"
|
|
12
12
|
|
|
13
|
-
|
|
13
|
+
#include <memory>
|
|
14
|
+
#include <vector>
|
|
14
15
|
|
|
15
16
|
namespace skgpu::graphite {
|
|
16
17
|
|
|
17
18
|
class CommandBuffer;
|
|
18
|
-
|
|
19
|
-
|
|
19
|
+
class RecordingPriv;
|
|
20
|
+
class Resource;
|
|
21
|
+
class ResourceProvider;
|
|
22
|
+
class TaskGraph;
|
|
20
23
|
|
|
21
24
|
class Recording final {
|
|
22
25
|
public:
|
|
23
26
|
~Recording();
|
|
24
27
|
|
|
25
|
-
|
|
28
|
+
RecordingPriv priv();
|
|
29
|
+
|
|
26
30
|
private:
|
|
27
|
-
friend class Context; // for access fCommandBuffer
|
|
28
31
|
friend class Recorder; // for ctor
|
|
29
|
-
|
|
32
|
+
friend class RecordingPriv;
|
|
33
|
+
|
|
34
|
+
Recording(std::unique_ptr<TaskGraph>);
|
|
30
35
|
|
|
31
|
-
|
|
36
|
+
bool addCommands(CommandBuffer*, ResourceProvider*);
|
|
37
|
+
void addResourceRef(sk_sp<Resource>);
|
|
32
38
|
|
|
33
|
-
|
|
34
|
-
|
|
39
|
+
std::unique_ptr<TaskGraph> fGraph;
|
|
40
|
+
// We don't always take refs to all resources used by specific Tasks (e.g. a common buffer used
|
|
41
|
+
// for uploads). Instead we'll just hold onto one ref for those Resources outside the Tasks.
|
|
42
|
+
// Those refs are stored in the array here and will eventually be passed onto a CommandBuffer
|
|
43
|
+
// when the Recording adds its commands.
|
|
44
|
+
std::vector<sk_sp<Resource>> fExtraResourceRefs;
|
|
35
45
|
};
|
|
36
46
|
|
|
37
47
|
} // namespace skgpu::graphite
|
|
@@ -14,16 +14,12 @@
|
|
|
14
14
|
#include "include/private/gpu/graphite/MtlTypesPriv.h"
|
|
15
15
|
#endif
|
|
16
16
|
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
// Forward declares so we can friend classes in other namespaces
|
|
20
|
-
#ifdef SK_METAL
|
|
21
|
-
namespace graphite {
|
|
22
|
-
class MtlCaps;
|
|
23
|
-
class MtlTexture;
|
|
24
|
-
}
|
|
17
|
+
#ifdef SK_VULKAN
|
|
18
|
+
#include "include/private/gpu/graphite/VulkanGraphiteTypesPriv.h"
|
|
25
19
|
#endif
|
|
26
20
|
|
|
21
|
+
namespace skgpu::graphite {
|
|
22
|
+
|
|
27
23
|
class TextureInfo {
|
|
28
24
|
public:
|
|
29
25
|
TextureInfo() {}
|
|
@@ -37,6 +33,20 @@ public:
|
|
|
37
33
|
, fMtlSpec(mtlInfo) {}
|
|
38
34
|
#endif
|
|
39
35
|
|
|
36
|
+
#ifdef SK_VULKAN
|
|
37
|
+
TextureInfo(const VulkanTextureInfo& vkInfo)
|
|
38
|
+
: fBackend(BackendApi::kVulkan)
|
|
39
|
+
, fValid(true)
|
|
40
|
+
, fSampleCount(vkInfo.fSampleCount)
|
|
41
|
+
, fLevelCount(vkInfo.fLevelCount)
|
|
42
|
+
, fProtected(Protected::kNo)
|
|
43
|
+
, fVkSpec(vkInfo) {
|
|
44
|
+
if (vkInfo.fFlags & VK_IMAGE_CREATE_PROTECTED_BIT) {
|
|
45
|
+
fProtected = Protected::kYes;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
#endif
|
|
49
|
+
|
|
40
50
|
~TextureInfo() {}
|
|
41
51
|
TextureInfo(const TextureInfo&) = default;
|
|
42
52
|
TextureInfo& operator=(const TextureInfo&);
|
|
@@ -61,6 +71,16 @@ public:
|
|
|
61
71
|
}
|
|
62
72
|
#endif
|
|
63
73
|
|
|
74
|
+
#ifdef SK_VULKAN
|
|
75
|
+
bool getVulkanTextureInfo(VulkanTextureInfo* info) const {
|
|
76
|
+
if (!this->isValid() || fBackend != BackendApi::kVulkan) {
|
|
77
|
+
return false;
|
|
78
|
+
}
|
|
79
|
+
*info = VulkanTextureSpecToTextureInfo(fVkSpec, fSampleCount, fLevelCount);
|
|
80
|
+
return true;
|
|
81
|
+
}
|
|
82
|
+
#endif
|
|
83
|
+
|
|
64
84
|
private:
|
|
65
85
|
#ifdef SK_METAL
|
|
66
86
|
friend class MtlCaps;
|
|
@@ -72,6 +92,15 @@ private:
|
|
|
72
92
|
}
|
|
73
93
|
#endif
|
|
74
94
|
|
|
95
|
+
#ifdef SK_VULKAN
|
|
96
|
+
friend class VulkanCaps;
|
|
97
|
+
friend class VulkanTexture;
|
|
98
|
+
const VulkanTextureSpec& vulkanTextureSpec() const {
|
|
99
|
+
SkASSERT(fValid && fBackend == BackendApi::kVulkan);
|
|
100
|
+
return fVkSpec;
|
|
101
|
+
}
|
|
102
|
+
#endif
|
|
103
|
+
|
|
75
104
|
BackendApi fBackend = BackendApi::kMock;
|
|
76
105
|
bool fValid = false;
|
|
77
106
|
|
|
@@ -82,6 +111,9 @@ private:
|
|
|
82
111
|
union {
|
|
83
112
|
#ifdef SK_METAL
|
|
84
113
|
MtlTextureSpec fMtlSpec;
|
|
114
|
+
#endif
|
|
115
|
+
#ifdef SK_VULKAN
|
|
116
|
+
VulkanTextureSpec fVkSpec;
|
|
85
117
|
#endif
|
|
86
118
|
};
|
|
87
119
|
};
|
|
@@ -0,0 +1,25 @@
|
|
|
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_graphite_DawnBackendContext_DEFINED
|
|
9
|
+
#define skgpu_graphite_DawnBackendContext_DEFINED
|
|
10
|
+
|
|
11
|
+
#include "webgpu/webgpu_cpp.h"
|
|
12
|
+
|
|
13
|
+
namespace skgpu::graphite {
|
|
14
|
+
|
|
15
|
+
// The DawnBackendContext contains all of the base Dawn objects needed by the graphite Dawn
|
|
16
|
+
// backend. The client will create this object and pass it into the Context::MakeDawn factory call
|
|
17
|
+
// when setting up Skia.
|
|
18
|
+
struct SK_API DawnBackendContext {
|
|
19
|
+
wgpu::Device fDevice;
|
|
20
|
+
wgpu::Queue fQueue;
|
|
21
|
+
};
|
|
22
|
+
|
|
23
|
+
} // namespace skgpu::graphite
|
|
24
|
+
|
|
25
|
+
#endif // skgpu_graphite_DawnBackendContext_DEFINED
|
|
@@ -12,8 +12,9 @@
|
|
|
12
12
|
|
|
13
13
|
namespace skgpu::graphite {
|
|
14
14
|
|
|
15
|
-
// The MtlBackendContext contains all of the base Metal objects needed by the
|
|
16
|
-
//
|
|
15
|
+
// The MtlBackendContext contains all of the base Metal objects needed by the graphite Metal
|
|
16
|
+
// backend. The client will create this object and pass it into the Context::MakeMetal factory call
|
|
17
|
+
// when setting up Skia.
|
|
17
18
|
struct SK_API MtlBackendContext {
|
|
18
19
|
sk_cfp<CFTypeRef> fDevice;
|
|
19
20
|
sk_cfp<CFTypeRef> fQueue;
|
|
@@ -0,0 +1,69 @@
|
|
|
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_graphite_VulkanGraphiteTypes_DEFINED
|
|
9
|
+
#define skgpu_graphite_VulkanGraphiteTypes_DEFINED
|
|
10
|
+
|
|
11
|
+
#include "include/gpu/vk/VulkanTypes.h"
|
|
12
|
+
|
|
13
|
+
namespace skgpu::graphite {
|
|
14
|
+
|
|
15
|
+
struct VulkanTextureInfo {
|
|
16
|
+
uint32_t fSampleCount = 1;
|
|
17
|
+
uint32_t fLevelCount = 0;
|
|
18
|
+
|
|
19
|
+
// VkImageCreateInfo properties
|
|
20
|
+
// Currently the only supported flag is VK_IMAGE_CREATE_PROTECTED_BIT. Any other flag will not
|
|
21
|
+
// be accepted
|
|
22
|
+
VkImageCreateFlags fFlags = 0;
|
|
23
|
+
VkFormat fFormat = VK_FORMAT_UNDEFINED;
|
|
24
|
+
VkImageTiling fImageTiling = VK_IMAGE_TILING_OPTIMAL;
|
|
25
|
+
VkImageUsageFlags fImageUsageFlags = 0;
|
|
26
|
+
VkSharingMode fSharingMode = VK_SHARING_MODE_EXCLUSIVE;
|
|
27
|
+
uint32_t fCurrentQueueFamily = VK_QUEUE_FAMILY_IGNORED;
|
|
28
|
+
VkImageLayout fImageLayout = VK_IMAGE_LAYOUT_UNDEFINED;
|
|
29
|
+
|
|
30
|
+
// Properties related to the image view and sampling. These are less inherent properties of the
|
|
31
|
+
// VkImage but describe how the VkImage should be used within Skia.
|
|
32
|
+
|
|
33
|
+
// What aspect to use for the VkImageView. The normal, default is VK_IMAGE_ASPECT_COLOR_BIT.
|
|
34
|
+
// However, if the VkImage is a Ycbcr format, the client can pass a specific plan here to have
|
|
35
|
+
// Skia directly sample a plane. In that case the client should also pass in a VkFormat that is
|
|
36
|
+
// compatible with the plane as described by the Vulkan spec.
|
|
37
|
+
VkImageAspectFlags fAspectMask = VK_IMAGE_ASPECT_COLOR_BIT;
|
|
38
|
+
// TODO: Either Make the ycbcr conversion info shareable with Ganesh or add a version for
|
|
39
|
+
// Graphite.
|
|
40
|
+
// GrVkYcbcrConversionInfo fYcbcrConversionInfo;
|
|
41
|
+
|
|
42
|
+
VulkanTextureInfo() = default;
|
|
43
|
+
VulkanTextureInfo(uint32_t sampleCount,
|
|
44
|
+
uint32_t levelCount,
|
|
45
|
+
VkImageCreateFlags flags,
|
|
46
|
+
VkFormat format,
|
|
47
|
+
VkImageTiling imageTiling,
|
|
48
|
+
VkImageUsageFlags imageUsageFlags,
|
|
49
|
+
VkSharingMode sharingMode,
|
|
50
|
+
uint32_t currentQueueFamily,
|
|
51
|
+
VkImageLayout imageLayout,
|
|
52
|
+
VkImageAspectFlags aspectMask)
|
|
53
|
+
: fSampleCount(sampleCount)
|
|
54
|
+
, fLevelCount(levelCount)
|
|
55
|
+
, fFlags(flags)
|
|
56
|
+
, fFormat(format)
|
|
57
|
+
, fImageTiling(imageTiling)
|
|
58
|
+
, fImageUsageFlags(imageUsageFlags)
|
|
59
|
+
, fSharingMode(sharingMode)
|
|
60
|
+
, fCurrentQueueFamily(currentQueueFamily)
|
|
61
|
+
, fImageLayout(imageLayout)
|
|
62
|
+
, fAspectMask(aspectMask) {}
|
|
63
|
+
};
|
|
64
|
+
|
|
65
|
+
} // namespace skgpu::graphite
|
|
66
|
+
|
|
67
|
+
#endif // skgpu_graphite_VulkanGraphiteTypes_DEFINED
|
|
68
|
+
|
|
69
|
+
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright 2022 Google Inc.
|
|
3
|
+
*
|
|
4
|
+
* Use of this source code is governed by a BSD-style license that can be
|
|
5
|
+
* found in the LICENSE file.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
#ifndef skgpu_MtlMemoryAllocator_DEFINED
|
|
9
|
+
#define skgpu_MtlMemoryAllocator_DEFINED
|
|
10
|
+
|
|
11
|
+
#ifdef __APPLE__
|
|
12
|
+
|
|
13
|
+
#ifdef __OBJC__
|
|
14
|
+
#import <Metal/Metal.h>
|
|
15
|
+
#endif
|
|
16
|
+
|
|
17
|
+
namespace skgpu {
|
|
18
|
+
|
|
19
|
+
// interface classes for the GPU memory allocator
|
|
20
|
+
class MtlAlloc : public SkRefCnt {
|
|
21
|
+
public:
|
|
22
|
+
~MtlAlloc() override = default;
|
|
23
|
+
};
|
|
24
|
+
|
|
25
|
+
#ifdef __OBJC__
|
|
26
|
+
class MtlMemoryAllocator : public SkRefCnt {
|
|
27
|
+
public:
|
|
28
|
+
virtual id<MTLBuffer> newBufferWithLength(NSUInteger length, MTLResourceOptions options,
|
|
29
|
+
sk_sp<MtlAlloc>* allocation) = 0;
|
|
30
|
+
virtual id<MTLTexture> newTextureWithDescriptor(MTLTextureDescriptor* texDesc,
|
|
31
|
+
sk_sp<MtlAlloc>* allocation) = 0;
|
|
32
|
+
};
|
|
33
|
+
#endif
|
|
34
|
+
|
|
35
|
+
} // namespace skgpu
|
|
36
|
+
|
|
37
|
+
#endif // __APPLE__
|
|
38
|
+
|
|
39
|
+
#endif // skgpu_MtlMemoryAllocator_DEFINED
|
|
@@ -9,10 +9,10 @@
|
|
|
9
9
|
#define GrVkBackendContext_DEFINED
|
|
10
10
|
|
|
11
11
|
#include "include/core/SkRefCnt.h"
|
|
12
|
-
#include "include/gpu/vk/GrVkMemoryAllocator.h"
|
|
13
12
|
#include "include/gpu/vk/GrVkTypes.h"
|
|
13
|
+
#include "include/gpu/vk/VulkanMemoryAllocator.h"
|
|
14
14
|
|
|
15
|
-
class
|
|
15
|
+
namespace skgpu { class VulkanExtensions; }
|
|
16
16
|
|
|
17
17
|
enum GrVkExtensionFlags {
|
|
18
18
|
kEXT_debug_report_GrVkExtensionFlag = 0x0001,
|
|
@@ -43,34 +43,36 @@ struct VkPhysicalDeviceFeatures2;
|
|
|
43
43
|
// (either by deleting the struct or manually releasing the refs) before the underlying vulkan
|
|
44
44
|
// device and instance are destroyed.
|
|
45
45
|
struct SK_API GrVkBackendContext {
|
|
46
|
-
VkInstance
|
|
47
|
-
VkPhysicalDevice
|
|
48
|
-
VkDevice
|
|
49
|
-
VkQueue
|
|
50
|
-
uint32_t
|
|
51
|
-
uint32_t
|
|
52
|
-
|
|
46
|
+
VkInstance fInstance = VK_NULL_HANDLE;
|
|
47
|
+
VkPhysicalDevice fPhysicalDevice = VK_NULL_HANDLE;
|
|
48
|
+
VkDevice fDevice = VK_NULL_HANDLE;
|
|
49
|
+
VkQueue fQueue = VK_NULL_HANDLE;
|
|
50
|
+
uint32_t fGraphicsQueueIndex = 0;
|
|
51
|
+
uint32_t fMinAPIVersion = 0; // Deprecated. Use fInstanceVersion
|
|
52
|
+
// instead.
|
|
53
|
+
uint32_t fInstanceVersion = 0; // Deprecated. Use fMaxApiVersion
|
|
53
54
|
// The max api version set here should match the value set in VkApplicationInfo::apiVersion when
|
|
54
55
|
// then VkInstance was created.
|
|
55
|
-
uint32_t
|
|
56
|
-
uint32_t
|
|
57
|
-
const
|
|
58
|
-
uint32_t
|
|
56
|
+
uint32_t fMaxAPIVersion = 0;
|
|
57
|
+
uint32_t fExtensions = 0; // Deprecated. Use fVkExtensions instead.
|
|
58
|
+
const skgpu::VulkanExtensions* fVkExtensions = nullptr;
|
|
59
|
+
uint32_t fFeatures = 0; // Deprecated. Use fDeviceFeatures[2]
|
|
60
|
+
// instead.
|
|
59
61
|
// The client can create their VkDevice with either a VkPhysicalDeviceFeatures or
|
|
60
62
|
// VkPhysicalDeviceFeatures2 struct, thus we have to support taking both. The
|
|
61
63
|
// VkPhysicalDeviceFeatures2 struct is needed so we know if the client enabled any extension
|
|
62
64
|
// specific features. If fDeviceFeatures2 is not null then we ignore fDeviceFeatures. If both
|
|
63
65
|
// fDeviceFeatures and fDeviceFeatures2 are null we will assume no features are enabled.
|
|
64
|
-
const VkPhysicalDeviceFeatures*
|
|
65
|
-
const VkPhysicalDeviceFeatures2*
|
|
66
|
-
sk_sp<
|
|
67
|
-
|
|
66
|
+
const VkPhysicalDeviceFeatures* fDeviceFeatures = nullptr;
|
|
67
|
+
const VkPhysicalDeviceFeatures2* fDeviceFeatures2 = nullptr;
|
|
68
|
+
sk_sp<skgpu::VulkanMemoryAllocator> fMemoryAllocator;
|
|
69
|
+
skgpu::VulkanGetProc fGetProc = nullptr;
|
|
68
70
|
// This is deprecated and should be set to false. The client is responsible for managing the
|
|
69
71
|
// lifetime of the VkInstance and VkDevice objects.
|
|
70
|
-
bool
|
|
72
|
+
bool fOwnsInstanceAndDevice = false;
|
|
71
73
|
// Indicates that we are working with protected content and all CommandPool and Queue operations
|
|
72
74
|
// should be done in a protected context.
|
|
73
|
-
GrProtected
|
|
75
|
+
GrProtected fProtectedContext = GrProtected::kNo;
|
|
74
76
|
};
|
|
75
77
|
|
|
76
78
|
#endif
|
|
@@ -8,56 +8,8 @@
|
|
|
8
8
|
#ifndef GrVkExtensions_DEFINED
|
|
9
9
|
#define GrVkExtensions_DEFINED
|
|
10
10
|
|
|
11
|
-
#include "include/
|
|
12
|
-
#include "include/gpu/vk/GrVkTypes.h"
|
|
13
|
-
#include "include/private/SkTArray.h"
|
|
11
|
+
#include "include/gpu/vk/VulkanExtensions.h"
|
|
14
12
|
|
|
15
|
-
|
|
16
|
-
* Helper class that eats in an array of extensions strings for instance and device and allows for
|
|
17
|
-
* quicker querying if an extension is present.
|
|
18
|
-
*/
|
|
19
|
-
class SK_API GrVkExtensions {
|
|
20
|
-
public:
|
|
21
|
-
GrVkExtensions() {}
|
|
22
|
-
|
|
23
|
-
void init(GrVkGetProc, VkInstance, VkPhysicalDevice,
|
|
24
|
-
uint32_t instanceExtensionCount, const char* const* instanceExtensions,
|
|
25
|
-
uint32_t deviceExtensionCount, const char* const* deviceExtensions);
|
|
26
|
-
|
|
27
|
-
bool hasExtension(const char[], uint32_t minVersion) const;
|
|
28
|
-
|
|
29
|
-
struct Info {
|
|
30
|
-
Info() {}
|
|
31
|
-
Info(const char* name) : fName(name), fSpecVersion(0) {}
|
|
32
|
-
|
|
33
|
-
SkString fName;
|
|
34
|
-
uint32_t fSpecVersion;
|
|
35
|
-
|
|
36
|
-
struct Less {
|
|
37
|
-
bool operator()(const Info& a, const SkString& b) const {
|
|
38
|
-
return strcmp(a.fName.c_str(), b.c_str()) < 0;
|
|
39
|
-
}
|
|
40
|
-
bool operator()(const SkString& a, const GrVkExtensions::Info& b) const {
|
|
41
|
-
return strcmp(a.c_str(), b.fName.c_str()) < 0;
|
|
42
|
-
}
|
|
43
|
-
};
|
|
44
|
-
};
|
|
45
|
-
|
|
46
|
-
#ifdef SK_DEBUG
|
|
47
|
-
void dump() const {
|
|
48
|
-
SkDebugf("**Vulkan Extensions**\n");
|
|
49
|
-
for (int i = 0; i < fExtensions.count(); ++i) {
|
|
50
|
-
SkDebugf("%s. Version: %d\n",
|
|
51
|
-
fExtensions[i].fName.c_str(), fExtensions[i].fSpecVersion);
|
|
52
|
-
}
|
|
53
|
-
SkDebugf("**End Vulkan Extensions**\n");
|
|
54
|
-
}
|
|
55
|
-
#endif
|
|
56
|
-
|
|
57
|
-
private:
|
|
58
|
-
void getSpecVersions(GrVkGetProc getProc, VkInstance, VkPhysicalDevice);
|
|
59
|
-
|
|
60
|
-
SkTArray<Info> fExtensions;
|
|
61
|
-
};
|
|
13
|
+
using GrVkExtensions = skgpu::VulkanExtensions;
|
|
62
14
|
|
|
63
15
|
#endif
|