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 */
17class GrDrawTargetCaps : public SkRefCnt {
18public:
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
46protected:
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