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