1*c8dee2aaSAndroid Build Coastguard Worker /* 2*c8dee2aaSAndroid Build Coastguard Worker * Copyright 2019 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 #ifndef TessellationPathRenderer_DEFINED 9*c8dee2aaSAndroid Build Coastguard Worker #define TessellationPathRenderer_DEFINED 10*c8dee2aaSAndroid Build Coastguard Worker 11*c8dee2aaSAndroid Build Coastguard Worker #include "src/gpu/ganesh/PathRenderer.h" 12*c8dee2aaSAndroid Build Coastguard Worker 13*c8dee2aaSAndroid Build Coastguard Worker class GrCaps; 14*c8dee2aaSAndroid Build Coastguard Worker class GrStyledShape; 15*c8dee2aaSAndroid Build Coastguard Worker 16*c8dee2aaSAndroid Build Coastguard Worker namespace skgpu::ganesh { 17*c8dee2aaSAndroid Build Coastguard Worker 18*c8dee2aaSAndroid Build Coastguard Worker // This is the tie-in point for path rendering via PathTessellateOp. This path renderer draws 19*c8dee2aaSAndroid Build Coastguard Worker // paths using a hybrid Red Book "stencil, then cover" method. Curves get linearized by GPU 20*c8dee2aaSAndroid Build Coastguard Worker // tessellation shaders. This path renderer doesn't apply analytic AA, so it requires MSAA if AA is 21*c8dee2aaSAndroid Build Coastguard Worker // desired. 22*c8dee2aaSAndroid Build Coastguard Worker class TessellationPathRenderer final : public PathRenderer { 23*c8dee2aaSAndroid Build Coastguard Worker public: 24*c8dee2aaSAndroid Build Coastguard Worker static bool IsSupported(const GrCaps&); 25*c8dee2aaSAndroid Build Coastguard Worker name()26*c8dee2aaSAndroid Build Coastguard Worker const char* name() const override { return "Tessellation"; } 27*c8dee2aaSAndroid Build Coastguard Worker 28*c8dee2aaSAndroid Build Coastguard Worker private: 29*c8dee2aaSAndroid Build Coastguard Worker StencilSupport onGetStencilSupport(const GrStyledShape&) const override; 30*c8dee2aaSAndroid Build Coastguard Worker CanDrawPath onCanDrawPath(const CanDrawPathArgs&) const override; 31*c8dee2aaSAndroid Build Coastguard Worker bool onDrawPath(const DrawPathArgs&) override; 32*c8dee2aaSAndroid Build Coastguard Worker void onStencilPath(const StencilPathArgs&) override; 33*c8dee2aaSAndroid Build Coastguard Worker }; 34*c8dee2aaSAndroid Build Coastguard Worker 35*c8dee2aaSAndroid Build Coastguard Worker } // namespace skgpu::ganesh 36*c8dee2aaSAndroid Build Coastguard Worker 37*c8dee2aaSAndroid Build Coastguard Worker #endif // TessellationPathRenderer_DEFINED 38