@shopify/react-native-skia 0.1.192 → 0.1.193
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 +1 -1
- package/android/build.gradle +1 -0
- package/android/cpp/jni/JniPlatformContext.cpp +1 -1
- package/cpp/api/JsiSkImage.h +25 -4
- package/cpp/api/JsiSkImageFactory.h +2 -2
- package/cpp/api/JsiSkPath.h +8 -6
- package/cpp/rnskia/dom/base/Declaration.h +5 -7
- package/cpp/rnskia/dom/nodes/JsiBlurMaskNode.h +1 -0
- package/cpp/rnskia/dom/nodes/JsiPathNode.h +2 -2
- package/cpp/rnskia/dom/props/BoxShadowProps.h +2 -0
- package/cpp/skia/include/android/SkAndroidFrameworkUtils.h +2 -8
- package/cpp/skia/include/android/SkImageAndroid.h +101 -0
- package/cpp/skia/include/codec/SkAndroidCodec.h +26 -8
- package/cpp/skia/include/codec/SkCodec.h +31 -17
- package/cpp/skia/include/codec/SkEncodedImageFormat.h +36 -0
- package/cpp/skia/include/codec/SkPixmapUtils.h +31 -0
- package/cpp/skia/include/config/SkUserConfig.h +61 -29
- package/cpp/skia/include/core/SkBitmap.h +25 -25
- package/cpp/skia/include/core/SkBlurTypes.h +0 -2
- package/cpp/skia/include/core/SkCanvas.h +32 -15
- package/cpp/skia/include/core/SkCapabilities.h +2 -2
- package/cpp/skia/include/core/SkColor.h +2 -0
- package/cpp/skia/include/core/SkColorPriv.h +19 -4
- package/cpp/skia/include/core/SkColorSpace.h +14 -17
- package/cpp/skia/include/core/SkColorType.h +1 -0
- package/cpp/skia/include/core/SkContourMeasure.h +1 -1
- package/cpp/skia/include/core/SkCoverageMode.h +0 -2
- package/cpp/skia/include/core/SkCubicMap.h +2 -0
- package/cpp/skia/include/core/SkData.h +5 -2
- package/cpp/skia/include/core/SkDataTable.h +6 -2
- package/cpp/skia/include/core/SkDeferredDisplayList.h +11 -10
- package/cpp/skia/include/core/SkDeferredDisplayListRecorder.h +9 -8
- package/cpp/skia/include/core/SkDrawable.h +10 -2
- package/cpp/skia/include/core/SkEncodedImageFormat.h +3 -30
- package/cpp/skia/include/core/SkFlattenable.h +4 -2
- package/cpp/skia/include/core/SkFont.h +1 -0
- package/cpp/skia/include/core/SkFontMetrics.h +1 -0
- package/cpp/skia/include/core/SkFontMgr.h +20 -29
- package/cpp/skia/include/core/SkFontStyle.h +4 -1
- package/cpp/skia/include/core/SkGraphics.h +21 -18
- package/cpp/skia/include/core/SkICC.h +3 -13
- package/cpp/skia/include/core/SkImage.h +395 -717
- package/cpp/skia/include/core/SkImageGenerator.h +19 -74
- package/cpp/skia/include/core/SkImageInfo.h +7 -5
- package/cpp/skia/include/core/SkM44.h +11 -0
- package/cpp/skia/include/core/SkMaskFilter.h +6 -3
- package/cpp/skia/include/core/SkMatrix.h +14 -4
- package/cpp/skia/include/core/SkMesh.h +52 -18
- package/cpp/skia/include/core/SkMilestone.h +1 -1
- package/cpp/skia/include/core/SkPaint.h +11 -34
- package/cpp/skia/include/core/SkPath.h +23 -4
- package/cpp/skia/include/core/SkPathBuilder.h +13 -5
- package/cpp/skia/include/core/SkPathMeasure.h +1 -1
- package/cpp/skia/include/core/SkPathTypes.h +0 -2
- package/cpp/skia/include/core/SkPathUtils.h +42 -0
- package/cpp/skia/include/core/SkPicture.h +3 -2
- package/cpp/skia/include/core/SkPictureRecorder.h +2 -0
- package/cpp/skia/include/core/SkPixelRef.h +4 -8
- package/cpp/skia/include/core/SkPixmap.h +12 -20
- package/cpp/skia/include/core/SkPoint.h +4 -2
- package/cpp/skia/include/core/SkPromiseImageTexture.h +2 -2
- package/cpp/skia/include/core/SkRRect.h +5 -1
- package/cpp/skia/include/core/SkRect.h +6 -3
- package/cpp/skia/include/core/SkRefCnt.h +9 -14
- package/cpp/skia/include/core/SkRegion.h +1 -1
- package/cpp/skia/include/core/SkScalar.h +2 -4
- package/cpp/skia/include/core/SkSerialProcs.h +18 -10
- package/cpp/skia/include/core/SkShader.h +1 -64
- package/cpp/skia/include/core/SkSize.h +2 -0
- package/cpp/skia/include/core/SkSpan.h +4 -112
- package/cpp/skia/include/core/SkStream.h +11 -12
- package/cpp/skia/include/core/SkString.h +9 -25
- package/cpp/skia/include/core/SkStrokeRec.h +1 -1
- package/cpp/skia/include/core/SkSurface.h +83 -61
- package/cpp/skia/include/core/SkSurfaceCharacterization.h +3 -3
- package/cpp/skia/include/core/SkSurfaceProps.h +9 -1
- package/cpp/skia/include/core/SkTextBlob.h +2 -2
- package/cpp/skia/include/core/SkTextureCompressionType.h +30 -0
- package/cpp/skia/include/core/SkTime.h +1 -1
- package/cpp/skia/include/core/SkTypeface.h +9 -2
- package/cpp/skia/include/core/SkTypes.h +37 -466
- package/cpp/skia/include/core/SkVertices.h +2 -0
- package/cpp/skia/include/core/SkYUVAInfo.h +4 -0
- package/cpp/skia/include/core/SkYUVAPixmaps.h +7 -1
- package/cpp/skia/include/docs/SkPDFDocument.h +12 -1
- package/cpp/skia/include/effects/SkColorMatrix.h +2 -1
- package/cpp/skia/include/effects/SkGradientShader.h +65 -14
- package/cpp/skia/include/effects/SkImageFilters.h +0 -11
- package/cpp/skia/include/effects/SkRuntimeEffect.h +41 -11
- package/cpp/skia/include/encode/SkEncoder.h +7 -3
- package/cpp/skia/include/encode/SkICC.h +36 -0
- package/cpp/skia/include/encode/SkJpegEncoder.h +102 -71
- package/cpp/skia/include/encode/SkPngEncoder.h +89 -71
- package/cpp/skia/include/encode/SkWebpEncoder.h +65 -38
- package/cpp/skia/include/gpu/GpuTypes.h +23 -1
- package/cpp/skia/include/gpu/GrBackendSurface.h +9 -7
- package/cpp/skia/include/gpu/GrContextOptions.h +28 -9
- package/cpp/skia/include/gpu/GrContextThreadSafeProxy.h +6 -4
- package/cpp/skia/include/gpu/GrDirectContext.h +84 -63
- package/cpp/skia/include/gpu/GrDriverBugWorkarounds.h +2 -1
- package/cpp/skia/include/gpu/GrRecordingContext.h +9 -5
- package/cpp/skia/include/gpu/GrTypes.h +18 -18
- package/cpp/skia/include/gpu/d3d/GrD3DTypes.h +4 -4
- package/cpp/skia/include/gpu/dawn/GrDawnTypes.h +3 -3
- package/cpp/skia/include/gpu/ganesh/GrTextureGenerator.h +77 -0
- package/cpp/skia/include/gpu/ganesh/SkImageGanesh.h +385 -0
- package/cpp/skia/include/gpu/gl/GrGLExtensions.h +3 -3
- package/cpp/skia/include/gpu/gl/GrGLFunctions.h +1 -1
- package/cpp/skia/include/gpu/gl/GrGLInterface.h +0 -3
- package/cpp/skia/include/gpu/gl/GrGLTypes.h +2 -1
- package/cpp/skia/include/gpu/graphite/BackendTexture.h +72 -3
- package/cpp/skia/include/gpu/graphite/Context.h +85 -32
- package/cpp/skia/include/gpu/graphite/ContextOptions.h +15 -11
- package/cpp/skia/include/gpu/graphite/GraphiteTypes.h +55 -5
- package/cpp/skia/include/gpu/graphite/ImageProvider.h +6 -4
- package/cpp/skia/include/gpu/graphite/Recorder.h +41 -11
- package/cpp/skia/include/gpu/graphite/Recording.h +50 -3
- package/cpp/skia/include/gpu/graphite/TextureInfo.h +47 -8
- package/cpp/skia/include/gpu/graphite/YUVABackendTextures.h +139 -0
- package/cpp/skia/include/gpu/graphite/dawn/DawnTypes.h +40 -0
- package/cpp/skia/include/gpu/graphite/dawn/DawnUtils.h +28 -0
- package/cpp/skia/include/gpu/graphite/mtl/MtlBackendContext.h +1 -1
- package/cpp/skia/include/gpu/graphite/mtl/{MtlTypes.h → MtlGraphiteTypes.h} +7 -6
- package/cpp/skia/include/gpu/graphite/mtl/MtlGraphiteUtils.h +27 -0
- package/cpp/skia/include/gpu/graphite/vk/VulkanGraphiteTypes.h +4 -9
- package/cpp/skia/include/gpu/graphite/vk/VulkanGraphiteUtils.h +28 -0
- package/cpp/skia/include/gpu/mock/GrMockTypes.h +17 -13
- package/cpp/skia/include/gpu/mtl/GrMtlTypes.h +2 -2
- package/cpp/skia/include/gpu/vk/GrVkBackendContext.h +1 -1
- package/cpp/skia/include/gpu/vk/GrVkTypes.h +3 -3
- package/cpp/skia/include/gpu/vk/VulkanExtensions.h +3 -3
- package/cpp/skia/include/gpu/vk/VulkanMemoryAllocator.h +5 -7
- package/cpp/skia/include/pathops/SkPathOps.h +3 -3
- package/cpp/skia/include/ports/SkFontMgr_data.h +22 -0
- package/cpp/skia/include/ports/SkFontMgr_indirect.h +14 -14
- package/cpp/skia/include/ports/SkRemotableFontMgr.h +2 -2
- package/cpp/skia/include/ports/SkTypeface_win.h +2 -1
- package/cpp/skia/include/private/SkChecksum.h +32 -7
- package/cpp/skia/include/private/SkColorData.h +1 -26
- package/cpp/skia/include/private/SkGainmapInfo.h +97 -0
- package/cpp/skia/include/private/SkGainmapShader.h +53 -0
- package/cpp/skia/include/private/SkIDChangeListener.h +4 -3
- package/cpp/skia/include/private/SkJpegGainmapEncoder.h +71 -0
- package/cpp/skia/include/private/SkJpegMetadataDecoder.h +61 -0
- package/cpp/skia/include/private/SkOpts_spi.h +3 -1
- package/cpp/skia/include/private/SkPathRef.h +64 -47
- package/cpp/skia/include/private/SkSLDefines.h +5 -5
- package/cpp/skia/include/private/SkSLSampleUsage.h +0 -4
- package/cpp/skia/include/private/SkSpinlock.h +1 -1
- package/cpp/skia/include/private/SkWeakRefCnt.h +3 -0
- package/cpp/skia/include/private/{SingleOwner.h → base/SingleOwner.h} +8 -5
- package/cpp/skia/include/private/base/SkAPI.h +52 -0
- package/cpp/skia/include/private/base/SkAlign.h +39 -0
- package/cpp/skia/include/private/base/SkAlignedStorage.h +32 -0
- package/cpp/skia/include/private/base/SkAssert.h +92 -0
- package/cpp/skia/include/private/base/SkAttributes.h +102 -0
- package/cpp/skia/include/private/base/SkCPUTypes.h +25 -0
- package/cpp/skia/include/private/base/SkContainers.h +46 -0
- package/cpp/skia/include/private/base/SkDebug.h +27 -0
- package/cpp/skia/include/private/{SkDeque.h → base/SkDeque.h} +3 -1
- package/cpp/skia/include/private/base/SkFeatures.h +151 -0
- package/cpp/skia/include/private/{SkFixed.h → base/SkFixed.h} +9 -7
- package/cpp/skia/include/private/{SkFloatBits.h → base/SkFloatBits.h} +2 -3
- package/cpp/skia/include/private/{SkFloatingPoint.h → base/SkFloatingPoint.h} +18 -9
- package/cpp/skia/include/private/base/SkLoadUserConfig.h +63 -0
- package/cpp/skia/include/private/{SkMacros.h → base/SkMacros.h} +17 -2
- package/cpp/skia/include/private/{SkMalloc.h → base/SkMalloc.h} +4 -7
- package/cpp/skia/include/{core → private/base}/SkMath.h +25 -2
- package/cpp/skia/include/private/{SkMutex.h → base/SkMutex.h} +5 -5
- package/cpp/skia/include/private/{SkNoncopyable.h → base/SkNoncopyable.h} +2 -2
- package/cpp/skia/include/private/{SkOnce.h → base/SkOnce.h} +3 -1
- package/cpp/skia/include/private/base/SkPathEnums.h +25 -0
- package/cpp/skia/include/private/{SkSafe32.h → base/SkSafe32.h} +16 -1
- package/cpp/skia/include/private/{SkSemaphore.h → base/SkSemaphore.h} +4 -3
- package/cpp/skia/include/private/base/SkSpan_impl.h +129 -0
- package/cpp/skia/include/private/base/SkTArray.h +694 -0
- package/cpp/skia/include/private/{SkTDArray.h → base/SkTDArray.h} +17 -54
- package/cpp/skia/include/private/{SkTFitsIn.h → base/SkTFitsIn.h} +14 -8
- package/cpp/skia/include/private/{SkTLogic.h → base/SkTLogic.h} +1 -1
- package/cpp/skia/include/private/{SkTemplates.h → base/SkTemplates.h} +63 -88
- package/cpp/skia/include/private/{SkThreadID.h → base/SkThreadID.h} +5 -2
- package/cpp/skia/include/private/{SkTo.h → base/SkTo.h} +13 -2
- package/cpp/skia/include/private/base/SkTypeTraits.h +33 -0
- package/cpp/skia/include/private/chromium/GrVkSecondaryCBDrawContext.h +130 -0
- package/cpp/skia/include/private/chromium/SkChromeRemoteGlyphCache.h +5 -9
- package/cpp/skia/include/private/chromium/SkDiscardableMemory.h +70 -0
- package/cpp/skia/include/private/chromium/Slug.h +0 -9
- package/cpp/skia/include/private/gpu/ganesh/GrContext_Base.h +2 -1
- package/cpp/skia/include/private/gpu/ganesh/GrD3DTypesMinimal.h +1 -1
- package/cpp/skia/include/private/gpu/ganesh/GrDawnTypesPriv.h +1 -1
- package/cpp/skia/include/private/gpu/ganesh/GrGLTypesPriv.h +1 -1
- package/cpp/skia/include/private/gpu/ganesh/GrImageContext.h +1 -1
- package/cpp/skia/include/private/gpu/ganesh/GrMockTypesPriv.h +3 -2
- package/cpp/skia/include/private/gpu/ganesh/GrMtlTypesPriv.h +1 -1
- package/cpp/skia/include/private/gpu/ganesh/GrTypesPriv.h +17 -23
- package/cpp/skia/include/private/gpu/ganesh/GrVkTypesPriv.h +2 -2
- package/cpp/skia/include/private/gpu/graphite/DawnTypesPriv.h +38 -0
- package/cpp/skia/include/private/gpu/graphite/{MtlTypesPriv.h → MtlGraphiteTypesPriv.h} +5 -5
- package/cpp/skia/include/private/gpu/graphite/VulkanGraphiteTypesPriv.h +1 -9
- package/cpp/skia/include/private/gpu/vk/SkiaVulkan.h +4 -0
- package/cpp/skia/include/utils/SkCamera.h +1 -1
- package/cpp/skia/include/utils/SkCustomTypeface.h +7 -1
- package/cpp/skia/include/utils/SkNWayCanvas.h +6 -6
- package/cpp/skia/include/utils/SkOrderedFontMgr.h +7 -6
- package/cpp/skia/include/utils/SkPaintFilterCanvas.h +2 -2
- package/cpp/skia/include/utils/SkParsePath.h +1 -1
- package/cpp/skia/modules/skcms/skcms.h +14 -0
- package/cpp/skia/modules/skcms/src/Transform_inl.h +19 -0
- package/cpp/skia/modules/skparagraph/include/FontCollection.h +2 -2
- package/cpp/skia/modules/skparagraph/include/Paragraph.h +72 -2
- package/cpp/skia/modules/skparagraph/include/ParagraphCache.h +1 -11
- package/cpp/skia/modules/skparagraph/include/ParagraphPainter.h +63 -0
- package/cpp/skia/modules/skparagraph/include/TextStyle.h +27 -4
- package/cpp/skia/modules/skparagraph/include/TypefaceFontProvider.h +13 -13
- package/cpp/skia/modules/skresources/include/SkResources.h +18 -4
- package/cpp/skia/modules/svg/include/SkSVGAttribute.h +1 -1
- package/cpp/skia/modules/svg/include/SkSVGAttributeParser.h +2 -2
- package/cpp/skia/modules/svg/include/SkSVGContainer.h +2 -2
- package/cpp/skia/modules/svg/include/SkSVGDOM.h +1 -1
- package/cpp/skia/modules/svg/include/SkSVGFilterContext.h +2 -2
- package/cpp/skia/modules/svg/include/SkSVGGradient.h +2 -2
- package/cpp/skia/modules/svg/include/SkSVGIDMapper.h +2 -2
- package/cpp/skia/modules/svg/include/SkSVGRenderContext.h +3 -3
- package/cpp/skia/modules/svg/include/SkSVGSVG.h +1 -1
- package/cpp/skia/modules/svg/include/SkSVGTypes.h +22 -21
- package/cpp/skia/modules/svg/include/SkSVGValue.h +1 -1
- package/cpp/skia/{include/private → src/core}/SkTHash.h +41 -37
- package/ios/RNSkia-iOS/ViewScreenshotService.mm +1 -1
- package/libs/android/arm64-v8a/libskia.a +0 -0
- package/libs/android/arm64-v8a/libskottie.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/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/libsksg.a +0 -0
- package/libs/android/armeabi-v7a/libskshaper.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/libsksg.a +0 -0
- package/libs/android/x86/libskshaper.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/libsksg.a +0 -0
- package/libs/android/x86_64/libskshaper.a +0 -0
- package/libs/android/x86_64/libsvg.a +0 -0
- package/libs/ios/libskia.xcframework/Info.plist +5 -5
- package/libs/ios/libskia.xcframework/ios-arm64_arm64e/libskia.a +0 -0
- package/libs/ios/libskia.xcframework/ios-arm64_arm64e_x86_64-simulator/libskia.a +0 -0
- package/libs/ios/libskottie.xcframework/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/libsksg.xcframework/ios-arm64_arm64e/libsksg.a +0 -0
- package/libs/ios/libsksg.xcframework/ios-arm64_arm64e_x86_64-simulator/libsksg.a +0 -0
- package/libs/ios/libskshaper.xcframework/ios-arm64_arm64e/libskshaper.a +0 -0
- package/libs/ios/libskshaper.xcframework/ios-arm64_arm64e_x86_64-simulator/libskshaper.a +0 -0
- package/libs/ios/libsvg.xcframework/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 +1 -1
- package/react-native-skia.podspec +1 -1
- package/scripts/install-npm.js +11 -1
- package/cpp/skia/include/core/SkImageEncoder.h +0 -71
- package/cpp/skia/include/gpu/GrConfig.h +0 -53
- package/cpp/skia/include/gpu/graphite/CombinationBuilder.h +0 -195
- package/cpp/skia/include/private/SkHalf.h +0 -38
- package/cpp/skia/include/private/SkImageInfoPriv.h +0 -199
- package/cpp/skia/include/private/SkSLIRNode.h +0 -64
- package/cpp/skia/include/private/SkSLLayout.h +0 -144
- package/cpp/skia/include/private/SkSLModifiers.h +0 -178
- package/cpp/skia/include/private/SkSLProgramElement.h +0 -77
- package/cpp/skia/include/private/SkSLProgramKind.h +0 -35
- package/cpp/skia/include/private/SkSLStatement.h +0 -86
- package/cpp/skia/include/private/SkSLString.h +0 -41
- package/cpp/skia/include/private/SkSLSymbol.h +0 -94
- package/cpp/skia/include/private/SkSafe_math.h +0 -52
- package/cpp/skia/include/private/SkStringView.h +0 -51
- package/cpp/skia/include/private/SkTArray.h +0 -655
- package/cpp/skia/include/private/SkUniquePaintParamsID.h +0 -35
- package/cpp/skia/include/private/SkVx.h +0 -1026
- package/cpp/skia/include/sksl/DSL.h +0 -37
- package/cpp/skia/include/sksl/DSLBlock.h +0 -58
- package/cpp/skia/include/sksl/DSLCase.h +0 -62
- package/cpp/skia/include/sksl/DSLCore.h +0 -492
- package/cpp/skia/include/sksl/DSLExpression.h +0 -241
- package/cpp/skia/include/sksl/DSLFunction.h +0 -113
- package/cpp/skia/include/sksl/DSLLayout.h +0 -92
- package/cpp/skia/include/sksl/DSLModifiers.h +0 -69
- package/cpp/skia/include/sksl/DSLStatement.h +0 -82
- package/cpp/skia/include/sksl/DSLSymbols.h +0 -61
- package/cpp/skia/include/sksl/DSLType.h +0 -271
- package/cpp/skia/include/sksl/DSLVar.h +0 -231
- package/cpp/skia/include/sksl/SkSLErrorReporter.h +0 -65
- package/cpp/skia/include/sksl/SkSLOperator.h +0 -154
- package/cpp/skia/include/sksl/SkSLPosition.h +0 -104
- package/cpp/skia/include/utils/SkRandom.h +0 -169
- package/cpp/skia/src/core/SkLRUCache.h +0 -126
- package/cpp/skia/src/core/SkTInternalLList.h +0 -302
- /package/cpp/skia/include/{core → codec}/SkPngChunkReader.h +0 -0
- /package/cpp/skia/include/private/{SkTPin.h → base/SkTPin.h} +0 -0
- /package/cpp/skia/include/private/{SkThreadAnnotations.h → base/SkThreadAnnotations.h} +0 -0
|
@@ -8,36 +8,34 @@
|
|
|
8
8
|
#ifndef skgpu_graphite_Context_DEFINED
|
|
9
9
|
#define skgpu_graphite_Context_DEFINED
|
|
10
10
|
|
|
11
|
+
#include "include/core/SkImage.h"
|
|
11
12
|
#include "include/core/SkRefCnt.h"
|
|
12
13
|
#include "include/core/SkShader.h"
|
|
13
14
|
#include "include/gpu/graphite/ContextOptions.h"
|
|
14
15
|
#include "include/gpu/graphite/GraphiteTypes.h"
|
|
15
16
|
#include "include/gpu/graphite/Recorder.h"
|
|
16
|
-
#include "include/private/SingleOwner.h"
|
|
17
|
+
#include "include/private/base/SingleOwner.h"
|
|
17
18
|
|
|
19
|
+
#include <functional>
|
|
18
20
|
#include <memory>
|
|
19
21
|
|
|
20
22
|
class SkRuntimeEffect;
|
|
21
23
|
|
|
22
|
-
namespace skgpu { struct VulkanBackendContext; }
|
|
23
|
-
|
|
24
24
|
namespace skgpu::graphite {
|
|
25
25
|
|
|
26
26
|
class BackendTexture;
|
|
27
|
+
class Buffer;
|
|
28
|
+
class ClientMappedBufferManager;
|
|
27
29
|
class Context;
|
|
28
30
|
class ContextPriv;
|
|
29
|
-
struct DawnBackendContext;
|
|
30
31
|
class GlobalCache;
|
|
31
|
-
|
|
32
|
+
class PaintOptions;
|
|
33
|
+
class PlotUploadTracker;
|
|
32
34
|
class QueueManager;
|
|
33
35
|
class Recording;
|
|
34
36
|
class ResourceProvider;
|
|
35
37
|
class SharedContext;
|
|
36
|
-
|
|
37
|
-
#ifdef SK_ENABLE_PRECOMPILE
|
|
38
|
-
class BlenderID;
|
|
39
|
-
class CombinationBuilder;
|
|
40
|
-
#endif
|
|
38
|
+
class TextureProxy;
|
|
41
39
|
|
|
42
40
|
class SK_API Context final {
|
|
43
41
|
public:
|
|
@@ -48,37 +46,30 @@ public:
|
|
|
48
46
|
|
|
49
47
|
~Context();
|
|
50
48
|
|
|
51
|
-
#ifdef SK_DAWN
|
|
52
|
-
static std::unique_ptr<Context> MakeDawn(const DawnBackendContext&, const ContextOptions&);
|
|
53
|
-
#endif
|
|
54
|
-
#ifdef SK_METAL
|
|
55
|
-
static std::unique_ptr<Context> MakeMetal(const MtlBackendContext&, const ContextOptions&);
|
|
56
|
-
#endif
|
|
57
|
-
|
|
58
|
-
#ifdef SK_VULKAN
|
|
59
|
-
static std::unique_ptr<Context> MakeVulkan(const VulkanBackendContext&, const ContextOptions&);
|
|
60
|
-
#endif
|
|
61
|
-
|
|
62
49
|
BackendApi backend() const;
|
|
63
50
|
|
|
64
51
|
std::unique_ptr<Recorder> makeRecorder(const RecorderOptions& = {});
|
|
65
52
|
|
|
66
|
-
|
|
67
|
-
|
|
53
|
+
bool insertRecording(const InsertRecordingInfo&);
|
|
54
|
+
bool submit(SyncToCpu = SyncToCpu::kNo);
|
|
55
|
+
|
|
56
|
+
void asyncReadPixels(const SkImage* image,
|
|
57
|
+
const SkColorInfo& dstColorInfo,
|
|
58
|
+
const SkIRect& srcRect,
|
|
59
|
+
SkImage::ReadPixelsCallback callback,
|
|
60
|
+
SkImage::ReadPixelsContext context);
|
|
61
|
+
|
|
62
|
+
void asyncReadPixels(const SkSurface* surface,
|
|
63
|
+
const SkColorInfo& dstColorInfo,
|
|
64
|
+
const SkIRect& srcRect,
|
|
65
|
+
SkImage::ReadPixelsCallback callback,
|
|
66
|
+
SkImage::ReadPixelsContext context);
|
|
68
67
|
|
|
69
68
|
/**
|
|
70
69
|
* Checks whether any asynchronous work is complete and if so calls related callbacks.
|
|
71
70
|
*/
|
|
72
71
|
void checkAsyncWorkCompletion();
|
|
73
72
|
|
|
74
|
-
#ifdef SK_ENABLE_PRECOMPILE
|
|
75
|
-
// TODO: add "ShaderID addUserDefinedShader(sk_sp<SkRuntimeEffect>)" here
|
|
76
|
-
// TODO: add "ColorFilterID addUserDefinedColorFilter(sk_sp<SkRuntimeEffect>)" here
|
|
77
|
-
BlenderID addUserDefinedBlender(sk_sp<SkRuntimeEffect>);
|
|
78
|
-
|
|
79
|
-
void precompile(CombinationBuilder*);
|
|
80
|
-
#endif
|
|
81
|
-
|
|
82
73
|
/**
|
|
83
74
|
* Called to delete the passed in BackendTexture. This should only be called if the
|
|
84
75
|
* BackendTexture was created by calling Recorder::createBackendTexture on a Recorder created
|
|
@@ -94,21 +85,83 @@ public:
|
|
|
94
85
|
ContextPriv priv();
|
|
95
86
|
const ContextPriv priv() const; // NOLINT(readability-const-return-type)
|
|
96
87
|
|
|
88
|
+
class ContextID {
|
|
89
|
+
public:
|
|
90
|
+
static Context::ContextID Next();
|
|
91
|
+
|
|
92
|
+
ContextID() : fID(SK_InvalidUniqueID) {}
|
|
93
|
+
|
|
94
|
+
bool operator==(const ContextID& that) const { return fID == that.fID; }
|
|
95
|
+
bool operator!=(const ContextID& that) const { return !(*this == that); }
|
|
96
|
+
|
|
97
|
+
void makeInvalid() { fID = SK_InvalidUniqueID; }
|
|
98
|
+
bool isValid() const { return fID != SK_InvalidUniqueID; }
|
|
99
|
+
|
|
100
|
+
private:
|
|
101
|
+
constexpr ContextID(uint32_t id) : fID(id) {}
|
|
102
|
+
uint32_t fID;
|
|
103
|
+
};
|
|
104
|
+
|
|
105
|
+
ContextID contextID() const { return fContextID; }
|
|
106
|
+
|
|
97
107
|
protected:
|
|
98
|
-
Context(sk_sp<SharedContext>, std::unique_ptr<QueueManager
|
|
108
|
+
Context(sk_sp<SharedContext>, std::unique_ptr<QueueManager>, const ContextOptions&);
|
|
99
109
|
|
|
100
110
|
private:
|
|
101
111
|
friend class ContextPriv;
|
|
112
|
+
friend class ContextCtorAccessor;
|
|
102
113
|
|
|
103
114
|
SingleOwner* singleOwner() const { return &fSingleOwner; }
|
|
104
115
|
|
|
116
|
+
// Must be called in Make() to handle one-time GPU setup operations that can possibly fail and
|
|
117
|
+
// require Context::Make() to return a nullptr.
|
|
118
|
+
bool finishInitialization();
|
|
119
|
+
|
|
120
|
+
void asyncReadPixels(const TextureProxy* textureProxy,
|
|
121
|
+
const SkImageInfo& srcImageInfo,
|
|
122
|
+
const SkColorInfo& dstColorInfo,
|
|
123
|
+
const SkIRect& srcRect,
|
|
124
|
+
SkImage::ReadPixelsCallback callback,
|
|
125
|
+
SkImage::ReadPixelsContext context);
|
|
126
|
+
|
|
127
|
+
// Inserts a texture to buffer transfer task, used by asyncReadPixels methods
|
|
128
|
+
struct PixelTransferResult {
|
|
129
|
+
using ConversionFn = void(void* dst, const void* mappedBuffer);
|
|
130
|
+
// If null then the transfer could not be performed. Otherwise this buffer will contain
|
|
131
|
+
// the pixel data when the transfer is complete.
|
|
132
|
+
sk_sp<Buffer> fTransferBuffer;
|
|
133
|
+
// RowBytes for transfer buffer data
|
|
134
|
+
size_t fRowBytes;
|
|
135
|
+
// If this is null then the transfer buffer will contain the data in the requested
|
|
136
|
+
// color type. Otherwise, when the transfer is done this must be called to convert
|
|
137
|
+
// from the transfer buffer's color type to the requested color type.
|
|
138
|
+
std::function<ConversionFn> fPixelConverter;
|
|
139
|
+
};
|
|
140
|
+
PixelTransferResult transferPixels(const TextureProxy*,
|
|
141
|
+
const SkImageInfo& srcImageInfo,
|
|
142
|
+
const SkColorInfo& dstColorInfo,
|
|
143
|
+
const SkIRect& srcRect);
|
|
144
|
+
|
|
105
145
|
sk_sp<SharedContext> fSharedContext;
|
|
106
146
|
std::unique_ptr<ResourceProvider> fResourceProvider;
|
|
107
147
|
std::unique_ptr<QueueManager> fQueueManager;
|
|
148
|
+
std::unique_ptr<ClientMappedBufferManager> fMappedBufferManager;
|
|
149
|
+
std::unique_ptr<PlotUploadTracker> fPlotUploadTracker;
|
|
108
150
|
|
|
109
151
|
// In debug builds we guard against improper thread handling. This guard is passed to the
|
|
110
152
|
// ResourceCache for the Context.
|
|
111
153
|
mutable SingleOwner fSingleOwner;
|
|
154
|
+
|
|
155
|
+
#if GRAPHITE_TEST_UTILS
|
|
156
|
+
// In test builds a Recorder may track the Context that was used to create it.
|
|
157
|
+
bool fStoreContextRefInRecorder = false;
|
|
158
|
+
// If this tracking is on, to allow the client to safely delete this Context or its Recorders
|
|
159
|
+
// in any order we must also track the Recorders created here.
|
|
160
|
+
std::vector<Recorder*> fTrackedRecorders;
|
|
161
|
+
#endif
|
|
162
|
+
|
|
163
|
+
// Needed for MessageBox handling
|
|
164
|
+
const ContextID fContextID;
|
|
112
165
|
};
|
|
113
166
|
|
|
114
167
|
} // namespace skgpu::graphite
|
|
@@ -8,6 +8,8 @@
|
|
|
8
8
|
#ifndef skgpu_graphite_ContextOptions_DEFINED
|
|
9
9
|
#define skgpu_graphite_ContextOptions_DEFINED
|
|
10
10
|
|
|
11
|
+
#include "include/private/base/SkAPI.h"
|
|
12
|
+
|
|
11
13
|
namespace skgpu { class ShaderErrorHandler; }
|
|
12
14
|
|
|
13
15
|
namespace skgpu::graphite {
|
|
@@ -15,6 +17,13 @@ namespace skgpu::graphite {
|
|
|
15
17
|
struct SK_API ContextOptions {
|
|
16
18
|
ContextOptions() {}
|
|
17
19
|
|
|
20
|
+
/**
|
|
21
|
+
* Disables correctness workarounds that are enabled for particular GPUs, OSes, or drivers.
|
|
22
|
+
* This does not affect code path choices that are made for perfomance reasons nor does it
|
|
23
|
+
* override other ContextOption settings.
|
|
24
|
+
*/
|
|
25
|
+
bool fDisableDriverCorrectnessWorkarounds = false;
|
|
26
|
+
|
|
18
27
|
/**
|
|
19
28
|
* If present, use this object to report shader compilation failures. If not, report failures
|
|
20
29
|
* via SkDebugf and assert.
|
|
@@ -55,18 +64,7 @@ struct SK_API ContextOptions {
|
|
|
55
64
|
* fGlypheCacheTextureMaximumBytes.
|
|
56
65
|
*/
|
|
57
66
|
bool fAllowMultipleGlyphCacheTextures = true;
|
|
58
|
-
|
|
59
|
-
/**
|
|
60
|
-
* If true, then add 1 pixel padding to all glyph masks in the atlas to support bi-lerp
|
|
61
|
-
* rendering of all glyphs. This must be set to true to use Slugs.
|
|
62
|
-
*/
|
|
63
|
-
#if defined(SK_EXPERIMENTAL_SIMULATE_DRAWGLYPHRUNLIST_WITH_SLUG) || \
|
|
64
|
-
defined(SK_EXPERIMENTAL_SIMULATE_DRAWGLYPHRUNLIST_WITH_SLUG_SERIALIZE) || \
|
|
65
|
-
defined(SK_EXPERIMENTAL_SIMULATE_DRAWGLYPHRUNLIST_WITH_SLUG_STRIKE_SERIALIZE)
|
|
66
|
-
bool fSupportBilerpFromGlyphAtlas = true;
|
|
67
|
-
#else
|
|
68
67
|
bool fSupportBilerpFromGlyphAtlas = false;
|
|
69
|
-
#endif
|
|
70
68
|
|
|
71
69
|
#if GRAPHITE_TEST_UTILS
|
|
72
70
|
/**
|
|
@@ -77,6 +75,12 @@ struct SK_API ContextOptions {
|
|
|
77
75
|
* Maximum width and height of internal texture atlases.
|
|
78
76
|
*/
|
|
79
77
|
int fMaxTextureAtlasSize = 2048;
|
|
78
|
+
|
|
79
|
+
/**
|
|
80
|
+
* If true, will store a pointer in Recorder that points back to the Context
|
|
81
|
+
* that created it. Used by readPixels() and other methods that normally require a Context.
|
|
82
|
+
*/
|
|
83
|
+
bool fStoreContextRefInRecorder = false;
|
|
80
84
|
#endif
|
|
81
85
|
};
|
|
82
86
|
|
|
@@ -8,14 +8,18 @@
|
|
|
8
8
|
#ifndef skgpu_graphite_GraphiteTypes_DEFINED
|
|
9
9
|
#define skgpu_graphite_GraphiteTypes_DEFINED
|
|
10
10
|
|
|
11
|
+
#include "include/core/SkPoint.h"
|
|
11
12
|
#include "include/core/SkTypes.h"
|
|
12
13
|
#include "include/gpu/GpuTypes.h"
|
|
13
14
|
|
|
14
15
|
#include <memory>
|
|
15
16
|
|
|
17
|
+
class SkSurface;
|
|
18
|
+
|
|
16
19
|
namespace skgpu::graphite {
|
|
17
20
|
|
|
18
21
|
class Recording;
|
|
22
|
+
class Task;
|
|
19
23
|
|
|
20
24
|
using GpuFinishedContext = void*;
|
|
21
25
|
using GpuFinishedProc = void (*)(GpuFinishedContext finishedContext, CallbackResult);
|
|
@@ -27,9 +31,33 @@ using GpuFinishedProc = void (*)(GpuFinishedContext finishedContext, CallbackRes
|
|
|
27
31
|
* the Recording that they may be holding onto. If the Recording is successfully submitted to the
|
|
28
32
|
* GPU the callback will be called with CallbackResult::kSuccess once the GPU has finished. All
|
|
29
33
|
* other cases where some failure occured it will be called with CallbackResult::kFailed.
|
|
34
|
+
*
|
|
35
|
+
* The fTargetSurface, if provided, is used as a target for any draws recorded onto a deferred
|
|
36
|
+
* canvas returned from Recorder::makeDeferredCanvas. This target surface must be provided iff
|
|
37
|
+
* the Recording contains any such draws. It must be Graphite-backed and its backing texture's
|
|
38
|
+
* TextureInfo must match the info provided to the Recorder when making the deferred canvas.
|
|
39
|
+
*
|
|
40
|
+
* fTargetTranslation is an additional translation applied to draws targeting fTargetSurface.
|
|
30
41
|
*/
|
|
31
42
|
struct InsertRecordingInfo {
|
|
32
43
|
Recording* fRecording = nullptr;
|
|
44
|
+
|
|
45
|
+
SkSurface* fTargetSurface = nullptr;
|
|
46
|
+
SkIVector fTargetTranslation = {0, 0};
|
|
47
|
+
|
|
48
|
+
GpuFinishedContext fFinishedContext = nullptr;
|
|
49
|
+
GpuFinishedProc fFinishedProc = nullptr;
|
|
50
|
+
};
|
|
51
|
+
|
|
52
|
+
/**
|
|
53
|
+
* The fFinishedProc is called when the Recording has been submitted and finished on the GPU, or
|
|
54
|
+
* when there is a failure that caused it not to be submitted. The callback will always be called
|
|
55
|
+
* and the caller can use the callback to know it is safe to free any resources associated with
|
|
56
|
+
* the Recording that they may be holding onto. If the Recording is successfully submitted to the
|
|
57
|
+
* GPU the callback will be called with CallbackResult::kSuccess once the GPU has finished. All
|
|
58
|
+
* other cases where some failure occured it will be called with CallbackResult::kFailed.
|
|
59
|
+
*/
|
|
60
|
+
struct InsertFinishInfo {
|
|
33
61
|
GpuFinishedContext fFinishedContext = nullptr;
|
|
34
62
|
GpuFinishedProc fFinishedProc = nullptr;
|
|
35
63
|
};
|
|
@@ -42,12 +70,34 @@ enum class SyncToCpu : bool {
|
|
|
42
70
|
kNo = false
|
|
43
71
|
};
|
|
44
72
|
|
|
45
|
-
|
|
46
|
-
*
|
|
73
|
+
/*
|
|
74
|
+
* For Promise Images - should the Promise Image be fulfilled every time a Recording that references
|
|
75
|
+
* it is inserted into the Context.
|
|
47
76
|
*/
|
|
48
|
-
enum class
|
|
49
|
-
kNo = false,
|
|
50
|
-
kYes = true
|
|
77
|
+
enum class Volatile : bool {
|
|
78
|
+
kNo = false, // only fulfilled once
|
|
79
|
+
kYes = true // fulfilled on every insertion call
|
|
80
|
+
};
|
|
81
|
+
|
|
82
|
+
/*
|
|
83
|
+
* Graphite's different rendering methods each only apply to certain types of draws. This
|
|
84
|
+
* enum supports decision-making regarding the different renderers and what is being drawn.
|
|
85
|
+
*/
|
|
86
|
+
enum DrawTypeFlags : uint8_t {
|
|
87
|
+
|
|
88
|
+
kNone = 0b000,
|
|
89
|
+
|
|
90
|
+
// SkCanvas:: drawSimpleText, drawString, drawGlyphs, drawTextBlob, drawSlug
|
|
91
|
+
kText = 0b001,
|
|
92
|
+
|
|
93
|
+
// SkCanvas::drawVertices
|
|
94
|
+
kDrawVertices = 0b010,
|
|
95
|
+
|
|
96
|
+
// All other canvas draw calls
|
|
97
|
+
kShape = 0b100,
|
|
98
|
+
|
|
99
|
+
kMostCommon = kText | kShape,
|
|
100
|
+
kAll = kText | kDrawVertices | kShape
|
|
51
101
|
};
|
|
52
102
|
|
|
53
103
|
} // namespace skgpu::graphite
|
|
@@ -13,7 +13,6 @@
|
|
|
13
13
|
|
|
14
14
|
namespace skgpu::graphite {
|
|
15
15
|
|
|
16
|
-
enum class Mipmapped : bool;
|
|
17
16
|
class Recorder;
|
|
18
17
|
|
|
19
18
|
/*
|
|
@@ -23,9 +22,12 @@ class Recorder;
|
|
|
23
22
|
* return a Graphite-backed version of the provided SkImage that meets the specified
|
|
24
23
|
* requirements.
|
|
25
24
|
*
|
|
26
|
-
* Skia requires that 'findOrCreate' return a Graphite-backed image that preserves the
|
|
27
|
-
*
|
|
28
|
-
* individual channels can change (e.g., 4444 -> 8888 is allowed)
|
|
25
|
+
* Skia requires that 'findOrCreate' return a Graphite-backed image that preserves the
|
|
26
|
+
* dimensions and alpha type of the original image. The bit depth of the
|
|
27
|
+
* individual channels can change (e.g., 4444 -> 8888 is allowed) as well as the channels - as
|
|
28
|
+
* long as the returned image has a superset of the original image's channels
|
|
29
|
+
* (e.g., 565 -> 8888 opaque is allowed).
|
|
30
|
+
*
|
|
29
31
|
* Wrt mipmapping, the returned image can have different mipmap settings than requested. If
|
|
30
32
|
* mipmapping was requested but not returned, the sampling level will be reduced to linear.
|
|
31
33
|
* If the requirements are not met by the returned image (modulo the flexibility wrt mipmapping)
|
|
@@ -11,17 +11,20 @@
|
|
|
11
11
|
#include "include/core/SkRefCnt.h"
|
|
12
12
|
#include "include/core/SkSize.h"
|
|
13
13
|
#include "include/gpu/graphite/GraphiteTypes.h"
|
|
14
|
-
#include "include/
|
|
15
|
-
#include "include/private/
|
|
14
|
+
#include "include/gpu/graphite/Recording.h"
|
|
15
|
+
#include "include/private/base/SingleOwner.h"
|
|
16
|
+
#include "include/private/base/SkTArray.h"
|
|
16
17
|
|
|
17
18
|
#include <vector>
|
|
18
19
|
|
|
20
|
+
class SkCanvas;
|
|
21
|
+
struct SkImageInfo;
|
|
19
22
|
class SkPixmap;
|
|
20
|
-
class SkRuntimeEffectDictionary;
|
|
21
|
-
class SkTextureDataBlock;
|
|
22
|
-
class SkUniformDataBlock;
|
|
23
23
|
|
|
24
|
-
namespace skgpu {
|
|
24
|
+
namespace skgpu {
|
|
25
|
+
class RefCntedCallback;
|
|
26
|
+
class TokenTracker;
|
|
27
|
+
}
|
|
25
28
|
|
|
26
29
|
namespace sktext::gpu {
|
|
27
30
|
class StrikeCache;
|
|
@@ -33,22 +36,26 @@ namespace skgpu::graphite {
|
|
|
33
36
|
class AtlasManager;
|
|
34
37
|
class BackendTexture;
|
|
35
38
|
class Caps;
|
|
39
|
+
class Context;
|
|
36
40
|
class Device;
|
|
37
41
|
class DrawBufferManager;
|
|
38
42
|
class GlobalCache;
|
|
39
43
|
class ImageProvider;
|
|
44
|
+
class ProxyCache;
|
|
40
45
|
class RecorderPriv;
|
|
41
|
-
class Recording;
|
|
42
46
|
class ResourceProvider;
|
|
47
|
+
class RuntimeEffectDictionary;
|
|
43
48
|
class SharedContext;
|
|
44
49
|
class Task;
|
|
45
50
|
class TaskGraph;
|
|
51
|
+
class TextureDataBlock;
|
|
46
52
|
class TextureInfo;
|
|
53
|
+
class UniformDataBlock;
|
|
47
54
|
class UploadBufferManager;
|
|
48
55
|
|
|
49
56
|
template<typename T> class PipelineDataCache;
|
|
50
|
-
using UniformDataCache = PipelineDataCache<
|
|
51
|
-
using TextureDataCache = PipelineDataCache<
|
|
57
|
+
using UniformDataCache = PipelineDataCache<UniformDataBlock>;
|
|
58
|
+
using TextureDataCache = PipelineDataCache<TextureDataBlock>;
|
|
52
59
|
|
|
53
60
|
struct SK_API RecorderOptions final {
|
|
54
61
|
RecorderOptions();
|
|
@@ -115,11 +122,23 @@ public:
|
|
|
115
122
|
*/
|
|
116
123
|
void deleteBackendTexture(BackendTexture&);
|
|
117
124
|
|
|
125
|
+
// Adds a proc that will be moved to the Recording upon snap, subsequently attached to the
|
|
126
|
+
// CommandBuffer when the Recording is added, and called when that CommandBuffer is submitted
|
|
127
|
+
// and finishes. If the Recorder or Recording is deleted before the proc is added to the
|
|
128
|
+
// CommandBuffer, it will be called with result Failure.
|
|
129
|
+
void addFinishInfo(const InsertFinishInfo&);
|
|
130
|
+
|
|
131
|
+
// Returns a canvas that will record to a proxy surface, which must be instantiated on replay.
|
|
132
|
+
// This can only be called once per Recording; subsequent calls will return null until a
|
|
133
|
+
// Recording is snapped. Additionally, the returned SkCanvas is only valid until the next
|
|
134
|
+
// Recording snap, at which point it is deleted.
|
|
135
|
+
SkCanvas* makeDeferredCanvas(const SkImageInfo&, const TextureInfo&);
|
|
136
|
+
|
|
118
137
|
// Provides access to functions that aren't part of the public API.
|
|
119
138
|
RecorderPriv priv();
|
|
120
139
|
const RecorderPriv priv() const; // NOLINT(readability-const-return-type)
|
|
121
140
|
|
|
122
|
-
#if
|
|
141
|
+
#if GRAPHITE_TEST_UTILS
|
|
123
142
|
bool deviceIsRegistered(Device*);
|
|
124
143
|
#endif
|
|
125
144
|
|
|
@@ -156,7 +175,7 @@ private:
|
|
|
156
175
|
|
|
157
176
|
sk_sp<SharedContext> fSharedContext;
|
|
158
177
|
std::unique_ptr<ResourceProvider> fResourceProvider;
|
|
159
|
-
std::unique_ptr<
|
|
178
|
+
std::unique_ptr<RuntimeEffectDictionary> fRuntimeEffectDict;
|
|
160
179
|
|
|
161
180
|
std::unique_ptr<TaskGraph> fGraph;
|
|
162
181
|
std::unique_ptr<UniformDataCache> fUniformDataCache;
|
|
@@ -176,6 +195,17 @@ private:
|
|
|
176
195
|
// This guard is passed to the ResourceCache.
|
|
177
196
|
// TODO: Should we also pass this to Device, DrawContext, and similar classes?
|
|
178
197
|
mutable SingleOwner fSingleOwner;
|
|
198
|
+
|
|
199
|
+
sk_sp<Device> fTargetProxyDevice;
|
|
200
|
+
std::unique_ptr<SkCanvas> fTargetProxyCanvas;
|
|
201
|
+
std::unique_ptr<Recording::LazyProxyData> fTargetProxyData;
|
|
202
|
+
|
|
203
|
+
skia_private::TArray<sk_sp<RefCntedCallback>> fFinishedProcs;
|
|
204
|
+
|
|
205
|
+
#if GRAPHITE_TEST_UTILS
|
|
206
|
+
// For testing use only -- the Context used to create this Recorder
|
|
207
|
+
Context* fContext = nullptr;
|
|
208
|
+
#endif
|
|
179
209
|
};
|
|
180
210
|
|
|
181
211
|
} // namespace skgpu::graphite
|
|
@@ -9,10 +9,17 @@
|
|
|
9
9
|
#define skgpu_graphite_Recording_DEFINED
|
|
10
10
|
|
|
11
11
|
#include "include/core/SkRefCnt.h"
|
|
12
|
+
#include "include/private/SkChecksum.h"
|
|
13
|
+
#include "include/private/base/SkTArray.h"
|
|
12
14
|
|
|
13
15
|
#include <memory>
|
|
16
|
+
#include <unordered_set>
|
|
14
17
|
#include <vector>
|
|
15
18
|
|
|
19
|
+
namespace skgpu {
|
|
20
|
+
class RefCntedCallback;
|
|
21
|
+
}
|
|
22
|
+
|
|
16
23
|
namespace skgpu::graphite {
|
|
17
24
|
|
|
18
25
|
class CommandBuffer;
|
|
@@ -20,18 +27,51 @@ class RecordingPriv;
|
|
|
20
27
|
class Resource;
|
|
21
28
|
class ResourceProvider;
|
|
22
29
|
class TaskGraph;
|
|
30
|
+
class Texture;
|
|
31
|
+
class TextureInfo;
|
|
32
|
+
class TextureProxy;
|
|
23
33
|
|
|
24
|
-
class Recording final {
|
|
34
|
+
class SK_API Recording final {
|
|
25
35
|
public:
|
|
26
36
|
~Recording();
|
|
27
37
|
|
|
28
38
|
RecordingPriv priv();
|
|
29
39
|
|
|
40
|
+
#if GRAPHITE_TEST_UTILS
|
|
41
|
+
bool isTargetProxyInstantiated() const;
|
|
42
|
+
#endif
|
|
43
|
+
|
|
30
44
|
private:
|
|
31
|
-
friend class Recorder;
|
|
45
|
+
friend class Recorder; // for ctor and LazyProxyData
|
|
32
46
|
friend class RecordingPriv;
|
|
33
47
|
|
|
34
|
-
|
|
48
|
+
// LazyProxyData is used if this recording should be replayed to a target that is provided on
|
|
49
|
+
// replay, and it handles the target proxy's instantiation with the provided target.
|
|
50
|
+
class LazyProxyData {
|
|
51
|
+
public:
|
|
52
|
+
LazyProxyData(const TextureInfo&);
|
|
53
|
+
|
|
54
|
+
TextureProxy* lazyProxy();
|
|
55
|
+
sk_sp<TextureProxy> refLazyProxy();
|
|
56
|
+
|
|
57
|
+
bool lazyInstantiate(ResourceProvider*, sk_sp<Texture>);
|
|
58
|
+
|
|
59
|
+
private:
|
|
60
|
+
sk_sp<Texture> fTarget;
|
|
61
|
+
sk_sp<TextureProxy> fTargetProxy;
|
|
62
|
+
};
|
|
63
|
+
|
|
64
|
+
struct ProxyHash {
|
|
65
|
+
std::size_t operator()(const sk_sp<TextureProxy>& proxy) const {
|
|
66
|
+
return SkGoodHash()(proxy.get());
|
|
67
|
+
}
|
|
68
|
+
};
|
|
69
|
+
|
|
70
|
+
Recording(std::unique_ptr<TaskGraph>,
|
|
71
|
+
std::unordered_set<sk_sp<TextureProxy>, ProxyHash>&& nonVolatileLazyProxies,
|
|
72
|
+
std::unordered_set<sk_sp<TextureProxy>, ProxyHash>&& volatileLazyProxies,
|
|
73
|
+
std::unique_ptr<LazyProxyData> targetProxyData,
|
|
74
|
+
skia_private::TArray<sk_sp<RefCntedCallback>>&& finishedProcs);
|
|
35
75
|
|
|
36
76
|
bool addCommands(CommandBuffer*, ResourceProvider*);
|
|
37
77
|
void addResourceRef(sk_sp<Resource>);
|
|
@@ -42,6 +82,13 @@ private:
|
|
|
42
82
|
// Those refs are stored in the array here and will eventually be passed onto a CommandBuffer
|
|
43
83
|
// when the Recording adds its commands.
|
|
44
84
|
std::vector<sk_sp<Resource>> fExtraResourceRefs;
|
|
85
|
+
|
|
86
|
+
std::unordered_set<sk_sp<TextureProxy>, ProxyHash> fNonVolatileLazyProxies;
|
|
87
|
+
std::unordered_set<sk_sp<TextureProxy>, ProxyHash> fVolatileLazyProxies;
|
|
88
|
+
|
|
89
|
+
std::unique_ptr<LazyProxyData> fTargetProxyData;
|
|
90
|
+
|
|
91
|
+
skia_private::TArray<sk_sp<RefCntedCallback>> fFinishedProcs;
|
|
45
92
|
};
|
|
46
93
|
|
|
47
94
|
} // namespace skgpu::graphite
|
|
@@ -10,8 +10,12 @@
|
|
|
10
10
|
|
|
11
11
|
#include "include/gpu/graphite/GraphiteTypes.h"
|
|
12
12
|
|
|
13
|
+
#ifdef SK_DAWN
|
|
14
|
+
#include "include/private/gpu/graphite/DawnTypesPriv.h"
|
|
15
|
+
#endif
|
|
16
|
+
|
|
13
17
|
#ifdef SK_METAL
|
|
14
|
-
#include "include/private/gpu/graphite/
|
|
18
|
+
#include "include/private/gpu/graphite/MtlGraphiteTypesPriv.h"
|
|
15
19
|
#endif
|
|
16
20
|
|
|
17
21
|
#ifdef SK_VULKAN
|
|
@@ -20,15 +24,25 @@
|
|
|
20
24
|
|
|
21
25
|
namespace skgpu::graphite {
|
|
22
26
|
|
|
23
|
-
class TextureInfo {
|
|
27
|
+
class SK_API TextureInfo {
|
|
24
28
|
public:
|
|
25
29
|
TextureInfo() {}
|
|
30
|
+
#ifdef SK_DAWN
|
|
31
|
+
TextureInfo(const DawnTextureInfo& dawnInfo)
|
|
32
|
+
: fBackend(BackendApi::kDawn)
|
|
33
|
+
, fValid(true)
|
|
34
|
+
, fSampleCount(dawnInfo.fSampleCount)
|
|
35
|
+
, fMipmapped(dawnInfo.fMipmapped)
|
|
36
|
+
, fProtected(Protected::kNo)
|
|
37
|
+
, fDawnSpec(dawnInfo) {}
|
|
38
|
+
#endif
|
|
39
|
+
|
|
26
40
|
#ifdef SK_METAL
|
|
27
41
|
TextureInfo(const MtlTextureInfo& mtlInfo)
|
|
28
42
|
: fBackend(BackendApi::kMetal)
|
|
29
43
|
, fValid(true)
|
|
30
44
|
, fSampleCount(mtlInfo.fSampleCount)
|
|
31
|
-
,
|
|
45
|
+
, fMipmapped(mtlInfo.fMipmapped)
|
|
32
46
|
, fProtected(Protected::kNo)
|
|
33
47
|
, fMtlSpec(mtlInfo) {}
|
|
34
48
|
#endif
|
|
@@ -38,7 +52,7 @@ public:
|
|
|
38
52
|
: fBackend(BackendApi::kVulkan)
|
|
39
53
|
, fValid(true)
|
|
40
54
|
, fSampleCount(vkInfo.fSampleCount)
|
|
41
|
-
,
|
|
55
|
+
, fMipmapped(vkInfo.fMipmapped)
|
|
42
56
|
, fProtected(Protected::kNo)
|
|
43
57
|
, fVkSpec(vkInfo) {
|
|
44
58
|
if (vkInfo.fFlags & VK_IMAGE_CREATE_PROTECTED_BIT) {
|
|
@@ -58,15 +72,25 @@ public:
|
|
|
58
72
|
BackendApi backend() const { return fBackend; }
|
|
59
73
|
|
|
60
74
|
uint32_t numSamples() const { return fSampleCount; }
|
|
61
|
-
|
|
75
|
+
Mipmapped mipmapped() const { return fMipmapped; }
|
|
62
76
|
Protected isProtected() const { return fProtected; }
|
|
63
77
|
|
|
78
|
+
#ifdef SK_DAWN
|
|
79
|
+
bool getDawnTextureInfo(DawnTextureInfo* info) const {
|
|
80
|
+
if (!this->isValid() || fBackend != BackendApi::kDawn) {
|
|
81
|
+
return false;
|
|
82
|
+
}
|
|
83
|
+
*info = DawnTextureSpecToTextureInfo(fDawnSpec, fSampleCount, fMipmapped);
|
|
84
|
+
return true;
|
|
85
|
+
}
|
|
86
|
+
#endif
|
|
87
|
+
|
|
64
88
|
#ifdef SK_METAL
|
|
65
89
|
bool getMtlTextureInfo(MtlTextureInfo* info) const {
|
|
66
90
|
if (!this->isValid() || fBackend != BackendApi::kMetal) {
|
|
67
91
|
return false;
|
|
68
92
|
}
|
|
69
|
-
*info = MtlTextureSpecToTextureInfo(fMtlSpec, fSampleCount,
|
|
93
|
+
*info = MtlTextureSpecToTextureInfo(fMtlSpec, fSampleCount, fMipmapped);
|
|
70
94
|
return true;
|
|
71
95
|
}
|
|
72
96
|
#endif
|
|
@@ -76,12 +100,24 @@ public:
|
|
|
76
100
|
if (!this->isValid() || fBackend != BackendApi::kVulkan) {
|
|
77
101
|
return false;
|
|
78
102
|
}
|
|
79
|
-
*info = VulkanTextureSpecToTextureInfo(fVkSpec, fSampleCount,
|
|
103
|
+
*info = VulkanTextureSpecToTextureInfo(fVkSpec, fSampleCount, fMipmapped);
|
|
80
104
|
return true;
|
|
81
105
|
}
|
|
82
106
|
#endif
|
|
83
107
|
|
|
84
108
|
private:
|
|
109
|
+
#ifdef SK_DAWN
|
|
110
|
+
friend class DawnCaps;
|
|
111
|
+
friend class DawnCommandBuffer;
|
|
112
|
+
friend class DawnGraphicsPipeline;
|
|
113
|
+
friend class DawnResourceProvider;
|
|
114
|
+
friend class DawnTexture;
|
|
115
|
+
const DawnTextureSpec& dawnTextureSpec() const {
|
|
116
|
+
SkASSERT(fValid && fBackend == BackendApi::kDawn);
|
|
117
|
+
return fDawnSpec;
|
|
118
|
+
}
|
|
119
|
+
#endif
|
|
120
|
+
|
|
85
121
|
#ifdef SK_METAL
|
|
86
122
|
friend class MtlCaps;
|
|
87
123
|
friend class MtlGraphicsPipeline;
|
|
@@ -105,10 +141,13 @@ private:
|
|
|
105
141
|
bool fValid = false;
|
|
106
142
|
|
|
107
143
|
uint32_t fSampleCount = 1;
|
|
108
|
-
|
|
144
|
+
Mipmapped fMipmapped = Mipmapped::kNo;
|
|
109
145
|
Protected fProtected = Protected::kNo;
|
|
110
146
|
|
|
111
147
|
union {
|
|
148
|
+
#ifdef SK_DAWN
|
|
149
|
+
DawnTextureSpec fDawnSpec;
|
|
150
|
+
#endif
|
|
112
151
|
#ifdef SK_METAL
|
|
113
152
|
MtlTextureSpec fMtlSpec;
|
|
114
153
|
#endif
|