1*c8dee2aaSAndroid Build Coastguard Worker /*
2*c8dee2aaSAndroid Build Coastguard Worker * Copyright 2023 Google LLC
3*c8dee2aaSAndroid Build Coastguard Worker *
4*c8dee2aaSAndroid Build Coastguard Worker * Use of this source code is governed by a BSD-style license that can be
5*c8dee2aaSAndroid Build Coastguard Worker * found in the LICENSE file.
6*c8dee2aaSAndroid Build Coastguard Worker */
7*c8dee2aaSAndroid Build Coastguard Worker
8*c8dee2aaSAndroid Build Coastguard Worker #include "src/gpu/graphite/compute/VelloComputeSteps.h"
9*c8dee2aaSAndroid Build Coastguard Worker
10*c8dee2aaSAndroid Build Coastguard Worker namespace skgpu::graphite {
11*c8dee2aaSAndroid Build Coastguard Worker
VelloStageName(vello_cpp::ShaderStage stage)12*c8dee2aaSAndroid Build Coastguard Worker std::string_view VelloStageName(vello_cpp::ShaderStage stage) {
13*c8dee2aaSAndroid Build Coastguard Worker auto name = vello_cpp::shader(stage).name();
14*c8dee2aaSAndroid Build Coastguard Worker return {name.data(), name.length()};
15*c8dee2aaSAndroid Build Coastguard Worker }
16*c8dee2aaSAndroid Build Coastguard Worker
VelloStageLocalSize(vello_cpp::ShaderStage stage)17*c8dee2aaSAndroid Build Coastguard Worker WorkgroupSize VelloStageLocalSize(vello_cpp::ShaderStage stage) {
18*c8dee2aaSAndroid Build Coastguard Worker auto wgSize = vello_cpp::shader(stage).workgroup_size();
19*c8dee2aaSAndroid Build Coastguard Worker return WorkgroupSize(wgSize.x, wgSize.y, wgSize.z);
20*c8dee2aaSAndroid Build Coastguard Worker }
21*c8dee2aaSAndroid Build Coastguard Worker
VelloWorkgroupBuffers(vello_cpp::ShaderStage stage)22*c8dee2aaSAndroid Build Coastguard Worker skia_private::TArray<ComputeStep::WorkgroupBufferDesc> VelloWorkgroupBuffers(
23*c8dee2aaSAndroid Build Coastguard Worker vello_cpp::ShaderStage stage) {
24*c8dee2aaSAndroid Build Coastguard Worker auto wgBuffers = vello_cpp::shader(stage).workgroup_buffers();
25*c8dee2aaSAndroid Build Coastguard Worker skia_private::TArray<ComputeStep::WorkgroupBufferDesc> result;
26*c8dee2aaSAndroid Build Coastguard Worker if (!wgBuffers.empty()) {
27*c8dee2aaSAndroid Build Coastguard Worker result.reserve(wgBuffers.size());
28*c8dee2aaSAndroid Build Coastguard Worker for (const auto& desc : wgBuffers) {
29*c8dee2aaSAndroid Build Coastguard Worker result.push_back({desc.size_in_bytes, desc.index});
30*c8dee2aaSAndroid Build Coastguard Worker }
31*c8dee2aaSAndroid Build Coastguard Worker }
32*c8dee2aaSAndroid Build Coastguard Worker return result;
33*c8dee2aaSAndroid Build Coastguard Worker }
34*c8dee2aaSAndroid Build Coastguard Worker
VelloNativeShaderSource(vello_cpp::ShaderStage stage,ComputeStep::NativeShaderFormat format)35*c8dee2aaSAndroid Build Coastguard Worker ComputeStep::NativeShaderSource VelloNativeShaderSource(vello_cpp::ShaderStage stage,
36*c8dee2aaSAndroid Build Coastguard Worker ComputeStep::NativeShaderFormat format) {
37*c8dee2aaSAndroid Build Coastguard Worker using NativeFormat = ComputeStep::NativeShaderFormat;
38*c8dee2aaSAndroid Build Coastguard Worker
39*c8dee2aaSAndroid Build Coastguard Worker const auto& shader = vello_cpp::shader(stage);
40*c8dee2aaSAndroid Build Coastguard Worker ::rust::Str source;
41*c8dee2aaSAndroid Build Coastguard Worker std::string entryPoint;
42*c8dee2aaSAndroid Build Coastguard Worker switch (format) {
43*c8dee2aaSAndroid Build Coastguard Worker #if VELLO_WGSL_SHADERS
44*c8dee2aaSAndroid Build Coastguard Worker case NativeFormat::kWGSL:
45*c8dee2aaSAndroid Build Coastguard Worker source = shader.wgsl();
46*c8dee2aaSAndroid Build Coastguard Worker entryPoint = "main";
47*c8dee2aaSAndroid Build Coastguard Worker break;
48*c8dee2aaSAndroid Build Coastguard Worker #endif
49*c8dee2aaSAndroid Build Coastguard Worker #if VELLO_MSL_SHADERS
50*c8dee2aaSAndroid Build Coastguard Worker case NativeFormat::kMSL:
51*c8dee2aaSAndroid Build Coastguard Worker source = shader.msl();
52*c8dee2aaSAndroid Build Coastguard Worker entryPoint = "main_";
53*c8dee2aaSAndroid Build Coastguard Worker break;
54*c8dee2aaSAndroid Build Coastguard Worker #endif
55*c8dee2aaSAndroid Build Coastguard Worker default:
56*c8dee2aaSAndroid Build Coastguard Worker return {std::string_view(), ""};
57*c8dee2aaSAndroid Build Coastguard Worker }
58*c8dee2aaSAndroid Build Coastguard Worker
59*c8dee2aaSAndroid Build Coastguard Worker return {{source.data(), source.length()}, std::move(entryPoint)};
60*c8dee2aaSAndroid Build Coastguard Worker }
61*c8dee2aaSAndroid Build Coastguard Worker
62*c8dee2aaSAndroid Build Coastguard Worker #define BUFFER_BINDING(slot, type, policy) \
63*c8dee2aaSAndroid Build Coastguard Worker { \
64*c8dee2aaSAndroid Build Coastguard Worker /*type=*/ComputeStep::ResourceType::k##type##Buffer, \
65*c8dee2aaSAndroid Build Coastguard Worker /*flow=*/ComputeStep::DataFlow::kShared, \
66*c8dee2aaSAndroid Build Coastguard Worker /*policy=*/ComputeStep::ResourcePolicy::k##policy, \
67*c8dee2aaSAndroid Build Coastguard Worker /*slot=*/kVelloSlot_##slot, \
68*c8dee2aaSAndroid Build Coastguard Worker }
69*c8dee2aaSAndroid Build Coastguard Worker
70*c8dee2aaSAndroid Build Coastguard Worker #define TEXTURE_BINDING(slot, type, policy) \
71*c8dee2aaSAndroid Build Coastguard Worker { \
72*c8dee2aaSAndroid Build Coastguard Worker /*type=*/ComputeStep::ResourceType::k##type##Texture, \
73*c8dee2aaSAndroid Build Coastguard Worker /*flow=*/ComputeStep::DataFlow::kShared, \
74*c8dee2aaSAndroid Build Coastguard Worker /*policy=*/ComputeStep::ResourcePolicy::k##policy, \
75*c8dee2aaSAndroid Build Coastguard Worker /*slot=*/kVelloSlot_##slot, \
76*c8dee2aaSAndroid Build Coastguard Worker }
77*c8dee2aaSAndroid Build Coastguard Worker
78*c8dee2aaSAndroid Build Coastguard Worker // PathtagReduce
VelloPathtagReduceStep()79*c8dee2aaSAndroid Build Coastguard Worker VelloPathtagReduceStep::VelloPathtagReduceStep()
80*c8dee2aaSAndroid Build Coastguard Worker : VelloStep({
81*c8dee2aaSAndroid Build Coastguard Worker BUFFER_BINDING(ConfigUniform, Uniform, Mapped),
82*c8dee2aaSAndroid Build Coastguard Worker BUFFER_BINDING(Scene, ReadOnlyStorage, Mapped),
83*c8dee2aaSAndroid Build Coastguard Worker BUFFER_BINDING(PathtagReduceOutput, Storage, None),
84*c8dee2aaSAndroid Build Coastguard Worker }) {}
85*c8dee2aaSAndroid Build Coastguard Worker
86*c8dee2aaSAndroid Build Coastguard Worker // PathtagScanSmall
VelloPathtagScanSmallStep()87*c8dee2aaSAndroid Build Coastguard Worker VelloPathtagScanSmallStep::VelloPathtagScanSmallStep()
88*c8dee2aaSAndroid Build Coastguard Worker : VelloStep({
89*c8dee2aaSAndroid Build Coastguard Worker BUFFER_BINDING(ConfigUniform, Uniform, None),
90*c8dee2aaSAndroid Build Coastguard Worker BUFFER_BINDING(Scene, ReadOnlyStorage, None),
91*c8dee2aaSAndroid Build Coastguard Worker BUFFER_BINDING(PathtagReduceOutput, ReadOnlyStorage, None),
92*c8dee2aaSAndroid Build Coastguard Worker BUFFER_BINDING(TagMonoid, Storage, None),
93*c8dee2aaSAndroid Build Coastguard Worker }) {}
94*c8dee2aaSAndroid Build Coastguard Worker
95*c8dee2aaSAndroid Build Coastguard Worker // PathtagReduce2
VelloPathtagReduce2Step()96*c8dee2aaSAndroid Build Coastguard Worker VelloPathtagReduce2Step::VelloPathtagReduce2Step()
97*c8dee2aaSAndroid Build Coastguard Worker : VelloStep({
98*c8dee2aaSAndroid Build Coastguard Worker BUFFER_BINDING(LargePathtagReduceFirstPassOutput, ReadOnlyStorage, None),
99*c8dee2aaSAndroid Build Coastguard Worker BUFFER_BINDING(LargePathtagReduceSecondPassOutput, Storage, None),
100*c8dee2aaSAndroid Build Coastguard Worker }) {}
101*c8dee2aaSAndroid Build Coastguard Worker
102*c8dee2aaSAndroid Build Coastguard Worker // PathtagScan1
VelloPathtagScan1Step()103*c8dee2aaSAndroid Build Coastguard Worker VelloPathtagScan1Step::VelloPathtagScan1Step()
104*c8dee2aaSAndroid Build Coastguard Worker : VelloStep({
105*c8dee2aaSAndroid Build Coastguard Worker BUFFER_BINDING(LargePathtagReduceFirstPassOutput, ReadOnlyStorage, None),
106*c8dee2aaSAndroid Build Coastguard Worker BUFFER_BINDING(LargePathtagReduceSecondPassOutput, ReadOnlyStorage, None),
107*c8dee2aaSAndroid Build Coastguard Worker BUFFER_BINDING(LargePathtagScanFirstPassOutput, Storage, None),
108*c8dee2aaSAndroid Build Coastguard Worker }) {}
109*c8dee2aaSAndroid Build Coastguard Worker
110*c8dee2aaSAndroid Build Coastguard Worker // PathtagScanLarge
VelloPathtagScanLargeStep()111*c8dee2aaSAndroid Build Coastguard Worker VelloPathtagScanLargeStep::VelloPathtagScanLargeStep()
112*c8dee2aaSAndroid Build Coastguard Worker : VelloStep({
113*c8dee2aaSAndroid Build Coastguard Worker BUFFER_BINDING(ConfigUniform, Uniform, None),
114*c8dee2aaSAndroid Build Coastguard Worker BUFFER_BINDING(Scene, ReadOnlyStorage, None),
115*c8dee2aaSAndroid Build Coastguard Worker BUFFER_BINDING(LargePathtagScanFirstPassOutput, ReadOnlyStorage, None),
116*c8dee2aaSAndroid Build Coastguard Worker BUFFER_BINDING(TagMonoid, Storage, None),
117*c8dee2aaSAndroid Build Coastguard Worker }) {}
118*c8dee2aaSAndroid Build Coastguard Worker
119*c8dee2aaSAndroid Build Coastguard Worker // BboxClear
VelloBboxClearStep()120*c8dee2aaSAndroid Build Coastguard Worker VelloBboxClearStep::VelloBboxClearStep()
121*c8dee2aaSAndroid Build Coastguard Worker : VelloStep({
122*c8dee2aaSAndroid Build Coastguard Worker BUFFER_BINDING(ConfigUniform, Uniform, None),
123*c8dee2aaSAndroid Build Coastguard Worker BUFFER_BINDING(PathBBoxes, Storage, None),
124*c8dee2aaSAndroid Build Coastguard Worker }) {}
125*c8dee2aaSAndroid Build Coastguard Worker
126*c8dee2aaSAndroid Build Coastguard Worker // Flatten
VelloFlattenStep()127*c8dee2aaSAndroid Build Coastguard Worker VelloFlattenStep::VelloFlattenStep()
128*c8dee2aaSAndroid Build Coastguard Worker : VelloStep({
129*c8dee2aaSAndroid Build Coastguard Worker BUFFER_BINDING(ConfigUniform, Uniform, None),
130*c8dee2aaSAndroid Build Coastguard Worker BUFFER_BINDING(Scene, ReadOnlyStorage, None),
131*c8dee2aaSAndroid Build Coastguard Worker BUFFER_BINDING(TagMonoid, ReadOnlyStorage, None),
132*c8dee2aaSAndroid Build Coastguard Worker BUFFER_BINDING(PathBBoxes, Storage, None),
133*c8dee2aaSAndroid Build Coastguard Worker BUFFER_BINDING(BumpAlloc, Storage, Clear),
134*c8dee2aaSAndroid Build Coastguard Worker BUFFER_BINDING(Lines, Storage, None),
135*c8dee2aaSAndroid Build Coastguard Worker }) {}
136*c8dee2aaSAndroid Build Coastguard Worker
137*c8dee2aaSAndroid Build Coastguard Worker // DrawReduce
VelloDrawReduceStep()138*c8dee2aaSAndroid Build Coastguard Worker VelloDrawReduceStep::VelloDrawReduceStep()
139*c8dee2aaSAndroid Build Coastguard Worker : VelloStep({
140*c8dee2aaSAndroid Build Coastguard Worker BUFFER_BINDING(ConfigUniform, Uniform, None),
141*c8dee2aaSAndroid Build Coastguard Worker BUFFER_BINDING(Scene, ReadOnlyStorage, None),
142*c8dee2aaSAndroid Build Coastguard Worker BUFFER_BINDING(DrawReduceOutput, Storage, None),
143*c8dee2aaSAndroid Build Coastguard Worker }) {}
144*c8dee2aaSAndroid Build Coastguard Worker
145*c8dee2aaSAndroid Build Coastguard Worker // DrawLeaf
VelloDrawLeafStep()146*c8dee2aaSAndroid Build Coastguard Worker VelloDrawLeafStep::VelloDrawLeafStep()
147*c8dee2aaSAndroid Build Coastguard Worker : VelloStep({
148*c8dee2aaSAndroid Build Coastguard Worker BUFFER_BINDING(ConfigUniform, Uniform, None),
149*c8dee2aaSAndroid Build Coastguard Worker BUFFER_BINDING(Scene, ReadOnlyStorage, None),
150*c8dee2aaSAndroid Build Coastguard Worker BUFFER_BINDING(DrawReduceOutput, ReadOnlyStorage, None),
151*c8dee2aaSAndroid Build Coastguard Worker BUFFER_BINDING(PathBBoxes, ReadOnlyStorage, None),
152*c8dee2aaSAndroid Build Coastguard Worker BUFFER_BINDING(DrawMonoid, Storage, None),
153*c8dee2aaSAndroid Build Coastguard Worker BUFFER_BINDING(InfoBinData, Storage, None),
154*c8dee2aaSAndroid Build Coastguard Worker BUFFER_BINDING(ClipInput, Storage, None),
155*c8dee2aaSAndroid Build Coastguard Worker }) {}
156*c8dee2aaSAndroid Build Coastguard Worker
157*c8dee2aaSAndroid Build Coastguard Worker // ClipReduce
VelloClipReduceStep()158*c8dee2aaSAndroid Build Coastguard Worker VelloClipReduceStep::VelloClipReduceStep()
159*c8dee2aaSAndroid Build Coastguard Worker : VelloStep({
160*c8dee2aaSAndroid Build Coastguard Worker BUFFER_BINDING(ClipInput, ReadOnlyStorage, None),
161*c8dee2aaSAndroid Build Coastguard Worker BUFFER_BINDING(PathBBoxes, ReadOnlyStorage, None),
162*c8dee2aaSAndroid Build Coastguard Worker BUFFER_BINDING(ClipBicyclic, Storage, None),
163*c8dee2aaSAndroid Build Coastguard Worker BUFFER_BINDING(ClipElement, Storage, None),
164*c8dee2aaSAndroid Build Coastguard Worker }) {}
165*c8dee2aaSAndroid Build Coastguard Worker
166*c8dee2aaSAndroid Build Coastguard Worker // ClipLeaf
VelloClipLeafStep()167*c8dee2aaSAndroid Build Coastguard Worker VelloClipLeafStep::VelloClipLeafStep()
168*c8dee2aaSAndroid Build Coastguard Worker : VelloStep({
169*c8dee2aaSAndroid Build Coastguard Worker BUFFER_BINDING(ConfigUniform, Uniform, None),
170*c8dee2aaSAndroid Build Coastguard Worker BUFFER_BINDING(ClipInput, ReadOnlyStorage, None),
171*c8dee2aaSAndroid Build Coastguard Worker BUFFER_BINDING(PathBBoxes, ReadOnlyStorage, None),
172*c8dee2aaSAndroid Build Coastguard Worker BUFFER_BINDING(ClipBicyclic, ReadOnlyStorage, None),
173*c8dee2aaSAndroid Build Coastguard Worker BUFFER_BINDING(ClipElement, ReadOnlyStorage, None),
174*c8dee2aaSAndroid Build Coastguard Worker BUFFER_BINDING(DrawMonoid, Storage, None),
175*c8dee2aaSAndroid Build Coastguard Worker BUFFER_BINDING(ClipBBoxes, Storage, None),
176*c8dee2aaSAndroid Build Coastguard Worker }) {}
177*c8dee2aaSAndroid Build Coastguard Worker
178*c8dee2aaSAndroid Build Coastguard Worker // Binning
VelloBinningStep()179*c8dee2aaSAndroid Build Coastguard Worker VelloBinningStep::VelloBinningStep()
180*c8dee2aaSAndroid Build Coastguard Worker : VelloStep({
181*c8dee2aaSAndroid Build Coastguard Worker BUFFER_BINDING(ConfigUniform, Uniform, None),
182*c8dee2aaSAndroid Build Coastguard Worker BUFFER_BINDING(DrawMonoid, ReadOnlyStorage, None),
183*c8dee2aaSAndroid Build Coastguard Worker BUFFER_BINDING(PathBBoxes, ReadOnlyStorage, None),
184*c8dee2aaSAndroid Build Coastguard Worker BUFFER_BINDING(ClipBBoxes, ReadOnlyStorage, None),
185*c8dee2aaSAndroid Build Coastguard Worker BUFFER_BINDING(DrawBBoxes, Storage, None),
186*c8dee2aaSAndroid Build Coastguard Worker BUFFER_BINDING(BumpAlloc, Storage, None),
187*c8dee2aaSAndroid Build Coastguard Worker BUFFER_BINDING(InfoBinData, Storage, None),
188*c8dee2aaSAndroid Build Coastguard Worker BUFFER_BINDING(BinHeader, Storage, None),
189*c8dee2aaSAndroid Build Coastguard Worker }) {}
190*c8dee2aaSAndroid Build Coastguard Worker
191*c8dee2aaSAndroid Build Coastguard Worker // TileAlloc
VelloTileAllocStep()192*c8dee2aaSAndroid Build Coastguard Worker VelloTileAllocStep::VelloTileAllocStep()
193*c8dee2aaSAndroid Build Coastguard Worker : VelloStep({
194*c8dee2aaSAndroid Build Coastguard Worker BUFFER_BINDING(ConfigUniform, Uniform, None),
195*c8dee2aaSAndroid Build Coastguard Worker BUFFER_BINDING(Scene, ReadOnlyStorage, None),
196*c8dee2aaSAndroid Build Coastguard Worker BUFFER_BINDING(DrawBBoxes, ReadOnlyStorage, None),
197*c8dee2aaSAndroid Build Coastguard Worker BUFFER_BINDING(BumpAlloc, Storage, None),
198*c8dee2aaSAndroid Build Coastguard Worker BUFFER_BINDING(Path, Storage, None),
199*c8dee2aaSAndroid Build Coastguard Worker BUFFER_BINDING(Tile, Storage, None),
200*c8dee2aaSAndroid Build Coastguard Worker }) {}
201*c8dee2aaSAndroid Build Coastguard Worker
202*c8dee2aaSAndroid Build Coastguard Worker // PathCountSetup
VelloPathCountSetupStep()203*c8dee2aaSAndroid Build Coastguard Worker VelloPathCountSetupStep::VelloPathCountSetupStep()
204*c8dee2aaSAndroid Build Coastguard Worker : VelloStep({
205*c8dee2aaSAndroid Build Coastguard Worker BUFFER_BINDING(BumpAlloc, Storage, None),
206*c8dee2aaSAndroid Build Coastguard Worker BUFFER_BINDING(IndirectCount, Storage, None),
207*c8dee2aaSAndroid Build Coastguard Worker }) {}
208*c8dee2aaSAndroid Build Coastguard Worker
209*c8dee2aaSAndroid Build Coastguard Worker // PathCount
VelloPathCountStep()210*c8dee2aaSAndroid Build Coastguard Worker VelloPathCountStep::VelloPathCountStep()
211*c8dee2aaSAndroid Build Coastguard Worker : VelloStep({
212*c8dee2aaSAndroid Build Coastguard Worker BUFFER_BINDING(ConfigUniform, Uniform, None),
213*c8dee2aaSAndroid Build Coastguard Worker BUFFER_BINDING(BumpAlloc, Storage, None),
214*c8dee2aaSAndroid Build Coastguard Worker BUFFER_BINDING(Lines, ReadOnlyStorage, None),
215*c8dee2aaSAndroid Build Coastguard Worker BUFFER_BINDING(Path, ReadOnlyStorage, None),
216*c8dee2aaSAndroid Build Coastguard Worker BUFFER_BINDING(Tile, Storage, None),
217*c8dee2aaSAndroid Build Coastguard Worker BUFFER_BINDING(SegmentCounts, Storage, None),
218*c8dee2aaSAndroid Build Coastguard Worker }) {}
219*c8dee2aaSAndroid Build Coastguard Worker
220*c8dee2aaSAndroid Build Coastguard Worker // BackdropDyn
VelloBackdropDynStep()221*c8dee2aaSAndroid Build Coastguard Worker VelloBackdropDynStep::VelloBackdropDynStep()
222*c8dee2aaSAndroid Build Coastguard Worker : VelloStep({
223*c8dee2aaSAndroid Build Coastguard Worker BUFFER_BINDING(ConfigUniform, Uniform, None),
224*c8dee2aaSAndroid Build Coastguard Worker BUFFER_BINDING(BumpAlloc, Storage, None),
225*c8dee2aaSAndroid Build Coastguard Worker BUFFER_BINDING(Path, ReadOnlyStorage, None),
226*c8dee2aaSAndroid Build Coastguard Worker BUFFER_BINDING(Tile, Storage, None),
227*c8dee2aaSAndroid Build Coastguard Worker }) {}
228*c8dee2aaSAndroid Build Coastguard Worker
229*c8dee2aaSAndroid Build Coastguard Worker // Coarse
VelloCoarseStep()230*c8dee2aaSAndroid Build Coastguard Worker VelloCoarseStep::VelloCoarseStep()
231*c8dee2aaSAndroid Build Coastguard Worker : VelloStep({
232*c8dee2aaSAndroid Build Coastguard Worker BUFFER_BINDING(ConfigUniform, Uniform, None),
233*c8dee2aaSAndroid Build Coastguard Worker BUFFER_BINDING(Scene, ReadOnlyStorage, None),
234*c8dee2aaSAndroid Build Coastguard Worker BUFFER_BINDING(DrawMonoid, ReadOnlyStorage, None),
235*c8dee2aaSAndroid Build Coastguard Worker BUFFER_BINDING(BinHeader, ReadOnlyStorage, None),
236*c8dee2aaSAndroid Build Coastguard Worker BUFFER_BINDING(InfoBinData, ReadOnlyStorage, None),
237*c8dee2aaSAndroid Build Coastguard Worker BUFFER_BINDING(Path, ReadOnlyStorage, None),
238*c8dee2aaSAndroid Build Coastguard Worker BUFFER_BINDING(Tile, Storage, None),
239*c8dee2aaSAndroid Build Coastguard Worker BUFFER_BINDING(BumpAlloc, Storage, None),
240*c8dee2aaSAndroid Build Coastguard Worker BUFFER_BINDING(PTCL, Storage, None),
241*c8dee2aaSAndroid Build Coastguard Worker }) {}
242*c8dee2aaSAndroid Build Coastguard Worker
243*c8dee2aaSAndroid Build Coastguard Worker // PathTilingSetup
VelloPathTilingSetupStep()244*c8dee2aaSAndroid Build Coastguard Worker VelloPathTilingSetupStep::VelloPathTilingSetupStep()
245*c8dee2aaSAndroid Build Coastguard Worker : VelloStep({
246*c8dee2aaSAndroid Build Coastguard Worker BUFFER_BINDING(BumpAlloc, Storage, None),
247*c8dee2aaSAndroid Build Coastguard Worker BUFFER_BINDING(IndirectCount, Storage, None),
248*c8dee2aaSAndroid Build Coastguard Worker BUFFER_BINDING(PTCL, Storage, None),
249*c8dee2aaSAndroid Build Coastguard Worker }) {}
250*c8dee2aaSAndroid Build Coastguard Worker
251*c8dee2aaSAndroid Build Coastguard Worker // PathTiling
VelloPathTilingStep()252*c8dee2aaSAndroid Build Coastguard Worker VelloPathTilingStep::VelloPathTilingStep()
253*c8dee2aaSAndroid Build Coastguard Worker : VelloStep({
254*c8dee2aaSAndroid Build Coastguard Worker BUFFER_BINDING(BumpAlloc, Storage, None),
255*c8dee2aaSAndroid Build Coastguard Worker BUFFER_BINDING(SegmentCounts, ReadOnlyStorage, None),
256*c8dee2aaSAndroid Build Coastguard Worker BUFFER_BINDING(Lines, ReadOnlyStorage, None),
257*c8dee2aaSAndroid Build Coastguard Worker BUFFER_BINDING(Path, ReadOnlyStorage, None),
258*c8dee2aaSAndroid Build Coastguard Worker BUFFER_BINDING(Tile, ReadOnlyStorage, None),
259*c8dee2aaSAndroid Build Coastguard Worker BUFFER_BINDING(Segments, Storage, None),
260*c8dee2aaSAndroid Build Coastguard Worker }) {}
261*c8dee2aaSAndroid Build Coastguard Worker
262*c8dee2aaSAndroid Build Coastguard Worker // Fine
263*c8dee2aaSAndroid Build Coastguard Worker static constexpr ComputeStep::ResourceDesc kFineAreaResources[] = {
264*c8dee2aaSAndroid Build Coastguard Worker BUFFER_BINDING(ConfigUniform, Uniform, None),
265*c8dee2aaSAndroid Build Coastguard Worker BUFFER_BINDING(Segments, ReadOnlyStorage, None),
266*c8dee2aaSAndroid Build Coastguard Worker BUFFER_BINDING(PTCL, ReadOnlyStorage, None),
267*c8dee2aaSAndroid Build Coastguard Worker BUFFER_BINDING(InfoBinData, ReadOnlyStorage, None),
268*c8dee2aaSAndroid Build Coastguard Worker TEXTURE_BINDING(OutputImage, WriteOnlyStorage, None),
269*c8dee2aaSAndroid Build Coastguard Worker };
270*c8dee2aaSAndroid Build Coastguard Worker
271*c8dee2aaSAndroid Build Coastguard Worker static constexpr ComputeStep::ResourceDesc kFineMsaaResources[] = {
272*c8dee2aaSAndroid Build Coastguard Worker BUFFER_BINDING(ConfigUniform, Uniform, None),
273*c8dee2aaSAndroid Build Coastguard Worker BUFFER_BINDING(Segments, ReadOnlyStorage, None),
274*c8dee2aaSAndroid Build Coastguard Worker BUFFER_BINDING(PTCL, ReadOnlyStorage, None),
275*c8dee2aaSAndroid Build Coastguard Worker BUFFER_BINDING(InfoBinData, ReadOnlyStorage, None),
276*c8dee2aaSAndroid Build Coastguard Worker TEXTURE_BINDING(OutputImage, WriteOnlyStorage, None),
277*c8dee2aaSAndroid Build Coastguard Worker BUFFER_BINDING(MaskLUT, ReadOnlyStorage, Mapped),
278*c8dee2aaSAndroid Build Coastguard Worker };
279*c8dee2aaSAndroid Build Coastguard Worker
VelloFineAreaStep()280*c8dee2aaSAndroid Build Coastguard Worker VelloFineAreaStep::VelloFineAreaStep() : VelloFineStepBase(kFineAreaResources) {}
281*c8dee2aaSAndroid Build Coastguard Worker
VelloFineMsaa16Step()282*c8dee2aaSAndroid Build Coastguard Worker VelloFineMsaa16Step::VelloFineMsaa16Step() : VelloFineMsaaStepBase(kFineMsaaResources) {}
283*c8dee2aaSAndroid Build Coastguard Worker
VelloFineMsaa8Step()284*c8dee2aaSAndroid Build Coastguard Worker VelloFineMsaa8Step::VelloFineMsaa8Step() : VelloFineMsaaStepBase(kFineMsaaResources) {}
285*c8dee2aaSAndroid Build Coastguard Worker
VelloFineAreaAlpha8Step()286*c8dee2aaSAndroid Build Coastguard Worker VelloFineAreaAlpha8Step::VelloFineAreaAlpha8Step() : VelloFineStepBase(kFineAreaResources) {}
287*c8dee2aaSAndroid Build Coastguard Worker
VelloFineMsaa16Alpha8Step()288*c8dee2aaSAndroid Build Coastguard Worker VelloFineMsaa16Alpha8Step::VelloFineMsaa16Alpha8Step()
289*c8dee2aaSAndroid Build Coastguard Worker : VelloFineMsaaStepBase(kFineMsaaResources) {}
290*c8dee2aaSAndroid Build Coastguard Worker
VelloFineMsaa8Alpha8Step()291*c8dee2aaSAndroid Build Coastguard Worker VelloFineMsaa8Alpha8Step::VelloFineMsaa8Alpha8Step() : VelloFineMsaaStepBase(kFineMsaaResources) {}
292*c8dee2aaSAndroid Build Coastguard Worker
293*c8dee2aaSAndroid Build Coastguard Worker } // namespace skgpu::graphite
294