• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright 2011 Google Inc.
3  *
4  * Use of this source code is governed by a BSD-style license that can be
5  * found in the LICENSE file.
6  */
7 
8 
9 #ifndef GrGLStencilBuffer_DEFINED
10 #define GrGLStencilBuffer_DEFINED
11 
12 #include "gl/GrGLInterface.h"
13 #include "GrStencilBuffer.h"
14 
15 class GrGLStencilBuffer : public GrStencilBuffer {
16 public:
17     static const GrGLenum kUnknownInternalFormat = ~0U;
18     static const GrGLuint kUnknownBitCount = ~0U;
19     struct Format {
20         GrGLenum  fInternalFormat;
21         GrGLuint  fStencilBits;
22         GrGLuint  fTotalBits;
23         bool      fPacked;
24     };
25 
GrGLStencilBuffer(GrGpu * gpu,bool isWrapped,GrGLint rbid,int width,int height,int sampleCnt,const Format & format)26     GrGLStencilBuffer(GrGpu* gpu,
27                       bool isWrapped,
28                       GrGLint rbid,
29                       int width, int height,
30                       int sampleCnt,
31                       const Format& format)
32         : GrStencilBuffer(gpu, isWrapped, width, height, format.fStencilBits, sampleCnt)
33         , fFormat(format)
34         , fRenderbufferID(rbid) {
35     }
36 
37     virtual ~GrGLStencilBuffer();
38 
39     virtual size_t sizeInBytes() const SK_OVERRIDE;
40 
renderbufferID()41     GrGLuint renderbufferID() const {
42         return fRenderbufferID;
43     }
44 
format()45     const Format& format() const { return fFormat; }
46 
47 protected:
48     // overrides of GrResource
49     virtual void onRelease() SK_OVERRIDE;
50     virtual void onAbandon() SK_OVERRIDE;
51 
52 private:
53     Format fFormat;
54     // may be zero for external SBs associated with external RTs
55     // (we don't require the client to give us the id, just tell
56     // us how many bits of stencil there are).
57     GrGLuint fRenderbufferID;
58 
59     typedef GrStencilBuffer INHERITED;
60 };
61 
62 #endif
63