@shopify/react-native-skia 0.1.196 → 0.1.199
Sign up to get free protection for your applications and to get access to all the features.
- package/android/CMakeLists.txt +32 -31
- package/android/cpp/rnskia-android/SkiaOpenGLRenderer.cpp +4 -2
- package/android/cpp/rnskia-android/SkiaOpenGLRenderer.h +3 -0
- package/cpp/api/JsiSkImage.h +1 -1
- package/cpp/api/JsiSkShaderFactory.h +4 -4
- package/cpp/api/JsiSkSurface.h +0 -1
- package/cpp/api/JsiSkSurfaceFactory.h +2 -1
- package/cpp/rnskia/RNSkView.h +20 -40
- package/cpp/rnskia/dom/nodes/JsiShaderNodes.h +2 -2
- package/cpp/rnskia/values/RNSkReadonlyValue.h +6 -7
- package/cpp/skia/include/android/SkCanvasAndroid.h +20 -0
- package/cpp/skia/include/android/SkHeifDecoder.h +43 -0
- package/cpp/skia/include/android/SkSurfaceAndroid.h +50 -0
- package/cpp/skia/include/codec/SkAvifDecoder.h +43 -0
- package/cpp/skia/include/codec/SkBmpDecoder.h +43 -0
- package/cpp/skia/include/codec/SkCodec.h +25 -1
- package/cpp/skia/include/codec/SkGifDecoder.h +43 -0
- package/cpp/skia/include/codec/SkIcoDecoder.h +43 -0
- package/cpp/skia/include/codec/SkJpegDecoder.h +43 -0
- package/cpp/skia/include/codec/SkJpegxlDecoder.h +43 -0
- package/cpp/skia/include/codec/SkPngDecoder.h +43 -0
- package/cpp/skia/include/codec/SkRawDecoder.h +49 -0
- package/cpp/skia/include/codec/SkWbmpDecoder.h +43 -0
- package/cpp/skia/include/codec/SkWebpDecoder.h +43 -0
- package/cpp/skia/include/core/SkBBHFactory.h +5 -1
- package/cpp/skia/include/core/SkBlender.h +0 -2
- package/cpp/skia/include/core/SkCanvas.h +4 -23
- package/cpp/skia/include/core/SkColorFilter.h +14 -1
- package/cpp/skia/include/core/SkColorTable.h +59 -0
- package/cpp/skia/include/core/SkContourMeasure.h +3 -0
- package/cpp/skia/include/core/SkDeferredDisplayList.h +8 -104
- package/cpp/skia/include/core/SkDeferredDisplayListRecorder.h +8 -91
- package/cpp/skia/include/core/SkDrawable.h +5 -2
- package/cpp/skia/include/core/SkGraphics.h +7 -19
- package/cpp/skia/include/core/SkImage.h +157 -249
- package/cpp/skia/include/core/SkImageGenerator.h +0 -31
- package/cpp/skia/include/core/SkMilestone.h +1 -1
- package/cpp/skia/include/core/SkPathMeasure.h +3 -3
- package/cpp/skia/include/core/SkPictureRecorder.h +1 -1
- package/cpp/skia/include/core/SkPoint.h +5 -563
- package/cpp/skia/include/core/SkPoint3.h +1 -0
- package/cpp/skia/include/core/SkPromiseImageTexture.h +4 -30
- package/cpp/skia/include/core/SkRect.h +8 -8
- package/cpp/skia/include/core/SkSamplingOptions.h +4 -2
- package/cpp/skia/include/core/SkScalar.h +1 -1
- package/cpp/skia/include/core/SkSerialProcs.h +5 -1
- package/cpp/skia/include/core/SkShader.h +14 -21
- package/cpp/skia/include/core/SkString.h +2 -0
- package/cpp/skia/include/core/SkSurface.h +169 -701
- package/cpp/skia/include/core/SkSurfaceCharacterization.h +8 -256
- package/cpp/skia/include/core/SkTiledImageUtils.h +97 -0
- package/cpp/skia/include/core/SkTypes.h +4 -2
- package/cpp/skia/include/core/SkYUVAPixmaps.h +0 -5
- package/cpp/skia/include/effects/SkGradientShader.h +10 -1
- package/cpp/skia/include/effects/SkImageFilters.h +62 -37
- package/cpp/skia/include/effects/SkPerlinNoiseShader.h +28 -29
- package/cpp/skia/include/effects/SkRuntimeEffect.h +17 -12
- package/cpp/skia/include/gpu/GrBackendSurface.h +12 -39
- package/cpp/skia/include/gpu/GrBackendSurfaceMutableState.h +6 -0
- package/cpp/skia/include/gpu/GrContextThreadSafeProxy.h +3 -3
- package/cpp/skia/include/gpu/GrDirectContext.h +103 -3
- package/cpp/skia/include/gpu/GrRecordingContext.h +10 -19
- package/cpp/skia/include/gpu/MutableTextureState.h +4 -0
- package/cpp/skia/include/gpu/ganesh/GrExternalTextureGenerator.h +54 -0
- package/cpp/skia/include/gpu/ganesh/SkImageGanesh.h +20 -76
- package/cpp/skia/include/gpu/ganesh/SkSurfaceGanesh.h +217 -0
- package/cpp/skia/include/gpu/ganesh/mtl/SkSurfaceMetal.h +73 -0
- package/cpp/skia/include/gpu/gl/GrGLTypes.h +13 -2
- package/cpp/skia/include/gpu/graphite/BackendSemaphore.h +78 -0
- package/cpp/skia/include/gpu/graphite/BackendTexture.h +1 -0
- package/cpp/skia/include/gpu/graphite/Image.h +277 -0
- package/cpp/skia/include/gpu/graphite/ImageProvider.h +1 -1
- package/cpp/skia/include/gpu/graphite/Recording.h +1 -4
- package/cpp/skia/include/gpu/graphite/Surface.h +81 -0
- package/cpp/skia/include/gpu/graphite/TextureInfo.h +5 -7
- package/cpp/skia/include/gpu/graphite/YUVABackendTextures.h +2 -2
- package/cpp/skia/include/gpu/mock/GrMockTypes.h +23 -8
- package/cpp/skia/include/ports/SkTypeface_fontations.h +21 -0
- package/cpp/skia/include/private/SkGainmapInfo.h +2 -0
- package/cpp/skia/include/private/SkGainmapShader.h +1 -0
- package/cpp/skia/include/private/SkJpegMetadataDecoder.h +19 -1
- package/cpp/skia/include/private/SkPathRef.h +13 -15
- package/cpp/skia/include/private/SkXmp.h +53 -0
- package/cpp/skia/include/private/base/SkFeatures.h +0 -4
- package/cpp/skia/include/private/base/SkFloatingPoint.h +11 -5
- package/cpp/skia/include/private/base/SkPoint_impl.h +569 -0
- package/cpp/skia/include/private/base/SkSpan_impl.h +3 -7
- package/cpp/skia/include/private/base/SkTArray.h +11 -11
- package/cpp/skia/include/private/chromium/GrDeferredDisplayList.h +120 -0
- package/cpp/skia/include/private/chromium/GrDeferredDisplayListRecorder.h +98 -0
- package/cpp/skia/include/private/chromium/GrPromiseImageTexture.h +43 -0
- package/cpp/skia/include/private/chromium/GrSurfaceCharacterization.h +215 -0
- package/cpp/skia/include/private/chromium/GrVkSecondaryCBDrawContext.h +6 -6
- package/cpp/skia/include/private/chromium/SkImageChromium.h +104 -0
- package/cpp/skia/include/private/chromium/Slug.h +7 -3
- package/cpp/skia/include/private/gpu/ganesh/GrContext_Base.h +7 -3
- package/cpp/skia/include/private/gpu/ganesh/GrGLTypesPriv.h +2 -0
- package/cpp/skia/include/private/gpu/ganesh/GrImageContext.h +3 -2
- package/cpp/skia/include/private/gpu/ganesh/GrMtlTypesPriv.h +10 -2
- package/cpp/skia/include/{gpu → private/gpu}/ganesh/GrTextureGenerator.h +2 -13
- package/cpp/skia/include/private/gpu/ganesh/GrTypesPriv.h +1 -1
- package/cpp/skia/include/private/gpu/graphite/DawnTypesPriv.h +7 -0
- package/cpp/skia/include/private/gpu/graphite/MtlGraphiteTypesPriv.h +19 -6
- package/cpp/skia/include/private/gpu/graphite/VulkanGraphiteTypesPriv.h +13 -0
- package/cpp/skia/include/third_party/vulkan/vulkan/vulkan.h +0 -1
- package/cpp/skia/include/third_party/vulkan/vulkan/vulkan_android.h +14 -1
- package/cpp/skia/include/third_party/vulkan/vulkan/vulkan_core.h +999 -79
- package/cpp/skia/modules/skcms/src/Transform_inl.h +36 -236
- package/cpp/skia/modules/skparagraph/include/Paragraph.h +2 -0
- package/cpp/skia/modules/skparagraph/include/ParagraphBuilder.h +16 -0
- package/cpp/skia/modules/skparagraph/include/TextStyle.h +6 -2
- package/cpp/skia/modules/skresources/include/SkResources.h +1 -1
- package/cpp/skia/modules/svg/include/SkSVGCircle.h +1 -1
- package/cpp/skia/modules/svg/include/SkSVGClipPath.h +1 -1
- package/cpp/skia/modules/svg/include/SkSVGContainer.h +1 -1
- package/cpp/skia/modules/svg/include/SkSVGDOM.h +1 -1
- package/cpp/skia/modules/svg/include/SkSVGDefs.h +1 -1
- package/cpp/skia/modules/svg/include/SkSVGEllipse.h +1 -1
- package/cpp/skia/modules/svg/include/SkSVGFe.h +1 -1
- package/cpp/skia/modules/svg/include/SkSVGFeBlend.h +1 -1
- package/cpp/skia/modules/svg/include/SkSVGFeColorMatrix.h +1 -1
- package/cpp/skia/modules/svg/include/SkSVGFeComposite.h +1 -1
- package/cpp/skia/modules/svg/include/SkSVGFeDisplacementMap.h +1 -1
- package/cpp/skia/modules/svg/include/SkSVGFeFlood.h +1 -1
- package/cpp/skia/modules/svg/include/SkSVGFeGaussianBlur.h +1 -1
- package/cpp/skia/modules/svg/include/SkSVGFeImage.h +1 -1
- package/cpp/skia/modules/svg/include/SkSVGFeLightSource.h +1 -1
- package/cpp/skia/modules/svg/include/SkSVGFeLighting.h +1 -1
- package/cpp/skia/modules/svg/include/SkSVGFeOffset.h +1 -1
- package/cpp/skia/modules/svg/include/SkSVGFeTurbulence.h +1 -1
- package/cpp/skia/modules/svg/include/SkSVGFilter.h +1 -1
- package/cpp/skia/modules/svg/include/SkSVGG.h +1 -1
- package/cpp/skia/modules/svg/include/SkSVGGradient.h +1 -1
- package/cpp/skia/modules/svg/include/SkSVGHiddenContainer.h +1 -1
- package/cpp/skia/modules/svg/include/SkSVGImage.h +1 -1
- package/cpp/skia/modules/svg/include/SkSVGLine.h +1 -1
- package/cpp/skia/modules/svg/include/SkSVGLinearGradient.h +1 -1
- package/cpp/skia/modules/svg/include/SkSVGMask.h +1 -1
- package/cpp/skia/modules/svg/include/SkSVGNode.h +1 -1
- package/cpp/skia/modules/svg/include/SkSVGPath.h +1 -1
- package/cpp/skia/modules/svg/include/SkSVGPattern.h +1 -1
- package/cpp/skia/modules/svg/include/SkSVGPoly.h +1 -1
- package/cpp/skia/modules/svg/include/SkSVGRadialGradient.h +1 -1
- package/cpp/skia/modules/svg/include/SkSVGRect.h +1 -1
- 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/SkSVGShape.h +1 -1
- package/cpp/skia/modules/svg/include/SkSVGStop.h +1 -1
- package/cpp/skia/modules/svg/include/SkSVGText.h +1 -1
- package/cpp/skia/modules/svg/include/SkSVGTransformableNode.h +1 -1
- package/cpp/skia/modules/svg/include/SkSVGTypes.h +21 -21
- package/cpp/skia/modules/svg/include/SkSVGUse.h +1 -1
- package/cpp/skia/modules/svg/include/SkSVGValue.h +2 -2
- package/cpp/skia/{include/private → src/core}/SkChecksum.h +32 -17
- package/cpp/skia/src/core/SkTHash.h +1 -1
- package/ios/RNSkia-iOS/RNSkMetalCanvasProvider.mm +3 -1
- package/ios/RNSkia-iOS/SkiaMetalRenderer.mm +3 -1
- package/lib/commonjs/renderer/Canvas.js +24 -13
- package/lib/commonjs/renderer/Canvas.js.map +1 -1
- package/lib/commonjs/skia/core/Data.d.ts +2 -2
- package/lib/commonjs/skia/core/Data.js.map +1 -1
- package/lib/commonjs/skia/core/RRect.js +5 -1
- package/lib/commonjs/skia/core/RRect.js.map +1 -1
- package/lib/commonjs/skia/core/Rect.js +32 -6
- package/lib/commonjs/skia/core/Rect.js.map +1 -1
- package/lib/commonjs/skia/types/Color.js.map +1 -1
- package/lib/commonjs/skia/types/JsiInstance.d.ts +2 -4
- package/lib/commonjs/skia/types/JsiInstance.js.map +1 -1
- package/lib/module/renderer/Canvas.js +25 -14
- package/lib/module/renderer/Canvas.js.map +1 -1
- package/lib/module/skia/core/Data.d.ts +2 -2
- package/lib/module/skia/core/Data.js.map +1 -1
- package/lib/module/skia/core/RRect.js +5 -1
- package/lib/module/skia/core/RRect.js.map +1 -1
- package/lib/module/skia/core/Rect.js +32 -6
- package/lib/module/skia/core/Rect.js.map +1 -1
- package/lib/module/skia/types/Color.js.map +1 -1
- package/lib/module/skia/types/JsiInstance.d.ts +2 -4
- package/lib/module/skia/types/JsiInstance.js.map +1 -1
- package/lib/typescript/src/skia/core/Data.d.ts +2 -2
- package/lib/typescript/src/skia/types/JsiInstance.d.ts +2 -4
- 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/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/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/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/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/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/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 +3 -4
- package/src/renderer/Canvas.tsx +25 -19
- package/src/skia/core/Data.ts +3 -3
- package/src/skia/core/RRect.tsx +4 -2
- package/src/skia/core/Rect.ts +29 -12
- package/src/skia/types/Color.ts +1 -1
- package/src/skia/types/JsiInstance.ts +2 -5
- package/cpp/skia/include/effects/SkTableColorFilter.h +0 -29
- package/cpp/skia/include/private/SkOpts_spi.h +0 -23
- package/cpp/skia/include/private/SkSpinlock.h +0 -57
- package/cpp/skia/include/private/chromium/GrSlug.h +0 -16
- package/scripts/install-npm.js +0 -33
@@ -8,11 +8,12 @@
|
|
8
8
|
#ifndef SkRuntimeEffect_DEFINED
|
9
9
|
#define SkRuntimeEffect_DEFINED
|
10
10
|
|
11
|
-
#include "include/core/SkBlender.h"
|
12
|
-
#include "include/core/SkColorFilter.h"
|
11
|
+
#include "include/core/SkBlender.h" // IWYU pragma: keep
|
12
|
+
#include "include/core/SkColorFilter.h" // IWYU pragma: keep
|
13
13
|
#include "include/core/SkData.h"
|
14
|
-
#include "include/core/
|
14
|
+
#include "include/core/SkFlattenable.h"
|
15
15
|
#include "include/core/SkMatrix.h"
|
16
|
+
#include "include/core/SkRefCnt.h"
|
16
17
|
#include "include/core/SkShader.h"
|
17
18
|
#include "include/core/SkSpan.h"
|
18
19
|
#include "include/core/SkString.h"
|
@@ -20,34 +21,38 @@
|
|
20
21
|
#include "include/private/SkSLSampleUsage.h"
|
21
22
|
#include "include/private/base/SkOnce.h"
|
22
23
|
#include "include/private/base/SkTemplates.h"
|
24
|
+
#include "include/private/base/SkTo.h"
|
25
|
+
#include "include/private/base/SkTypeTraits.h"
|
23
26
|
|
24
|
-
#include <
|
27
|
+
#include <cstddef>
|
28
|
+
#include <cstdint>
|
29
|
+
#include <cstring>
|
30
|
+
#include <memory>
|
25
31
|
#include <optional>
|
32
|
+
#include <string>
|
33
|
+
#include <string_view>
|
34
|
+
#include <utility>
|
26
35
|
#include <vector>
|
27
36
|
|
28
37
|
#ifdef SK_ENABLE_SKSL
|
29
38
|
|
39
|
+
#include "include/sksl/SkSLDebugTrace.h"
|
30
40
|
#include "include/sksl/SkSLVersion.h"
|
31
41
|
|
32
42
|
class GrRecordingContext;
|
33
43
|
class SkFilterColorProgram;
|
34
44
|
class SkImage;
|
35
|
-
|
45
|
+
struct SkIPoint;
|
46
|
+
struct SkImageInfo;
|
36
47
|
|
37
48
|
namespace SkSL {
|
38
|
-
class DebugTrace;
|
39
49
|
class DebugTracePriv;
|
40
|
-
class ErrorReporter;
|
41
50
|
class FunctionDefinition;
|
42
51
|
struct Program;
|
43
52
|
enum class ProgramKind : int8_t;
|
44
53
|
struct ProgramSettings;
|
45
54
|
} // namespace SkSL
|
46
55
|
|
47
|
-
namespace skvm {
|
48
|
-
class Program;
|
49
|
-
}
|
50
|
-
|
51
56
|
namespace SkSL::RP {
|
52
57
|
class Program;
|
53
58
|
}
|
@@ -319,7 +324,7 @@ private:
|
|
319
324
|
friend class GrGLSLSkSLFP; //
|
320
325
|
#endif
|
321
326
|
|
322
|
-
friend class
|
327
|
+
friend class SkRuntimeShader; // fBaseProgram, fMain, fSampleUsages, getRPProgram()
|
323
328
|
friend class SkRuntimeBlender; //
|
324
329
|
friend class SkRuntimeColorFilter; //
|
325
330
|
|
@@ -8,36 +8,38 @@
|
|
8
8
|
#ifndef GrBackendSurface_DEFINED
|
9
9
|
#define GrBackendSurface_DEFINED
|
10
10
|
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
#include "include/gpu/GrBackendSurfaceMutableState.h"
|
15
|
-
|
16
|
-
#include "include/gpu/GrSurfaceInfo.h"
|
11
|
+
#include "include/core/SkRefCnt.h"
|
12
|
+
#include "include/core/SkSize.h"
|
13
|
+
#include "include/gpu/GpuTypes.h"
|
17
14
|
#include "include/gpu/GrTypes.h"
|
18
|
-
#include "include/
|
15
|
+
#include "include/private/base/SkAPI.h"
|
16
|
+
#include "include/private/gpu/ganesh/GrTypesPriv.h"
|
17
|
+
|
19
18
|
#ifdef SK_GL
|
20
19
|
#include "include/gpu/gl/GrGLTypes.h"
|
21
20
|
#include "include/private/gpu/ganesh/GrGLTypesPriv.h"
|
22
21
|
#endif
|
22
|
+
|
23
23
|
#include "include/gpu/mock/GrMockTypes.h"
|
24
|
+
|
24
25
|
#ifdef SK_VULKAN
|
25
26
|
#include "include/gpu/vk/GrVkTypes.h"
|
26
27
|
#include "include/private/gpu/ganesh/GrVkTypesPriv.h"
|
28
|
+
#include "include/private/gpu/vk/SkiaVulkan.h"
|
27
29
|
#endif
|
28
30
|
|
29
31
|
#ifdef SK_DAWN
|
30
32
|
#include "include/gpu/dawn/GrDawnTypes.h"
|
31
33
|
#endif
|
32
34
|
|
35
|
+
#include <cstdint>
|
33
36
|
#include <string>
|
37
|
+
#include <string_view>
|
34
38
|
|
35
|
-
class GrVkImageLayout;
|
36
|
-
class GrGLTextureParameters;
|
37
|
-
class GrColorFormatDesc;
|
38
39
|
enum class SkTextureCompressionType;
|
39
40
|
|
40
41
|
namespace skgpu {
|
42
|
+
class MutableTextureState;
|
41
43
|
class MutableTextureStateRef;
|
42
44
|
}
|
43
45
|
|
@@ -58,33 +60,6 @@ class GrD3DResourceState;
|
|
58
60
|
class SkString;
|
59
61
|
#endif
|
60
62
|
|
61
|
-
#if !defined(SK_GANESH)
|
62
|
-
|
63
|
-
// SkSurfaceCharacterization always needs a minimal version of this
|
64
|
-
class SK_API GrBackendFormat {
|
65
|
-
public:
|
66
|
-
bool isValid() const { return false; }
|
67
|
-
};
|
68
|
-
|
69
|
-
// SkSurface and SkImage rely on a minimal version of these always being available
|
70
|
-
class SK_API GrBackendTexture {
|
71
|
-
public:
|
72
|
-
GrBackendTexture() {}
|
73
|
-
|
74
|
-
bool isValid() const { return false; }
|
75
|
-
};
|
76
|
-
|
77
|
-
class SK_API GrBackendRenderTarget {
|
78
|
-
public:
|
79
|
-
GrBackendRenderTarget() {}
|
80
|
-
|
81
|
-
bool isValid() const { return false; }
|
82
|
-
bool isFramebufferOnly() const { return false; }
|
83
|
-
};
|
84
|
-
#else
|
85
|
-
|
86
|
-
enum class GrGLFormat;
|
87
|
-
|
88
63
|
class SK_API GrBackendFormat {
|
89
64
|
public:
|
90
65
|
// Creates an invalid backend format.
|
@@ -663,5 +638,3 @@ private:
|
|
663
638
|
};
|
664
639
|
|
665
640
|
#endif
|
666
|
-
|
667
|
-
#endif
|
@@ -10,6 +10,12 @@
|
|
10
10
|
|
11
11
|
#include "include/gpu/MutableTextureState.h"
|
12
12
|
|
13
|
+
#ifdef SK_VULKAN
|
14
|
+
#include "include/private/gpu/vk/SkiaVulkan.h"
|
15
|
+
|
16
|
+
#include <cstdint>
|
17
|
+
#endif
|
18
|
+
|
13
19
|
class GrBackendSurfaceMutableState : public skgpu::MutableTextureState {
|
14
20
|
public:
|
15
21
|
GrBackendSurfaceMutableState() = default;
|
@@ -22,9 +22,9 @@
|
|
22
22
|
class GrBackendFormat;
|
23
23
|
class GrCaps;
|
24
24
|
class GrContextThreadSafeProxyPriv;
|
25
|
+
class GrSurfaceCharacterization;
|
25
26
|
class GrThreadSafeCache;
|
26
27
|
class GrThreadSafePipelineBuilder;
|
27
|
-
class SkSurfaceCharacterization;
|
28
28
|
class SkSurfaceProps;
|
29
29
|
enum class SkTextureCompressionType;
|
30
30
|
|
@@ -85,7 +85,7 @@ public:
|
|
85
85
|
* willUseGLFBO0 = false
|
86
86
|
* vkRTSupportsInputAttachment = false
|
87
87
|
*/
|
88
|
-
|
88
|
+
GrSurfaceCharacterization createCharacterization(
|
89
89
|
size_t cacheMaxResourceBytes,
|
90
90
|
const SkImageInfo& ii,
|
91
91
|
const GrBackendFormat& backendFormat,
|
@@ -102,7 +102,7 @@ public:
|
|
102
102
|
/*
|
103
103
|
* Retrieve the default GrBackendFormat for a given SkColorType and renderability.
|
104
104
|
* It is guaranteed that this backend format will be the one used by the following
|
105
|
-
* SkColorType and
|
105
|
+
* SkColorType and GrSurfaceCharacterization-based createBackendTexture methods.
|
106
106
|
*
|
107
107
|
* The caller should check that the returned format is valid.
|
108
108
|
*/
|
@@ -36,6 +36,7 @@ class GrResourceProvider;
|
|
36
36
|
class SkData;
|
37
37
|
class SkImage;
|
38
38
|
class SkPixmap;
|
39
|
+
class SkSurface;
|
39
40
|
class SkTaskGroup;
|
40
41
|
class SkTraceMemoryDump;
|
41
42
|
enum SkColorType : int;
|
@@ -55,6 +56,10 @@ namespace skgpu {
|
|
55
56
|
namespace sktext { namespace gpu { class StrikeCache; } }
|
56
57
|
namespace wgpu { class Device; } // IWYU pragma: keep
|
57
58
|
|
59
|
+
namespace SkSurfaces {
|
60
|
+
enum class BackendSurfaceAccess;
|
61
|
+
}
|
62
|
+
|
58
63
|
class SK_API GrDirectContext : public GrRecordingContext {
|
59
64
|
public:
|
60
65
|
#ifdef SK_GL
|
@@ -408,10 +413,105 @@ public:
|
|
408
413
|
void flush(sk_sp<const SkImage> image);
|
409
414
|
|
410
415
|
/** Version of flush() that uses a default GrFlushInfo. Also submits the flushed work to the
|
411
|
-
|
412
|
-
|
416
|
+
* GPU.
|
417
|
+
*/
|
413
418
|
void flushAndSubmit(sk_sp<const SkImage> image);
|
414
419
|
|
420
|
+
/** Issues pending SkSurface commands to the GPU-backed API objects and resolves any SkSurface
|
421
|
+
* MSAA. A call to GrDirectContext::submit is always required to ensure work is actually sent
|
422
|
+
* to the gpu. Some specific API details:
|
423
|
+
* GL: Commands are actually sent to the driver, but glFlush is never called. Thus some
|
424
|
+
* sync objects from the flush will not be valid until a submission occurs.
|
425
|
+
*
|
426
|
+
* Vulkan/Metal/D3D/Dawn: Commands are recorded to the backend APIs corresponding command
|
427
|
+
* buffer or encoder objects. However, these objects are not sent to the gpu until a
|
428
|
+
* submission occurs.
|
429
|
+
*
|
430
|
+
* The work that is submitted to the GPU will be dependent on the BackendSurfaceAccess that is
|
431
|
+
* passed in.
|
432
|
+
*
|
433
|
+
* If BackendSurfaceAccess::kNoAccess is passed in all commands will be issued to the GPU.
|
434
|
+
*
|
435
|
+
* If BackendSurfaceAccess::kPresent is passed in and the backend API is not Vulkan, it is
|
436
|
+
* treated the same as kNoAccess. If the backend API is Vulkan, the VkImage that backs the
|
437
|
+
* SkSurface will be transferred back to its original queue. If the SkSurface was created by
|
438
|
+
* wrapping a VkImage, the queue will be set to the queue which was originally passed in on
|
439
|
+
* the GrVkImageInfo. Additionally, if the original queue was not external or foreign the
|
440
|
+
* layout of the VkImage will be set to VK_IMAGE_LAYOUT_PRESENT_SRC_KHR.
|
441
|
+
*
|
442
|
+
* The GrFlushInfo describes additional options to flush. Please see documentation at
|
443
|
+
* GrFlushInfo for more info.
|
444
|
+
*
|
445
|
+
* If the return is GrSemaphoresSubmitted::kYes, only initialized GrBackendSemaphores will be
|
446
|
+
* submitted to the gpu during the next submit call (it is possible Skia failed to create a
|
447
|
+
* subset of the semaphores). The client should not wait on these semaphores until after submit
|
448
|
+
* has been called, but must keep them alive until then. If a submit flag was passed in with
|
449
|
+
* the flush these valid semaphores can we waited on immediately. If this call returns
|
450
|
+
* GrSemaphoresSubmitted::kNo, the GPU backend will not submit any semaphores to be signaled on
|
451
|
+
* the GPU. Thus the client should not have the GPU wait on any of the semaphores passed in
|
452
|
+
* with the GrFlushInfo. Regardless of whether semaphores were submitted to the GPU or not, the
|
453
|
+
* client is still responsible for deleting any initialized semaphores.
|
454
|
+
* Regardless of semaphore submission the context will still be flushed. It should be
|
455
|
+
* emphasized that a return value of GrSemaphoresSubmitted::kNo does not mean the flush did not
|
456
|
+
* happen. It simply means there were no semaphores submitted to the GPU. A caller should only
|
457
|
+
* take this as a failure if they passed in semaphores to be submitted.
|
458
|
+
*
|
459
|
+
* Pending surface commands are flushed regardless of the return result.
|
460
|
+
*
|
461
|
+
* @param surface The GPU backed surface to be flushed. Has no effect on a CPU-backed surface.
|
462
|
+
* @param access type of access the call will do on the backend object after flush
|
463
|
+
* @param info flush options
|
464
|
+
*/
|
465
|
+
GrSemaphoresSubmitted flush(sk_sp<SkSurface> surface,
|
466
|
+
SkSurfaces::BackendSurfaceAccess access,
|
467
|
+
const GrFlushInfo& info);
|
468
|
+
GrSemaphoresSubmitted flush(SkSurface* surface,
|
469
|
+
SkSurfaces::BackendSurfaceAccess access,
|
470
|
+
const GrFlushInfo& info);
|
471
|
+
|
472
|
+
/**
|
473
|
+
* Same as above except:
|
474
|
+
*
|
475
|
+
* If a skgpu::MutableTextureState is passed in, at the end of the flush we will transition
|
476
|
+
* the surface to be in the state requested by the skgpu::MutableTextureState. If the surface
|
477
|
+
* (or SkImage or GrBackendSurface wrapping the same backend object) is used again after this
|
478
|
+
* flush the state may be changed and no longer match what is requested here. This is often
|
479
|
+
* used if the surface will be used for presenting or external use and the client wants backend
|
480
|
+
* object to be prepped for that use. A finishedProc or semaphore on the GrFlushInfo will also
|
481
|
+
* include the work for any requested state change.
|
482
|
+
*
|
483
|
+
* If the backend API is Vulkan, the caller can set the skgpu::MutableTextureState's
|
484
|
+
* VkImageLayout to VK_IMAGE_LAYOUT_UNDEFINED or queueFamilyIndex to VK_QUEUE_FAMILY_IGNORED to
|
485
|
+
* tell Skia to not change those respective states.
|
486
|
+
*
|
487
|
+
* @param surface The GPU backed surface to be flushed. Has no effect on a CPU-backed surface.
|
488
|
+
* @param info flush options
|
489
|
+
* @param newState optional state change request after flush
|
490
|
+
*/
|
491
|
+
GrSemaphoresSubmitted flush(sk_sp<SkSurface> surface,
|
492
|
+
const GrFlushInfo& info,
|
493
|
+
const skgpu::MutableTextureState* newState = nullptr);
|
494
|
+
GrSemaphoresSubmitted flush(SkSurface* surface,
|
495
|
+
const GrFlushInfo& info,
|
496
|
+
const skgpu::MutableTextureState* newState = nullptr);
|
497
|
+
|
498
|
+
/** Call to ensure all reads/writes of the surface have been issued to the underlying 3D API.
|
499
|
+
* Skia will correctly order its own draws and pixel operations. This must to be used to ensure
|
500
|
+
* correct ordering when the surface backing store is accessed outside Skia (e.g. direct use of
|
501
|
+
* the 3D API or a windowing system). This is equivalent to
|
502
|
+
* calling ::flush with a default GrFlushInfo followed by ::submit(syncCpu).
|
503
|
+
*
|
504
|
+
* Has no effect on a CPU-backed surface.
|
505
|
+
*/
|
506
|
+
void flushAndSubmit(sk_sp<SkSurface> surface, bool syncCpu = false);
|
507
|
+
|
508
|
+
/**
|
509
|
+
* Flushes the given surface with the default GrFlushInfo.
|
510
|
+
*
|
511
|
+
* Has no effect on a CPU-backed surface.
|
512
|
+
*/
|
513
|
+
void flush(sk_sp<SkSurface> surface);
|
514
|
+
|
415
515
|
/**
|
416
516
|
* Submit outstanding work to the gpu from all previously un-submitted flushes. The return
|
417
517
|
* value of the submit will indicate whether or not the submission to the GPU was successful.
|
@@ -444,7 +544,7 @@ public:
|
|
444
544
|
/**
|
445
545
|
* Retrieve the default GrBackendFormat for a given SkColorType and renderability.
|
446
546
|
* It is guaranteed that this backend format will be the one used by the following
|
447
|
-
* SkColorType and
|
547
|
+
* SkColorType and GrSurfaceCharacterization-based createBackendTexture methods.
|
448
548
|
*
|
449
549
|
* The caller should check that the returned format is valid.
|
450
550
|
*/
|
@@ -8,26 +8,27 @@
|
|
8
8
|
#ifndef GrRecordingContext_DEFINED
|
9
9
|
#define GrRecordingContext_DEFINED
|
10
10
|
|
11
|
+
#include "include/core/SkColorType.h"
|
11
12
|
#include "include/core/SkRefCnt.h"
|
13
|
+
#include "include/core/SkString.h" // IWYU pragma: keep
|
12
14
|
#include "include/core/SkTypes.h"
|
13
15
|
#include "include/private/base/SkTArray.h"
|
16
|
+
#include "include/private/gpu/ganesh/GrContext_Base.h"
|
14
17
|
#include "include/private/gpu/ganesh/GrImageContext.h"
|
15
18
|
|
16
|
-
#if GR_GPU_STATS && GR_TEST_UTILS
|
17
19
|
#include <map>
|
20
|
+
#include <memory>
|
18
21
|
#include <string>
|
19
|
-
#endif
|
20
22
|
|
21
23
|
class GrAuditTrail;
|
22
|
-
class
|
24
|
+
class GrContextThreadSafeProxy;
|
25
|
+
class GrDirectContext;
|
23
26
|
class GrDrawingManager;
|
24
27
|
class GrOnFlushCallbackObject;
|
25
|
-
class GrMemoryPool;
|
26
28
|
class GrProgramDesc;
|
27
29
|
class GrProgramInfo;
|
28
30
|
class GrProxyProvider;
|
29
31
|
class GrRecordingContextPriv;
|
30
|
-
class GrSurfaceProxy;
|
31
32
|
class GrThreadSafeCache;
|
32
33
|
class SkArenaAlloc;
|
33
34
|
class SkCapabilities;
|
@@ -38,25 +39,17 @@ class SubRunAllocator;
|
|
38
39
|
class TextBlobRedrawCoordinator;
|
39
40
|
}
|
40
41
|
|
41
|
-
#if GR_TEST_UTILS
|
42
|
-
class SkString;
|
43
|
-
#endif
|
44
|
-
|
45
42
|
class GrRecordingContext : public GrImageContext {
|
46
43
|
public:
|
47
44
|
~GrRecordingContext() override;
|
48
45
|
|
49
|
-
SK_API GrBackendFormat defaultBackendFormat(SkColorType ct, GrRenderable renderable) const {
|
50
|
-
return INHERITED::defaultBackendFormat(ct, renderable);
|
51
|
-
}
|
52
|
-
|
53
46
|
/**
|
54
47
|
* Reports whether the GrDirectContext associated with this GrRecordingContext is abandoned.
|
55
48
|
* When called on a GrDirectContext it may actively check whether the underlying 3D API
|
56
49
|
* device/context has been disconnected before reporting the status. If so, calling this
|
57
50
|
* method will transition the GrDirectContext to the abandoned state.
|
58
51
|
*/
|
59
|
-
bool abandoned() override { return
|
52
|
+
bool abandoned() override { return GrImageContext::abandoned(); }
|
60
53
|
|
61
54
|
/*
|
62
55
|
* Can a SkSurface be created with the given color type. To check whether MSAA is supported
|
@@ -96,7 +89,7 @@ public:
|
|
96
89
|
* is not supported at all.
|
97
90
|
*/
|
98
91
|
SK_API int maxSurfaceSampleCountForColorType(SkColorType colorType) const {
|
99
|
-
return
|
92
|
+
return GrImageContext::maxSurfaceSampleCountForColorType(colorType);
|
100
93
|
}
|
101
94
|
|
102
95
|
SK_API sk_sp<const SkCapabilities> skCapabilities() const;
|
@@ -126,8 +119,8 @@ public:
|
|
126
119
|
|
127
120
|
protected:
|
128
121
|
friend class GrRecordingContextPriv; // for hidden functions
|
129
|
-
friend class
|
130
|
-
friend class
|
122
|
+
friend class GrDeferredDisplayList; // for OwnedArenas
|
123
|
+
friend class GrDeferredDisplayListPriv; // for ProgramData
|
131
124
|
|
132
125
|
// Like Arenas, but preserves ownership of the underlying pools.
|
133
126
|
class OwnedArenas {
|
@@ -275,8 +268,6 @@ private:
|
|
275
268
|
#if GR_TEST_UTILS
|
276
269
|
int fSuppressWarningMessages = 0;
|
277
270
|
#endif
|
278
|
-
|
279
|
-
using INHERITED = GrImageContext;
|
280
271
|
};
|
281
272
|
|
282
273
|
/**
|
@@ -8,10 +8,14 @@
|
|
8
8
|
#ifndef skgpu_MutableTextureState_DEFINED
|
9
9
|
#define skgpu_MutableTextureState_DEFINED
|
10
10
|
|
11
|
+
#include "include/core/SkTypes.h"
|
11
12
|
#include "include/gpu/GpuTypes.h"
|
12
13
|
|
13
14
|
#ifdef SK_VULKAN
|
15
|
+
#include "include/private/gpu/vk/SkiaVulkan.h"
|
14
16
|
#include "include/private/gpu/vk/VulkanTypesPriv.h"
|
17
|
+
|
18
|
+
#include <cstdint>
|
15
19
|
#endif
|
16
20
|
|
17
21
|
#include <new>
|
@@ -0,0 +1,54 @@
|
|
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 GrExternalTextureGenerator_DEFINED
|
9
|
+
#define GrExternalTextureGenerator_DEFINED
|
10
|
+
|
11
|
+
#include "include/core/SkRefCnt.h"
|
12
|
+
#include "include/gpu/GrBackendSurface.h"
|
13
|
+
#include "include/private/base/SkAPI.h"
|
14
|
+
#include "include/private/gpu/ganesh/GrTextureGenerator.h"
|
15
|
+
|
16
|
+
#include <memory>
|
17
|
+
|
18
|
+
class GrRecordingContext;
|
19
|
+
class GrSurfaceProxyView;
|
20
|
+
class SkImage;
|
21
|
+
enum class GrImageTexGenPolicy : int;
|
22
|
+
namespace skgpu { enum class Mipmapped : bool; }
|
23
|
+
struct SkImageInfo;
|
24
|
+
|
25
|
+
class GrExternalTexture {
|
26
|
+
public:
|
27
|
+
virtual ~GrExternalTexture() = default;
|
28
|
+
virtual GrBackendTexture getBackendTexture() = 0;
|
29
|
+
virtual void dispose() = 0;
|
30
|
+
};
|
31
|
+
|
32
|
+
class SK_API GrExternalTextureGenerator : public GrTextureGenerator {
|
33
|
+
public:
|
34
|
+
GrExternalTextureGenerator(const SkImageInfo& info);
|
35
|
+
|
36
|
+
GrSurfaceProxyView onGenerateTexture(GrRecordingContext*,
|
37
|
+
const SkImageInfo&,
|
38
|
+
skgpu::Mipmapped,
|
39
|
+
GrImageTexGenPolicy) override;
|
40
|
+
virtual std::unique_ptr<GrExternalTexture> generateExternalTexture(GrRecordingContext *,
|
41
|
+
skgpu::Mipmapped) = 0;
|
42
|
+
};
|
43
|
+
|
44
|
+
namespace SkImages {
|
45
|
+
/**
|
46
|
+
* Like SkImages::DeferredFromGenerator except allows for the use of GrTextureGenerator.
|
47
|
+
*
|
48
|
+
* @param gen producer of textures
|
49
|
+
* @return created SkImage, or nullptr
|
50
|
+
*/
|
51
|
+
SK_API sk_sp<SkImage> DeferredFromTextureGenerator(std::unique_ptr<GrTextureGenerator> gen);
|
52
|
+
}
|
53
|
+
|
54
|
+
#endif // GrExternalTextureGenerator_DEFINED
|
@@ -14,25 +14,24 @@
|
|
14
14
|
#include "include/gpu/GrTypes.h"
|
15
15
|
#include "include/private/base/SkAPI.h"
|
16
16
|
|
17
|
+
// TODO(kjlubick) remove after chromium is migrated to include this directly
|
18
|
+
#include "include/private/chromium/SkImageChromium.h" // IWYU pragma: keep
|
19
|
+
|
17
20
|
#include <functional>
|
18
21
|
#include <utility>
|
19
22
|
|
20
|
-
class GrBackendFormat;
|
21
23
|
class GrBackendTexture;
|
22
|
-
class GrContextThreadSafeProxy;
|
23
24
|
class GrDirectContext;
|
24
25
|
class GrRecordingContext;
|
25
|
-
class GrYUVABackendTextureInfo;
|
26
26
|
class GrYUVABackendTextures;
|
27
27
|
class SkColorSpace;
|
28
28
|
class SkData;
|
29
29
|
class SkPixmap;
|
30
|
-
class SkPromiseImageTexture;
|
31
30
|
class SkYUVAPixmaps;
|
32
31
|
enum SkAlphaType : int;
|
33
32
|
enum SkColorType : int;
|
34
33
|
enum class SkTextureCompressionType;
|
35
|
-
struct
|
34
|
+
struct SkIRect;
|
36
35
|
|
37
36
|
/**
|
38
37
|
* All factories in this file refer to the Ganesh GPU backend when they say GPU.
|
@@ -262,77 +261,6 @@ SK_API sk_sp<SkImage> TextureFromYUVATextures(GrRecordingContext* context,
|
|
262
261
|
SK_API sk_sp<SkImage> TextureFromYUVATextures(GrRecordingContext* context,
|
263
262
|
const GrYUVABackendTextures& yuvaTextures);
|
264
263
|
|
265
|
-
using PromiseImageTextureContext = void*;
|
266
|
-
using PromiseImageTextureFulfillProc = sk_sp<SkPromiseImageTexture> (*)(PromiseImageTextureContext);
|
267
|
-
using PromiseImageTextureReleaseProc = void (*)(PromiseImageTextureContext);
|
268
|
-
|
269
|
-
/** Create a new GPU-backed SkImage that is very similar to an SkImage created by BorrowTextureFrom.
|
270
|
-
The difference is that the caller need not have created the texture nor populated it with the
|
271
|
-
image pixel data. Moreover, the SkImage may be created on a thread as the creation of the
|
272
|
-
image does not require access to the backend API or GrDirectContext. Instead of passing a
|
273
|
-
GrBackendTexture the client supplies a description of the texture consisting of
|
274
|
-
GrBackendFormat, width, height, and GrMipmapped state. The resulting SkImage can be drawn
|
275
|
-
to a SkDeferredDisplayListRecorder or directly to a GPU-backed SkSurface.
|
276
|
-
When the actual texture is required to perform a backend API draw, textureFulfillProc will
|
277
|
-
be called to receive a GrBackendTexture. The properties of the GrBackendTexture must match
|
278
|
-
those set during the SkImage creation, and it must refer to a valid existing texture in the
|
279
|
-
backend API context/device, and be populated with the image pixel data. The texture cannot
|
280
|
-
be deleted until textureReleaseProc is called.
|
281
|
-
There is at most one call to each of textureFulfillProc and textureReleaseProc.
|
282
|
-
textureReleaseProc is always called even if image creation fails or if the
|
283
|
-
image is never fulfilled (e.g. it is never drawn or all draws are clipped out)
|
284
|
-
@param gpuContextProxy the thread-safe proxy of the gpu context. required.
|
285
|
-
@param backendFormat format of promised gpu texture
|
286
|
-
@param dimensions width & height of promised gpu texture
|
287
|
-
@param mipmapped mip mapped state of promised gpu texture
|
288
|
-
@param origin surface origin of promised gpu texture
|
289
|
-
@param colorType color type of promised gpu texture
|
290
|
-
@param alphaType alpha type of promised gpu texture
|
291
|
-
@param colorSpace range of colors; may be nullptr
|
292
|
-
@param textureFulfillProc function called to get actual gpu texture
|
293
|
-
@param textureReleaseProc function called when texture can be deleted
|
294
|
-
@param textureContext state passed to textureFulfillProc and textureReleaseProc
|
295
|
-
@return created SkImage, or nullptr
|
296
|
-
*/
|
297
|
-
SK_API sk_sp<SkImage> PromiseTextureFrom(sk_sp<GrContextThreadSafeProxy> gpuContextProxy,
|
298
|
-
const GrBackendFormat& backendFormat,
|
299
|
-
SkISize dimensions,
|
300
|
-
GrMipmapped mipmapped,
|
301
|
-
GrSurfaceOrigin origin,
|
302
|
-
SkColorType colorType,
|
303
|
-
SkAlphaType alphaType,
|
304
|
-
sk_sp<SkColorSpace> colorSpace,
|
305
|
-
PromiseImageTextureFulfillProc textureFulfillProc,
|
306
|
-
PromiseImageTextureReleaseProc textureReleaseProc,
|
307
|
-
PromiseImageTextureContext textureContext);
|
308
|
-
|
309
|
-
/** This is similar to 'PromiseTextureFrom' but it creates a GPU-backed SkImage from YUV[A] data.
|
310
|
-
The source data may be planar (i.e. spread across multiple textures). In
|
311
|
-
the extreme Y, U, V, and A are all in different planes and thus the image is specified by
|
312
|
-
four textures. 'backendTextureInfo' describes the planar arrangement, texture formats,
|
313
|
-
conversion to RGB, and origin of the textures. Separate 'textureFulfillProc' and
|
314
|
-
'textureReleaseProc' calls are made for each texture. Each texture has its own
|
315
|
-
PromiseImageTextureContext. If 'backendTextureInfo' is not valid then no release proc
|
316
|
-
calls are made. Otherwise, the calls will be made even on failure. 'textureContexts' has one
|
317
|
-
entry for each of the up to four textures, as indicated by 'backendTextureInfo'.
|
318
|
-
Currently the mip mapped property of 'backendTextureInfo' is ignored. However, in the
|
319
|
-
near future it will be required that if it is kYes then textureFulfillProc must return
|
320
|
-
a mip mapped texture for each plane in order to successfully draw the image.
|
321
|
-
@param gpuContextProxy the thread-safe proxy of the gpu context. required.
|
322
|
-
@param backendTextureInfo info about the promised yuva gpu texture
|
323
|
-
@param imageColorSpace range of colors; may be nullptr
|
324
|
-
@param textureFulfillProc function called to get actual gpu texture
|
325
|
-
@param textureReleaseProc function called when texture can be deleted
|
326
|
-
@param textureContexts state passed to textureFulfillProc and textureReleaseProc
|
327
|
-
@return created SkImage, or nullptr
|
328
|
-
*/
|
329
|
-
SK_API sk_sp<SkImage> PromiseTextureFromYUVA(sk_sp<GrContextThreadSafeProxy> gpuContextProxy,
|
330
|
-
const GrYUVABackendTextureInfo& backendTextureInfo,
|
331
|
-
sk_sp<SkColorSpace> imageColorSpace,
|
332
|
-
PromiseImageTextureFulfillProc textureFulfillProc,
|
333
|
-
PromiseImageTextureReleaseProc textureReleaseProc,
|
334
|
-
PromiseImageTextureContext textureContexts[]);
|
335
|
-
|
336
264
|
/** Retrieves the existing backend texture. If SkImage is not a Ganesh-backend texture image
|
337
265
|
or otherwise does not have such a texture, false is returned. Otherwise, outTexture will
|
338
266
|
be set to the image's texture.
|
@@ -380,6 +308,22 @@ inline bool GetBackendTextureFromImage(GrDirectContext* context,
|
|
380
308
|
backendTextureReleaseProc);
|
381
309
|
}
|
382
310
|
|
311
|
+
/** Returns subset of this image as a texture-backed image.
|
312
|
+
|
313
|
+
Returns nullptr if any of the following are true:
|
314
|
+
- Subset is empty
|
315
|
+
- Subset is not contained inside the image's bounds
|
316
|
+
- Pixels in the source image could not be read or copied
|
317
|
+
- The source image is texture-backed and context does not match the source image's context.
|
318
|
+
|
319
|
+
@param context the non-null GrDirectContext to which the subset should be uploaded.
|
320
|
+
@param subset bounds of returned SkImage
|
321
|
+
@return the subsetted image, uploaded as a texture, or nullptr
|
322
|
+
*/
|
323
|
+
SK_API sk_sp<SkImage> SubsetTextureFrom(GrDirectContext* context,
|
324
|
+
const SkImage* img,
|
325
|
+
const SkIRect& subset);
|
326
|
+
|
383
327
|
} // namespace SkImages
|
384
328
|
|
385
329
|
#endif
|