• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 //
2 // Copyright (c) 2013 The ANGLE Project Authors. All rights reserved.
3 // Use of this source code is governed by a BSD-style license that can be
4 // found in the LICENSE file.
5 //
6 
7 // RenderbufferProxySet.h: Defines the gl::RenderbufferProxySet, a class for
8 // maintaining a Texture's weak references to the Renderbuffers that represent it.
9 
10 #ifndef LIBGLESV2_RENDERBUFFERPROXYSET_H_
11 #define LIBGLESV2_RENDERBUFFERPROXYSET_H_
12 
13 #include <map>
14 
15 namespace gl
16 {
17 class FramebufferAttachment;
18 
19 class RenderbufferProxySet
20 {
21   public:
22     void addRef(const FramebufferAttachment *proxy);
23     void release(const FramebufferAttachment *proxy);
24 
25     void add(unsigned int mipLevel, unsigned int layer, FramebufferAttachment *renderBuffer);
26     FramebufferAttachment *get(unsigned int mipLevel, unsigned int layer) const;
27 
28   private:
29     struct RenderbufferKey
30     {
31         unsigned int mipLevel;
32         unsigned int layer;
33 
34         bool operator<(const RenderbufferKey &other) const;
35     };
36 
37     typedef std::map<RenderbufferKey, FramebufferAttachment*> BufferMap;
38     BufferMap mBufferMap;
39 
40     typedef std::map<const FramebufferAttachment*, unsigned int> RefCountMap;
41     RefCountMap mRefCountMap;
42 };
43 
44 }
45 
46 #endif // LIBGLESV2_RENDERBUFFERPROXYSET_H_
47