blob: f1511515197a00645252321d0e3620d1bd8953e8 [file] [log] [blame]
//
// Copyright (c) 2013 The ANGLE Project Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
//
// RenderbufferProxySet.h: Defines the gl::RenderbufferProxySet, a class for
// maintaining a Texture's weak references to the Renderbuffers that represent it.
#ifndef LIBGLESV2_RENDERBUFFERPROXYSET_H_
#define LIBGLESV2_RENDERBUFFERPROXYSET_H_
#include <map>
namespace gl
{
class FramebufferAttachment;
class RenderbufferProxySet
{
public:
void addRef(const FramebufferAttachment *proxy);
void release(const FramebufferAttachment *proxy);
void add(unsigned int mipLevel, unsigned int layer, FramebufferAttachment *renderBuffer);
FramebufferAttachment *get(unsigned int mipLevel, unsigned int layer) const;
private:
struct RenderbufferKey
{
unsigned int mipLevel;
unsigned int layer;
bool operator<(const RenderbufferKey &other) const;
};
typedef std::map<RenderbufferKey, FramebufferAttachment*> BufferMap;
BufferMap mBufferMap;
typedef std::map<const FramebufferAttachment*, unsigned int> RefCountMap;
RefCountMap mRefCountMap;
};
}
#endif // LIBGLESV2_RENDERBUFFERPROXYSET_H_