/* * Copyright 2023 Google LLC * * Use of this source code is governed by a BSD-style license that can be * found in the LICENSE file. */ #ifndef skgpu_graphite_ContextOptionsPriv_DEFINED #define skgpu_graphite_ContextOptionsPriv_DEFINED namespace skgpu::graphite { /** * Used to include or exclude a specific path rendering technique for testing purposes. */ enum class PathRendererStrategy { /** * Graphite selects the best path rendering technique for each shape. This is the default * behavior. */ kDefault, /** * All paths are rasterized into coverage masks using a GPU compute approach. This method * always uses analytic anti-aliasing. */ kComputeAnalyticAA, /** * All paths are rasterized into coverage masks using a GPU compute approach. This method * supports 16 and 8 sample multi-sampled anti-aliasing. */ kComputeMSAA16, kComputeMSAA8, /** * All paths are rasterized into coverage masks using the CPU raster backend. */ kRasterAA, /** * Render paths using tessellation and stencil-and-cover. */ kTessellation, }; /** * Private options that are only meant for testing within Skia's tools. */ struct ContextOptionsPriv { int fMaxTextureSizeOverride = SK_MaxS32; /** * Maximum width and height of internal texture atlases. */ int fMaxTextureAtlasSize = 2048; /** * If true, will store a pointer in Recorder that points back to the Context * that created it. Used by readPixels() and other methods that normally require a Context. */ bool fStoreContextRefInRecorder = false; PathRendererStrategy fPathRendererStrategy = PathRendererStrategy::kDefault; }; } // namespace skgpu::graphite #endif // skgpu_graphite_ContextOptionsPriv_DEFINED