@shopify/react-native-skia 0.1.129 → 0.1.130
Sign up to get free protection for your applications and to get access to all the features.
- package/android/cpp/rnskia-android/SkiaOpenGLRenderer.h +1 -0
- package/cpp/api/JsiSkRuntimeEffect.h +7 -9
- package/cpp/api/JsiSkVertices.h +0 -2
- package/cpp/rnskia/values/RNSkValue.h +1 -1
- package/cpp/skia/include/codec/SkCodec.h +7 -1
- package/cpp/skia/include/core/SkAlphaType.h +45 -0
- package/cpp/skia/include/core/SkBitmap.h +4 -2
- package/cpp/skia/include/core/SkCanvas.h +31 -20
- package/cpp/skia/include/core/SkColor.h +1 -1
- package/cpp/skia/include/core/SkColorFilter.h +1 -0
- package/cpp/skia/include/core/SkColorType.h +66 -0
- package/cpp/skia/include/core/SkDeferredDisplayListRecorder.h +1 -1
- package/cpp/skia/include/core/SkDrawable.h +7 -0
- package/cpp/skia/include/core/SkEncodedImageFormat.h +1 -0
- package/cpp/skia/include/core/SkFont.h +4 -3
- package/cpp/skia/include/core/SkFontArguments.h +33 -1
- package/cpp/skia/include/core/SkGraphics.h +13 -0
- package/cpp/skia/include/core/SkImage.h +67 -22
- package/cpp/skia/include/core/SkImageEncoder.h +0 -3
- package/cpp/skia/include/core/SkImageGenerator.h +4 -3
- package/cpp/skia/include/core/SkImageInfo.h +35 -142
- package/cpp/skia/include/core/SkMesh.h +303 -0
- package/cpp/skia/include/core/SkMilestone.h +1 -1
- package/cpp/skia/include/core/SkOpenTypeSVGDecoder.h +30 -0
- package/cpp/skia/include/core/SkPaint.h +4 -19
- package/cpp/skia/include/core/SkPath.h +20 -33
- package/cpp/skia/include/core/SkPathBuilder.h +1 -6
- package/cpp/skia/include/core/SkPixelRef.h +1 -1
- package/cpp/skia/include/core/SkPixmap.h +3 -2
- package/cpp/skia/include/core/SkRSXform.h +1 -1
- package/cpp/skia/include/core/SkSamplingOptions.h +16 -5
- package/cpp/skia/include/core/SkSpan.h +5 -5
- package/cpp/skia/include/core/SkString.h +5 -8
- package/cpp/skia/include/core/SkSurface.h +21 -0
- package/cpp/skia/include/core/SkTypeface.h +20 -4
- package/cpp/skia/include/core/SkTypes.h +9 -5
- package/cpp/skia/include/effects/SkGradientShader.h +9 -18
- package/cpp/skia/include/effects/SkRuntimeEffect.h +16 -12
- package/cpp/skia/include/gpu/GpuTypes.h +32 -0
- package/cpp/skia/include/gpu/GrBackendSemaphore.h +1 -1
- package/cpp/skia/include/gpu/GrBackendSurface.h +6 -5
- package/cpp/skia/include/gpu/GrBackendSurfaceMutableState.h +1 -1
- package/cpp/skia/include/gpu/GrContextOptions.h +11 -20
- package/cpp/skia/include/gpu/GrContextThreadSafeProxy.h +7 -0
- package/cpp/skia/include/gpu/GrDirectContext.h +16 -11
- package/cpp/skia/include/gpu/GrDriverBugWorkaroundsAutogen.h +0 -2
- package/cpp/skia/include/gpu/GrRecordingContext.h +14 -7
- package/cpp/skia/include/gpu/GrSurfaceInfo.h +6 -6
- package/cpp/skia/include/gpu/dawn/GrDawnTypes.h +1 -1
- package/cpp/skia/include/gpu/gl/GrGLFunctions.h +3 -1
- package/cpp/skia/include/gpu/gl/GrGLInterface.h +2 -2
- package/cpp/skia/include/gpu/graphite/BackendTexture.h +64 -0
- package/cpp/skia/include/gpu/graphite/Context.h +124 -0
- package/cpp/skia/include/gpu/graphite/GraphiteTypes.h +71 -0
- package/cpp/skia/include/gpu/graphite/Recorder.h +104 -0
- package/cpp/skia/include/gpu/graphite/Recording.h +39 -0
- package/cpp/skia/include/gpu/graphite/SkStuff.h +47 -0
- package/cpp/skia/include/gpu/graphite/TextureInfo.h +91 -0
- package/cpp/skia/include/gpu/graphite/mtl/MtlBackendContext.h +24 -0
- package/cpp/skia/include/gpu/graphite/mtl/MtlTypes.h +68 -0
- package/cpp/skia/include/gpu/mock/GrMockTypes.h +1 -2
- package/cpp/skia/include/ports/SkCFObject.h +0 -4
- package/cpp/skia/include/ports/SkTypeface_win.h +2 -2
- package/cpp/skia/include/private/{GrSingleOwner.h → SingleOwner.h} +17 -10
- package/cpp/skia/include/private/SkChecksum.h +11 -0
- package/cpp/skia/include/private/SkEncodedInfo.h +22 -5
- package/cpp/skia/include/private/SkFloatingPoint.h +0 -53
- package/cpp/skia/include/private/SkImageInfoPriv.h +8 -2
- package/cpp/skia/include/private/SkMacros.h +13 -18
- package/cpp/skia/include/private/SkMutex.h +8 -0
- package/cpp/skia/include/private/SkPathRef.h +2 -16
- package/cpp/skia/include/private/SkSLDefines.h +9 -1
- package/cpp/skia/include/private/SkSLIRNode.h +6 -5
- package/cpp/skia/include/private/SkSLLayout.h +11 -10
- package/cpp/skia/include/private/SkSLModifiers.h +4 -3
- package/cpp/skia/include/private/SkSLProgramElement.h +2 -2
- package/cpp/skia/include/private/SkSLProgramKind.h +8 -5
- package/cpp/skia/include/private/SkSLStatement.h +2 -3
- package/cpp/skia/include/private/SkSLString.h +17 -56
- package/cpp/skia/include/private/SkSLSymbol.h +4 -4
- package/cpp/skia/include/private/SkShadowFlags.h +3 -1
- package/cpp/skia/include/private/SkStringView.h +47 -0
- package/cpp/skia/include/private/SkTArray.h +4 -3
- package/cpp/skia/include/private/SkTHash.h +66 -24
- package/cpp/skia/include/private/SkTLogic.h +2 -32
- package/cpp/skia/include/private/SkTemplates.h +2 -2
- package/cpp/skia/include/private/SkThreadAnnotations.h +4 -4
- package/cpp/skia/include/private/SkVx.h +28 -28
- package/cpp/skia/include/private/chromium/GrSlug.h +40 -3
- package/cpp/skia/include/private/chromium/SkChromeRemoteGlyphCache.h +12 -6
- package/cpp/skia/include/private/{GrContext_Base.h → gpu/ganesh/GrContext_Base.h} +7 -0
- package/cpp/skia/include/private/{GrD3DTypesMinimal.h → gpu/ganesh/GrD3DTypesMinimal.h} +0 -0
- package/cpp/skia/include/private/{GrDawnTypesPriv.h → gpu/ganesh/GrDawnTypesPriv.h} +0 -0
- package/cpp/skia/include/private/{GrGLTypesPriv.h → gpu/ganesh/GrGLTypesPriv.h} +1 -0
- package/cpp/skia/include/private/{GrImageContext.h → gpu/ganesh/GrImageContext.h} +4 -4
- package/cpp/skia/include/private/{GrMockTypesPriv.h → gpu/ganesh/GrMockTypesPriv.h} +0 -0
- package/cpp/skia/include/private/{GrMtlTypesPriv.h → gpu/ganesh/GrMtlTypesPriv.h} +0 -0
- package/cpp/skia/include/private/{GrTypesPriv.h → gpu/ganesh/GrTypesPriv.h} +25 -367
- package/cpp/skia/include/private/{GrVkTypesPriv.h → gpu/ganesh/GrVkTypesPriv.h} +0 -0
- package/cpp/skia/include/private/gpu/graphite/MtlTypesPriv.h +74 -0
- package/cpp/skia/include/sksl/DSL.h +4 -0
- package/cpp/skia/include/sksl/DSLBlock.h +8 -3
- package/cpp/skia/include/sksl/DSLCase.h +6 -6
- package/cpp/skia/include/sksl/DSLCore.h +89 -78
- package/cpp/skia/include/sksl/DSLExpression.h +78 -45
- package/cpp/skia/include/sksl/DSLFunction.h +23 -18
- package/cpp/skia/include/sksl/DSLLayout.h +14 -16
- package/cpp/skia/include/sksl/DSLModifiers.h +7 -5
- package/cpp/skia/include/sksl/DSLRuntimeEffects.h +1 -1
- package/cpp/skia/include/sksl/DSLStatement.h +16 -10
- package/cpp/skia/include/sksl/DSLSymbols.h +7 -7
- package/cpp/skia/include/sksl/DSLType.h +27 -23
- package/cpp/skia/include/sksl/DSLVar.h +72 -61
- package/cpp/skia/include/sksl/SkSLErrorReporter.h +12 -49
- package/cpp/skia/include/sksl/SkSLOperator.h +151 -0
- package/cpp/skia/include/sksl/SkSLPosition.h +102 -0
- package/cpp/skia/include/svg/SkSVGCanvas.h +5 -1
- package/cpp/skia/include/utils/SkAnimCodecPlayer.h +7 -0
- package/cpp/skia/include/utils/SkCamera.h +2 -0
- package/cpp/skia/include/utils/SkCanvasStateUtils.h +4 -1
- package/cpp/skia/include/utils/SkCustomTypeface.h +6 -4
- package/cpp/skia/include/utils/SkNWayCanvas.h +34 -0
- package/cpp/skia/include/utils/SkNullCanvas.h +5 -1
- package/cpp/skia/include/utils/SkOrderedFontMgr.h +12 -0
- package/cpp/skia/include/utils/SkPaintFilterCanvas.h +30 -1
- package/cpp/skia/include/utils/SkParse.h +2 -0
- package/cpp/skia/include/utils/SkShadowUtils.h +3 -2
- package/cpp/skia/include/utils/SkTextUtils.h +8 -4
- package/cpp/skia/modules/svg/include/SkSVGAttributeParser.h +27 -1
- package/cpp/skia/modules/svg/include/SkSVGDOM.h +4 -0
- package/cpp/skia/modules/svg/include/SkSVGOpenTypeSVGDecoder.h +32 -0
- package/cpp/skia/modules/svg/include/SkSVGRenderContext.h +3 -3
- package/cpp/skia/modules/svg/include/SkSVGSVG.h +2 -0
- package/cpp/skia/modules/svg/include/SkSVGTypes.h +48 -9
- package/ios/RNSkia-iOS/PlatformContext.h +1 -1
- package/ios/RNSkia-iOS/RNSkDrawViewImpl.mm +1 -0
- package/ios/RNSkia-iOS/SkiaDrawView.mm +1 -1
- package/lib/commonjs/renderer/components/shaders/Shader.js +1 -2
- package/lib/commonjs/renderer/components/shaders/Shader.js.map +1 -1
- package/lib/module/renderer/components/shaders/Shader.js +1 -2
- package/lib/module/renderer/components/shaders/Shader.js.map +1 -1
- package/lib/typescript/src/renderer/components/shaders/Shader.d.ts +0 -1
- package/lib/typescript/src/skia/types/RuntimeEffect/RuntimeEffect.d.ts +2 -4
- package/libs/android/arm64-v8a/libskia.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/libsvg.a +0 -0
- package/libs/android/x86/libskia.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/libsvg.a +0 -0
- package/libs/ios/libskia.xcframework/Info.plist +5 -5
- package/libs/ios/libskia.xcframework/ios-arm64_arm64e/libskia.a +0 -0
- package/libs/ios/libskia.xcframework/ios-arm64_arm64e_x86_64-simulator/libskia.a +0 -0
- package/libs/ios/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/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 +2 -2
- package/src/renderer/components/shaders/Shader.tsx +1 -3
- package/src/skia/types/RuntimeEffect/RuntimeEffect.ts +1 -8
- package/cpp/skia/include/core/SkCustomMesh.h +0 -202
- package/cpp/skia/include/core/SkStringView.h +0 -185
- package/cpp/skia/include/private/SkPaintParamsKey.h +0 -110
- package/cpp/skia/include/private/SkShaderCodeDictionary.h +0 -63
- package/cpp/skia/include/private/SkTOptional.h +0 -362
@@ -0,0 +1,91 @@
|
|
1
|
+
/*
|
2
|
+
* Copyright 2021 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_TextureInfo_DEFINED
|
9
|
+
#define skgpu_graphite_TextureInfo_DEFINED
|
10
|
+
|
11
|
+
#include "include/gpu/graphite/GraphiteTypes.h"
|
12
|
+
|
13
|
+
#ifdef SK_METAL
|
14
|
+
#include "include/private/gpu/graphite/MtlTypesPriv.h"
|
15
|
+
#endif
|
16
|
+
|
17
|
+
namespace skgpu::graphite {
|
18
|
+
|
19
|
+
// Forward declares so we can friend classes in other namespaces
|
20
|
+
#ifdef SK_METAL
|
21
|
+
namespace graphite {
|
22
|
+
class MtlCaps;
|
23
|
+
class MtlTexture;
|
24
|
+
}
|
25
|
+
#endif
|
26
|
+
|
27
|
+
class TextureInfo {
|
28
|
+
public:
|
29
|
+
TextureInfo() {}
|
30
|
+
#ifdef SK_METAL
|
31
|
+
TextureInfo(const MtlTextureInfo& mtlInfo)
|
32
|
+
: fBackend(BackendApi::kMetal)
|
33
|
+
, fValid(true)
|
34
|
+
, fSampleCount(mtlInfo.fSampleCount)
|
35
|
+
, fLevelCount(mtlInfo.fLevelCount)
|
36
|
+
, fProtected(Protected::kNo)
|
37
|
+
, fMtlSpec(mtlInfo) {}
|
38
|
+
#endif
|
39
|
+
|
40
|
+
~TextureInfo() {}
|
41
|
+
TextureInfo(const TextureInfo&) = default;
|
42
|
+
TextureInfo& operator=(const TextureInfo&);
|
43
|
+
|
44
|
+
bool operator==(const TextureInfo&) const;
|
45
|
+
bool operator!=(const TextureInfo& that) const { return !(*this == that); }
|
46
|
+
|
47
|
+
bool isValid() const { return fValid; }
|
48
|
+
BackendApi backend() const { return fBackend; }
|
49
|
+
|
50
|
+
uint32_t numSamples() const { return fSampleCount; }
|
51
|
+
uint32_t numMipLevels() const { return fLevelCount; }
|
52
|
+
Protected isProtected() const { return fProtected; }
|
53
|
+
|
54
|
+
#ifdef SK_METAL
|
55
|
+
bool getMtlTextureInfo(MtlTextureInfo* info) const {
|
56
|
+
if (!this->isValid() || fBackend != BackendApi::kMetal) {
|
57
|
+
return false;
|
58
|
+
}
|
59
|
+
*info = MtlTextureSpecToTextureInfo(fMtlSpec, fSampleCount, fLevelCount);
|
60
|
+
return true;
|
61
|
+
}
|
62
|
+
#endif
|
63
|
+
|
64
|
+
private:
|
65
|
+
#ifdef SK_METAL
|
66
|
+
friend class MtlCaps;
|
67
|
+
friend class MtlGraphicsPipeline;
|
68
|
+
friend class MtlTexture;
|
69
|
+
const MtlTextureSpec& mtlTextureSpec() const {
|
70
|
+
SkASSERT(fValid && fBackend == BackendApi::kMetal);
|
71
|
+
return fMtlSpec;
|
72
|
+
}
|
73
|
+
#endif
|
74
|
+
|
75
|
+
BackendApi fBackend = BackendApi::kMock;
|
76
|
+
bool fValid = false;
|
77
|
+
|
78
|
+
uint32_t fSampleCount = 1;
|
79
|
+
uint32_t fLevelCount = 0;
|
80
|
+
Protected fProtected = Protected::kNo;
|
81
|
+
|
82
|
+
union {
|
83
|
+
#ifdef SK_METAL
|
84
|
+
MtlTextureSpec fMtlSpec;
|
85
|
+
#endif
|
86
|
+
};
|
87
|
+
};
|
88
|
+
|
89
|
+
} // namespace skgpu::graphite
|
90
|
+
|
91
|
+
#endif //skgpu_graphite_TextureInfo_DEFINED
|
@@ -0,0 +1,24 @@
|
|
1
|
+
/*
|
2
|
+
* Copyright 2021 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_MtlBackendContext_DEFINED
|
9
|
+
#define skgpu_graphite_MtlBackendContext_DEFINED
|
10
|
+
|
11
|
+
#include "include/gpu/graphite/mtl/MtlTypes.h"
|
12
|
+
|
13
|
+
namespace skgpu::graphite {
|
14
|
+
|
15
|
+
// The MtlBackendContext contains all of the base Metal objects needed by the MtlGpu. The assumption
|
16
|
+
// is that the client will set these up and pass them to the MtlGpu constructor.
|
17
|
+
struct SK_API MtlBackendContext {
|
18
|
+
sk_cfp<CFTypeRef> fDevice;
|
19
|
+
sk_cfp<CFTypeRef> fQueue;
|
20
|
+
};
|
21
|
+
|
22
|
+
} // namespace skgpu::graphite
|
23
|
+
|
24
|
+
#endif // skgpu_graphite_MtlBackendContext_DEFINED
|
@@ -0,0 +1,68 @@
|
|
1
|
+
/*
|
2
|
+
* Copyright 2021 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_MtlTypes_DEFINED
|
9
|
+
#define skgpu_graphite_MtlTypes_DEFINED
|
10
|
+
|
11
|
+
#include "include/ports/SkCFObject.h"
|
12
|
+
|
13
|
+
///////////////////////////////////////////////////////////////////////////////
|
14
|
+
|
15
|
+
#ifdef __APPLE__
|
16
|
+
|
17
|
+
#include <CoreFoundation/CoreFoundation.h>
|
18
|
+
#include <TargetConditionals.h>
|
19
|
+
|
20
|
+
#if TARGET_OS_SIMULATOR
|
21
|
+
#define SK_API_AVAILABLE_CA_METAL_LAYER SK_API_AVAILABLE(macos(10.11), ios(13.0))
|
22
|
+
#else // TARGET_OS_SIMULATOR
|
23
|
+
#define SK_API_AVAILABLE_CA_METAL_LAYER SK_API_AVAILABLE(macos(10.11), ios(8.0))
|
24
|
+
#endif // TARGET_OS_SIMULATOR
|
25
|
+
|
26
|
+
#endif // __APPLE__
|
27
|
+
|
28
|
+
|
29
|
+
namespace skgpu::graphite {
|
30
|
+
|
31
|
+
/**
|
32
|
+
* Declares typedefs for Metal types used in Graphite cpp code
|
33
|
+
*/
|
34
|
+
using MtlPixelFormat = unsigned int;
|
35
|
+
using MtlTextureUsage = unsigned int;
|
36
|
+
using MtlStorageMode = unsigned int;
|
37
|
+
using MtlHandle = const void*;
|
38
|
+
|
39
|
+
struct MtlTextureInfo {
|
40
|
+
uint32_t fSampleCount = 1;
|
41
|
+
uint32_t fLevelCount = 0;
|
42
|
+
|
43
|
+
// Since we aren't in an Obj-C header we can't directly use Mtl types here. Each of these can
|
44
|
+
// cast to their mapped Mtl types list below.
|
45
|
+
MtlPixelFormat fFormat = 0; // MTLPixelFormat fFormat = MTLPixelFormatInvalid;
|
46
|
+
MtlTextureUsage fUsage = 0; // MTLTextureUsage fUsage = MTLTextureUsageUnknown;
|
47
|
+
MtlStorageMode fStorageMode = 0; // MTLStorageMode fStorageMode = MTLStorageModeShared;
|
48
|
+
bool fFramebufferOnly = false;
|
49
|
+
|
50
|
+
MtlTextureInfo() = default;
|
51
|
+
MtlTextureInfo(MtlHandle mtlTexture);
|
52
|
+
MtlTextureInfo(uint32_t sampleCount,
|
53
|
+
uint32_t levelCount,
|
54
|
+
MtlPixelFormat format,
|
55
|
+
MtlTextureUsage usage,
|
56
|
+
MtlStorageMode storageMode,
|
57
|
+
bool framebufferOnly)
|
58
|
+
: fSampleCount(sampleCount)
|
59
|
+
, fLevelCount(levelCount)
|
60
|
+
, fFormat(format)
|
61
|
+
, fUsage(usage)
|
62
|
+
, fStorageMode(storageMode)
|
63
|
+
, fFramebufferOnly(framebufferOnly) {}
|
64
|
+
};
|
65
|
+
|
66
|
+
} // namespace skgpu::graphite
|
67
|
+
|
68
|
+
#endif // skgpu_graphite_MtlTypes_DEFINED
|
@@ -9,7 +9,7 @@
|
|
9
9
|
#define GrMockOptions_DEFINED
|
10
10
|
|
11
11
|
#include "include/gpu/GrTypes.h"
|
12
|
-
#include "include/private/GrTypesPriv.h"
|
12
|
+
#include "include/private/gpu/ganesh/GrTypesPriv.h"
|
13
13
|
|
14
14
|
class GrBackendFormat;
|
15
15
|
|
@@ -125,7 +125,6 @@ struct GrMockOptions {
|
|
125
125
|
int fMaxRenderTargetSize = 2048;
|
126
126
|
int fMaxWindowRectangles = 0;
|
127
127
|
int fMaxVertexAttributes = 16;
|
128
|
-
int fMaxTessellationSegments = 0;
|
129
128
|
ConfigOptions fConfigOptions[kGrColorTypeCnt];
|
130
129
|
ConfigOptions fCompressedOptions[SkImage::kCompressionTypeCount];
|
131
130
|
|
@@ -176,9 +176,5 @@ template <typename T> sk_cfp<T> sk_ret_cfp(T obj) {
|
|
176
176
|
return sk_cfp<T>(SkCFSafeRetain(obj));
|
177
177
|
}
|
178
178
|
|
179
|
-
// For Flutter.
|
180
|
-
// TODO: migrate them away from this and remove
|
181
|
-
template <typename T> using sk_cf_obj = sk_cfp<T>;
|
182
|
-
|
183
179
|
#endif // __APPLE__
|
184
180
|
#endif // SkCFObject_DEFINED
|
@@ -53,8 +53,8 @@ struct IDWriteFontCollection;
|
|
53
53
|
struct IDWriteFontFallback;
|
54
54
|
|
55
55
|
SK_API sk_sp<SkFontMgr> SkFontMgr_New_GDI();
|
56
|
-
SK_API sk_sp<SkFontMgr> SkFontMgr_New_DirectWrite(IDWriteFactory* factory =
|
57
|
-
IDWriteFontCollection* collection =
|
56
|
+
SK_API sk_sp<SkFontMgr> SkFontMgr_New_DirectWrite(IDWriteFactory* factory = nullptr,
|
57
|
+
IDWriteFontCollection* collection = nullptr);
|
58
58
|
SK_API sk_sp<SkFontMgr> SkFontMgr_New_DirectWrite(IDWriteFactory* factory,
|
59
59
|
IDWriteFontCollection* collection,
|
60
60
|
IDWriteFontFallback* fallback);
|
@@ -5,25 +5,30 @@
|
|
5
5
|
* found in the LICENSE file.
|
6
6
|
*/
|
7
7
|
|
8
|
-
#ifndef
|
9
|
-
#define
|
8
|
+
#ifndef skgpu_SingleOwner_DEFINED
|
9
|
+
#define skgpu_SingleOwner_DEFINED
|
10
10
|
|
11
11
|
#include "include/core/SkTypes.h"
|
12
12
|
|
13
13
|
#ifdef SK_DEBUG
|
14
14
|
#include "include/private/SkMutex.h"
|
15
15
|
#include "include/private/SkThreadID.h"
|
16
|
+
#endif
|
17
|
+
|
18
|
+
namespace skgpu {
|
16
19
|
|
17
|
-
#
|
18
|
-
|
20
|
+
#ifdef SK_DEBUG
|
21
|
+
|
22
|
+
#define SKGPU_ASSERT_SINGLE_OWNER(obj) \
|
23
|
+
skgpu::SingleOwner::AutoEnforce debug_SingleOwner(obj, __FILE__, __LINE__);
|
19
24
|
|
20
25
|
// This is a debug tool to verify an object is only being used from one thread at a time.
|
21
|
-
class
|
26
|
+
class SingleOwner {
|
22
27
|
public:
|
23
|
-
|
28
|
+
SingleOwner() : fOwner(kIllegalThreadID), fReentranceCount(0) {}
|
24
29
|
|
25
30
|
struct AutoEnforce {
|
26
|
-
AutoEnforce(
|
31
|
+
AutoEnforce(SingleOwner* so, const char* file, int line)
|
27
32
|
: fFile(file), fLine(line), fSO(so) {
|
28
33
|
fSO->enter(file, line);
|
29
34
|
}
|
@@ -31,7 +36,7 @@ public:
|
|
31
36
|
|
32
37
|
const char* fFile;
|
33
38
|
int fLine;
|
34
|
-
|
39
|
+
SingleOwner* fSO;
|
35
40
|
};
|
36
41
|
|
37
42
|
private:
|
@@ -58,8 +63,10 @@ private:
|
|
58
63
|
int fReentranceCount SK_GUARDED_BY(fMutex);
|
59
64
|
};
|
60
65
|
#else
|
61
|
-
#define
|
62
|
-
class
|
66
|
+
#define SKGPU_ASSERT_SINGLE_OWNER(obj)
|
67
|
+
class SingleOwner {}; // Provide a no-op implementation so we can pass pointers to constructors
|
63
68
|
#endif
|
64
69
|
|
70
|
+
} // namespace skgpu
|
71
|
+
|
65
72
|
#endif
|
@@ -14,6 +14,9 @@
|
|
14
14
|
#include "include/private/SkOpts_spi.h"
|
15
15
|
#include "include/private/SkTLogic.h"
|
16
16
|
|
17
|
+
#include <string>
|
18
|
+
#include <string_view>
|
19
|
+
|
17
20
|
class SkChecksum : SkNoncopyable {
|
18
21
|
public:
|
19
22
|
/**
|
@@ -61,6 +64,14 @@ struct SkGoodHash {
|
|
61
64
|
uint32_t operator()(const SkString& k) const {
|
62
65
|
return SkOpts::hash_fn(k.c_str(), k.size(), 0);
|
63
66
|
}
|
67
|
+
|
68
|
+
uint32_t operator()(const std::string& k) const {
|
69
|
+
return SkOpts::hash_fn(k.c_str(), k.size(), 0);
|
70
|
+
}
|
71
|
+
|
72
|
+
uint32_t operator()(std::string_view k) const {
|
73
|
+
return SkOpts::hash_fn(k.data(), k.size(), 0);
|
74
|
+
}
|
64
75
|
};
|
65
76
|
|
66
77
|
#endif
|
@@ -10,6 +10,7 @@
|
|
10
10
|
|
11
11
|
#include <memory>
|
12
12
|
|
13
|
+
#include "include/core/SkColorSpace.h"
|
13
14
|
#include "include/core/SkData.h"
|
14
15
|
#include "include/core/SkImageInfo.h"
|
15
16
|
#include "include/third_party/skcms/skcms.h"
|
@@ -100,8 +101,15 @@ public:
|
|
100
101
|
return Make(width, height, color, alpha, bitsPerComponent, nullptr);
|
101
102
|
}
|
102
103
|
|
103
|
-
static SkEncodedInfo Make(int width, int height, Color color,
|
104
|
-
int bitsPerComponent, std::unique_ptr<ICCProfile> profile) {
|
104
|
+
static SkEncodedInfo Make(int width, int height, Color color,
|
105
|
+
Alpha alpha, int bitsPerComponent, std::unique_ptr<ICCProfile> profile) {
|
106
|
+
return Make(width, height, color, alpha, /*bitsPerComponent*/ bitsPerComponent,
|
107
|
+
std::move(profile), /*colorDepth*/ bitsPerComponent);
|
108
|
+
}
|
109
|
+
|
110
|
+
static SkEncodedInfo Make(int width, int height, Color color,
|
111
|
+
Alpha alpha, int bitsPerComponent, std::unique_ptr<ICCProfile> profile,
|
112
|
+
int colorDepth) {
|
105
113
|
SkASSERT(1 == bitsPerComponent ||
|
106
114
|
2 == bitsPerComponent ||
|
107
115
|
4 == bitsPerComponent ||
|
@@ -150,7 +158,8 @@ public:
|
|
150
158
|
break;
|
151
159
|
}
|
152
160
|
|
153
|
-
return SkEncodedInfo(width, height, color, alpha,
|
161
|
+
return SkEncodedInfo(width, height, color, alpha,
|
162
|
+
bitsPerComponent, colorDepth, std::move(profile));
|
154
163
|
}
|
155
164
|
|
156
165
|
/*
|
@@ -220,21 +229,28 @@ public:
|
|
220
229
|
|
221
230
|
// Explicit copy method, to avoid accidental copying.
|
222
231
|
SkEncodedInfo copy() const {
|
223
|
-
auto copy = SkEncodedInfo::Make(
|
232
|
+
auto copy = SkEncodedInfo::Make(
|
233
|
+
fWidth, fHeight, fColor, fAlpha, fBitsPerComponent, nullptr, fColorDepth);
|
224
234
|
if (fProfile) {
|
225
235
|
copy.fProfile = std::make_unique<ICCProfile>(*fProfile);
|
226
236
|
}
|
227
237
|
return copy;
|
228
238
|
}
|
229
239
|
|
240
|
+
// Return number of bits of R/G/B channel
|
241
|
+
uint8_t getColorDepth() const {
|
242
|
+
return fColorDepth;
|
243
|
+
}
|
244
|
+
|
230
245
|
private:
|
231
246
|
SkEncodedInfo(int width, int height, Color color, Alpha alpha,
|
232
|
-
uint8_t bitsPerComponent, std::unique_ptr<ICCProfile> profile)
|
247
|
+
uint8_t bitsPerComponent, uint8_t colorDepth, std::unique_ptr<ICCProfile> profile)
|
233
248
|
: fWidth(width)
|
234
249
|
, fHeight(height)
|
235
250
|
, fColor(color)
|
236
251
|
, fAlpha(alpha)
|
237
252
|
, fBitsPerComponent(bitsPerComponent)
|
253
|
+
, fColorDepth(colorDepth)
|
238
254
|
, fProfile(std::move(profile))
|
239
255
|
{}
|
240
256
|
|
@@ -243,6 +259,7 @@ private:
|
|
243
259
|
Color fColor;
|
244
260
|
Alpha fAlpha;
|
245
261
|
uint8_t fBitsPerComponent;
|
262
|
+
uint8_t fColorDepth;
|
246
263
|
std::unique_ptr<ICCProfile> fProfile;
|
247
264
|
};
|
248
265
|
|
@@ -17,15 +17,6 @@
|
|
17
17
|
#include <cstring>
|
18
18
|
#include <limits>
|
19
19
|
|
20
|
-
|
21
|
-
#if defined(SK_LEGACY_FLOAT_RSQRT)
|
22
|
-
#if SK_CPU_SSE_LEVEL >= SK_CPU_SSE_LEVEL_SSE1
|
23
|
-
#include <xmmintrin.h>
|
24
|
-
#elif defined(SK_ARM_HAS_NEON)
|
25
|
-
#include <arm_neon.h>
|
26
|
-
#endif
|
27
|
-
#endif
|
28
|
-
|
29
20
|
constexpr float SK_FloatSqrt2 = 1.41421356f;
|
30
21
|
constexpr float SK_FloatPI = 3.14159265f;
|
31
22
|
constexpr double SK_DoublePI = 3.14159265358979323846264338327950288;
|
@@ -171,53 +162,9 @@ static inline float sk_double_to_float(double x) {
|
|
171
162
|
// Returns true if count is 0
|
172
163
|
bool sk_floats_are_unit(const float array[], size_t count);
|
173
164
|
|
174
|
-
#if defined(SK_LEGACY_FLOAT_RSQRT)
|
175
|
-
static inline float sk_float_rsqrt_portable(float x) {
|
176
|
-
// Get initial estimate.
|
177
|
-
int i;
|
178
|
-
memcpy(&i, &x, 4);
|
179
|
-
i = 0x5F1FFFF9 - (i>>1);
|
180
|
-
float estimate;
|
181
|
-
memcpy(&estimate, &i, 4);
|
182
|
-
|
183
|
-
// One step of Newton's method to refine.
|
184
|
-
const float estimate_sq = estimate*estimate;
|
185
|
-
estimate *= 0.703952253f*(2.38924456f-x*estimate_sq);
|
186
|
-
return estimate;
|
187
|
-
}
|
188
|
-
|
189
|
-
// Fast, approximate inverse square root.
|
190
|
-
// Compare to name-brand "1.0f / sk_float_sqrt(x)". Should be around 10x faster on SSE, 2x on NEON.
|
191
|
-
static inline float sk_float_rsqrt(float x) {
|
192
|
-
// We want all this inlined, so we'll inline SIMD and just take the hit when we don't know we've got
|
193
|
-
// it at compile time. This is going to be too fast to productively hide behind a function pointer.
|
194
|
-
//
|
195
|
-
// We do one step of Newton's method to refine the estimates in the NEON and portable paths. No
|
196
|
-
// refinement is faster, but very innacurate. Two steps is more accurate, but slower than 1/sqrt.
|
197
|
-
//
|
198
|
-
// Optimized constants in the portable path courtesy of http://rrrola.wz.cz/inv_sqrt.html
|
199
|
-
#if SK_CPU_SSE_LEVEL >= SK_CPU_SSE_LEVEL_SSE1
|
200
|
-
return _mm_cvtss_f32(_mm_rsqrt_ss(_mm_set_ss(x)));
|
201
|
-
#elif defined(SK_ARM_HAS_NEON)
|
202
|
-
// Get initial estimate.
|
203
|
-
const float32x2_t xx = vdup_n_f32(x); // Clever readers will note we're doing everything 2x.
|
204
|
-
float32x2_t estimate = vrsqrte_f32(xx);
|
205
|
-
|
206
|
-
// One step of Newton's method to refine.
|
207
|
-
const float32x2_t estimate_sq = vmul_f32(estimate, estimate);
|
208
|
-
estimate = vmul_f32(estimate, vrsqrts_f32(xx, estimate_sq));
|
209
|
-
return vget_lane_f32(estimate, 0); // 1 will work fine too; the answer's in both places.
|
210
|
-
#else
|
211
|
-
return sk_float_rsqrt_portable(x);
|
212
|
-
#endif
|
213
|
-
}
|
214
|
-
#else
|
215
|
-
|
216
165
|
static inline float sk_float_rsqrt_portable(float x) { return 1.0f / sk_float_sqrt(x); }
|
217
166
|
static inline float sk_float_rsqrt (float x) { return 1.0f / sk_float_sqrt(x); }
|
218
167
|
|
219
|
-
#endif
|
220
|
-
|
221
168
|
// Returns the log2 of the provided value, were that value to be rounded up to the next power of 2.
|
222
169
|
// Returns 0 if value <= 0:
|
223
170
|
// Never returns a negative number, even if value is NaN.
|
@@ -35,6 +35,7 @@ static inline uint32_t SkColorTypeChannelFlags(SkColorType ct) {
|
|
35
35
|
case kR16G16_float_SkColorType: return kRG_SkColorChannelFlags;
|
36
36
|
case kR16G16B16A16_unorm_SkColorType: return kRGBA_SkColorChannelFlags;
|
37
37
|
case kSRGBA_8888_SkColorType: return kRGBA_SkColorChannelFlags;
|
38
|
+
case kR8_unorm_SkColorType: return kRed_SkColorChannelFlag;
|
38
39
|
}
|
39
40
|
SkUNREACHABLE;
|
40
41
|
}
|
@@ -71,6 +72,7 @@ static int SkColorTypeShiftPerPixel(SkColorType ct) {
|
|
71
72
|
case kR16G16_float_SkColorType: return 2;
|
72
73
|
case kR16G16B16A16_unorm_SkColorType: return 3;
|
73
74
|
case kSRGBA_8888_SkColorType: return 2;
|
75
|
+
case kR8_unorm_SkColorType: return 0;
|
74
76
|
}
|
75
77
|
SkUNREACHABLE;
|
76
78
|
}
|
@@ -110,11 +112,14 @@ static inline bool SkColorTypeIsNormalized(SkColorType ct) {
|
|
110
112
|
case kA16_float_SkColorType: /*subtle... alpha is always [0,1]*/
|
111
113
|
case kR16G16_unorm_SkColorType:
|
112
114
|
case kR16G16B16A16_unorm_SkColorType:
|
113
|
-
case kSRGBA_8888_SkColorType:
|
115
|
+
case kSRGBA_8888_SkColorType:
|
116
|
+
case kR8_unorm_SkColorType:
|
117
|
+
return true;
|
114
118
|
|
115
119
|
case kRGBA_F16_SkColorType:
|
116
120
|
case kRGBA_F32_SkColorType:
|
117
|
-
case kR16G16_float_SkColorType:
|
121
|
+
case kR16G16_float_SkColorType:
|
122
|
+
return false;
|
118
123
|
}
|
119
124
|
SkUNREACHABLE;
|
120
125
|
}
|
@@ -137,6 +142,7 @@ static inline int SkColorTypeMaxBitsPerChannel(SkColorType ct) {
|
|
137
142
|
case kGray_8_SkColorType:
|
138
143
|
case kR8G8_unorm_SkColorType:
|
139
144
|
case kSRGBA_8888_SkColorType:
|
145
|
+
case kR8_unorm_SkColorType:
|
140
146
|
return 8;
|
141
147
|
|
142
148
|
case kRGBA_1010102_SkColorType:
|
@@ -7,6 +7,8 @@
|
|
7
7
|
#ifndef SkMacros_DEFINED
|
8
8
|
#define SkMacros_DEFINED
|
9
9
|
|
10
|
+
#include <type_traits>
|
11
|
+
|
10
12
|
/*
|
11
13
|
* Usage: SK_MACRO_CONCAT(a, b) to construct the symbol ab
|
12
14
|
*
|
@@ -47,38 +49,31 @@
|
|
47
49
|
* bitfield.
|
48
50
|
*/
|
49
51
|
#define SK_MAKE_BITFIELD_OPS(X) \
|
52
|
+
inline X operator ~(X a) { \
|
53
|
+
using U = std::underlying_type_t<X>; \
|
54
|
+
return (X) (~static_cast<U>(a)); \
|
55
|
+
} \
|
50
56
|
inline X operator |(X a, X b) { \
|
51
|
-
|
57
|
+
using U = std::underlying_type_t<X>; \
|
58
|
+
return (X) (static_cast<U>(a) | static_cast<U>(b)); \
|
52
59
|
} \
|
53
60
|
inline X& operator |=(X& a, X b) { \
|
54
61
|
return (a = a | b); \
|
55
62
|
} \
|
56
63
|
inline X operator &(X a, X b) { \
|
57
|
-
|
64
|
+
using U = std::underlying_type_t<X>; \
|
65
|
+
return (X) (static_cast<U>(a) & static_cast<U>(b)); \
|
58
66
|
} \
|
59
67
|
inline X& operator &=(X& a, X b) { \
|
60
68
|
return (a = a & b); \
|
61
|
-
}
|
62
|
-
template <typename T> \
|
63
|
-
inline X operator &(T a, X b) { \
|
64
|
-
return (X) (+a & +b); \
|
65
|
-
} \
|
66
|
-
template <typename T> \
|
67
|
-
inline X operator &(X a, T b) { \
|
68
|
-
return (X) (+a & +b); \
|
69
|
-
} \
|
69
|
+
}
|
70
70
|
|
71
71
|
#define SK_DECL_BITFIELD_OPS_FRIENDS(X) \
|
72
|
+
friend X operator ~(X a); \
|
72
73
|
friend X operator |(X a, X b); \
|
73
74
|
friend X& operator |=(X& a, X b); \
|
74
75
|
\
|
75
76
|
friend X operator &(X a, X b); \
|
76
|
-
friend X& operator &=(X& a, X b);
|
77
|
-
\
|
78
|
-
template <typename T> \
|
79
|
-
friend X operator &(T a, X b); \
|
80
|
-
\
|
81
|
-
template <typename T> \
|
82
|
-
friend X operator &(X a, T b); \
|
77
|
+
friend X& operator &=(X& a, X b);
|
83
78
|
|
84
79
|
#endif // SkMacros_DEFINED
|
@@ -18,6 +18,10 @@ class SK_CAPABILITY("mutex") SkMutex {
|
|
18
18
|
public:
|
19
19
|
constexpr SkMutex() = default;
|
20
20
|
|
21
|
+
~SkMutex() {
|
22
|
+
this->assertNotHeld();
|
23
|
+
}
|
24
|
+
|
21
25
|
void acquire() SK_ACQUIRE() {
|
22
26
|
fSemaphore.wait();
|
23
27
|
SkDEBUGCODE(fOwner = SkGetThreadID();)
|
@@ -33,6 +37,10 @@ public:
|
|
33
37
|
SkASSERT(fOwner == SkGetThreadID());
|
34
38
|
}
|
35
39
|
|
40
|
+
void assertNotHeld() {
|
41
|
+
SkASSERT(fOwner == kIllegalThreadID);
|
42
|
+
}
|
43
|
+
|
36
44
|
private:
|
37
45
|
SkSemaphore fSemaphore{1};
|
38
46
|
SkDEBUGCODE(SkThreadID fOwner{kIllegalThreadID};)
|
@@ -10,7 +10,6 @@
|
|
10
10
|
|
11
11
|
#include "include/core/SkMatrix.h"
|
12
12
|
#include "include/core/SkPoint.h"
|
13
|
-
#include "include/core/SkRRect.h"
|
14
13
|
#include "include/core/SkRect.h"
|
15
14
|
#include "include/core/SkRefCnt.h"
|
16
15
|
#include "include/private/SkIDChangeListener.h"
|
@@ -25,6 +24,7 @@
|
|
25
24
|
|
26
25
|
class SkRBuffer;
|
27
26
|
class SkWBuffer;
|
27
|
+
class SkRRect;
|
28
28
|
|
29
29
|
enum class SkPathConvexity {
|
30
30
|
kConvex,
|
@@ -246,21 +246,7 @@ public:
|
|
246
246
|
return SkToBool(fIsOval);
|
247
247
|
}
|
248
248
|
|
249
|
-
bool isRRect(SkRRect* rrect, bool* isCCW, unsigned* start) const
|
250
|
-
if (fIsRRect) {
|
251
|
-
if (rrect) {
|
252
|
-
*rrect = this->getRRect();
|
253
|
-
}
|
254
|
-
if (isCCW) {
|
255
|
-
*isCCW = SkToBool(fRRectOrOvalIsCCW);
|
256
|
-
}
|
257
|
-
if (start) {
|
258
|
-
*start = fRRectOrOvalStartIdx;
|
259
|
-
}
|
260
|
-
}
|
261
|
-
return SkToBool(fIsRRect);
|
262
|
-
}
|
263
|
-
|
249
|
+
bool isRRect(SkRRect* rrect, bool* isCCW, unsigned* start) const;
|
264
250
|
|
265
251
|
bool hasComputedBounds() const {
|
266
252
|
return !fBoundsIsDirty;
|
@@ -22,7 +22,15 @@ class Expression;
|
|
22
22
|
class Statement;
|
23
23
|
|
24
24
|
using ComponentArray = SkSTArray<4, int8_t>; // for Swizzles
|
25
|
-
|
25
|
+
|
26
|
+
class ExpressionArray : public SkSTArray<2, std::unique_ptr<Expression>> {
|
27
|
+
public:
|
28
|
+
using SkSTArray::SkSTArray;
|
29
|
+
|
30
|
+
/** Returns a new ExpressionArray containing a clone of every element. */
|
31
|
+
ExpressionArray clone() const;
|
32
|
+
};
|
33
|
+
|
26
34
|
using StatementArray = SkSTArray<2, std::unique_ptr<Statement>>;
|
27
35
|
|
28
36
|
// Functions larger than this (measured in IR nodes) will not be inlined. This growth factor
|
@@ -10,6 +10,7 @@
|
|
10
10
|
|
11
11
|
#include "include/private/SkSLString.h"
|
12
12
|
#include "include/private/SkTArray.h"
|
13
|
+
#include "include/sksl/SkSLPosition.h"
|
13
14
|
#include "src/sksl/SkSLLexer.h"
|
14
15
|
#include "src/sksl/SkSLModifiersPool.h"
|
15
16
|
#include "src/sksl/SkSLPool.h"
|
@@ -41,18 +42,18 @@ class IRNode : public Poolable {
|
|
41
42
|
public:
|
42
43
|
virtual ~IRNode() {}
|
43
44
|
|
44
|
-
virtual
|
45
|
+
virtual std::string description() const = 0;
|
45
46
|
|
46
47
|
// No copy construction or assignment
|
47
48
|
IRNode(const IRNode&) = delete;
|
48
49
|
IRNode& operator=(const IRNode&) = delete;
|
49
50
|
|
50
|
-
//
|
51
|
-
|
51
|
+
// position of this element within the program being compiled, for error reporting purposes
|
52
|
+
Position fPosition;
|
52
53
|
|
53
54
|
protected:
|
54
|
-
IRNode(
|
55
|
-
:
|
55
|
+
IRNode(Position position, int kind)
|
56
|
+
: fPosition(position)
|
56
57
|
, fKind(kind) {}
|
57
58
|
|
58
59
|
int fKind;
|