blob: 35a05f931c7e06e72a99ddd91923c2ffda254977 [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; }
38
39 int maxRenderTargetSize() const { return fMaxRenderTargetSize; }
40 int maxTextureSize() const { return fMaxTextureSize; }
41 // Will be 0 if MSAA is not supported
42 int maxSampleCount() const { return fMaxSampleCount; }
43
44protected:
45 bool f8BitPaletteSupport : 1;
46 bool fNPOTTextureTileSupport : 1;
47 bool fTwoSidedStencilSupport : 1;
48 bool fStencilWrapOpsSupport : 1;
49 bool fHWAALineSupport : 1;
50 bool fShaderDerivativeSupport : 1;
51 bool fGeometryShaderSupport : 1;
52 bool fDualSourceBlendingSupport : 1;
53 bool fBufferLockSupport : 1;
54 bool fPathStencilingSupport : 1;
55
56 int fMaxRenderTargetSize;
57 int fMaxTextureSize;
58 int fMaxSampleCount;
59
60 typedef SkRefCnt INHERITED;
61};
62
63#endif