@shopify/react-native-skia 0.1.233 → 0.1.236
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 +0 -1
- package/android/cpp/jni/JniSkiaManager.cpp +0 -1
- package/android/cpp/rnskia-android/RNSkAndroidView.h +0 -1
- package/android/cpp/rnskia-android/RNSkOpenGLCanvasProvider.cpp +1 -1
- package/android/cpp/rnskia-android/RNSkOpenGLCanvasProvider.h +1 -2
- package/cpp/api/JsiSkTypefaceFactory.h +2 -1
- package/cpp/skia/include/android/AHardwareBufferUtils.h +23 -0
- package/cpp/skia/include/android/GrAHardwareBufferUtils.h +2 -0
- package/cpp/skia/include/android/graphite/SurfaceAndroid.h +59 -0
- package/cpp/skia/include/codec/SkAvifDecoder.h +1 -1
- package/cpp/skia/include/codec/SkBmpDecoder.h +1 -1
- package/cpp/skia/include/codec/SkCodec.h +21 -3
- package/cpp/skia/include/codec/SkGifDecoder.h +1 -1
- package/cpp/skia/include/codec/SkIcoDecoder.h +1 -1
- package/cpp/skia/include/codec/SkJpegDecoder.h +1 -1
- package/cpp/skia/include/codec/SkJpegxlDecoder.h +1 -1
- package/cpp/skia/include/codec/SkPngDecoder.h +1 -1
- package/cpp/skia/include/codec/SkRawDecoder.h +1 -1
- package/cpp/skia/include/codec/SkWbmpDecoder.h +1 -1
- package/cpp/skia/include/codec/SkWebpDecoder.h +1 -1
- package/cpp/skia/include/config/SkUserConfig.h +3 -1
- package/cpp/skia/include/core/SkCanvas.h +66 -37
- package/cpp/skia/include/core/SkColorFilter.h +5 -2
- package/cpp/skia/include/core/SkContourMeasure.h +1 -0
- package/cpp/skia/include/core/SkDocument.h +1 -0
- package/cpp/skia/include/core/SkFont.h +14 -24
- package/cpp/skia/include/core/SkFontArguments.h +1 -1
- package/cpp/skia/include/core/SkFontMetrics.h +1 -1
- package/cpp/skia/include/core/SkFontMgr.h +0 -7
- package/cpp/skia/include/core/SkGraphics.h +13 -0
- package/cpp/skia/include/core/SkMesh.h +9 -13
- package/cpp/skia/include/core/SkMilestone.h +1 -1
- package/cpp/skia/include/core/SkPathMeasure.h +2 -0
- package/cpp/skia/include/core/SkSerialProcs.h +29 -11
- package/cpp/skia/include/core/SkSize.h +3 -3
- package/cpp/skia/include/core/SkStream.h +3 -13
- package/cpp/skia/include/core/SkSurface.h +6 -3
- package/cpp/skia/include/core/SkSurfaceProps.h +2 -4
- package/cpp/skia/include/core/SkTraceMemoryDump.h +15 -0
- package/cpp/skia/include/core/SkTypeface.h +8 -56
- package/cpp/skia/include/core/SkTypes.h +8 -0
- package/cpp/skia/include/core/SkVertices.h +1 -1
- package/cpp/skia/include/docs/SkMultiPictureDocument.h +53 -0
- package/cpp/skia/include/docs/SkPDFDocument.h +11 -0
- package/cpp/skia/include/effects/SkGradientShader.h +9 -0
- package/cpp/skia/include/effects/SkRuntimeEffect.h +3 -7
- package/cpp/skia/include/gpu/GrBackendSemaphore.h +33 -47
- package/cpp/skia/include/gpu/GrBackendSurface.h +2 -3
- package/cpp/skia/include/gpu/GrContextOptions.h +0 -6
- package/cpp/skia/include/gpu/GrContextThreadSafeProxy.h +44 -28
- package/cpp/skia/include/gpu/GrDirectContext.h +12 -31
- package/cpp/skia/include/gpu/GrTypes.h +1 -16
- package/cpp/skia/include/gpu/MutableTextureState.h +35 -80
- package/cpp/skia/include/gpu/ShaderErrorHandler.h +11 -1
- package/cpp/skia/include/gpu/ganesh/SkImageGanesh.h +2 -2
- package/cpp/skia/include/gpu/ganesh/SkSurfaceGanesh.h +1 -1
- package/cpp/skia/include/gpu/ganesh/gl/GrGLDirectContext.h +3 -2
- package/cpp/skia/include/gpu/ganesh/vk/GrVkBackendSemaphore.h +20 -0
- package/cpp/skia/include/gpu/ganesh/vk/GrVkDirectContext.h +30 -0
- package/cpp/skia/include/gpu/gl/GrGLFunctions.h +1 -1
- package/cpp/skia/include/gpu/gl/GrGLInterface.h +2 -0
- package/cpp/skia/include/gpu/gl/glx/GrGLMakeGLXInterface.h +6 -0
- package/cpp/skia/include/gpu/graphite/BackendSemaphore.h +3 -3
- package/cpp/skia/include/gpu/graphite/BackendTexture.h +39 -27
- package/cpp/skia/include/gpu/graphite/Context.h +39 -13
- package/cpp/skia/include/gpu/graphite/ContextOptions.h +2 -0
- package/cpp/skia/include/gpu/graphite/GraphiteTypes.h +2 -1
- package/cpp/skia/include/gpu/graphite/Image.h +106 -87
- package/cpp/skia/include/gpu/graphite/Recorder.h +24 -3
- package/cpp/skia/include/gpu/graphite/Surface.h +7 -2
- package/cpp/skia/include/gpu/graphite/dawn/DawnBackendContext.h +41 -2
- package/cpp/skia/include/gpu/graphite/dawn/DawnTypes.h +11 -6
- package/cpp/skia/include/gpu/graphite/mtl/MtlGraphiteTypes.h +1 -2
- package/cpp/skia/include/gpu/graphite/vk/VulkanGraphiteTypes.h +6 -6
- package/cpp/skia/include/gpu/mock/GrMockTypes.h +1 -0
- package/cpp/skia/include/gpu/vk/GrVkBackendContext.h +1 -1
- package/cpp/skia/include/gpu/vk/GrVkTypes.h +1 -44
- package/cpp/skia/include/gpu/vk/VulkanExtensions.h +1 -1
- package/cpp/skia/include/gpu/vk/VulkanMutableTextureState.h +25 -0
- package/cpp/skia/include/gpu/vk/VulkanTypes.h +44 -0
- package/cpp/skia/include/ports/SkFontConfigInterface.h +3 -6
- package/cpp/skia/include/private/SkEncodedInfo.h +5 -0
- package/cpp/skia/include/private/SkExif.h +102 -0
- package/cpp/skia/include/private/SkGainmapInfo.h +11 -1
- package/cpp/skia/include/private/base/SkAssert.h +16 -0
- package/cpp/skia/include/private/base/SkDeque.h +2 -7
- package/cpp/skia/include/private/base/SkLoadUserConfig.h +1 -1
- package/cpp/skia/include/private/base/SkTArray.h +69 -28
- package/cpp/skia/include/private/base/SkThreadAnnotations.h +18 -5
- package/cpp/skia/include/private/chromium/GrSurfaceCharacterization.h +26 -30
- package/cpp/skia/include/private/chromium/GrVkSecondaryCBDrawContext.h +4 -3
- package/cpp/skia/include/private/chromium/SkImageChromium.h +1 -1
- package/cpp/skia/include/private/gpu/ganesh/GrTypesPriv.h +8 -6
- package/cpp/skia/include/private/gpu/graphite/ContextOptionsPriv.h +29 -0
- package/cpp/skia/include/private/gpu/graphite/DawnTypesPriv.h +12 -9
- package/cpp/skia/include/private/gpu/graphite/VulkanGraphiteTypesPriv.h +16 -11
- package/cpp/skia/include/third_party/vulkan/vulkan/vk_platform.h +2 -2
- package/cpp/skia/include/third_party/vulkan/vulkan/vk_video/vulkan_video_codec_h264std.h +312 -0
- package/cpp/skia/include/third_party/vulkan/vulkan/vk_video/vulkan_video_codec_h264std_decode.h +77 -0
- package/cpp/skia/include/third_party/vulkan/vulkan/vk_video/vulkan_video_codec_h265std.h +446 -0
- package/cpp/skia/include/third_party/vulkan/vulkan/vk_video/vulkan_video_codec_h265std_decode.h +67 -0
- package/cpp/skia/include/third_party/vulkan/vulkan/vk_video/vulkan_video_codecs_common.h +36 -0
- package/cpp/skia/include/third_party/vulkan/vulkan/vulkan.h +9 -2
- package/cpp/skia/include/third_party/vulkan/vulkan/vulkan_android.h +31 -3
- package/cpp/skia/include/third_party/vulkan/vulkan/vulkan_core.h +10624 -5716
- package/cpp/skia/include/third_party/vulkan/vulkan/vulkan_ios.h +2 -1
- package/cpp/skia/include/third_party/vulkan/vulkan/vulkan_macos.h +2 -1
- package/cpp/skia/include/third_party/vulkan/vulkan/vulkan_win32.h +28 -1
- package/cpp/skia/include/third_party/vulkan/vulkan/vulkan_xcb.h +2 -1
- package/cpp/skia/include/utils/mac/SkCGUtils.h +23 -11
- package/cpp/skia/modules/skcms/skcms.h +2 -410
- package/cpp/skia/modules/skcms/src/Transform_inl.h +831 -704
- package/cpp/skia/modules/skcms/src/skcms_Transform.h +161 -0
- package/cpp/skia/modules/skcms/src/skcms_internals.h +136 -0
- package/cpp/skia/modules/skcms/src/skcms_public.h +404 -0
- package/cpp/skia/modules/skparagraph/include/FontArguments.h +1 -1
- package/cpp/skia/modules/skparagraph/include/FontCollection.h +2 -0
- package/cpp/skia/modules/skparagraph/include/Paragraph.h +2 -2
- package/cpp/skia/modules/skparagraph/include/TextStyle.h +4 -3
- package/cpp/skia/modules/skparagraph/include/TypefaceFontProvider.h +1 -3
- package/cpp/skia/modules/skresources/include/SkResources.h +28 -17
- package/cpp/skia/modules/skunicode/include/SkUnicode.h +12 -0
- package/cpp/skia/modules/svg/include/SkSVGDOM.h +4 -1
- package/cpp/skia/modules/svg/include/SkSVGRenderContext.h +4 -1
- package/cpp/skia/src/base/SkUTF.h +7 -0
- package/cpp/skia/src/core/SkTHash.h +20 -8
- package/lib/commonjs/dom/nodes/JsiSkDOM.d.ts +3 -2
- package/lib/commonjs/dom/nodes/JsiSkDOM.js +56 -57
- package/lib/commonjs/dom/nodes/JsiSkDOM.js.map +1 -1
- package/lib/commonjs/external/reanimated/index.d.ts +1 -0
- package/lib/commonjs/external/reanimated/index.js +13 -0
- package/lib/commonjs/external/reanimated/index.js.map +1 -1
- package/lib/commonjs/external/reanimated/interpolators.js +16 -2
- package/lib/commonjs/external/reanimated/interpolators.js.map +1 -1
- package/lib/commonjs/external/reanimated/moduleWrapper.d.ts +1 -0
- package/lib/commonjs/external/reanimated/moduleWrapper.js +5 -3
- package/lib/commonjs/external/reanimated/moduleWrapper.js.map +1 -1
- package/lib/commonjs/external/reanimated/textures.d.ts +5 -0
- package/lib/commonjs/external/reanimated/textures.js +52 -0
- package/lib/commonjs/external/reanimated/textures.js.map +1 -0
- package/lib/commonjs/headless/index.js +1 -1
- package/lib/commonjs/headless/index.js.map +1 -1
- package/lib/commonjs/mock/index.js +3 -0
- package/lib/commonjs/mock/index.js.map +1 -1
- package/lib/commonjs/renderer/Canvas.js +6 -5
- package/lib/commonjs/renderer/Canvas.js.map +1 -1
- package/lib/commonjs/renderer/Container.d.ts +1 -1
- package/lib/commonjs/renderer/Container.js +2 -1
- package/lib/commonjs/renderer/Container.js.map +1 -1
- package/lib/commonjs/renderer/Offscreen.d.ts +1 -0
- package/lib/commonjs/renderer/Offscreen.js +18 -5
- package/lib/commonjs/renderer/Offscreen.js.map +1 -1
- package/lib/commonjs/renderer/Reconciler.d.ts +1 -1
- package/lib/commonjs/renderer/Reconciler.js +7 -4
- package/lib/commonjs/renderer/Reconciler.js.map +1 -1
- package/lib/commonjs/skia/types/Matrix4.d.ts +2 -2
- package/lib/commonjs/skia/types/Matrix4.js.map +1 -1
- package/lib/commonjs/skia/types/Shader/Shader.d.ts +1 -1
- package/lib/commonjs/skia/types/Shader/Shader.js.map +1 -1
- package/lib/commonjs/skia/web/JsiSkPath.d.ts +2 -2
- package/lib/commonjs/skia/web/JsiSkPath.js +10 -2
- package/lib/commonjs/skia/web/JsiSkPath.js.map +1 -1
- package/lib/commonjs/views/SkiaJSDomView.d.ts +31 -0
- package/lib/commonjs/views/SkiaJSDomView.js +161 -0
- package/lib/commonjs/views/SkiaJSDomView.js.map +1 -0
- package/lib/commonjs/views/SkiaJSDomView.web.d.ts +1 -0
- package/lib/commonjs/views/SkiaJSDomView.web.js +14 -0
- package/lib/commonjs/views/SkiaJSDomView.web.js.map +1 -0
- package/lib/module/dom/nodes/JsiSkDOM.d.ts +3 -2
- package/lib/module/dom/nodes/JsiSkDOM.js +56 -56
- package/lib/module/dom/nodes/JsiSkDOM.js.map +1 -1
- package/lib/module/external/reanimated/index.d.ts +1 -0
- package/lib/module/external/reanimated/index.js +1 -0
- package/lib/module/external/reanimated/index.js.map +1 -1
- package/lib/module/external/reanimated/interpolators.js +15 -2
- package/lib/module/external/reanimated/interpolators.js.map +1 -1
- package/lib/module/external/reanimated/moduleWrapper.d.ts +1 -0
- package/lib/module/external/reanimated/moduleWrapper.js +3 -2
- package/lib/module/external/reanimated/moduleWrapper.js.map +1 -1
- package/lib/module/external/reanimated/textures.d.ts +5 -0
- package/lib/module/external/reanimated/textures.js +35 -0
- package/lib/module/external/reanimated/textures.js.map +1 -0
- package/lib/module/headless/index.js +1 -1
- package/lib/module/headless/index.js.map +1 -1
- package/lib/module/mock/index.js +3 -0
- package/lib/module/mock/index.js.map +1 -1
- package/lib/module/renderer/Canvas.js +5 -4
- package/lib/module/renderer/Canvas.js.map +1 -1
- package/lib/module/renderer/Container.d.ts +1 -1
- package/lib/module/renderer/Container.js +2 -1
- package/lib/module/renderer/Container.js.map +1 -1
- package/lib/module/renderer/Offscreen.d.ts +1 -0
- package/lib/module/renderer/Offscreen.js +11 -3
- package/lib/module/renderer/Offscreen.js.map +1 -1
- package/lib/module/renderer/Reconciler.d.ts +1 -1
- package/lib/module/renderer/Reconciler.js +7 -4
- package/lib/module/renderer/Reconciler.js.map +1 -1
- package/lib/module/skia/types/Matrix4.d.ts +2 -2
- package/lib/module/skia/types/Matrix4.js.map +1 -1
- package/lib/module/skia/types/Shader/Shader.d.ts +1 -1
- package/lib/module/skia/types/Shader/Shader.js.map +1 -1
- package/lib/module/skia/web/JsiSkPath.d.ts +2 -2
- package/lib/module/skia/web/JsiSkPath.js +10 -2
- package/lib/module/skia/web/JsiSkPath.js.map +1 -1
- package/lib/module/views/SkiaJSDomView.d.ts +31 -0
- package/lib/module/views/SkiaJSDomView.js +136 -0
- package/lib/module/views/SkiaJSDomView.js.map +1 -0
- package/lib/module/views/SkiaJSDomView.web.d.ts +1 -0
- package/lib/module/views/SkiaJSDomView.web.js +2 -0
- package/lib/module/views/SkiaJSDomView.web.js.map +1 -0
- package/lib/typescript/src/dom/nodes/JsiSkDOM.d.ts +3 -2
- package/lib/typescript/src/external/reanimated/index.d.ts +1 -0
- package/lib/typescript/src/external/reanimated/moduleWrapper.d.ts +1 -0
- package/lib/typescript/src/external/reanimated/textures.d.ts +5 -0
- package/lib/typescript/src/renderer/Container.d.ts +1 -1
- package/lib/typescript/src/renderer/Offscreen.d.ts +1 -0
- package/lib/typescript/src/renderer/Reconciler.d.ts +1 -1
- package/lib/typescript/src/skia/types/Matrix4.d.ts +2 -2
- package/lib/typescript/src/skia/types/Shader/Shader.d.ts +1 -1
- package/lib/typescript/src/skia/web/JsiSkPath.d.ts +2 -2
- package/lib/typescript/src/views/SkiaJSDomView.d.ts +31 -0
- package/lib/typescript/src/views/SkiaJSDomView.web.d.ts +1 -0
- 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/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/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/Info.plist +5 -5
- 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/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/Info.plist +5 -5
- package/libs/ios/libsvg.xcframework/ios-arm64_arm64e/libsvg.a +0 -0
- package/libs/ios/libsvg.xcframework/ios-arm64_arm64e_x86_64-simulator/libsvg.a +0 -0
- package/package.json +1 -1
- package/src/dom/nodes/JsiSkDOM.ts +55 -56
- package/src/external/reanimated/index.ts +1 -0
- package/src/external/reanimated/interpolators.ts +17 -3
- package/src/external/reanimated/moduleWrapper.ts +1 -0
- package/src/external/reanimated/textures.tsx +50 -0
- package/src/headless/index.ts +1 -1
- package/src/mock/index.ts +3 -0
- package/src/renderer/Canvas.tsx +4 -3
- package/src/renderer/Container.tsx +3 -2
- package/src/renderer/Offscreen.tsx +12 -3
- package/src/renderer/Reconciler.tsx +5 -2
- package/src/skia/types/Matrix4.ts +2 -2
- package/src/skia/types/Shader/Shader.ts +6 -1
- package/src/skia/web/JsiSkPath.ts +23 -3
- package/src/views/SkiaJSDomView.tsx +126 -0
- package/src/views/SkiaJSDomView.web.tsx +1 -0
- package/android/cpp/jni/include/JniSkiaDrawView.h +0 -90
- package/cpp/rnskia/RNSkJsView.cpp +0 -236
- package/cpp/rnskia/RNSkJsView.h +0 -121
- package/cpp/skia/include/gpu/GrSurfaceInfo.h +0 -142
- package/cpp/skia/include/private/gpu/ganesh/GrGLTypesPriv.h +0 -107
- package/cpp/skia/include/private/gpu/ganesh/GrMockTypesPriv.h +0 -32
- package/cpp/skia/include/private/gpu/ganesh/GrMtlTypesPriv.h +0 -83
- package/cpp/skia/include/private/gpu/ganesh/GrVkTypesPriv.h +0 -47
- package/cpp/skia/include/private/gpu/vk/VulkanTypesPriv.h +0 -57
- package/cpp/skia/include/utils/SkBase64.h +0 -53
- package/cpp/skia/modules/skcms/skcms_internal.h +0 -56
|
@@ -8,60 +8,41 @@
|
|
|
8
8
|
#ifndef GrBackendSemaphore_DEFINED
|
|
9
9
|
#define GrBackendSemaphore_DEFINED
|
|
10
10
|
|
|
11
|
-
#include "include/gpu/GrTypes.h"
|
|
12
|
-
|
|
13
|
-
#include "include/
|
|
11
|
+
#include "include/gpu/GrTypes.h" // IWYU pragma: keep
|
|
12
|
+
#include "include/private/base/SkAPI.h"
|
|
13
|
+
#include "include/private/base/SkAnySubclass.h"
|
|
14
14
|
|
|
15
15
|
#ifdef SK_METAL
|
|
16
16
|
#include "include/gpu/mtl/GrMtlTypes.h"
|
|
17
17
|
#endif
|
|
18
18
|
|
|
19
|
-
#
|
|
20
|
-
#include "include/gpu/vk/
|
|
19
|
+
#if defined(SK_VULKAN) && !defined(SK_DISABLE_LEGACY_VULKAN_BACKENDSEMAPHORE)
|
|
20
|
+
#include "include/private/gpu/vk/SkiaVulkan.h"
|
|
21
21
|
#endif
|
|
22
22
|
|
|
23
23
|
#ifdef SK_DIRECT3D
|
|
24
24
|
#include "include/private/gpu/ganesh/GrD3DTypesMinimal.h"
|
|
25
25
|
#endif
|
|
26
26
|
|
|
27
|
+
#include <cstddef>
|
|
28
|
+
|
|
29
|
+
class GrBackendSemaphoreData;
|
|
30
|
+
|
|
27
31
|
/**
|
|
28
32
|
* Wrapper class for passing into and receiving data from Ganesh about a backend semaphore object.
|
|
29
33
|
*/
|
|
30
|
-
class GrBackendSemaphore {
|
|
34
|
+
class SK_API GrBackendSemaphore {
|
|
31
35
|
public:
|
|
32
|
-
//
|
|
33
|
-
//
|
|
34
|
-
GrBackendSemaphore()
|
|
35
|
-
: fBackend(GrBackendApi::kOpenGL), fGLSync(nullptr), fIsInitialized(false) {}
|
|
36
|
-
|
|
37
|
-
#ifdef SK_DIRECT3D
|
|
38
|
-
// We only need to specify these if Direct3D is enabled, because it requires special copy
|
|
39
|
-
// characteristics.
|
|
36
|
+
// The GrBackendSemaphore cannot be used until either init* is called, which will set the
|
|
37
|
+
// appropriate GrBackend.
|
|
38
|
+
GrBackendSemaphore();
|
|
40
39
|
~GrBackendSemaphore();
|
|
41
40
|
GrBackendSemaphore(const GrBackendSemaphore&);
|
|
42
41
|
GrBackendSemaphore& operator=(const GrBackendSemaphore&);
|
|
43
|
-
#endif
|
|
44
|
-
|
|
45
|
-
void initGL(GrGLsync sync) {
|
|
46
|
-
fBackend = GrBackendApi::kOpenGL;
|
|
47
|
-
fGLSync = sync;
|
|
48
|
-
fIsInitialized = true;
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
#ifdef SK_VULKAN
|
|
52
|
-
void initVulkan(VkSemaphore semaphore) {
|
|
53
|
-
fBackend = GrBackendApi::kVulkan;
|
|
54
|
-
fVkSemaphore = semaphore;
|
|
55
|
-
|
|
56
|
-
fIsInitialized = true;
|
|
57
|
-
}
|
|
58
42
|
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
}
|
|
63
|
-
return fVkSemaphore;
|
|
64
|
-
}
|
|
43
|
+
#if defined(SK_VULKAN) && !defined(SK_DISABLE_LEGACY_VULKAN_BACKENDSEMAPHORE)
|
|
44
|
+
void initVulkan(VkSemaphore semaphore);
|
|
45
|
+
VkSemaphore vkSemaphore() const;
|
|
65
46
|
#endif
|
|
66
47
|
|
|
67
48
|
#ifdef SK_METAL
|
|
@@ -100,30 +81,35 @@ public:
|
|
|
100
81
|
#endif
|
|
101
82
|
|
|
102
83
|
bool isInitialized() const { return fIsInitialized; }
|
|
103
|
-
|
|
104
|
-
GrGLsync glSync() const {
|
|
105
|
-
if (!fIsInitialized || GrBackendApi::kOpenGL != fBackend) {
|
|
106
|
-
return nullptr;
|
|
107
|
-
}
|
|
108
|
-
return fGLSync;
|
|
109
|
-
}
|
|
110
|
-
|
|
84
|
+
GrBackendApi backend() const { return fBackend; }
|
|
111
85
|
|
|
112
86
|
#ifdef SK_DIRECT3D
|
|
113
87
|
bool getD3DFenceInfo(GrD3DFenceInfo* outInfo) const;
|
|
114
88
|
#endif
|
|
115
89
|
|
|
116
90
|
private:
|
|
91
|
+
friend class GrBackendSemaphorePriv;
|
|
92
|
+
friend class GrBackendSemaphoreData;
|
|
93
|
+
// Size determined by looking at the GrBackendSemaphoreData subclasses, then
|
|
94
|
+
// guessing-and-checking. Compiler will complain if this is too small - in that case,
|
|
95
|
+
// just increase the number.
|
|
96
|
+
inline constexpr static size_t kMaxSubclassSize = 16;
|
|
97
|
+
using AnySemaphoreData = SkAnySubclass<GrBackendSemaphoreData, kMaxSubclassSize>;
|
|
98
|
+
|
|
99
|
+
template <typename SemaphoreData>
|
|
100
|
+
GrBackendSemaphore(GrBackendApi api, SemaphoreData data) : fBackend(api), fIsInitialized(true) {
|
|
101
|
+
fSemaphoreData.emplace<SemaphoreData>(data);
|
|
102
|
+
}
|
|
103
|
+
|
|
117
104
|
#ifdef SK_DIRECT3D
|
|
118
105
|
void assignD3DFenceInfo(const GrD3DFenceInfo& info);
|
|
119
106
|
#endif
|
|
120
107
|
|
|
121
108
|
GrBackendApi fBackend;
|
|
109
|
+
AnySemaphoreData fSemaphoreData;
|
|
110
|
+
|
|
122
111
|
union {
|
|
123
|
-
|
|
124
|
-
#ifdef SK_VULKAN
|
|
125
|
-
VkSemaphore fVkSemaphore;
|
|
126
|
-
#endif
|
|
112
|
+
void* fPlaceholder; // TODO(293490566)
|
|
127
113
|
#ifdef SK_METAL
|
|
128
114
|
GrMTLHandle fMtlEvent; // Expected to be an id<MTLEvent>
|
|
129
115
|
#endif
|
|
@@ -25,7 +25,6 @@ class GrBackendRenderTargetData;
|
|
|
25
25
|
|
|
26
26
|
namespace skgpu {
|
|
27
27
|
class MutableTextureState;
|
|
28
|
-
class MutableTextureStateRef;
|
|
29
28
|
}
|
|
30
29
|
|
|
31
30
|
#ifdef SK_METAL
|
|
@@ -290,7 +289,7 @@ private:
|
|
|
290
289
|
}
|
|
291
290
|
|
|
292
291
|
friend class GrVkGpu; // for getMutableState
|
|
293
|
-
sk_sp<skgpu::
|
|
292
|
+
sk_sp<skgpu::MutableTextureState> getMutableState() const;
|
|
294
293
|
|
|
295
294
|
#ifdef SK_DIRECT3D
|
|
296
295
|
friend class GrD3DTexture;
|
|
@@ -433,7 +432,7 @@ private:
|
|
|
433
432
|
}
|
|
434
433
|
|
|
435
434
|
friend class GrVkGpu; // for getMutableState
|
|
436
|
-
sk_sp<skgpu::
|
|
435
|
+
sk_sp<skgpu::MutableTextureState> getMutableState() const;
|
|
437
436
|
|
|
438
437
|
#ifdef SK_DIRECT3D
|
|
439
438
|
friend class GrD3DGpu;
|
|
@@ -20,7 +20,6 @@
|
|
|
20
20
|
|
|
21
21
|
class SkExecutor;
|
|
22
22
|
|
|
23
|
-
#if defined(SK_GANESH)
|
|
24
23
|
struct SK_API GrContextOptions {
|
|
25
24
|
enum class Enable {
|
|
26
25
|
/** Forces an option to be disabled. */
|
|
@@ -371,10 +370,5 @@ struct SK_API GrContextOptions {
|
|
|
371
370
|
|
|
372
371
|
GrDriverBugWorkarounds fDriverBugWorkarounds;
|
|
373
372
|
};
|
|
374
|
-
#else
|
|
375
|
-
struct GrContextOptions {
|
|
376
|
-
struct PersistentCache {};
|
|
377
|
-
};
|
|
378
|
-
#endif
|
|
379
373
|
|
|
380
374
|
#endif
|
|
@@ -8,11 +8,8 @@
|
|
|
8
8
|
#ifndef GrContextThreadSafeProxy_DEFINED
|
|
9
9
|
#define GrContextThreadSafeProxy_DEFINED
|
|
10
10
|
|
|
11
|
-
#include "include/core/SkRefCnt.h"
|
|
12
|
-
|
|
13
|
-
#if defined(SK_GANESH)
|
|
14
|
-
|
|
15
11
|
#include "include/core/SkImageInfo.h"
|
|
12
|
+
#include "include/core/SkRefCnt.h"
|
|
16
13
|
#include "include/gpu/GpuTypes.h"
|
|
17
14
|
#include "include/gpu/GrContextOptions.h"
|
|
18
15
|
#include "include/gpu/GrTypes.h"
|
|
@@ -34,9 +31,9 @@ namespace sktext::gpu { class TextBlobRedrawCoordinator; }
|
|
|
34
31
|
* Can be used to perform actions related to the generating GrContext in a thread safe manner. The
|
|
35
32
|
* proxy does not access the 3D API (e.g. OpenGL) that backs the generating GrContext.
|
|
36
33
|
*/
|
|
37
|
-
class SK_API GrContextThreadSafeProxy
|
|
34
|
+
class SK_API GrContextThreadSafeProxy : public SkNVRefCnt<GrContextThreadSafeProxy> {
|
|
38
35
|
public:
|
|
39
|
-
~GrContextThreadSafeProxy();
|
|
36
|
+
virtual ~GrContextThreadSafeProxy();
|
|
40
37
|
|
|
41
38
|
/**
|
|
42
39
|
* Create a surface characterization for a DDL that will be replayed into the GrContext
|
|
@@ -68,7 +65,7 @@ public:
|
|
|
68
65
|
* @param surfaceProps The surface properties of the SkSurface that the DDL
|
|
69
66
|
* created with this characterization will be replayed
|
|
70
67
|
* into
|
|
71
|
-
* @param
|
|
68
|
+
* @param isMipmapped Will the surface the DDL will be replayed into have
|
|
72
69
|
* space allocated for mipmaps?
|
|
73
70
|
* @param willUseGLFBO0 Will the surface the DDL will be replayed into be
|
|
74
71
|
* backed by GL FBO 0. This flag is only valid if using
|
|
@@ -81,24 +78,39 @@ public:
|
|
|
81
78
|
* command buffer via a GrVkSecondaryCBDrawContext? If
|
|
82
79
|
* this is true then the following is required:
|
|
83
80
|
* isTexureable = false
|
|
84
|
-
*
|
|
81
|
+
* isMipmapped = false
|
|
85
82
|
* willUseGLFBO0 = false
|
|
86
83
|
* vkRTSupportsInputAttachment = false
|
|
87
84
|
*/
|
|
88
85
|
GrSurfaceCharacterization createCharacterization(
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
86
|
+
size_t cacheMaxResourceBytes,
|
|
87
|
+
const SkImageInfo& ii,
|
|
88
|
+
const GrBackendFormat& backendFormat,
|
|
89
|
+
int sampleCount,
|
|
90
|
+
GrSurfaceOrigin origin,
|
|
91
|
+
const SkSurfaceProps& surfaceProps,
|
|
92
|
+
skgpu::Mipmapped isMipmapped,
|
|
93
|
+
bool willUseGLFBO0 = false,
|
|
94
|
+
bool isTextureable = true,
|
|
95
|
+
skgpu::Protected isProtected = GrProtected::kNo,
|
|
96
|
+
bool vkRTSupportsInputAttachment = false,
|
|
97
|
+
bool forVulkanSecondaryCommandBuffer = false);
|
|
98
|
+
|
|
99
|
+
#if !defined(SK_DISABLE_LEGACY_CREATE_CHARACTERIZATION)
|
|
100
|
+
GrSurfaceCharacterization createCharacterization(
|
|
101
|
+
size_t cacheMaxResourceBytes,
|
|
102
|
+
const SkImageInfo& ii,
|
|
103
|
+
const GrBackendFormat& backendFormat,
|
|
104
|
+
int sampleCount,
|
|
105
|
+
GrSurfaceOrigin origin,
|
|
106
|
+
const SkSurfaceProps& surfaceProps,
|
|
107
|
+
bool isMipmapped,
|
|
108
|
+
bool willUseGLFBO0 = false,
|
|
109
|
+
bool isTextureable = true,
|
|
110
|
+
skgpu::Protected isProtected = GrProtected::kNo,
|
|
111
|
+
bool vkRTSupportsInputAttachment = false,
|
|
112
|
+
bool forVulkanSecondaryCommandBuffer = false);
|
|
113
|
+
#endif
|
|
102
114
|
/*
|
|
103
115
|
* Retrieve the default GrBackendFormat for a given SkColorType and renderability.
|
|
104
116
|
* It is guaranteed that this backend format will be the one used by the following
|
|
@@ -138,12 +150,13 @@ public:
|
|
|
138
150
|
GrContextThreadSafeProxyPriv priv();
|
|
139
151
|
const GrContextThreadSafeProxyPriv priv() const; // NOLINT(readability-const-return-type)
|
|
140
152
|
|
|
141
|
-
|
|
142
|
-
friend class GrContextThreadSafeProxyPriv; // for ctor and hidden methods
|
|
143
|
-
|
|
153
|
+
protected:
|
|
144
154
|
// DDL TODO: need to add unit tests for backend & maybe options
|
|
145
155
|
GrContextThreadSafeProxy(GrBackendApi, const GrContextOptions&);
|
|
146
156
|
|
|
157
|
+
private:
|
|
158
|
+
friend class GrContextThreadSafeProxyPriv; // for ctor and hidden methods
|
|
159
|
+
|
|
147
160
|
void abandonContext();
|
|
148
161
|
bool abandoned() const;
|
|
149
162
|
|
|
@@ -152,6 +165,13 @@ private:
|
|
|
152
165
|
// `init` method on GrContext_Base).
|
|
153
166
|
void init(sk_sp<const GrCaps>, sk_sp<GrThreadSafePipelineBuilder>);
|
|
154
167
|
|
|
168
|
+
virtual bool isValidCharacterizationForVulkan(sk_sp<const GrCaps>,
|
|
169
|
+
bool isTextureable,
|
|
170
|
+
skgpu::Mipmapped isMipmapped,
|
|
171
|
+
skgpu::Protected isProtected,
|
|
172
|
+
bool vkRTSupportsInputAttachment,
|
|
173
|
+
bool forVulkanSecondaryCommandBuffer);
|
|
174
|
+
|
|
155
175
|
const GrBackendApi fBackend;
|
|
156
176
|
const GrContextOptions fOptions;
|
|
157
177
|
const uint32_t fContextID;
|
|
@@ -162,8 +182,4 @@ private:
|
|
|
162
182
|
std::atomic<bool> fAbandoned{false};
|
|
163
183
|
};
|
|
164
184
|
|
|
165
|
-
#else // !defined(SK_GANESH)
|
|
166
|
-
class SK_API GrContextThreadSafeProxy final : public SkNVRefCnt<GrContextThreadSafeProxy> {};
|
|
167
|
-
#endif
|
|
168
|
-
|
|
169
185
|
#endif
|
|
@@ -41,9 +41,7 @@ class SkTaskGroup;
|
|
|
41
41
|
class SkTraceMemoryDump;
|
|
42
42
|
enum SkColorType : int;
|
|
43
43
|
enum class SkTextureCompressionType;
|
|
44
|
-
struct GrGLInterface;
|
|
45
44
|
struct GrMockOptions;
|
|
46
|
-
struct GrVkBackendContext; // IWYU pragma: keep
|
|
47
45
|
struct GrD3DBackendContext; // IWYU pragma: keep
|
|
48
46
|
struct GrMtlBackendContext; // IWYU pragma: keep
|
|
49
47
|
|
|
@@ -62,28 +60,6 @@ enum class BackendSurfaceAccess;
|
|
|
62
60
|
|
|
63
61
|
class SK_API GrDirectContext : public GrRecordingContext {
|
|
64
62
|
public:
|
|
65
|
-
#if defined(SK_GL) && !defined(SK_DISABLE_LEGACY_GL_GRDIRECTCONTEXT_FACTORIES)
|
|
66
|
-
/**
|
|
67
|
-
* Creates a GrDirectContext for a backend context. If no GrGLInterface is provided then the
|
|
68
|
-
* result of GrGLMakeNativeInterface() is used if it succeeds.
|
|
69
|
-
*/
|
|
70
|
-
static sk_sp<GrDirectContext> MakeGL(sk_sp<const GrGLInterface>, const GrContextOptions&);
|
|
71
|
-
static sk_sp<GrDirectContext> MakeGL(sk_sp<const GrGLInterface>);
|
|
72
|
-
static sk_sp<GrDirectContext> MakeGL(const GrContextOptions&);
|
|
73
|
-
static sk_sp<GrDirectContext> MakeGL();
|
|
74
|
-
#endif
|
|
75
|
-
|
|
76
|
-
#ifdef SK_VULKAN
|
|
77
|
-
/**
|
|
78
|
-
* The Vulkan context (VkQueue, VkDevice, VkInstance) must be kept alive until the returned
|
|
79
|
-
* GrDirectContext is destroyed. This also means that any objects created with this
|
|
80
|
-
* GrDirectContext (e.g. SkSurfaces, SkImages, etc.) must also be released as they may hold
|
|
81
|
-
* refs on the GrDirectContext. Once all these objects and the GrDirectContext are released,
|
|
82
|
-
* then it is safe to delete the vulkan objects.
|
|
83
|
-
*/
|
|
84
|
-
static sk_sp<GrDirectContext> MakeVulkan(const GrVkBackendContext&, const GrContextOptions&);
|
|
85
|
-
static sk_sp<GrDirectContext> MakeVulkan(const GrVkBackendContext&);
|
|
86
|
-
#endif
|
|
87
63
|
|
|
88
64
|
#ifdef SK_METAL
|
|
89
65
|
/**
|
|
@@ -357,14 +333,17 @@ public:
|
|
|
357
333
|
|
|
358
334
|
/**
|
|
359
335
|
* Inserts a list of GPU semaphores that the current GPU-backed API must wait on before
|
|
360
|
-
* executing any more commands on the GPU.
|
|
361
|
-
*
|
|
362
|
-
*
|
|
336
|
+
* executing any more commands on the GPU. We only guarantee blocking transfer and fragment
|
|
337
|
+
* shader work, but may block earlier stages as well depending on the backend.If this call
|
|
338
|
+
* returns false, then the GPU back-end will not wait on any passed in semaphores, and the
|
|
339
|
+
* client will still own the semaphores, regardless of the value of deleteSemaphoresAfterWait.
|
|
363
340
|
*
|
|
364
341
|
* If deleteSemaphoresAfterWait is false then Skia will not delete the semaphores. In this case
|
|
365
342
|
* it is the client's responsibility to not destroy or attempt to reuse the semaphores until it
|
|
366
343
|
* knows that Skia has finished waiting on them. This can be done by using finishedProcs on
|
|
367
344
|
* flush calls.
|
|
345
|
+
*
|
|
346
|
+
* This is not supported on the GL backend.
|
|
368
347
|
*/
|
|
369
348
|
bool wait(int numSemaphores, const GrBackendSemaphore* waitSemaphores,
|
|
370
349
|
bool deleteSemaphoresAfterWait = true);
|
|
@@ -416,13 +395,13 @@ public:
|
|
|
416
395
|
* @param image the non-null image to flush.
|
|
417
396
|
* @param info flush options
|
|
418
397
|
*/
|
|
419
|
-
GrSemaphoresSubmitted flush(sk_sp<const SkImage
|
|
420
|
-
void flush(sk_sp<const SkImage
|
|
398
|
+
GrSemaphoresSubmitted flush(const sk_sp<const SkImage>& image, const GrFlushInfo& info);
|
|
399
|
+
void flush(const sk_sp<const SkImage>& image);
|
|
421
400
|
|
|
422
401
|
/** Version of flush() that uses a default GrFlushInfo. Also submits the flushed work to the
|
|
423
402
|
* GPU.
|
|
424
403
|
*/
|
|
425
|
-
void flushAndSubmit(sk_sp<const SkImage
|
|
404
|
+
void flushAndSubmit(const sk_sp<const SkImage>& image);
|
|
426
405
|
|
|
427
406
|
/** Issues pending SkSurface commands to the GPU-backed API objects and resolves any SkSurface
|
|
428
407
|
* MSAA. A call to GrDirectContext::submit is always required to ensure work is actually sent
|
|
@@ -952,7 +931,9 @@ public:
|
|
|
952
931
|
const GrDirectContextPriv priv() const; // NOLINT(readability-const-return-type)
|
|
953
932
|
|
|
954
933
|
protected:
|
|
955
|
-
GrDirectContext(GrBackendApi backend,
|
|
934
|
+
GrDirectContext(GrBackendApi backend,
|
|
935
|
+
const GrContextOptions& options,
|
|
936
|
+
sk_sp<GrContextThreadSafeProxy> proxy);
|
|
956
937
|
|
|
957
938
|
bool init() override;
|
|
958
939
|
|
|
@@ -16,7 +16,6 @@
|
|
|
16
16
|
class GrBackendSemaphore;
|
|
17
17
|
|
|
18
18
|
namespace skgpu {
|
|
19
|
-
enum class Mipmapped : bool;
|
|
20
19
|
enum class Protected : bool;
|
|
21
20
|
enum class Renderable : bool;
|
|
22
21
|
}
|
|
@@ -129,14 +128,6 @@ static constexpr GrBackendApi kMock_GrBackend = GrBackendApi::kMock;
|
|
|
129
128
|
|
|
130
129
|
///////////////////////////////////////////////////////////////////////////////
|
|
131
130
|
|
|
132
|
-
/**
|
|
133
|
-
* Used to say whether a texture has mip levels allocated or not.
|
|
134
|
-
*/
|
|
135
|
-
/** Deprecated legacy alias of skgpu::Mipmapped. */
|
|
136
|
-
using GrMipmapped = skgpu::Mipmapped;
|
|
137
|
-
/** Deprecated legacy alias of skgpu::Mipmapped. */
|
|
138
|
-
using GrMipMapped = skgpu::Mipmapped;
|
|
139
|
-
|
|
140
131
|
/*
|
|
141
132
|
* Can a GrBackendObject be rendered to?
|
|
142
133
|
*/
|
|
@@ -220,13 +211,7 @@ typedef void (*GrDirectContextDestroyedProc)(GrDirectContextDestroyedContext des
|
|
|
220
211
|
* The submittedProc is useful to the client to know when semaphores that were sent with the flush
|
|
221
212
|
* have actually been submitted to the GPU so that they can be waited on (or deleted if the submit
|
|
222
213
|
* fails).
|
|
223
|
-
*
|
|
224
|
-
* really know when the driver sends the work to the GPU. Therefore, we treat the submitted proc as
|
|
225
|
-
* we do in other backends. It will be called when the next GrContext::submit is called after the
|
|
226
|
-
* flush (or possibly during the flush if there is no work to be done for the flush). The main use
|
|
227
|
-
* case for the submittedProc is to know when semaphores have been sent to the GPU and even in GL
|
|
228
|
-
* it is required to call GrContext::submit to flush them. So a client should be able to treat all
|
|
229
|
-
* backend APIs the same in terms of how the submitted procs are treated.
|
|
214
|
+
* GrBackendSemaphores are not supported for the GL backend and will be ignored if set.
|
|
230
215
|
*/
|
|
231
216
|
struct GrFlushInfo {
|
|
232
217
|
size_t fNumSemaphores = 0;
|
|
@@ -8,21 +8,21 @@
|
|
|
8
8
|
#ifndef skgpu_MutableTextureState_DEFINED
|
|
9
9
|
#define skgpu_MutableTextureState_DEFINED
|
|
10
10
|
|
|
11
|
+
#include "include/core/SkRefCnt.h"
|
|
11
12
|
#include "include/core/SkTypes.h"
|
|
12
|
-
#include "include/
|
|
13
|
+
#include "include/private/base/SkAnySubclass.h"
|
|
13
14
|
|
|
14
|
-
#
|
|
15
|
+
#if defined(SK_VULKAN) && !defined(SK_DISABLE_LEGACY_VULKAN_MUTABLE_TEXTURE_STATE)
|
|
15
16
|
#include "include/private/gpu/vk/SkiaVulkan.h"
|
|
16
|
-
#include "include/private/gpu/vk/VulkanTypesPriv.h"
|
|
17
17
|
|
|
18
18
|
#include <cstdint>
|
|
19
19
|
#endif
|
|
20
20
|
|
|
21
|
-
#include <
|
|
22
|
-
|
|
23
|
-
class GrVkGpu;
|
|
21
|
+
#include <cstddef>
|
|
24
22
|
|
|
25
23
|
namespace skgpu {
|
|
24
|
+
enum class BackendApi : unsigned int;
|
|
25
|
+
class MutableTextureStateData;
|
|
26
26
|
|
|
27
27
|
/**
|
|
28
28
|
* Since Skia and clients can both modify gpu textures and their connected state, Skia needs a way
|
|
@@ -30,95 +30,50 @@ namespace skgpu {
|
|
|
30
30
|
* for every single API and state, we use this class to be a generic wrapper around all the mutable
|
|
31
31
|
* state. This class is used for calls that inform Skia of these texture/image state changes by the
|
|
32
32
|
* client as well as for requesting state changes to be done by Skia. The backend specific state
|
|
33
|
-
* that is wrapped by this class are:
|
|
34
|
-
*
|
|
35
|
-
* Vulkan: VkImageLayout and QueueFamilyIndex
|
|
33
|
+
* that is wrapped by this class are located in files like:
|
|
34
|
+
* - include/gpu/vk/VulkanMutableTextureState.h
|
|
36
35
|
*/
|
|
37
|
-
class SK_API MutableTextureState {
|
|
36
|
+
class SK_API MutableTextureState : public SkRefCnt {
|
|
38
37
|
public:
|
|
39
|
-
MutableTextureState()
|
|
40
|
-
|
|
41
|
-
#ifdef SK_VULKAN
|
|
42
|
-
MutableTextureState(VkImageLayout layout, uint32_t queueFamilyIndex)
|
|
43
|
-
: fVkState(layout, queueFamilyIndex)
|
|
44
|
-
, fBackend(BackendApi::kVulkan)
|
|
45
|
-
, fIsValid(true) {}
|
|
46
|
-
#endif
|
|
38
|
+
MutableTextureState();
|
|
39
|
+
~MutableTextureState() override;
|
|
47
40
|
|
|
48
|
-
MutableTextureState(const MutableTextureState& that)
|
|
49
|
-
: fBackend(that.fBackend), fIsValid(that.fIsValid) {
|
|
50
|
-
if (!fIsValid) {
|
|
51
|
-
return;
|
|
52
|
-
}
|
|
53
|
-
switch (fBackend) {
|
|
54
|
-
case BackendApi::kVulkan:
|
|
55
|
-
#ifdef SK_VULKAN
|
|
56
|
-
SkASSERT(that.fBackend == BackendApi::kVulkan);
|
|
57
|
-
fVkState = that.fVkState;
|
|
58
|
-
#endif
|
|
59
|
-
break;
|
|
60
|
-
default:
|
|
61
|
-
(void)that;
|
|
62
|
-
SkUNREACHABLE;
|
|
63
|
-
}
|
|
64
|
-
}
|
|
41
|
+
MutableTextureState(const MutableTextureState& that);
|
|
65
42
|
|
|
66
|
-
MutableTextureState& operator=(const MutableTextureState& that)
|
|
67
|
-
if (this != &that) {
|
|
68
|
-
this->~MutableTextureState();
|
|
69
|
-
new (this) MutableTextureState(that);
|
|
70
|
-
}
|
|
71
|
-
return *this;
|
|
72
|
-
}
|
|
43
|
+
MutableTextureState& operator=(const MutableTextureState& that);
|
|
73
44
|
|
|
74
|
-
|
|
75
|
-
// If this class is not Vulkan backed it will return value of VK_IMAGE_LAYOUT_UNDEFINED.
|
|
76
|
-
// Otherwise it will return the VkImageLayout.
|
|
77
|
-
VkImageLayout getVkImageLayout() const {
|
|
78
|
-
if (this->isValid() && fBackend != BackendApi::kVulkan) {
|
|
79
|
-
return VK_IMAGE_LAYOUT_UNDEFINED;
|
|
80
|
-
}
|
|
81
|
-
return fVkState.getImageLayout();
|
|
82
|
-
}
|
|
83
|
-
|
|
84
|
-
// If this class is not Vulkan backed it will return value of VK_QUEUE_FAMILY_IGNORED.
|
|
85
|
-
// Otherwise it will return the VkImageLayout.
|
|
86
|
-
uint32_t getQueueFamilyIndex() const {
|
|
87
|
-
if (this->isValid() && fBackend != BackendApi::kVulkan) {
|
|
88
|
-
return VK_QUEUE_FAMILY_IGNORED;
|
|
89
|
-
}
|
|
90
|
-
return fVkState.getQueueFamilyIndex();
|
|
91
|
-
}
|
|
92
|
-
#endif
|
|
45
|
+
void set(const MutableTextureState& that);
|
|
93
46
|
|
|
94
47
|
BackendApi backend() const { return fBackend; }
|
|
95
48
|
|
|
96
49
|
// Returns true if the backend mutable state has been initialized.
|
|
97
50
|
bool isValid() const { return fIsValid; }
|
|
98
51
|
|
|
52
|
+
#if defined(SK_VULKAN) && !defined(SK_DISABLE_LEGACY_VULKAN_MUTABLE_TEXTURE_STATE)
|
|
53
|
+
MutableTextureState(VkImageLayout layout, uint32_t queueFamilyIndex);
|
|
54
|
+
|
|
55
|
+
VkImageLayout getVkImageLayout() const;
|
|
56
|
+
uint32_t getQueueFamilyIndex() const;
|
|
57
|
+
#endif
|
|
58
|
+
|
|
99
59
|
private:
|
|
100
|
-
friend class
|
|
101
|
-
friend class
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
60
|
+
friend class MutableTextureStateData;
|
|
61
|
+
friend class MutableTextureStatePriv;
|
|
62
|
+
// Size determined by looking at the MutableTextureStateData subclasses, then
|
|
63
|
+
// guessing-and-checking. Compiler will complain if this is too small - in that case,
|
|
64
|
+
// just increase the number.
|
|
65
|
+
inline constexpr static size_t kMaxSubclassSize = 16;
|
|
66
|
+
using AnyStateData = SkAnySubclass<MutableTextureStateData, kMaxSubclassSize>;
|
|
67
|
+
|
|
68
|
+
template <typename StateData>
|
|
69
|
+
MutableTextureState(BackendApi api, const StateData& data) : fBackend(api), fIsValid(true) {
|
|
70
|
+
fStateData.emplace<StateData>(data);
|
|
110
71
|
}
|
|
111
|
-
#endif
|
|
112
72
|
|
|
113
|
-
|
|
114
|
-
char fPlaceholder;
|
|
115
|
-
#ifdef SK_VULKAN
|
|
116
|
-
VulkanMutableTextureState fVkState;
|
|
117
|
-
#endif
|
|
118
|
-
};
|
|
73
|
+
AnyStateData fStateData;
|
|
119
74
|
|
|
120
|
-
BackendApi fBackend
|
|
121
|
-
bool fIsValid
|
|
75
|
+
BackendApi fBackend;
|
|
76
|
+
bool fIsValid;
|
|
122
77
|
};
|
|
123
78
|
|
|
124
79
|
} // namespace skgpu
|
|
@@ -18,7 +18,17 @@ class SK_API ShaderErrorHandler {
|
|
|
18
18
|
public:
|
|
19
19
|
virtual ~ShaderErrorHandler() = default;
|
|
20
20
|
|
|
21
|
-
|
|
21
|
+
/**
|
|
22
|
+
* compileError(shader, errors) is kept for backward compatibility with older clients.
|
|
23
|
+
*/
|
|
24
|
+
virtual void compileError([[maybe_unused]] const char* shader,
|
|
25
|
+
[[maybe_unused]] const char* errors) {}
|
|
26
|
+
virtual void compileError(const char* shader,
|
|
27
|
+
const char* errors,
|
|
28
|
+
[[maybe_unused]] bool shaderWasCached) {
|
|
29
|
+
// Default implementation. Ignore shaderWasCached.
|
|
30
|
+
this->compileError(shader, errors);
|
|
31
|
+
}
|
|
22
32
|
|
|
23
33
|
protected:
|
|
24
34
|
ShaderErrorHandler() = default;
|
|
@@ -206,7 +206,7 @@ SK_API sk_sp<SkImage> TextureFromImage(GrDirectContext*,
|
|
|
206
206
|
skgpu::Mipmapped = skgpu::Mipmapped::kNo,
|
|
207
207
|
skgpu::Budgeted = skgpu::Budgeted::kYes);
|
|
208
208
|
inline sk_sp<SkImage> TextureFromImage(GrDirectContext* ctx,
|
|
209
|
-
sk_sp<const SkImage
|
|
209
|
+
const sk_sp<const SkImage>& img,
|
|
210
210
|
skgpu::Mipmapped m = skgpu::Mipmapped::kNo,
|
|
211
211
|
skgpu::Budgeted b = skgpu::Budgeted::kYes) {
|
|
212
212
|
return TextureFromImage(ctx, img.get(), m, b);
|
|
@@ -276,7 +276,7 @@ SK_API bool GetBackendTextureFromImage(const SkImage* img,
|
|
|
276
276
|
GrBackendTexture* outTexture,
|
|
277
277
|
bool flushPendingGrContextIO,
|
|
278
278
|
GrSurfaceOrigin* origin = nullptr);
|
|
279
|
-
inline bool GetBackendTextureFromImage(sk_sp<const SkImage
|
|
279
|
+
inline bool GetBackendTextureFromImage(const sk_sp<const SkImage>& img,
|
|
280
280
|
GrBackendTexture* outTexture,
|
|
281
281
|
bool flushPendingGrContextIO,
|
|
282
282
|
GrSurfaceOrigin* origin = nullptr) {
|
|
@@ -199,7 +199,7 @@ SK_API GrBackendRenderTarget GetBackendRenderTarget(SkSurface*, BackendHandleAcc
|
|
|
199
199
|
GrDirectContext::flush.
|
|
200
200
|
*/
|
|
201
201
|
SK_API void ResolveMSAA(SkSurface* surface);
|
|
202
|
-
inline void ResolveMSAA(sk_sp<SkSurface
|
|
202
|
+
inline void ResolveMSAA(const sk_sp<SkSurface>& surface) {
|
|
203
203
|
return ResolveMSAA(surface.get());
|
|
204
204
|
}
|
|
205
205
|
|
|
@@ -17,13 +17,14 @@ struct GrGLInterface;
|
|
|
17
17
|
|
|
18
18
|
namespace GrDirectContexts {
|
|
19
19
|
/**
|
|
20
|
-
* Creates a GrDirectContext for a backend context.
|
|
21
|
-
* result of GrGLMakeNativeInterface() is used if it succeeds.
|
|
20
|
+
* Creates a GrDirectContext for a backend context. GrGLInterface must be non-null.
|
|
22
21
|
*/
|
|
23
22
|
SK_API sk_sp<GrDirectContext> MakeGL(sk_sp<const GrGLInterface>, const GrContextOptions&);
|
|
24
23
|
SK_API sk_sp<GrDirectContext> MakeGL(sk_sp<const GrGLInterface>);
|
|
24
|
+
#if !defined(SK_DISABLE_LEGACY_GL_MAKE_NATIVE_INTERFACE)
|
|
25
25
|
SK_API sk_sp<GrDirectContext> MakeGL(const GrContextOptions&);
|
|
26
26
|
SK_API sk_sp<GrDirectContext> MakeGL();
|
|
27
|
+
#endif
|
|
27
28
|
}
|
|
28
29
|
|
|
29
30
|
#endif
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright 2023 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 GrVkBackendSemaphore_DEFINED
|
|
9
|
+
#define GrVkBackendSemaphore_DEFINED
|
|
10
|
+
|
|
11
|
+
#include "include/gpu/GrBackendSemaphore.h"
|
|
12
|
+
#include "include/private/base/SkAPI.h"
|
|
13
|
+
#include "include/private/gpu/vk/SkiaVulkan.h"
|
|
14
|
+
|
|
15
|
+
namespace GrBackendSemaphores {
|
|
16
|
+
SK_API GrBackendSemaphore MakeVk(VkSemaphore semaphore);
|
|
17
|
+
SK_API VkSemaphore GetVkSemaphore(const GrBackendSemaphore&);
|
|
18
|
+
} // namespace GrBackendSemaphores
|
|
19
|
+
|
|
20
|
+
#endif
|