gfx/skia/trunk/src/gpu/gl/debug/GrDebugGL.h

Wed, 31 Dec 2014 07:53:36 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Wed, 31 Dec 2014 07:53:36 +0100
branch
TOR_BUG_3246
changeset 5
4ab42b5ab56c
permissions
-rw-r--r--

Correct small whitespace inconsistency, lost while renaming variables.

     2 /*
     3  * Copyright 2012 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  */
     9 #ifndef GrDebugGL_DEFINED
    10 #define GrDebugGL_DEFINED
    12 #include "SkTArray.h"
    13 #include "gl/GrGLInterface.h"
    15 class GrBufferObj;
    16 class GrFakeRefObj;
    17 class GrFrameBufferObj;
    18 class GrProgramObj;
    19 class GrRenderBufferObj;
    20 class GrTextureObj;
    21 class GrTextureUnitObj;
    22 class GrVertexArrayObj;
    24 ////////////////////////////////////////////////////////////////////////////////
    25 // This is the main debugging object. It is a singleton and keeps track of
    26 // all the other debug objects.
    27 class GrDebugGL {
    28 public:
    29     enum GrObjTypes {
    30         kTexture_ObjTypes = 0,
    31         kBuffer_ObjTypes,
    32         kRenderBuffer_ObjTypes,
    33         kFrameBuffer_ObjTypes,
    34         kShader_ObjTypes,
    35         kProgram_ObjTypes,
    36         kTextureUnit_ObjTypes,
    37         kVertexArray_ObjTypes,
    38         kObjTypeCount
    39     };
    41     GrFakeRefObj *createObj(GrObjTypes type) {
    42         GrFakeRefObj *temp = (*gFactoryFunc[type])();
    44         fObjects.push_back(temp);
    46         return temp;
    47     }
    49     GrFakeRefObj *findObject(GrGLuint ID, GrObjTypes type);
    51     GrGLuint getMaxTextureUnits() const { return kDefaultMaxTextureUnits; }
    53     void setCurTextureUnit(GrGLuint curTextureUnit) { fCurTextureUnit = curTextureUnit; }
    54     GrGLuint getCurTextureUnit() const { return fCurTextureUnit; }
    56     GrTextureUnitObj *getTextureUnit(int iUnit) {
    57         GrAlwaysAssert(0 <= iUnit && kDefaultMaxTextureUnits > iUnit);
    59         return fTextureUnits[iUnit];
    60     }
    62     void setArrayBuffer(GrBufferObj *arrayBuffer);
    63     GrBufferObj *getArrayBuffer()                   { return fArrayBuffer; }
    65     void setElementArrayBuffer(GrBufferObj *elementArrayBuffer);
    66     GrBufferObj *getElementArrayBuffer()                            { return fElementArrayBuffer; }
    68     void setVertexArray(GrVertexArrayObj* vertexArray);
    69     GrVertexArrayObj* getVertexArray() { return fVertexArray; }
    71     void setTexture(GrTextureObj *texture);
    73     void setFrameBuffer(GrFrameBufferObj *frameBuffer);
    74     GrFrameBufferObj *getFrameBuffer()                  { return fFrameBuffer; }
    76     void setRenderBuffer(GrRenderBufferObj *renderBuffer);
    77     GrRenderBufferObj *getRenderBuffer()                  { return fRenderBuffer; }
    79     void useProgram(GrProgramObj *program);
    81     void setPackRowLength(GrGLint packRowLength) {
    82         fPackRowLength = packRowLength;
    83     }
    84     GrGLint getPackRowLength() const { return fPackRowLength; }
    86     void setUnPackRowLength(GrGLint unPackRowLength) {
    87         fUnPackRowLength = unPackRowLength;
    88     }
    89     GrGLint getUnPackRowLength() const { return fUnPackRowLength; }
    91     static GrDebugGL *getInstance() {
    92         // someone should admit to actually using this class
    93         SkASSERT(0 < gStaticRefCount);
    95         if (NULL == gObj) {
    96             gObj = SkNEW(GrDebugGL);
    97         }
    99         return gObj;
   100     }
   102     void report() const;
   104     static void staticRef() {
   105         gStaticRefCount++;
   106     }
   108     static void staticUnRef() {
   109         SkASSERT(gStaticRefCount > 0);
   110         gStaticRefCount--;
   111         if (0 == gStaticRefCount) {
   112             SkDELETE(gObj);
   113             gObj = NULL;
   114         }
   115     }
   117 protected:
   119 private:
   120     // the OpenGLES 2.0 spec says this must be >= 2
   121     static const GrGLint kDefaultMaxTextureUnits = 8;
   123     GrGLint         fPackRowLength;
   124     GrGLint         fUnPackRowLength;
   125     GrGLuint        fCurTextureUnit;
   126     GrBufferObj*    fArrayBuffer;
   127     GrBufferObj*    fElementArrayBuffer;
   128     GrFrameBufferObj* fFrameBuffer;
   129     GrRenderBufferObj* fRenderBuffer;
   130     GrProgramObj* fProgram;
   131     GrTextureObj* fTexture;
   132     GrTextureUnitObj *fTextureUnits[kDefaultMaxTextureUnits];
   133     GrVertexArrayObj *fVertexArray;
   135     typedef GrFakeRefObj *(*Create)();
   137     static Create gFactoryFunc[kObjTypeCount];
   139     static GrDebugGL* gObj;
   140     static int gStaticRefCount;
   142     // global store of all objects
   143     SkTArray<GrFakeRefObj *> fObjects;
   145     GrDebugGL();
   146     ~GrDebugGL();
   147 };
   149 ////////////////////////////////////////////////////////////////////////////////
   150 // Helper macro to make creating an object (where you need to get back a derived
   151 // type) easier
   152 #define GR_CREATE(className, classEnum)                     \
   153     reinterpret_cast<className *>(GrDebugGL::getInstance()->createObj(classEnum))
   155 ////////////////////////////////////////////////////////////////////////////////
   156 // Helper macro to make finding objects less painful
   157 #define GR_FIND(id, className, classEnum)                   \
   158     reinterpret_cast<className *>(GrDebugGL::getInstance()->findObject(id, classEnum))
   160 #endif // GrDebugGL_DEFINED

mercurial