Home | History | Annotate | Download | only in gpu
      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 
     13 struct 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         , fClipBatchToBounds(false)
     24         , fDrawBatchBounds(false)
     25         , fMaxBatchLookback(-1)
     26         , fUseShaderSwizzling(false) {}
     27 
     28     // EXPERIMENTAL
     29     // May be removed in the future, or may become standard depending
     30     // on the outcomes of a variety of internal tests.
     31     bool fDrawPathToCompressedTexture;
     32 
     33     // Suppress prints for the GrContext.
     34     bool fSuppressPrints;
     35 
     36     /** Overrides: These options override feature detection using backend API queries. These
     37         overrides can only reduce the feature set or limits, never increase them beyond the
     38         detected values. */
     39 
     40     int  fMaxTextureSizeOverride;
     41     /** If non-zero, overrides the maximum size of a tile for sw-backed images and bitmaps rendered
     42         by SkGpuDevice. */
     43     int  fMaxTileSizeOverride;
     44     bool fSuppressDualSourceBlending;
     45 
     46     /** the threshold in bytes above which we will use a buffer mapping API to map vertex and index
     47         buffers to CPU memory in order to update them.  A value of -1 means the GrContext should
     48         deduce the optimal value for this platform. */
     49     int  fGeometryBufferMapThreshold;
     50 
     51     /** some gpus have problems with partial writes of the rendertarget */
     52     bool fUseDrawInsteadOfPartialRenderTargetWrite;
     53 
     54     /** The GrContext operates in immediate mode. It will issue all draws to the backend API
     55         immediately. Intended to ease debugging. */
     56     bool fImmediateMode;
     57 
     58     /** For debugging purposes turn each GrBatch's bounds into a clip rect. This is used to
     59         verify that the clip bounds are conservative. */
     60     bool fClipBatchToBounds;
     61 
     62     /** For debugging purposes draw a wireframe device bounds rect for each GrBatch. The wire
     63         frame rect is draw before the GrBatch in order to visualize batches that draw outside
     64         of their dev bounds. */
     65     bool fDrawBatchBounds;
     66 
     67     /** For debugging, override the default maximum look-back window for GrBatch combining. */
     68     int fMaxBatchLookback;
     69 
     70     /** Force us to do all swizzling manually in the shader and don't rely on extensions to do
     71         swizzling. */
     72     bool fUseShaderSwizzling;
     73 };
     74 
     75 #endif
     76