Home | History | Annotate | Download | only in gl
      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 
     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 
     41     GrGLuint renderbufferID() const {
     42         return fRenderbufferID;
     43     }
     44 
     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