GrContextOptions.h revision b7e7d5748d74c7482436b33733d7770484bb62e3
1/*
2 * Copyright 2015 Google Inc.
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 GrContextOptions_DEFINED
9#define GrContextOptions_DEFINED
10
11#include "SkTypes.h"
12
13struct GrContextOptions {
14    GrContextOptions()
15        : fDrawPathToCompressedTexture(false)
16        , fSuppressPrints(false)
17        , fMaxTextureSizeOverride(SK_MaxS32)
18        , fMaxTileSizeOverride(0)
19        , fSuppressDualSourceBlending(false)
20        , fGeometryBufferMapThreshold(-1)
21        , fUseDrawInsteadOfPartialRenderTargetWrite(false)
22        , fImmediateMode(false)
23        , fUseShaderSwizzling(false) {}
24
25    // EXPERIMENTAL
26    // May be removed in the future, or may become standard depending
27    // on the outcomes of a variety of internal tests.
28    bool fDrawPathToCompressedTexture;
29
30    // Suppress prints for the GrContext.
31    bool fSuppressPrints;
32
33    /** Overrides: These options override feature detection using backend API queries. These
34        overrides can only reduce the feature set or limits, never increase them beyond the
35        detected values. */
36
37    int  fMaxTextureSizeOverride;
38    /** If non-zero, overrides the maximum size of a tile for sw-backed images and bitmaps rendered
39        by SkGpuDevice. */
40    int  fMaxTileSizeOverride;
41    bool fSuppressDualSourceBlending;
42
43    /** the threshold in bytes above which we will use a buffer mapping API to map vertex and index
44        buffers to CPU memory in order to update them.  A value of -1 means the GrContext should
45        deduce the optimal value for this platform. */
46    int  fGeometryBufferMapThreshold;
47
48    /** some gpus have problems with partial writes of the rendertarget */
49    bool fUseDrawInsteadOfPartialRenderTargetWrite;
50
51    /** The GrContext operates in immedidate mode. It will issue all draws to the backend API
52        immediately. Intended to ease debugging. */
53    bool fImmediateMode;
54
55    /** Force us to do all swizzling manually in the shader and don't rely on extensions to do
56        swizzling. */
57    bool fUseShaderSwizzling;
58};
59
60#endif
61