blob: ffacc9e4feb0fa972665a88f2143aeaf3f0b0623 [file] [log] [blame]
bsalomon@google.comc26d94f2013-03-25 18:19:00 +00001
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) { *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; }
bsalomon@google.com6b0cf022013-05-03 13:35:14 +000038 bool dstReadInShaderSupport() const { return fDstReadInShaderSupport; }
commit-bot@chromium.orgb8356522013-07-18 22:26:39 +000039 bool reuseScratchTextures() const { return fReuseScratchTextures; }
bsalomon@google.comc26d94f2013-03-25 18:19:00 +000040
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;
bsalomon@google.com6b0cf022013-05-03 13:35:14 +000057 bool fDstReadInShaderSupport : 1;
commit-bot@chromium.orgb8356522013-07-18 22:26:39 +000058 bool fReuseScratchTextures : 1;
bsalomon@google.comc26d94f2013-03-25 18:19:00 +000059
60 int fMaxRenderTargetSize;
61 int fMaxTextureSize;
62 int fMaxSampleCount;
63
64 typedef SkRefCnt INHERITED;
65};
66
67#endif