summaryrefslogtreecommitdiffstats
path: root/src/3rdparty/angle/src/libGLESv2/ResourceManager.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/3rdparty/angle/src/libGLESv2/ResourceManager.cpp')
-rw-r--r--src/3rdparty/angle/src/libGLESv2/ResourceManager.cpp427
1 files changed, 0 insertions, 427 deletions
diff --git a/src/3rdparty/angle/src/libGLESv2/ResourceManager.cpp b/src/3rdparty/angle/src/libGLESv2/ResourceManager.cpp
deleted file mode 100644
index 38d53cad81..0000000000
--- a/src/3rdparty/angle/src/libGLESv2/ResourceManager.cpp
+++ /dev/null
@@ -1,427 +0,0 @@
-//
-// Copyright (c) 2002-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.
-//
-
-// ResourceManager.cpp: Implements the gl::ResourceManager class, which tracks and
-// retrieves objects which may be shared by multiple Contexts.
-
-#include "libGLESv2/ResourceManager.h"
-
-#include "libGLESv2/Buffer.h"
-#include "libGLESv2/Program.h"
-#include "libGLESv2/Renderbuffer.h"
-#include "libGLESv2/Shader.h"
-#include "libGLESv2/Texture.h"
-#include "libGLESv2/Sampler.h"
-#include "libGLESv2/Fence.h"
-#include "libGLESv2/renderer/Renderer.h"
-
-namespace gl
-{
-ResourceManager::ResourceManager(rx::Renderer *renderer)
- : mRenderer(renderer),
- mRefCount(1)
-{
-}
-
-ResourceManager::~ResourceManager()
-{
- while (!mBufferMap.empty())
- {
- deleteBuffer(mBufferMap.begin()->first);
- }
-
- while (!mProgramMap.empty())
- {
- deleteProgram(mProgramMap.begin()->first);
- }
-
- while (!mShaderMap.empty())
- {
- deleteShader(mShaderMap.begin()->first);
- }
-
- while (!mRenderbufferMap.empty())
- {
- deleteRenderbuffer(mRenderbufferMap.begin()->first);
- }
-
- while (!mTextureMap.empty())
- {
- deleteTexture(mTextureMap.begin()->first);
- }
-
- while (!mSamplerMap.empty())
- {
- deleteSampler(mSamplerMap.begin()->first);
- }
-
- while (!mFenceSyncMap.empty())
- {
- deleteFenceSync(mFenceSyncMap.begin()->first);
- }
-}
-
-void ResourceManager::addRef()
-{
- mRefCount++;
-}
-
-void ResourceManager::release()
-{
- if (--mRefCount == 0)
- {
- delete this;
- }
-}
-
-// Returns an unused buffer name
-GLuint ResourceManager::createBuffer()
-{
- GLuint handle = mBufferHandleAllocator.allocate();
-
- mBufferMap[handle] = NULL;
-
- return handle;
-}
-
-// Returns an unused shader/program name
-GLuint ResourceManager::createShader(const gl::Data &data, GLenum type)
-{
- GLuint handle = mProgramShaderHandleAllocator.allocate();
-
- if (type == GL_VERTEX_SHADER || type == GL_FRAGMENT_SHADER)
- {
- mShaderMap[handle] = new Shader(this, mRenderer->createShader(data, type), type, handle);
- }
- else UNREACHABLE();
-
- return handle;
-}
-
-// Returns an unused program/shader name
-GLuint ResourceManager::createProgram()
-{
- GLuint handle = mProgramShaderHandleAllocator.allocate();
-
- mProgramMap[handle] = new Program(mRenderer, this, handle);
-
- return handle;
-}
-
-// Returns an unused texture name
-GLuint ResourceManager::createTexture()
-{
- GLuint handle = mTextureHandleAllocator.allocate();
-
- mTextureMap[handle] = NULL;
-
- return handle;
-}
-
-// Returns an unused renderbuffer name
-GLuint ResourceManager::createRenderbuffer()
-{
- GLuint handle = mRenderbufferHandleAllocator.allocate();
-
- mRenderbufferMap[handle] = NULL;
-
- return handle;
-}
-
-// Returns an unused sampler name
-GLuint ResourceManager::createSampler()
-{
- GLuint handle = mSamplerHandleAllocator.allocate();
-
- mSamplerMap[handle] = NULL;
-
- return handle;
-}
-
-// Returns the next unused fence name, and allocates the fence
-GLuint ResourceManager::createFenceSync()
-{
- GLuint handle = mFenceSyncHandleAllocator.allocate();
-
- FenceSync *fenceSync = new FenceSync(mRenderer->createFenceSync(), handle);
- fenceSync->addRef();
- mFenceSyncMap[handle] = fenceSync;
-
- return handle;
-}
-
-void ResourceManager::deleteBuffer(GLuint buffer)
-{
- BufferMap::iterator bufferObject = mBufferMap.find(buffer);
-
- if (bufferObject != mBufferMap.end())
- {
- mBufferHandleAllocator.release(bufferObject->first);
- if (bufferObject->second) bufferObject->second->release();
- mBufferMap.erase(bufferObject);
- }
-}
-
-void ResourceManager::deleteShader(GLuint shader)
-{
- ShaderMap::iterator shaderObject = mShaderMap.find(shader);
-
- if (shaderObject != mShaderMap.end())
- {
- if (shaderObject->second->getRefCount() == 0)
- {
- mProgramShaderHandleAllocator.release(shaderObject->first);
- delete shaderObject->second;
- mShaderMap.erase(shaderObject);
- }
- else
- {
- shaderObject->second->flagForDeletion();
- }
- }
-}
-
-void ResourceManager::deleteProgram(GLuint program)
-{
- ProgramMap::iterator programObject = mProgramMap.find(program);
-
- if (programObject != mProgramMap.end())
- {
- if (programObject->second->getRefCount() == 0)
- {
- mProgramShaderHandleAllocator.release(programObject->first);
- delete programObject->second;
- mProgramMap.erase(programObject);
- }
- else
- {
- programObject->second->flagForDeletion();
- }
- }
-}
-
-void ResourceManager::deleteTexture(GLuint texture)
-{
- TextureMap::iterator textureObject = mTextureMap.find(texture);
-
- if (textureObject != mTextureMap.end())
- {
- mTextureHandleAllocator.release(textureObject->first);
- if (textureObject->second) textureObject->second->release();
- mTextureMap.erase(textureObject);
- }
-}
-
-void ResourceManager::deleteRenderbuffer(GLuint renderbuffer)
-{
- RenderbufferMap::iterator renderbufferObject = mRenderbufferMap.find(renderbuffer);
-
- if (renderbufferObject != mRenderbufferMap.end())
- {
- mRenderbufferHandleAllocator.release(renderbufferObject->first);
- if (renderbufferObject->second) renderbufferObject->second->release();
- mRenderbufferMap.erase(renderbufferObject);
- }
-}
-
-void ResourceManager::deleteSampler(GLuint sampler)
-{
- auto samplerObject = mSamplerMap.find(sampler);
-
- if (samplerObject != mSamplerMap.end())
- {
- mSamplerHandleAllocator.release(samplerObject->first);
- if (samplerObject->second) samplerObject->second->release();
- mSamplerMap.erase(samplerObject);
- }
-}
-
-void ResourceManager::deleteFenceSync(GLuint fenceSync)
-{
- auto fenceObjectIt = mFenceSyncMap.find(fenceSync);
-
- if (fenceObjectIt != mFenceSyncMap.end())
- {
- mFenceSyncHandleAllocator.release(fenceObjectIt->first);
- if (fenceObjectIt->second) fenceObjectIt->second->release();
- mFenceSyncMap.erase(fenceObjectIt);
- }
-}
-
-Buffer *ResourceManager::getBuffer(unsigned int handle)
-{
- BufferMap::iterator buffer = mBufferMap.find(handle);
-
- if (buffer == mBufferMap.end())
- {
- return NULL;
- }
- else
- {
- return buffer->second;
- }
-}
-
-Shader *ResourceManager::getShader(unsigned int handle)
-{
- ShaderMap::iterator shader = mShaderMap.find(handle);
-
- if (shader == mShaderMap.end())
- {
- return NULL;
- }
- else
- {
- return shader->second;
- }
-}
-
-Texture *ResourceManager::getTexture(unsigned int handle)
-{
- if (handle == 0) return NULL;
-
- TextureMap::iterator texture = mTextureMap.find(handle);
-
- if (texture == mTextureMap.end())
- {
- return NULL;
- }
- else
- {
- return texture->second;
- }
-}
-
-Program *ResourceManager::getProgram(unsigned int handle) const
-{
- ProgramMap::const_iterator program = mProgramMap.find(handle);
-
- if (program == mProgramMap.end())
- {
- return NULL;
- }
- else
- {
- return program->second;
- }
-}
-
-Renderbuffer *ResourceManager::getRenderbuffer(unsigned int handle)
-{
- RenderbufferMap::iterator renderbuffer = mRenderbufferMap.find(handle);
-
- if (renderbuffer == mRenderbufferMap.end())
- {
- return NULL;
- }
- else
- {
- return renderbuffer->second;
- }
-}
-
-Sampler *ResourceManager::getSampler(unsigned int handle)
-{
- auto sampler = mSamplerMap.find(handle);
-
- if (sampler == mSamplerMap.end())
- {
- return NULL;
- }
- else
- {
- return sampler->second;
- }
-}
-
-FenceSync *ResourceManager::getFenceSync(unsigned int handle)
-{
- auto fenceObjectIt = mFenceSyncMap.find(handle);
-
- if (fenceObjectIt == mFenceSyncMap.end())
- {
- return NULL;
- }
- else
- {
- return fenceObjectIt->second;
- }
-}
-
-void ResourceManager::setRenderbuffer(GLuint handle, Renderbuffer *buffer)
-{
- mRenderbufferMap[handle] = buffer;
-}
-
-void ResourceManager::checkBufferAllocation(unsigned int buffer)
-{
- if (buffer != 0 && !getBuffer(buffer))
- {
- Buffer *bufferObject = new Buffer(mRenderer->createBuffer(), buffer);
- mBufferMap[buffer] = bufferObject;
- bufferObject->addRef();
- }
-}
-
-void ResourceManager::checkTextureAllocation(GLuint texture, GLenum type)
-{
- if (!getTexture(texture) && texture != 0)
- {
- Texture *textureObject;
-
- if (type == GL_TEXTURE_2D)
- {
- textureObject = new Texture2D(mRenderer->createTexture(GL_TEXTURE_2D), texture);
- }
- else if (type == GL_TEXTURE_CUBE_MAP)
- {
- textureObject = new TextureCubeMap(mRenderer->createTexture(GL_TEXTURE_CUBE_MAP), texture);
- }
- else if (type == GL_TEXTURE_3D)
- {
- textureObject = new Texture3D(mRenderer->createTexture(GL_TEXTURE_3D), texture);
- }
- else if (type == GL_TEXTURE_2D_ARRAY)
- {
- textureObject = new Texture2DArray(mRenderer->createTexture(GL_TEXTURE_2D_ARRAY), texture);
- }
- else
- {
- UNREACHABLE();
- return;
- }
-
- mTextureMap[texture] = textureObject;
- textureObject->addRef();
- }
-}
-
-void ResourceManager::checkRenderbufferAllocation(GLuint renderbuffer)
-{
- if (renderbuffer != 0 && !getRenderbuffer(renderbuffer))
- {
- Renderbuffer *renderbufferObject = new Renderbuffer(mRenderer->createRenderbuffer(), renderbuffer);
- mRenderbufferMap[renderbuffer] = renderbufferObject;
- renderbufferObject->addRef();
- }
-}
-
-void ResourceManager::checkSamplerAllocation(GLuint sampler)
-{
- if (sampler != 0 && !getSampler(sampler))
- {
- Sampler *samplerObject = new Sampler(sampler);
- mSamplerMap[sampler] = samplerObject;
- samplerObject->addRef();
- }
-}
-
-bool ResourceManager::isSampler(GLuint sampler)
-{
- return mSamplerMap.find(sampler) != mSamplerMap.end();
-}
-
-}