• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 
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  */
8 
9 #include "GrFrameBufferObj.h"
10 #include "GrFBBindableObj.h"
11 
setColor(GrFBBindableObj * buffer)12 void GrFrameBufferObj::setColor(GrFBBindableObj *buffer) {
13     if (fColorBuffer) {
14         // automatically break the binding of the old buffer
15         GrAlwaysAssert(fColorBuffer->getColorBound(this));
16         fColorBuffer->resetColorBound(this);
17 
18         GrAlwaysAssert(!fColorBuffer->getDeleted());
19         fColorBuffer->unref();
20     }
21     fColorBuffer = buffer;
22     if (fColorBuffer) {
23         GrAlwaysAssert(!fColorBuffer->getDeleted());
24         fColorBuffer->ref();
25 
26         GrAlwaysAssert(!fColorBuffer->getColorBound(this));
27         fColorBuffer->setColorBound(this);
28     }
29 }
30 
setDepth(GrFBBindableObj * buffer)31 void GrFrameBufferObj::setDepth(GrFBBindableObj *buffer) {
32     if (fDepthBuffer) {
33         // automatically break the binding of the old buffer
34         GrAlwaysAssert(fDepthBuffer->getDepthBound(this));
35         fDepthBuffer->resetDepthBound(this);
36 
37         GrAlwaysAssert(!fDepthBuffer->getDeleted());
38         fDepthBuffer->unref();
39     }
40     fDepthBuffer = buffer;
41     if (fDepthBuffer) {
42         GrAlwaysAssert(!fDepthBuffer->getDeleted());
43         fDepthBuffer->ref();
44 
45         GrAlwaysAssert(!fDepthBuffer->getDepthBound(this));
46         fDepthBuffer->setDepthBound(this);
47     }
48 }
49 
setStencil(GrFBBindableObj * buffer)50 void GrFrameBufferObj::setStencil(GrFBBindableObj *buffer) {
51     if (fStencilBuffer) {
52         // automatically break the binding of the old buffer
53         GrAlwaysAssert(fStencilBuffer->getStencilBound(this));
54         fStencilBuffer->resetStencilBound(this);
55 
56         //GrAlwaysAssert(!fStencilBuffer->getDeleted());
57         fStencilBuffer->unref();
58     }
59     fStencilBuffer = buffer;
60     if (fStencilBuffer) {
61         GrAlwaysAssert(!fStencilBuffer->getDeleted());
62         fStencilBuffer->ref();
63 
64         GrAlwaysAssert(!fStencilBuffer->getStencilBound(this));
65         fStencilBuffer->setStencilBound(this);
66     }
67 }
68