1 2 /* 3 * Copyright 2013 Google Inc. 4 * 5 * Use of this source code is governed by a BSD-style license that can be 6 * found in the LICENSE file. 7 */ 8 9 #include "SkRefCnt.h" 10 11 #ifndef GrDrawTargetCaps_DEFINED 12 #define GrDrawTargetCaps_DEFINED 13 14 /** 15 * Represents the draw target capabilities. 16 */ 17 class GrDrawTargetCaps : public SkRefCnt { 18 public: 19 SK_DECLARE_INST_COUNT(Caps) 20 21 GrDrawTargetCaps() { this->reset(); } 22 GrDrawTargetCaps(const GrDrawTargetCaps& other) : INHERITED() { *this = other; } 23 GrDrawTargetCaps& operator= (const GrDrawTargetCaps&); 24 25 virtual void reset(); 26 virtual void print() const; 27 28 bool eightBitPaletteSupport() const { return f8BitPaletteSupport; } 29 bool npotTextureTileSupport() const { return fNPOTTextureTileSupport; } 30 bool twoSidedStencilSupport() const { return fTwoSidedStencilSupport; } 31 bool stencilWrapOpsSupport() const { return fStencilWrapOpsSupport; } 32 bool hwAALineSupport() const { return fHWAALineSupport; } 33 bool shaderDerivativeSupport() const { return fShaderDerivativeSupport; } 34 bool geometryShaderSupport() const { return fGeometryShaderSupport; } 35 bool dualSourceBlendingSupport() const { return fDualSourceBlendingSupport; } 36 bool bufferLockSupport() const { return fBufferLockSupport; } 37 bool pathStencilingSupport() const { return fPathStencilingSupport; } 38 bool dstReadInShaderSupport() const { return fDstReadInShaderSupport; } 39 bool reuseScratchTextures() const { return fReuseScratchTextures; } 40 41 int maxRenderTargetSize() const { return fMaxRenderTargetSize; } 42 int maxTextureSize() const { return fMaxTextureSize; } 43 // Will be 0 if MSAA is not supported 44 int maxSampleCount() const { return fMaxSampleCount; } 45 46 protected: 47 bool f8BitPaletteSupport : 1; 48 bool fNPOTTextureTileSupport : 1; 49 bool fTwoSidedStencilSupport : 1; 50 bool fStencilWrapOpsSupport : 1; 51 bool fHWAALineSupport : 1; 52 bool fShaderDerivativeSupport : 1; 53 bool fGeometryShaderSupport : 1; 54 bool fDualSourceBlendingSupport : 1; 55 bool fBufferLockSupport : 1; 56 bool fPathStencilingSupport : 1; 57 bool fDstReadInShaderSupport : 1; 58 bool fReuseScratchTextures : 1; 59 60 int fMaxRenderTargetSize; 61 int fMaxTextureSize; 62 int fMaxSampleCount; 63 64 typedef SkRefCnt INHERITED; 65 }; 66 67 #endif 68