Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1)

Side by Side Diff: src/gpu/GrDrawTarget.h

Issue 12965018: Move nested class GrDrawTarget::Caps out as GrDrawTargetCaps. (Closed) Base URL: http://skia.googlecode.com/svn/trunk/
Patch Set: Created 7 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 1
2 /* 2 /*
3 * Copyright 2010 Google Inc. 3 * Copyright 2010 Google Inc.
4 * 4 *
5 * Use of this source code is governed by a BSD-style license that can be 5 * Use of this source code is governed by a BSD-style license that can be
6 * found in the LICENSE file. 6 * found in the LICENSE file.
7 */ 7 */
8 8
9 9
10
11 #ifndef GrDrawTarget_DEFINED 10 #ifndef GrDrawTarget_DEFINED
12 #define GrDrawTarget_DEFINED 11 #define GrDrawTarget_DEFINED
13 12
14 #include "GrClipData.h" 13 #include "GrClipData.h"
15 #include "GrDrawState.h" 14 #include "GrDrawState.h"
16 #include "GrIndexBuffer.h" 15 #include "GrIndexBuffer.h"
17 #include "SkMatrix.h" 16 #include "SkMatrix.h"
18 #include "GrRefCnt.h" 17 #include "GrRefCnt.h"
19 18
20 #include "SkClipStack.h" 19 #include "SkClipStack.h"
21 #include "SkPath.h" 20 #include "SkPath.h"
22 #include "SkTLazy.h" 21 #include "SkTLazy.h"
23 #include "SkTArray.h" 22 #include "SkTArray.h"
24 #include "SkXfermode.h" 23 #include "SkXfermode.h"
25 24
26 class GrClipData; 25 class GrClipData;
26 class GrDrawTargetCaps;
27 class GrPath; 27 class GrPath;
28 class GrVertexBuffer; 28 class GrVertexBuffer;
29 class SkStrokeRec; 29 class SkStrokeRec;
30 30
31 class GrDrawTarget : public GrRefCnt { 31 class GrDrawTarget : public GrRefCnt {
32 protected: 32 protected:
33 class DrawInfo; 33 class DrawInfo;
34 34
35 public: 35 public:
36 SK_DECLARE_INST_COUNT(GrDrawTarget) 36 SK_DECLARE_INST_COUNT(GrDrawTarget)
37 37
38 /**
39 * Represents the draw target capabilities.
40 */
41 class Caps : public SkRefCnt {
42 public:
43 SK_DECLARE_INST_COUNT(Caps)
44
45 Caps() { this->reset(); }
46 Caps(const Caps& c) { *this = c; }
47 Caps& operator= (const Caps& c);
48
49 virtual void reset();
50 virtual void print() const;
51
52 bool eightBitPaletteSupport() const { return f8BitPaletteSupport; }
53 bool npotTextureTileSupport() const { return fNPOTTextureTileSupport; }
54 bool twoSidedStencilSupport() const { return fTwoSidedStencilSupport; }
55 bool stencilWrapOpsSupport() const { return fStencilWrapOpsSupport; }
56 bool hwAALineSupport() const { return fHWAALineSupport; }
57 bool shaderDerivativeSupport() const { return fShaderDerivativeSupport; }
58 bool geometryShaderSupport() const { return fGeometryShaderSupport; }
59 bool dualSourceBlendingSupport() const { return fDualSourceBlendingSuppo rt; }
60 bool bufferLockSupport() const { return fBufferLockSupport; }
61 bool pathStencilingSupport() const { return fPathStencilingSupport; }
62
63 int maxRenderTargetSize() const { return fMaxRenderTargetSize; }
64 int maxTextureSize() const { return fMaxTextureSize; }
65 // Will be 0 if MSAA is not supported
66 int maxSampleCount() const { return fMaxSampleCount; }
67 protected:
68
69 bool f8BitPaletteSupport : 1;
70 bool fNPOTTextureTileSupport : 1;
71 bool fTwoSidedStencilSupport : 1;
72 bool fStencilWrapOpsSupport : 1;
73 bool fHWAALineSupport : 1;
74 bool fShaderDerivativeSupport : 1;
75 bool fGeometryShaderSupport : 1;
76 bool fDualSourceBlendingSupport : 1;
77 bool fBufferLockSupport : 1;
78 bool fPathStencilingSupport : 1;
79
80 int fMaxRenderTargetSize;
81 int fMaxTextureSize;
82 int fMaxSampleCount;
83
84 typedef SkRefCnt INHERITED;
85 };
86
87 /////////////////////////////////////////////////////////////////////////// 38 ///////////////////////////////////////////////////////////////////////////
88 39
89 // The context may not be fully constructed and should not be used during Gr DrawTarget 40 // The context may not be fully constructed and should not be used during Gr DrawTarget
90 // construction. 41 // construction.
91 GrDrawTarget(GrContext* context); 42 GrDrawTarget(GrContext* context);
92 virtual ~GrDrawTarget(); 43 virtual ~GrDrawTarget();
93 44
94 /** 45 /**
95 * Gets the capabilities of the draw target. 46 * Gets the capabilities of the draw target.
96 */ 47 */
97 const Caps* caps() const { return fCaps.get(); } 48 const GrDrawTargetCaps* caps() const { return fCaps.get(); }
98 49
99 /** 50 /**
100 * Sets the current clip to the region specified by clip. All draws will be 51 * Sets the current clip to the region specified by clip. All draws will be
101 * clipped against this clip if kClip_StateBit is enabled. 52 * clipped against this clip if kClip_StateBit is enabled.
102 * 53 *
103 * Setting the clip may (or may not) zero out the client's stencil bits. 54 * Setting the clip may (or may not) zero out the client's stencil bits.
104 * 55 *
105 * @param description of the clipping region 56 * @param description of the clipping region
106 */ 57 */
107 void setClip(const GrClipData* clip); 58 void setClip(const GrClipData* clip);
(...skipping 550 matching lines...) Expand 10 before | Expand all | Expand 10 after
658 // accessors for derived classes 609 // accessors for derived classes
659 const GeometrySrcState& getGeomSrc() const { return fGeoSrcStateStack.back() ; } 610 const GeometrySrcState& getGeomSrc() const { return fGeoSrcStateStack.back() ; }
660 // it is preferable to call this rather than getGeomSrc()->fVertexSize becau se of the assert. 611 // it is preferable to call this rather than getGeomSrc()->fVertexSize becau se of the assert.
661 size_t getVertexSize() const { 612 size_t getVertexSize() const {
662 // the vertex layout is only valid if a vertex source has been specified . 613 // the vertex layout is only valid if a vertex source has been specified .
663 GrAssert(this->getGeomSrc().fVertexSrc != kNone_GeometrySrcType); 614 GrAssert(this->getGeomSrc().fVertexSrc != kNone_GeometrySrcType);
664 return this->getGeomSrc().fVertexSize; 615 return this->getGeomSrc().fVertexSize;
665 } 616 }
666 617
667 // Subclass must initialize this in its constructor. 618 // Subclass must initialize this in its constructor.
668 SkAutoTUnref<const Caps> fCaps; 619 SkAutoTUnref<const GrDrawTargetCaps> fCaps;
669 620
670 /** 621 /**
671 * Used to communicate draws to subclass's onDraw function. 622 * Used to communicate draws to subclass's onDraw function.
672 */ 623 */
673 class DrawInfo { 624 class DrawInfo {
674 public: 625 public:
675 DrawInfo(const DrawInfo& di) { (*this) = di; } 626 DrawInfo(const DrawInfo& di) { (*this) = di; }
676 DrawInfo& operator =(const DrawInfo& di); 627 DrawInfo& operator =(const DrawInfo& di);
677 628
678 GrPrimitiveType primitiveType() const { return fPrimitiveType; } 629 GrPrimitiveType primitiveType() const { return fPrimitiveType; }
(...skipping 91 matching lines...) Expand 10 before | Expand all | Expand 10 after
770 const GrClipData* fClip; 721 const GrClipData* fClip;
771 GrDrawState* fDrawState; 722 GrDrawState* fDrawState;
772 GrDrawState fDefaultDraw State; 723 GrDrawState fDefaultDraw State;
773 // The context owns us, not vice-versa, so this ptr is not ref'ed by DrawTar get. 724 // The context owns us, not vice-versa, so this ptr is not ref'ed by DrawTar get.
774 GrContext* fContext; 725 GrContext* fContext;
775 726
776 typedef GrRefCnt INHERITED; 727 typedef GrRefCnt INHERITED;
777 }; 728 };
778 729
779 #endif 730 #endif
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698