• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 skgpu_graphite_render_TessellateCurvesRenderStep_DEFINED
9 #define skgpu_graphite_render_TessellateCurvesRenderStep_DEFINED
10 
11 #include "src/gpu/graphite/Renderer.h"
12 #include "src/gpu/graphite/ResourceTypes.h"
13 
14 namespace skgpu::graphite {
15 
16 class StaticBufferManager;
17 
18 class TessellateCurvesRenderStep final : public RenderStep {
19 public:
20     // TODO: If this takes DepthStencilSettings directly and a way to adjust the flags to specify
21     // that it performs shading, this RenderStep definition can be shared between the stencil and
22     // the convex rendering variants.
23     TessellateCurvesRenderStep(bool evenOdd,
24                                bool infinitySupport,
25                                StaticBufferManager* bufferManager);
26 
27     ~TessellateCurvesRenderStep() override;
28 
29     std::string vertexSkSL() const override;
30     void writeVertices(DrawWriter*, const DrawParams&, skvx::ushort2 ssboIndices) const override;
31     void writeUniformsAndTextures(const DrawParams&, PipelineDataGatherer*) const override;
32 
33 private:
34     // Points to the static buffers holding the fixed indexed vertex template for drawing instances.
35     BindBufferInfo fVertexBuffer;
36     BindBufferInfo fIndexBuffer;
37     bool fInfinitySupport;
38 };
39 
40 }  // namespace skgpu::graphite
41 
42 #endif // skgpu_graphite_render_TessellateCurvesRenderStep_DEFINED
43