@shopify/react-native-skia 0.1.129 → 0.1.130
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/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
|
@@ -1,185 +0,0 @@
|
|
|
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 SkStringView_DEFINED
|
|
9
|
-
#define SkStringView_DEFINED
|
|
10
|
-
|
|
11
|
-
#include <algorithm>
|
|
12
|
-
#include <cstring>
|
|
13
|
-
#include <string>
|
|
14
|
-
|
|
15
|
-
namespace skstd {
|
|
16
|
-
|
|
17
|
-
class string_view {
|
|
18
|
-
public:
|
|
19
|
-
using value_type = char;
|
|
20
|
-
using traits_type = std::char_traits<value_type>;
|
|
21
|
-
using const_pointer = const value_type*;
|
|
22
|
-
using const_reference = const value_type&;
|
|
23
|
-
using iterator = const_pointer;
|
|
24
|
-
using const_iterator = iterator;
|
|
25
|
-
using size_type = size_t;
|
|
26
|
-
static constexpr size_type npos = size_type(-1);
|
|
27
|
-
|
|
28
|
-
constexpr string_view()
|
|
29
|
-
: fData(nullptr)
|
|
30
|
-
, fLength(0) {}
|
|
31
|
-
|
|
32
|
-
constexpr string_view(const string_view&) = default;
|
|
33
|
-
|
|
34
|
-
constexpr string_view(const_pointer data, size_type length)
|
|
35
|
-
: fData(data)
|
|
36
|
-
, fLength(length) {}
|
|
37
|
-
|
|
38
|
-
string_view(const_pointer data)
|
|
39
|
-
: string_view(data, strlen(data)) {}
|
|
40
|
-
|
|
41
|
-
string_view(const std::string& str)
|
|
42
|
-
: string_view(str.data(), str.length()) {}
|
|
43
|
-
|
|
44
|
-
constexpr string_view& operator=(const string_view&) = default;
|
|
45
|
-
|
|
46
|
-
constexpr iterator begin() const {
|
|
47
|
-
return fData;
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
constexpr iterator end() const {
|
|
51
|
-
return fData + fLength;
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
constexpr const_reference operator[](size_type idx) const {
|
|
55
|
-
return fData[idx];
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
constexpr const_reference front() const {
|
|
59
|
-
return fData[0];
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
constexpr const_reference back() const {
|
|
63
|
-
return fData[fLength - 1];
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
constexpr const_pointer data() const {
|
|
67
|
-
return fData;
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
constexpr size_type size() const {
|
|
71
|
-
return fLength;
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
constexpr size_type length() const {
|
|
75
|
-
return fLength;
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
constexpr bool empty() const {
|
|
79
|
-
return fLength == 0;
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
-
constexpr bool starts_with(string_view s) const {
|
|
83
|
-
if (s.length() > fLength) {
|
|
84
|
-
return false;
|
|
85
|
-
}
|
|
86
|
-
return s.length() == 0 || !memcmp(fData, s.fData, s.length());
|
|
87
|
-
}
|
|
88
|
-
|
|
89
|
-
constexpr bool starts_with(value_type c) const {
|
|
90
|
-
return !this->empty() && this->front() == c;
|
|
91
|
-
}
|
|
92
|
-
|
|
93
|
-
constexpr bool ends_with(string_view s) const {
|
|
94
|
-
if (s.length() > fLength) {
|
|
95
|
-
return false;
|
|
96
|
-
}
|
|
97
|
-
return s.length() == 0 || !memcmp(this->end() - s.length(), s.fData, s.length());
|
|
98
|
-
}
|
|
99
|
-
|
|
100
|
-
constexpr bool ends_with(value_type c) const {
|
|
101
|
-
return !this->empty() && this->back() == c;
|
|
102
|
-
}
|
|
103
|
-
|
|
104
|
-
size_type find(string_view needle, size_type pos = 0) const {
|
|
105
|
-
if (needle.length() == 0) {
|
|
106
|
-
return 0;
|
|
107
|
-
}
|
|
108
|
-
if (this->length() < needle.length()) {
|
|
109
|
-
return npos;
|
|
110
|
-
}
|
|
111
|
-
const char* match = nullptr;
|
|
112
|
-
const char* start = this->data() + pos;
|
|
113
|
-
const char* end = start + this->length() - needle.length() + 1;
|
|
114
|
-
while ((match = (const char*)(memchr(start, needle[0], (size_t)(end - start))))) {
|
|
115
|
-
if (!memcmp(match, needle.data(), needle.length())) {
|
|
116
|
-
return (size_type)(match - this->data());
|
|
117
|
-
} else {
|
|
118
|
-
start = match + 1;
|
|
119
|
-
}
|
|
120
|
-
}
|
|
121
|
-
return npos;
|
|
122
|
-
}
|
|
123
|
-
|
|
124
|
-
bool contains(string_view needle) const {
|
|
125
|
-
return this->find(needle) != npos;
|
|
126
|
-
}
|
|
127
|
-
|
|
128
|
-
constexpr string_view substr(size_type pos = 0, size_type count = npos) const {
|
|
129
|
-
if (pos > fLength) {
|
|
130
|
-
return {};
|
|
131
|
-
}
|
|
132
|
-
return string_view{fData + pos, std::min(count, fLength - pos)};
|
|
133
|
-
}
|
|
134
|
-
|
|
135
|
-
constexpr void swap(string_view& other) {
|
|
136
|
-
const_pointer tempData = fData;
|
|
137
|
-
fData = other.fData;
|
|
138
|
-
other.fData = tempData;
|
|
139
|
-
|
|
140
|
-
size_type tempLength = fLength;
|
|
141
|
-
fLength = other.fLength;
|
|
142
|
-
other.fLength = tempLength;
|
|
143
|
-
}
|
|
144
|
-
|
|
145
|
-
constexpr void remove_prefix(size_type n) {
|
|
146
|
-
fData += n;
|
|
147
|
-
fLength -= n;
|
|
148
|
-
}
|
|
149
|
-
|
|
150
|
-
constexpr void remove_suffix(size_type n) {
|
|
151
|
-
fLength -= n;
|
|
152
|
-
}
|
|
153
|
-
|
|
154
|
-
private:
|
|
155
|
-
const_pointer fData;
|
|
156
|
-
size_type fLength;
|
|
157
|
-
};
|
|
158
|
-
|
|
159
|
-
bool operator==(string_view left, string_view right);
|
|
160
|
-
|
|
161
|
-
bool operator!=(string_view left, string_view right);
|
|
162
|
-
|
|
163
|
-
bool operator<(string_view left, string_view right);
|
|
164
|
-
|
|
165
|
-
bool operator<=(string_view left, string_view right);
|
|
166
|
-
|
|
167
|
-
bool operator>(string_view left, string_view right);
|
|
168
|
-
|
|
169
|
-
bool operator>=(string_view left, string_view right);
|
|
170
|
-
|
|
171
|
-
} // namespace skstd
|
|
172
|
-
|
|
173
|
-
namespace std {
|
|
174
|
-
template<> struct hash<skstd::string_view> {
|
|
175
|
-
size_t operator()(const skstd::string_view& s) const {
|
|
176
|
-
size_t result = 0;
|
|
177
|
-
for (auto iter = s.begin(); iter != s.end(); ++iter) {
|
|
178
|
-
result = result * 101 + (size_t) *iter;
|
|
179
|
-
}
|
|
180
|
-
return result;
|
|
181
|
-
}
|
|
182
|
-
};
|
|
183
|
-
} // namespace std
|
|
184
|
-
|
|
185
|
-
#endif
|
|
@@ -1,110 +0,0 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* Copyright 2022 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 SkPaintParamsKey_DEFINED
|
|
9
|
-
#define SkPaintParamsKey_DEFINED
|
|
10
|
-
|
|
11
|
-
#include <array>
|
|
12
|
-
#include <limits>
|
|
13
|
-
#include "include/core/SkTypes.h"
|
|
14
|
-
|
|
15
|
-
enum class SkBackend : uint8_t {
|
|
16
|
-
kGanesh,
|
|
17
|
-
kGraphite,
|
|
18
|
-
kSkVM
|
|
19
|
-
};
|
|
20
|
-
|
|
21
|
-
// TODO: this needs to be expanded into a more flexible dictionary (esp. for user-supplied SkSL)
|
|
22
|
-
// TODO: should this enum actually be in ShaderCodeDictionary.h?
|
|
23
|
-
enum class CodeSnippetID : uint8_t {
|
|
24
|
-
// TODO: It seems like this requires some refinement. Fundamentally this doesn't seem like a
|
|
25
|
-
// draw that originated from a PaintParams.
|
|
26
|
-
kDepthStencilOnlyDraw,
|
|
27
|
-
|
|
28
|
-
// SkShader code snippets
|
|
29
|
-
kSolidColorShader,
|
|
30
|
-
kLinearGradientShader,
|
|
31
|
-
kRadialGradientShader,
|
|
32
|
-
kSweepGradientShader,
|
|
33
|
-
kConicalGradientShader,
|
|
34
|
-
|
|
35
|
-
// BlendMode code snippets
|
|
36
|
-
kSimpleBlendMode,
|
|
37
|
-
|
|
38
|
-
kLast = kSimpleBlendMode
|
|
39
|
-
};
|
|
40
|
-
static constexpr int kCodeSnippetIDCount = static_cast<int>(CodeSnippetID::kLast) + 1;
|
|
41
|
-
|
|
42
|
-
// This class is a compact representation of the shader needed to implement a given
|
|
43
|
-
// PaintParams. Its structure is a series of blocks where each block has a
|
|
44
|
-
// header that consists of 2-bytes - a 1-byte code-snippet ID and a 1-byte number-of-bytes-in-the-
|
|
45
|
-
// block field. The rest of the data in the block is dependent on the individual code snippet.
|
|
46
|
-
class SkPaintParamsKey {
|
|
47
|
-
public:
|
|
48
|
-
static const int kBlockHeaderSizeInBytes = 2;
|
|
49
|
-
static const int kBlockSizeOffsetInBytes = 1; // offset to the block size w/in the header
|
|
50
|
-
|
|
51
|
-
// Block headers have the following structure:
|
|
52
|
-
// 1st byte: codeSnippetID
|
|
53
|
-
// 2nd byte: total blockSize in bytes
|
|
54
|
-
// Returns the header's offset in the key - to be passed back into endBlock
|
|
55
|
-
int beginBlock(CodeSnippetID codeSnippetID) {
|
|
56
|
-
SkASSERT(fNumBytes < kMaxKeySize);
|
|
57
|
-
|
|
58
|
-
this->addByte((uint8_t) codeSnippetID);
|
|
59
|
-
this->addByte(0); // this needs to be patched up with a call to endBlock
|
|
60
|
-
return fNumBytes - kBlockHeaderSizeInBytes;
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
// Update the size byte of a block header
|
|
64
|
-
void endBlock(int headerOffset, CodeSnippetID codeSnippetID) {
|
|
65
|
-
SkASSERT(fData[headerOffset] == (uint32_t) codeSnippetID);
|
|
66
|
-
int blockSize = fNumBytes - headerOffset;
|
|
67
|
-
SkASSERT(blockSize <= kMaxBlockSize);
|
|
68
|
-
fData[headerOffset+1] = blockSize;
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
std::pair<CodeSnippetID, uint8_t> readCodeSnippetID(int headerOffset) const {
|
|
72
|
-
SkASSERT(headerOffset < kMaxKeySize - kBlockHeaderSizeInBytes);
|
|
73
|
-
|
|
74
|
-
CodeSnippetID id = static_cast<CodeSnippetID>(fData[headerOffset]);
|
|
75
|
-
uint8_t blockSize = fData[headerOffset+1];
|
|
76
|
-
SkASSERT(headerOffset + blockSize <= this->sizeInBytes());
|
|
77
|
-
|
|
78
|
-
return { id, blockSize };
|
|
79
|
-
}
|
|
80
|
-
|
|
81
|
-
void addByte(uint8_t byte) {
|
|
82
|
-
SkASSERT(fNumBytes < kMaxKeySize);
|
|
83
|
-
|
|
84
|
-
fData[fNumBytes++] = byte;
|
|
85
|
-
}
|
|
86
|
-
|
|
87
|
-
#ifdef SK_DEBUG
|
|
88
|
-
static int DumpBlock(const SkPaintParamsKey&, int headerOffset);
|
|
89
|
-
void dump() const;
|
|
90
|
-
#endif
|
|
91
|
-
|
|
92
|
-
uint8_t byte(int offset) const { SkASSERT(offset < fNumBytes); return fData[offset]; }
|
|
93
|
-
const void* data() const { return fData.data(); }
|
|
94
|
-
int sizeInBytes() const { return fNumBytes; }
|
|
95
|
-
|
|
96
|
-
bool operator==(const SkPaintParamsKey& that) const;
|
|
97
|
-
bool operator!=(const SkPaintParamsKey& that) const { return !(*this == that); }
|
|
98
|
-
|
|
99
|
-
private:
|
|
100
|
-
// TODO: need to make it so the key can can dynamically grow
|
|
101
|
-
static const int kMaxKeySize = 32;
|
|
102
|
-
static const int kMaxBlockSize = std::numeric_limits<uint8_t>::max();
|
|
103
|
-
|
|
104
|
-
// TODO: It is probably overkill but we could encode the SkBackend in the first byte of
|
|
105
|
-
// the key.
|
|
106
|
-
int fNumBytes = 0;
|
|
107
|
-
std::array<uint8_t, kMaxKeySize> fData;
|
|
108
|
-
};
|
|
109
|
-
|
|
110
|
-
#endif // SkPaintParamsKey_DEFINED
|
|
@@ -1,63 +0,0 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* Copyright 2022 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 SkShaderCodeDictionary_DEFINED
|
|
9
|
-
#define SkShaderCodeDictionary_DEFINED
|
|
10
|
-
|
|
11
|
-
#include <unordered_map>
|
|
12
|
-
#include "include/private/SkPaintParamsKey.h"
|
|
13
|
-
#include "include/private/SkSpinlock.h"
|
|
14
|
-
#include "include/private/SkUniquePaintParamsID.h"
|
|
15
|
-
#include "src/core/SkArenaAlloc.h"
|
|
16
|
-
|
|
17
|
-
class SkShaderCodeDictionary {
|
|
18
|
-
public:
|
|
19
|
-
SkShaderCodeDictionary();
|
|
20
|
-
|
|
21
|
-
struct Entry {
|
|
22
|
-
public:
|
|
23
|
-
SkUniquePaintParamsID uniqueID() const {
|
|
24
|
-
SkASSERT(fUniqueID.isValid());
|
|
25
|
-
return fUniqueID;
|
|
26
|
-
}
|
|
27
|
-
const SkPaintParamsKey& paintParamsKey() const { return fPaintParamsKey; }
|
|
28
|
-
|
|
29
|
-
private:
|
|
30
|
-
friend class SkShaderCodeDictionary;
|
|
31
|
-
|
|
32
|
-
Entry(const SkPaintParamsKey& paintParamsKey) : fPaintParamsKey(paintParamsKey) {}
|
|
33
|
-
|
|
34
|
-
void setUniqueID(uint32_t newID) {
|
|
35
|
-
SkASSERT(!fUniqueID.isValid());
|
|
36
|
-
fUniqueID = SkUniquePaintParamsID(newID);
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
SkUniquePaintParamsID fUniqueID; // fixed-size (uint32_t) unique ID assigned to a key
|
|
40
|
-
SkPaintParamsKey fPaintParamsKey; // variable-length paint key descriptor
|
|
41
|
-
};
|
|
42
|
-
|
|
43
|
-
const Entry* findOrCreate(const SkPaintParamsKey&) SK_EXCLUDES(fSpinLock);
|
|
44
|
-
|
|
45
|
-
const Entry* lookup(SkUniquePaintParamsID) const SK_EXCLUDES(fSpinLock);
|
|
46
|
-
|
|
47
|
-
private:
|
|
48
|
-
Entry* makeEntry(const SkPaintParamsKey&);
|
|
49
|
-
|
|
50
|
-
struct Hash {
|
|
51
|
-
size_t operator()(const SkPaintParamsKey&) const;
|
|
52
|
-
};
|
|
53
|
-
|
|
54
|
-
// TODO: can we do something better given this should have write-seldom/read-often behavior?
|
|
55
|
-
mutable SkSpinlock fSpinLock;
|
|
56
|
-
|
|
57
|
-
std::unordered_map<SkPaintParamsKey, Entry*, Hash> fHash SK_GUARDED_BY(fSpinLock);
|
|
58
|
-
std::vector<Entry*> fEntryVector SK_GUARDED_BY(fSpinLock);
|
|
59
|
-
|
|
60
|
-
SkArenaAlloc fArena{256};
|
|
61
|
-
};
|
|
62
|
-
|
|
63
|
-
#endif // SkShaderCodeDictionary_DEFINED
|