xref: /aosp_15_r20/external/skia/src/gpu/graphite/compute/VelloComputeSteps.cpp (revision c8dee2aa9b3f27cf6c858bd81872bdeb2c07ed17)
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