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

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 #include "GrDebugGL.h"
    10 #include "GrTextureObj.h"
    11 #include "GrBufferObj.h"
    12 #include "GrRenderBufferObj.h"
    13 #include "GrFrameBufferObj.h"
    14 #include "GrShaderObj.h"
    15 #include "GrProgramObj.h"
    16 #include "GrTextureUnitObj.h"
    17 #include "GrVertexArrayObj.h"
    19 GrDebugGL* GrDebugGL::gObj = NULL;
    20 int GrDebugGL::gStaticRefCount = 0;
    21 GrDebugGL::Create GrDebugGL::gFactoryFunc[kObjTypeCount] = {
    22     GrTextureObj::createGrTextureObj,
    23     GrBufferObj::createGrBufferObj,
    24     GrRenderBufferObj::createGrRenderBufferObj,
    25     GrFrameBufferObj::createGrFrameBufferObj,
    26     GrShaderObj::createGrShaderObj,
    27     GrProgramObj::createGrProgramObj,
    28     GrTextureUnitObj::createGrTextureUnitObj,
    29     GrVertexArrayObj::createGrVertexArrayObj,
    30 };
    33 GrDebugGL::GrDebugGL()
    34     : fPackRowLength(0)
    35     , fUnPackRowLength(0)
    36     , fCurTextureUnit(0)
    37     , fArrayBuffer(NULL)
    38     , fElementArrayBuffer(NULL)
    39     , fFrameBuffer(NULL)
    40     , fRenderBuffer(NULL)
    41     , fProgram(NULL)
    42     , fTexture(NULL)
    43     , fVertexArray(NULL)  {
    45     for (int i = 0; i < kDefaultMaxTextureUnits; ++i) {
    47         fTextureUnits[i] = reinterpret_cast<GrTextureUnitObj *>(
    48                             createObj(GrDebugGL::kTextureUnit_ObjTypes));
    49         fTextureUnits[i]->ref();
    51         fTextureUnits[i]->setNumber(i);
    52     }
    53 }
    55 GrDebugGL::~GrDebugGL() {
    56     // unref & delete the texture units first so they don't show up on the leak report
    57     for (int i = 0; i < kDefaultMaxTextureUnits; ++i) {
    58         fTextureUnits[i]->unref();
    59         fTextureUnits[i]->deleteAction();
    60     }
    62     this->report();
    64     for (int i = 0; i < fObjects.count(); ++i) {
    65         delete fObjects[i];
    66     }
    67     fObjects.reset();
    69     fArrayBuffer = NULL;
    70     fElementArrayBuffer = NULL;
    71     fFrameBuffer = NULL;
    72     fRenderBuffer = NULL;
    73     fProgram = NULL;
    74     fTexture = NULL;
    75     fVertexArray = NULL;
    76 }
    78 GrFakeRefObj *GrDebugGL::findObject(GrGLuint ID, GrObjTypes type) {
    79     for (int i = 0; i < fObjects.count(); ++i) {
    80         if (fObjects[i]->getID() == ID) { // && fObjects[i]->getType() == type) {
    81             // The application shouldn't be accessing objects
    82             // that (as far as OpenGL knows) were already deleted
    83             GrAlwaysAssert(!fObjects[i]->getDeleted());
    84             GrAlwaysAssert(!fObjects[i]->getMarkedForDeletion());
    85             return fObjects[i];
    86         }
    87     }
    89     return NULL;
    90 }
    92 void GrDebugGL::setArrayBuffer(GrBufferObj *arrayBuffer) {
    93     if (fArrayBuffer) {
    94         // automatically break the binding of the old buffer
    95         GrAlwaysAssert(fArrayBuffer->getBound());
    96         fArrayBuffer->resetBound();
    98         GrAlwaysAssert(!fArrayBuffer->getDeleted());
    99         fArrayBuffer->unref();
   100     }
   102     fArrayBuffer = arrayBuffer;
   104     if (fArrayBuffer) {
   105         GrAlwaysAssert(!fArrayBuffer->getDeleted());
   106         fArrayBuffer->ref();
   108         GrAlwaysAssert(!fArrayBuffer->getBound());
   109         fArrayBuffer->setBound();
   110     }
   111 }
   113 void GrDebugGL::setVertexArray(GrVertexArrayObj* vertexArray) {
   114     if (NULL != vertexArray) {
   115         SkASSERT(!vertexArray->getDeleted());
   116     }
   117     SkRefCnt_SafeAssign(fVertexArray, vertexArray);
   118 }
   120 void GrDebugGL::setElementArrayBuffer(GrBufferObj *elementArrayBuffer) {
   121     if (fElementArrayBuffer) {
   122         // automatically break the binding of the old buffer
   123         GrAlwaysAssert(fElementArrayBuffer->getBound());
   124         fElementArrayBuffer->resetBound();
   126         GrAlwaysAssert(!fElementArrayBuffer->getDeleted());
   127         fElementArrayBuffer->unref();
   128     }
   130     fElementArrayBuffer = elementArrayBuffer;
   132     if (fElementArrayBuffer) {
   133         GrAlwaysAssert(!fElementArrayBuffer->getDeleted());
   134         fElementArrayBuffer->ref();
   136         GrAlwaysAssert(!fElementArrayBuffer->getBound());
   137         fElementArrayBuffer->setBound();
   138     }
   139 }
   141 void GrDebugGL::setTexture(GrTextureObj *texture)  {
   142     fTextureUnits[fCurTextureUnit]->setTexture(texture);
   143 }
   145 void GrDebugGL::setFrameBuffer(GrFrameBufferObj *frameBuffer)  {
   146     if (fFrameBuffer) {
   147         GrAlwaysAssert(fFrameBuffer->getBound());
   148         fFrameBuffer->resetBound();
   150         GrAlwaysAssert(!fFrameBuffer->getDeleted());
   151         fFrameBuffer->unref();
   152     }
   154     fFrameBuffer = frameBuffer;
   156     if (fFrameBuffer) {
   157         GrAlwaysAssert(!fFrameBuffer->getDeleted());
   158         fFrameBuffer->ref();
   160         GrAlwaysAssert(!fFrameBuffer->getBound());
   161         fFrameBuffer->setBound();
   162     }
   163 }
   165 void GrDebugGL::setRenderBuffer(GrRenderBufferObj *renderBuffer)  {
   166     if (fRenderBuffer) {
   167         GrAlwaysAssert(fRenderBuffer->getBound());
   168         fRenderBuffer->resetBound();
   170         GrAlwaysAssert(!fRenderBuffer->getDeleted());
   171         fRenderBuffer->unref();
   172     }
   174     fRenderBuffer = renderBuffer;
   176     if (fRenderBuffer) {
   177         GrAlwaysAssert(!fRenderBuffer->getDeleted());
   178         fRenderBuffer->ref();
   180         GrAlwaysAssert(!fRenderBuffer->getBound());
   181         fRenderBuffer->setBound();
   182     }
   183 }
   185 void GrDebugGL::useProgram(GrProgramObj *program) {
   186     if (fProgram) {
   187         GrAlwaysAssert(fProgram->getInUse());
   188         fProgram->resetInUse();
   190         GrAlwaysAssert(!fProgram->getDeleted());
   191         fProgram->unref();
   192     }
   194     fProgram = program;
   196     if (fProgram) {
   197         GrAlwaysAssert(!fProgram->getDeleted());
   198         fProgram->ref();
   200         GrAlwaysAssert(!fProgram->getInUse());
   201         fProgram->setInUse();
   202     }
   203 }
   205 void GrDebugGL::report() const {
   206     for (int i = 0; i < fObjects.count(); ++i) {
   207         GrAlwaysAssert(0 == fObjects[i]->getRefCount());
   208         GrAlwaysAssert(0 < fObjects[i]->getHighRefCount());
   209         GrAlwaysAssert(fObjects[i]->getDeleted());
   210     }
   211 }

mercurial