summaryrefslogtreecommitdiffstats
path: root/src/3rdparty/angle/src/libANGLE/ResourceManager.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/3rdparty/angle/src/libANGLE/ResourceManager.h')
-rw-r--r--src/3rdparty/angle/src/libANGLE/ResourceManager.h289
1 files changed, 0 insertions, 289 deletions
diff --git a/src/3rdparty/angle/src/libANGLE/ResourceManager.h b/src/3rdparty/angle/src/libANGLE/ResourceManager.h
deleted file mode 100644
index 2dfeff5234..0000000000
--- a/src/3rdparty/angle/src/libANGLE/ResourceManager.h
+++ /dev/null
@@ -1,289 +0,0 @@
-//
-// Copyright (c) 2002-2016 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.
-//
-
-// ResourceManager.h : Defines the ResourceManager classes, which handle allocation and lifetime of
-// GL objects.
-
-#ifndef LIBANGLE_RESOURCEMANAGER_H_
-#define LIBANGLE_RESOURCEMANAGER_H_
-
-#include "angle_gl.h"
-#include "common/angleutils.h"
-#include "libANGLE/Error.h"
-#include "libANGLE/HandleAllocator.h"
-#include "libANGLE/HandleRangeAllocator.h"
-#include "libANGLE/ResourceMap.h"
-
-namespace rx
-{
-class GLImplFactory;
-}
-
-namespace gl
-{
-class Buffer;
-struct Caps;
-class Context;
-class Sync;
-class Framebuffer;
-struct Limitations;
-class Path;
-class Program;
-class ProgramPipeline;
-class Renderbuffer;
-class Sampler;
-class Shader;
-class Texture;
-
-template <typename HandleAllocatorType>
-class ResourceManagerBase : angle::NonCopyable
-{
- public:
- ResourceManagerBase();
-
- void addRef();
- void release(const Context *context);
-
- protected:
- virtual void reset(const Context *context) = 0;
- virtual ~ResourceManagerBase() {}
-
- HandleAllocatorType mHandleAllocator;
-
- private:
- size_t mRefCount;
-};
-
-template <typename ResourceType, typename HandleAllocatorType, typename ImplT>
-class TypedResourceManager : public ResourceManagerBase<HandleAllocatorType>
-{
- public:
- TypedResourceManager() {}
-
- void deleteObject(const Context *context, GLuint handle);
- bool isHandleGenerated(GLuint handle) const
- {
- // Zero is always assumed to have been generated implicitly.
- return handle == 0 || mObjectMap.contains(handle);
- }
-
- protected:
- ~TypedResourceManager() override;
-
- // Inlined in the header for performance.
- template <typename... ArgTypes>
- ResourceType *checkObjectAllocation(rx::GLImplFactory *factory, GLuint handle, ArgTypes... args)
- {
- ResourceType *value = mObjectMap.query(handle);
- if (value)
- {
- return value;
- }
-
- if (handle == 0)
- {
- return nullptr;
- }
-
- ResourceType *object = ImplT::AllocateNewObject(factory, handle, args...);
-
- if (!mObjectMap.contains(handle))
- {
- this->mHandleAllocator.reserve(handle);
- }
- mObjectMap.assign(handle, object);
-
- return object;
- }
-
- void reset(const Context *context) override;
-
- ResourceMap<ResourceType> mObjectMap;
-};
-
-class BufferManager : public TypedResourceManager<Buffer, HandleAllocator, BufferManager>
-{
- public:
- GLuint createBuffer();
- Buffer *getBuffer(GLuint handle) const;
-
- Buffer *checkBufferAllocation(rx::GLImplFactory *factory, GLuint handle)
- {
- return checkObjectAllocation(factory, handle);
- }
-
- // TODO(jmadill): Investigate design which doesn't expose these methods publicly.
- static Buffer *AllocateNewObject(rx::GLImplFactory *factory, GLuint handle);
- static void DeleteObject(const Context *context, Buffer *buffer);
-
- protected:
- ~BufferManager() override {}
-};
-
-class ShaderProgramManager : public ResourceManagerBase<HandleAllocator>
-{
- public:
- ShaderProgramManager();
-
- GLuint createShader(rx::GLImplFactory *factory,
- const Limitations &rendererLimitations,
- GLenum type);
- void deleteShader(const Context *context, GLuint shader);
- Shader *getShader(GLuint handle) const;
-
- GLuint createProgram(rx::GLImplFactory *factory);
- void deleteProgram(const Context *context, GLuint program);
- Program *getProgram(GLuint handle) const;
-
- protected:
- ~ShaderProgramManager() override;
-
- private:
- template <typename ObjectType>
- void deleteObject(const Context *context, ResourceMap<ObjectType> *objectMap, GLuint id);
-
- void reset(const Context *context) override;
-
- ResourceMap<Shader> mShaders;
- ResourceMap<Program> mPrograms;
-};
-
-class TextureManager : public TypedResourceManager<Texture, HandleAllocator, TextureManager>
-{
- public:
- GLuint createTexture();
- Texture *getTexture(GLuint handle) const;
-
- void signalAllTexturesDirty() const;
-
- Texture *checkTextureAllocation(rx::GLImplFactory *factory, GLuint handle, GLenum target)
- {
- return checkObjectAllocation(factory, handle, target);
- }
-
- static Texture *AllocateNewObject(rx::GLImplFactory *factory, GLuint handle, GLenum target);
- static void DeleteObject(const Context *context, Texture *texture);
-
- protected:
- ~TextureManager() override {}
-};
-
-class RenderbufferManager
- : public TypedResourceManager<Renderbuffer, HandleAllocator, RenderbufferManager>
-{
- public:
- GLuint createRenderbuffer();
- Renderbuffer *getRenderbuffer(GLuint handle) const;
-
- Renderbuffer *checkRenderbufferAllocation(rx::GLImplFactory *factory, GLuint handle)
- {
- return checkObjectAllocation(factory, handle);
- }
-
- static Renderbuffer *AllocateNewObject(rx::GLImplFactory *factory, GLuint handle);
- static void DeleteObject(const Context *context, Renderbuffer *renderbuffer);
-
- protected:
- ~RenderbufferManager() override {}
-};
-
-class SamplerManager : public TypedResourceManager<Sampler, HandleAllocator, SamplerManager>
-{
- public:
- GLuint createSampler();
- Sampler *getSampler(GLuint handle) const;
- bool isSampler(GLuint sampler) const;
-
- Sampler *checkSamplerAllocation(rx::GLImplFactory *factory, GLuint handle)
- {
- return checkObjectAllocation(factory, handle);
- }
-
- static Sampler *AllocateNewObject(rx::GLImplFactory *factory, GLuint handle);
- static void DeleteObject(const Context *context, Sampler *sampler);
-
- protected:
- ~SamplerManager() override {}
-};
-
-class SyncManager : public TypedResourceManager<Sync, HandleAllocator, SyncManager>
-{
- public:
- GLuint createSync(rx::GLImplFactory *factory);
- Sync *getSync(GLuint handle) const;
-
- static void DeleteObject(const Context *context, Sync *sync);
-
- protected:
- ~SyncManager() override {}
-};
-
-class PathManager : public ResourceManagerBase<HandleRangeAllocator>
-{
- public:
- PathManager();
-
- ErrorOrResult<GLuint> createPaths(rx::GLImplFactory *factory, GLsizei range);
- void deletePaths(GLuint first, GLsizei range);
- Path *getPath(GLuint handle) const;
- bool hasPath(GLuint handle) const;
-
- protected:
- ~PathManager() override;
- void reset(const Context *context) override;
-
- private:
- ResourceMap<Path> mPaths;
-};
-
-class FramebufferManager
- : public TypedResourceManager<Framebuffer, HandleAllocator, FramebufferManager>
-{
- public:
- GLuint createFramebuffer();
- Framebuffer *getFramebuffer(GLuint handle) const;
- void setDefaultFramebuffer(Framebuffer *framebuffer);
-
- void invalidateFramebufferComplenessCache() const;
-
- Framebuffer *checkFramebufferAllocation(rx::GLImplFactory *factory,
- const Caps &caps,
- GLuint handle)
- {
- return checkObjectAllocation<const Caps &>(factory, handle, caps);
- }
-
- static Framebuffer *AllocateNewObject(rx::GLImplFactory *factory,
- GLuint handle,
- const Caps &caps);
- static void DeleteObject(const Context *context, Framebuffer *framebuffer);
-
- protected:
- ~FramebufferManager() override {}
-};
-
-class ProgramPipelineManager
- : public TypedResourceManager<ProgramPipeline, HandleAllocator, ProgramPipelineManager>
-{
- public:
- GLuint createProgramPipeline();
- ProgramPipeline *getProgramPipeline(GLuint handle) const;
-
- ProgramPipeline *checkProgramPipelineAllocation(rx::GLImplFactory *factory, GLuint handle)
- {
- return checkObjectAllocation(factory, handle);
- }
-
- static ProgramPipeline *AllocateNewObject(rx::GLImplFactory *factory, GLuint handle);
- static void DeleteObject(const Context *context, ProgramPipeline *pipeline);
-
- protected:
- ~ProgramPipelineManager() override {}
-};
-
-} // namespace gl
-
-#endif // LIBANGLE_RESOURCEMANAGER_H_