@shopify/react-native-skia 0.1.196 → 0.1.199
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 +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
|
@@ -0,0 +1,217 @@
|
|
|
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 SkSurfaceGanesh_DEFINED
|
|
9
|
+
#define SkSurfaceGanesh_DEFINED
|
|
10
|
+
|
|
11
|
+
#include "include/core/SkImageInfo.h"
|
|
12
|
+
#include "include/core/SkRefCnt.h"
|
|
13
|
+
#include "include/core/SkSurface.h"
|
|
14
|
+
#include "include/gpu/GrTypes.h"
|
|
15
|
+
#include "include/private/base/SkAPI.h"
|
|
16
|
+
|
|
17
|
+
class GrBackendRenderTarget;
|
|
18
|
+
class GrBackendTexture;
|
|
19
|
+
class GrRecordingContext;
|
|
20
|
+
class SkColorSpace;
|
|
21
|
+
class GrSurfaceCharacterization;
|
|
22
|
+
class SkSurfaceProps;
|
|
23
|
+
enum SkColorType : int;
|
|
24
|
+
namespace skgpu {
|
|
25
|
+
enum class Budgeted : bool;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
namespace SkSurfaces {
|
|
29
|
+
|
|
30
|
+
/** Caller data passed to RenderTarget/TextureReleaseProc; may be nullptr. */
|
|
31
|
+
using ReleaseContext = void*;
|
|
32
|
+
|
|
33
|
+
/** User function called when supplied render target may be deleted. */
|
|
34
|
+
using RenderTargetReleaseProc = void (*)(ReleaseContext);
|
|
35
|
+
|
|
36
|
+
/** User function called when supplied texture may be deleted. */
|
|
37
|
+
using TextureReleaseProc = void (*)(ReleaseContext);
|
|
38
|
+
|
|
39
|
+
/** Returns SkSurface on GPU indicated by context. Allocates memory for
|
|
40
|
+
pixels, based on the width, height, and SkColorType in SkImageInfo. budgeted
|
|
41
|
+
selects whether allocation for pixels is tracked by context. imageInfo
|
|
42
|
+
describes the pixel format in SkColorType, and transparency in
|
|
43
|
+
SkAlphaType, and color matching in SkColorSpace.
|
|
44
|
+
|
|
45
|
+
sampleCount requests the number of samples per pixel.
|
|
46
|
+
Pass zero to disable multi-sample anti-aliasing. The request is rounded
|
|
47
|
+
up to the next supported count, or rounded down if it is larger than the
|
|
48
|
+
maximum supported count.
|
|
49
|
+
|
|
50
|
+
surfaceOrigin pins either the top-left or the bottom-left corner to the origin.
|
|
51
|
+
|
|
52
|
+
shouldCreateWithMips hints that SkImage returned by makeImageSnapshot() is mip map.
|
|
53
|
+
|
|
54
|
+
@param context GPU context
|
|
55
|
+
@param imageInfo width, height, SkColorType, SkAlphaType, SkColorSpace;
|
|
56
|
+
width, or height, or both, may be zero
|
|
57
|
+
@param sampleCount samples per pixel, or 0 to disable full scene anti-aliasing
|
|
58
|
+
@param surfaceOrigin How to align the pixel data.
|
|
59
|
+
@param surfaceProps LCD striping orientation and setting for device independent
|
|
60
|
+
fonts; may be nullptr
|
|
61
|
+
@param shouldCreateWithMips hint that SkSurface will host mip map images
|
|
62
|
+
@return SkSurface if all parameters are valid; otherwise, nullptr
|
|
63
|
+
*/
|
|
64
|
+
SK_API sk_sp<SkSurface> RenderTarget(GrRecordingContext* context,
|
|
65
|
+
skgpu::Budgeted budgeted,
|
|
66
|
+
const SkImageInfo& imageInfo,
|
|
67
|
+
int sampleCount,
|
|
68
|
+
GrSurfaceOrigin surfaceOrigin,
|
|
69
|
+
const SkSurfaceProps* surfaceProps,
|
|
70
|
+
bool shouldCreateWithMips = false);
|
|
71
|
+
inline sk_sp<SkSurface> RenderTarget(GrRecordingContext* context,
|
|
72
|
+
skgpu::Budgeted budgeted,
|
|
73
|
+
const SkImageInfo& imageInfo,
|
|
74
|
+
int sampleCount,
|
|
75
|
+
const SkSurfaceProps* surfaceProps) {
|
|
76
|
+
return RenderTarget(
|
|
77
|
+
context, budgeted, imageInfo, sampleCount, kBottomLeft_GrSurfaceOrigin, surfaceProps);
|
|
78
|
+
}
|
|
79
|
+
inline sk_sp<SkSurface> RenderTarget(GrRecordingContext* context,
|
|
80
|
+
skgpu::Budgeted budgeted,
|
|
81
|
+
const SkImageInfo& imageInfo) {
|
|
82
|
+
if (!imageInfo.width() || !imageInfo.height()) {
|
|
83
|
+
return nullptr;
|
|
84
|
+
}
|
|
85
|
+
return RenderTarget(context, budgeted, imageInfo, 0, kBottomLeft_GrSurfaceOrigin, nullptr);
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
/** Returns SkSurface on GPU indicated by context that is compatible with the provided
|
|
89
|
+
characterization. budgeted selects whether allocation for pixels is tracked by context.
|
|
90
|
+
|
|
91
|
+
@param context GPU context
|
|
92
|
+
@param characterization description of the desired SkSurface
|
|
93
|
+
@return SkSurface if all parameters are valid; otherwise, nullptr
|
|
94
|
+
*/
|
|
95
|
+
SK_API sk_sp<SkSurface> RenderTarget(GrRecordingContext* context,
|
|
96
|
+
const GrSurfaceCharacterization& characterization,
|
|
97
|
+
skgpu::Budgeted budgeted);
|
|
98
|
+
|
|
99
|
+
/** Wraps a GPU-backed texture into SkSurface. Caller must ensure the texture is
|
|
100
|
+
valid for the lifetime of returned SkSurface. If sampleCnt greater than zero,
|
|
101
|
+
creates an intermediate MSAA SkSurface which is used for drawing backendTexture.
|
|
102
|
+
|
|
103
|
+
SkSurface is returned if all parameters are valid. backendTexture is valid if
|
|
104
|
+
its pixel configuration agrees with colorSpace and context; for instance, if
|
|
105
|
+
backendTexture has an sRGB configuration, then context must support sRGB,
|
|
106
|
+
and colorSpace must be present. Further, backendTexture width and height must
|
|
107
|
+
not exceed context capabilities, and the context must be able to support
|
|
108
|
+
back-end textures.
|
|
109
|
+
|
|
110
|
+
Upon success textureReleaseProc is called when it is safe to delete the texture in the
|
|
111
|
+
backend API (accounting only for use of the texture by this surface). If SkSurface creation
|
|
112
|
+
fails textureReleaseProc is called before this function returns.
|
|
113
|
+
|
|
114
|
+
@param context GPU context
|
|
115
|
+
@param backendTexture texture residing on GPU
|
|
116
|
+
@param sampleCnt samples per pixel, or 0 to disable full scene anti-aliasing
|
|
117
|
+
@param colorSpace range of colors; may be nullptr
|
|
118
|
+
@param surfaceProps LCD striping orientation and setting for device independent
|
|
119
|
+
fonts; may be nullptr
|
|
120
|
+
@param textureReleaseProc function called when texture can be released
|
|
121
|
+
@param releaseContext state passed to textureReleaseProc
|
|
122
|
+
@return SkSurface if all parameters are valid; otherwise, nullptr
|
|
123
|
+
*/
|
|
124
|
+
SK_API sk_sp<SkSurface> WrapBackendTexture(GrRecordingContext* context,
|
|
125
|
+
const GrBackendTexture& backendTexture,
|
|
126
|
+
GrSurfaceOrigin origin,
|
|
127
|
+
int sampleCnt,
|
|
128
|
+
SkColorType colorType,
|
|
129
|
+
sk_sp<SkColorSpace> colorSpace,
|
|
130
|
+
const SkSurfaceProps* surfaceProps,
|
|
131
|
+
TextureReleaseProc textureReleaseProc = nullptr,
|
|
132
|
+
ReleaseContext releaseContext = nullptr);
|
|
133
|
+
|
|
134
|
+
/** Wraps a GPU-backed buffer into SkSurface. Caller must ensure backendRenderTarget
|
|
135
|
+
is valid for the lifetime of returned SkSurface.
|
|
136
|
+
|
|
137
|
+
SkSurface is returned if all parameters are valid. backendRenderTarget is valid if
|
|
138
|
+
its pixel configuration agrees with colorSpace and context; for instance, if
|
|
139
|
+
backendRenderTarget has an sRGB configuration, then context must support sRGB,
|
|
140
|
+
and colorSpace must be present. Further, backendRenderTarget width and height must
|
|
141
|
+
not exceed context capabilities, and the context must be able to support
|
|
142
|
+
back-end render targets.
|
|
143
|
+
|
|
144
|
+
Upon success releaseProc is called when it is safe to delete the render target in the
|
|
145
|
+
backend API (accounting only for use of the render target by this surface). If SkSurface
|
|
146
|
+
creation fails releaseProc is called before this function returns.
|
|
147
|
+
|
|
148
|
+
@param context GPU context
|
|
149
|
+
@param backendRenderTarget GPU intermediate memory buffer
|
|
150
|
+
@param colorSpace range of colors
|
|
151
|
+
@param surfaceProps LCD striping orientation and setting for device independent
|
|
152
|
+
fonts; may be nullptr
|
|
153
|
+
@param releaseProc function called when backendRenderTarget can be released
|
|
154
|
+
@param releaseContext state passed to releaseProc
|
|
155
|
+
@return SkSurface if all parameters are valid; otherwise, nullptr
|
|
156
|
+
*/
|
|
157
|
+
SK_API sk_sp<SkSurface> WrapBackendRenderTarget(GrRecordingContext* context,
|
|
158
|
+
const GrBackendRenderTarget& backendRenderTarget,
|
|
159
|
+
GrSurfaceOrigin origin,
|
|
160
|
+
SkColorType colorType,
|
|
161
|
+
sk_sp<SkColorSpace> colorSpace,
|
|
162
|
+
const SkSurfaceProps* surfaceProps,
|
|
163
|
+
RenderTargetReleaseProc releaseProc = nullptr,
|
|
164
|
+
ReleaseContext releaseContext = nullptr);
|
|
165
|
+
|
|
166
|
+
using BackendHandleAccess = SkSurface::BackendHandleAccess;
|
|
167
|
+
|
|
168
|
+
/** Retrieves the back-end texture. If SkSurface has no back-end texture, an invalid
|
|
169
|
+
object is returned. Call GrBackendTexture::isValid to determine if the result
|
|
170
|
+
is valid.
|
|
171
|
+
|
|
172
|
+
The returned GrBackendTexture should be discarded if the SkSurface is drawn to or deleted.
|
|
173
|
+
|
|
174
|
+
@return GPU texture reference; invalid on failure
|
|
175
|
+
*/
|
|
176
|
+
SK_API GrBackendTexture GetBackendTexture(SkSurface*, BackendHandleAccess);
|
|
177
|
+
|
|
178
|
+
/** Retrieves the back-end render target. If SkSurface has no back-end render target, an invalid
|
|
179
|
+
object is returned. Call GrBackendRenderTarget::isValid to determine if the result
|
|
180
|
+
is valid.
|
|
181
|
+
|
|
182
|
+
The returned GrBackendRenderTarget should be discarded if the SkSurface is drawn to
|
|
183
|
+
or deleted.
|
|
184
|
+
|
|
185
|
+
@return GPU render target reference; invalid on failure
|
|
186
|
+
*/
|
|
187
|
+
SK_API GrBackendRenderTarget GetBackendRenderTarget(SkSurface*, BackendHandleAccess);
|
|
188
|
+
|
|
189
|
+
/** If a surface is a Ganesh-backed surface, is being drawn with MSAA, and there is a resolve
|
|
190
|
+
texture, this call will insert a resolve command into the stream of gpu commands. In order
|
|
191
|
+
for the resolve to actually have an effect, the work still needs to be flushed and submitted
|
|
192
|
+
to the GPU after recording the resolve command. If a resolve is not supported or the
|
|
193
|
+
SkSurface has no dirty work to resolve, then this call is a no-op.
|
|
194
|
+
|
|
195
|
+
This call is most useful when the SkSurface is created by wrapping a single sampled gpu
|
|
196
|
+
texture, but asking Skia to render with MSAA. If the client wants to use the wrapped texture
|
|
197
|
+
outside of Skia, the only way to trigger a resolve is either to call this command or use
|
|
198
|
+
GrDirectContext::flush.
|
|
199
|
+
*/
|
|
200
|
+
SK_API void ResolveMSAA(SkSurface* surface);
|
|
201
|
+
inline void ResolveMSAA(sk_sp<SkSurface> surface) {
|
|
202
|
+
return ResolveMSAA(surface.get());
|
|
203
|
+
}
|
|
204
|
+
|
|
205
|
+
} // namespace SkSurfaces
|
|
206
|
+
|
|
207
|
+
namespace skgpu::ganesh {
|
|
208
|
+
// Clients should strive to call GrDirectContext::flush directly. However, there exist some
|
|
209
|
+
// places where the GrDirectContext is hard to find, these helpers allow for the flushing of the
|
|
210
|
+
// provided surface. This is a no-op if the surface is nullptr or not GPU backed.
|
|
211
|
+
SK_API GrSemaphoresSubmitted Flush(sk_sp<SkSurface>);
|
|
212
|
+
SK_API GrSemaphoresSubmitted Flush(SkSurface*);
|
|
213
|
+
SK_API void FlushAndSubmit(sk_sp<SkSurface>);
|
|
214
|
+
SK_API void FlushAndSubmit(SkSurface*);
|
|
215
|
+
} // namespace skgpu::ganesh
|
|
216
|
+
|
|
217
|
+
#endif
|
|
@@ -0,0 +1,73 @@
|
|
|
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 SkSurfaceMetal_DEFINED
|
|
9
|
+
#define SkSurfaceMetal_DEFINED
|
|
10
|
+
|
|
11
|
+
#include "include/core/SkRefCnt.h"
|
|
12
|
+
#include "include/core/SkSurface.h"
|
|
13
|
+
#include "include/gpu/GrTypes.h"
|
|
14
|
+
#include "include/gpu/ganesh/SkSurfaceGanesh.h"
|
|
15
|
+
#include "include/gpu/mtl/GrMtlTypes.h"
|
|
16
|
+
|
|
17
|
+
namespace SkSurfaces {
|
|
18
|
+
/** Creates SkSurface from CAMetalLayer.
|
|
19
|
+
Returned SkSurface takes a reference on the CAMetalLayer. The ref on the layer will be
|
|
20
|
+
released when the SkSurface is destroyed.
|
|
21
|
+
|
|
22
|
+
Only available when Metal API is enabled.
|
|
23
|
+
|
|
24
|
+
Will grab the current drawable from the layer and use its texture as a backendRT to
|
|
25
|
+
create a renderable surface.
|
|
26
|
+
|
|
27
|
+
@param context GPU context
|
|
28
|
+
@param layer GrMTLHandle (expected to be a CAMetalLayer*)
|
|
29
|
+
@param sampleCnt samples per pixel, or 0 to disable full scene anti-aliasing
|
|
30
|
+
@param colorSpace range of colors; may be nullptr
|
|
31
|
+
@param surfaceProps LCD striping orientation and setting for device independent
|
|
32
|
+
fonts; may be nullptr
|
|
33
|
+
@param drawable Pointer to drawable to be filled in when this surface is
|
|
34
|
+
instantiated; may not be nullptr
|
|
35
|
+
@return created SkSurface, or nullptr
|
|
36
|
+
*/
|
|
37
|
+
SK_API sk_sp<SkSurface> WrapCAMetalLayer(GrRecordingContext* context,
|
|
38
|
+
GrMTLHandle layer,
|
|
39
|
+
GrSurfaceOrigin origin,
|
|
40
|
+
int sampleCnt,
|
|
41
|
+
SkColorType colorType,
|
|
42
|
+
sk_sp<SkColorSpace> colorSpace,
|
|
43
|
+
const SkSurfaceProps* surfaceProps,
|
|
44
|
+
GrMTLHandle* drawable) SK_API_AVAILABLE_CA_METAL_LAYER;
|
|
45
|
+
|
|
46
|
+
/** Creates SkSurface from MTKView.
|
|
47
|
+
Returned SkSurface takes a reference on the MTKView. The ref on the layer will be
|
|
48
|
+
released when the SkSurface is destroyed.
|
|
49
|
+
|
|
50
|
+
Only available when Metal API is enabled.
|
|
51
|
+
|
|
52
|
+
Will grab the current drawable from the layer and use its texture as a backendRT to
|
|
53
|
+
create a renderable surface.
|
|
54
|
+
|
|
55
|
+
@param context GPU context
|
|
56
|
+
@param layer GrMTLHandle (expected to be a MTKView*)
|
|
57
|
+
@param sampleCnt samples per pixel, or 0 to disable full scene anti-aliasing
|
|
58
|
+
@param colorSpace range of colors; may be nullptr
|
|
59
|
+
@param surfaceProps LCD striping orientation and setting for device independent
|
|
60
|
+
fonts; may be nullptr
|
|
61
|
+
@return created SkSurface, or nullptr
|
|
62
|
+
*/
|
|
63
|
+
SK_API sk_sp<SkSurface> WrapMTKView(GrRecordingContext* context,
|
|
64
|
+
GrMTLHandle mtkView,
|
|
65
|
+
GrSurfaceOrigin origin,
|
|
66
|
+
int sampleCnt,
|
|
67
|
+
SkColorType colorType,
|
|
68
|
+
sk_sp<SkColorSpace> colorSpace,
|
|
69
|
+
const SkSurfaceProps* surfaceProps)
|
|
70
|
+
SK_API_AVAILABLE(macos(10.11), ios(9.0));
|
|
71
|
+
} // namespace SkSurfaces
|
|
72
|
+
|
|
73
|
+
#endif
|
|
@@ -181,19 +181,30 @@ struct GrGLTextureInfo {
|
|
|
181
181
|
GrGLenum fTarget;
|
|
182
182
|
GrGLuint fID;
|
|
183
183
|
GrGLenum fFormat = 0;
|
|
184
|
+
skgpu::Protected fProtected = skgpu::Protected::kNo;
|
|
184
185
|
|
|
185
186
|
bool operator==(const GrGLTextureInfo& that) const {
|
|
186
|
-
return fTarget == that.fTarget &&
|
|
187
|
+
return fTarget == that.fTarget &&
|
|
188
|
+
fID == that.fID &&
|
|
189
|
+
fFormat == that.fFormat &&
|
|
190
|
+
fProtected == that.fProtected;
|
|
187
191
|
}
|
|
192
|
+
|
|
193
|
+
bool isProtected() const { return fProtected == skgpu::Protected::kYes; }
|
|
188
194
|
};
|
|
189
195
|
|
|
190
196
|
struct GrGLFramebufferInfo {
|
|
191
197
|
GrGLuint fFBOID;
|
|
192
198
|
GrGLenum fFormat = 0;
|
|
199
|
+
skgpu::Protected fProtected = skgpu::Protected::kNo;
|
|
193
200
|
|
|
194
201
|
bool operator==(const GrGLFramebufferInfo& that) const {
|
|
195
|
-
return fFBOID == that.fFBOID &&
|
|
202
|
+
return fFBOID == that.fFBOID &&
|
|
203
|
+
fFormat == that.fFormat &&
|
|
204
|
+
fProtected == that.fProtected;
|
|
196
205
|
}
|
|
206
|
+
|
|
207
|
+
bool isProtected() const { return fProtected == skgpu::Protected::kYes; }
|
|
197
208
|
};
|
|
198
209
|
|
|
199
210
|
struct GrGLSurfaceInfo {
|
|
@@ -0,0 +1,78 @@
|
|
|
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 skgpu_graphite_BackendSemaphore_DEFINED
|
|
9
|
+
#define skgpu_graphite_BackendSemaphore_DEFINED
|
|
10
|
+
|
|
11
|
+
#include "include/core/SkRefCnt.h"
|
|
12
|
+
#include "include/gpu/graphite/GraphiteTypes.h"
|
|
13
|
+
|
|
14
|
+
#ifdef SK_METAL
|
|
15
|
+
#include "include/gpu/graphite/mtl/MtlGraphiteTypes.h"
|
|
16
|
+
#endif
|
|
17
|
+
|
|
18
|
+
#ifdef SK_VULKAN
|
|
19
|
+
#include "include/private/gpu/vk/SkiaVulkan.h"
|
|
20
|
+
#endif
|
|
21
|
+
|
|
22
|
+
namespace skgpu::graphite {
|
|
23
|
+
|
|
24
|
+
class SK_API BackendSemaphore {
|
|
25
|
+
public:
|
|
26
|
+
BackendSemaphore();
|
|
27
|
+
#ifdef SK_METAL
|
|
28
|
+
// TODO: Determine creator's responsibility for setting refcnt.
|
|
29
|
+
BackendSemaphore(MtlHandle mtlEvent, uint64_t value);
|
|
30
|
+
#endif
|
|
31
|
+
|
|
32
|
+
#ifdef SK_VULKAN
|
|
33
|
+
BackendSemaphore(VkSemaphore semaphore);
|
|
34
|
+
#endif
|
|
35
|
+
|
|
36
|
+
BackendSemaphore(const BackendSemaphore&);
|
|
37
|
+
|
|
38
|
+
~BackendSemaphore();
|
|
39
|
+
|
|
40
|
+
BackendSemaphore& operator=(const BackendSemaphore&);
|
|
41
|
+
|
|
42
|
+
bool isValid() const { return fIsValid; }
|
|
43
|
+
BackendApi backend() const { return fBackend; }
|
|
44
|
+
|
|
45
|
+
#ifdef SK_METAL
|
|
46
|
+
MtlHandle getMtlEvent() const;
|
|
47
|
+
uint64_t getMtlValue() const;
|
|
48
|
+
#endif
|
|
49
|
+
|
|
50
|
+
#ifdef SK_VULKAN
|
|
51
|
+
VkSemaphore getVkSemaphore() const;
|
|
52
|
+
#endif
|
|
53
|
+
|
|
54
|
+
private:
|
|
55
|
+
// TODO: For now, implement as a union until we figure out the plan for this and BackendTexture.
|
|
56
|
+
union {
|
|
57
|
+
#ifdef SK_DAWN
|
|
58
|
+
// TODO: WebGPU doesn't seem to have the notion of an Event or Semaphore
|
|
59
|
+
#endif
|
|
60
|
+
#ifdef SK_METAL
|
|
61
|
+
struct {
|
|
62
|
+
MtlHandle fMtlEvent; // Expected to be an id<MTLEvent>
|
|
63
|
+
uint64_t fMtlValue;
|
|
64
|
+
};
|
|
65
|
+
#endif
|
|
66
|
+
#ifdef SK_VULKAN
|
|
67
|
+
VkSemaphore fVkSemaphore;
|
|
68
|
+
#endif
|
|
69
|
+
void* fEnsureUnionNonEmpty;
|
|
70
|
+
};
|
|
71
|
+
bool fIsValid = false;
|
|
72
|
+
BackendApi fBackend;
|
|
73
|
+
};
|
|
74
|
+
|
|
75
|
+
} // namespace skgpu::graphite
|
|
76
|
+
|
|
77
|
+
#endif // skgpu_graphite_BackendSemaphore_DEFINED
|
|
78
|
+
|