653e23fdbcfe8da7b48ebf5a72ad08968caacdee
[platform/upstream/libSkiaSharp.git] / src / gpu / gl / debug / GrTextureObj.h
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 #ifndef GrTextureObj_DEFINED
10 #define GrTextureObj_DEFINED
11
12 #include "GrFBBindableObj.h"
13
14 class GrTextureUnitObj;
15
16 ////////////////////////////////////////////////////////////////////////////////
17 class GrTextureObj : public GrFBBindableObj {
18     GR_DEFINE_CREATOR(GrTextureObj);
19
20 public:
21     GrTextureObj()
22         : GrFBBindableObj() {
23     }
24
25     virtual ~GrTextureObj() {
26         GrAlwaysAssert(0 == fTextureUnitReferees.count());
27     }
28
29     void setBound(GrTextureUnitObj *referee) {
30         fTextureUnitReferees.append(1, &referee);
31     }
32
33     void resetBound(GrTextureUnitObj *referee) {
34         int index = fTextureUnitReferees.find(referee);
35         GrAlwaysAssert(0 <= index);
36         fTextureUnitReferees.removeShuffle(index);
37     }
38     bool getBound(GrTextureUnitObj *referee) const {
39         int index = fTextureUnitReferees.find(referee);
40         return 0 <= index;
41     }
42     bool getBound() const {
43         return 0 != fTextureUnitReferees.count();
44     }
45
46     void deleteAction() SK_OVERRIDE;
47
48 protected:
49
50 private:
51     // texture units that bind this texture (via "glBindTexture")
52     SkTDArray<GrTextureUnitObj *> fTextureUnitReferees;
53
54     typedef GrFBBindableObj INHERITED;
55 };
56
57 #endif // GrTextureObj_DEFINED