From e826ef020ff7d64878b98cf24e8acbc0e1bc99aa Mon Sep 17 00:00:00 2001 From: Nicolas Capens Date: Thu, 2 Apr 2015 14:43:13 -0400 Subject: [PATCH] Refactor GL objects into named and unnamed ones. MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Bug 20045861 Change-Id: Ib6a6625d3eb876a1444ae4dab17c6e25246fbc43 Reviewed-on: https://swiftshader-review.googlesource.com/2794 Tested-by: Nicolas Capens Reviewed-by: Alexis Hétu Reviewed-by: Nicolas Capens --- src/OpenGL/common/Object.cpp | 10 +++++++++- src/OpenGL/common/Object.hpp | 13 ++++++++++--- src/OpenGL/libEGL/Texture.hpp | 4 ++-- src/OpenGL/libGL/Buffer.cpp | 2 +- src/OpenGL/libGL/Buffer.h | 2 +- src/OpenGL/libGL/Query.cpp | 2 +- src/OpenGL/libGL/Query.h | 2 +- src/OpenGL/libGL/Renderbuffer.cpp | 2 +- src/OpenGL/libGL/Renderbuffer.h | 2 +- src/OpenGL/libGL/Texture.cpp | 2 +- src/OpenGL/libGL/Texture.h | 2 +- src/OpenGL/libGLES_CM/Buffer.cpp | 2 +- src/OpenGL/libGLES_CM/Buffer.h | 2 +- src/OpenGL/libGLES_CM/Renderbuffer.cpp | 2 +- src/OpenGL/libGLES_CM/Renderbuffer.h | 2 +- src/OpenGL/libGLESv2/Buffer.cpp | 2 +- src/OpenGL/libGLESv2/Buffer.h | 2 +- src/OpenGL/libGLESv2/Query.cpp | 2 +- src/OpenGL/libGLESv2/Query.h | 2 +- src/OpenGL/libGLESv2/Renderbuffer.cpp | 2 +- src/OpenGL/libGLESv2/Renderbuffer.h | 2 +- src/OpenGL/libGLESv2/Sampler.h | 4 ++-- src/OpenGL/libGLESv2/TransformFeedback.cpp | 2 +- src/OpenGL/libGLESv2/TransformFeedback.h | 2 +- 24 files changed, 43 insertions(+), 28 deletions(-) diff --git a/src/OpenGL/common/Object.cpp b/src/OpenGL/common/Object.cpp index d9a868a6d..c8118b376 100644 --- a/src/OpenGL/common/Object.cpp +++ b/src/OpenGL/common/Object.cpp @@ -20,7 +20,7 @@ namespace gl { -Object::Object(GLuint name) : name(name) +Object::Object() { referenceCount = 0; } @@ -50,4 +50,12 @@ void Object::release() } } +NamedObject::NamedObject(GLuint name) : name(name) +{ +} + +NamedObject::~NamedObject() +{ +} + } diff --git a/src/OpenGL/common/Object.hpp b/src/OpenGL/common/Object.hpp index b1921d7e4..8c8ee7c1e 100644 --- a/src/OpenGL/common/Object.hpp +++ b/src/OpenGL/common/Object.hpp @@ -26,18 +26,25 @@ namespace gl class Object { public: - explicit Object(GLuint name); + Object(); virtual ~Object(); virtual void addRef(); virtual void release(); - - const GLuint name; private: volatile int referenceCount; }; +class NamedObject : public Object +{ +public: + explicit NamedObject(GLuint name); + virtual ~NamedObject(); + + const GLuint name; +}; + template class BindingPointer { diff --git a/src/OpenGL/libEGL/Texture.hpp b/src/OpenGL/libEGL/Texture.hpp index 164c48073..958a59567 100644 --- a/src/OpenGL/libEGL/Texture.hpp +++ b/src/OpenGL/libEGL/Texture.hpp @@ -5,10 +5,10 @@ namespace egl { -class Texture : public gl::Object +class Texture : public gl::NamedObject { public: - Texture(GLuint name) : Object(name) {}; + Texture(GLuint name) : NamedObject(name) {}; virtual void releaseTexImage() = 0; }; } diff --git a/src/OpenGL/libGL/Buffer.cpp b/src/OpenGL/libGL/Buffer.cpp index 7c7b3f14f..f4d7a5222 100644 --- a/src/OpenGL/libGL/Buffer.cpp +++ b/src/OpenGL/libGL/Buffer.cpp @@ -21,7 +21,7 @@ namespace gl { -Buffer::Buffer(GLuint name) : Object(name) +Buffer::Buffer(GLuint name) : NamedObject(name) { mContents = 0; mSize = 0; diff --git a/src/OpenGL/libGL/Buffer.h b/src/OpenGL/libGL/Buffer.h index 6e6a1eece..dcccc3de7 100644 --- a/src/OpenGL/libGL/Buffer.h +++ b/src/OpenGL/libGL/Buffer.h @@ -29,7 +29,7 @@ namespace gl { -class Buffer : public Object +class Buffer : public NamedObject { public: explicit Buffer(GLuint name); diff --git a/src/OpenGL/libGL/Query.cpp b/src/OpenGL/libGL/Query.cpp index be97611e6..9ef0790c1 100644 --- a/src/OpenGL/libGL/Query.cpp +++ b/src/OpenGL/libGL/Query.cpp @@ -19,7 +19,7 @@ namespace gl { -Query::Query(GLuint name, GLenum type) : Object(name) +Query::Query(GLuint name, GLenum type) : NamedObject(name) { mQuery = NULL; mStatus = GL_FALSE; diff --git a/src/OpenGL/libGL/Query.h b/src/OpenGL/libGL/Query.h index 6efd4fd91..138e488cc 100644 --- a/src/OpenGL/libGL/Query.h +++ b/src/OpenGL/libGL/Query.h @@ -26,7 +26,7 @@ namespace gl { -class Query : public Object +class Query : public NamedObject { public: Query(GLuint name, GLenum type); diff --git a/src/OpenGL/libGL/Renderbuffer.cpp b/src/OpenGL/libGL/Renderbuffer.cpp index db4937154..95887b5e9 100644 --- a/src/OpenGL/libGL/Renderbuffer.cpp +++ b/src/OpenGL/libGL/Renderbuffer.cpp @@ -180,7 +180,7 @@ GLsizei RenderbufferTextureCubeMap::getSamples() const ////// Renderbuffer Implementation ////// -Renderbuffer::Renderbuffer(GLuint name, RenderbufferInterface *instance) : Object(name) +Renderbuffer::Renderbuffer(GLuint name, RenderbufferInterface *instance) : NamedObject(name) { ASSERT(instance != NULL); mInstance = instance; diff --git a/src/OpenGL/libGL/Renderbuffer.h b/src/OpenGL/libGL/Renderbuffer.h index 62b9e0ac6..50b7afbe6 100644 --- a/src/OpenGL/libGL/Renderbuffer.h +++ b/src/OpenGL/libGL/Renderbuffer.h @@ -134,7 +134,7 @@ protected: // Renderbuffer implements the GL renderbuffer object. // It's only a proxy for a RenderbufferInterface instance; the internal object // can change whenever glRenderbufferStorage is called. -class Renderbuffer : public Object +class Renderbuffer : public NamedObject { public: Renderbuffer(GLuint name, RenderbufferInterface *storage); diff --git a/src/OpenGL/libGL/Texture.cpp b/src/OpenGL/libGL/Texture.cpp index 137b39faa..74c1daaa7 100644 --- a/src/OpenGL/libGL/Texture.cpp +++ b/src/OpenGL/libGL/Texture.cpp @@ -27,7 +27,7 @@ namespace gl { -Texture::Texture(GLuint name) : Object(name) +Texture::Texture(GLuint name) : NamedObject(name) { mMinFilter = GL_NEAREST_MIPMAP_LINEAR; mMagFilter = GL_LINEAR; diff --git a/src/OpenGL/libGL/Texture.h b/src/OpenGL/libGL/Texture.h index 82327f203..2a524b54e 100644 --- a/src/OpenGL/libGL/Texture.h +++ b/src/OpenGL/libGL/Texture.h @@ -44,7 +44,7 @@ enum IMPLEMENTATION_MAX_SAMPLES = 4 }; -class Texture : public Object +class Texture : public NamedObject { public: explicit Texture(GLuint name); diff --git a/src/OpenGL/libGLES_CM/Buffer.cpp b/src/OpenGL/libGLES_CM/Buffer.cpp index 15b6978c0..7377d0371 100644 --- a/src/OpenGL/libGLES_CM/Buffer.cpp +++ b/src/OpenGL/libGLES_CM/Buffer.cpp @@ -22,7 +22,7 @@ namespace es1 { -Buffer::Buffer(GLuint name) : Object(name) +Buffer::Buffer(GLuint name) : NamedObject(name) { mContents = 0; mSize = 0; diff --git a/src/OpenGL/libGLES_CM/Buffer.h b/src/OpenGL/libGLES_CM/Buffer.h index b0dfce877..e43ab87ea 100644 --- a/src/OpenGL/libGLES_CM/Buffer.h +++ b/src/OpenGL/libGLES_CM/Buffer.h @@ -27,7 +27,7 @@ namespace es1 { -class Buffer : public gl::Object +class Buffer : public gl::NamedObject { public: explicit Buffer(GLuint name); diff --git a/src/OpenGL/libGLES_CM/Renderbuffer.cpp b/src/OpenGL/libGLES_CM/Renderbuffer.cpp index 070a7a620..44a0b26f2 100644 --- a/src/OpenGL/libGLES_CM/Renderbuffer.cpp +++ b/src/OpenGL/libGLES_CM/Renderbuffer.cpp @@ -136,7 +136,7 @@ GLsizei RenderbufferTexture2D::getSamples() const ////// Renderbuffer Implementation ////// -Renderbuffer::Renderbuffer(GLuint name, RenderbufferInterface *instance) : Object(name) +Renderbuffer::Renderbuffer(GLuint name, RenderbufferInterface *instance) : NamedObject(name) { ASSERT(instance != NULL); mInstance = instance; diff --git a/src/OpenGL/libGLES_CM/Renderbuffer.h b/src/OpenGL/libGLES_CM/Renderbuffer.h index eb65708c0..31f12ee7e 100644 --- a/src/OpenGL/libGLES_CM/Renderbuffer.h +++ b/src/OpenGL/libGLES_CM/Renderbuffer.h @@ -113,7 +113,7 @@ protected: // Renderbuffer implements the GL renderbuffer object. // It's only a proxy for a RenderbufferInterface instance; the internal object // can change whenever glRenderbufferStorage is called. -class Renderbuffer : public gl::Object +class Renderbuffer : public gl::NamedObject { public: Renderbuffer(GLuint name, RenderbufferInterface *storage); diff --git a/src/OpenGL/libGLESv2/Buffer.cpp b/src/OpenGL/libGLESv2/Buffer.cpp index b162a5f1a..42a1eea12 100644 --- a/src/OpenGL/libGLESv2/Buffer.cpp +++ b/src/OpenGL/libGLESv2/Buffer.cpp @@ -22,7 +22,7 @@ namespace es2 { -Buffer::Buffer(GLuint name) : Object(name) +Buffer::Buffer(GLuint name) : NamedObject(name) { mContents = 0; mSize = 0; diff --git a/src/OpenGL/libGLESv2/Buffer.h b/src/OpenGL/libGLESv2/Buffer.h index 279227e59..10f5423c5 100644 --- a/src/OpenGL/libGLESv2/Buffer.h +++ b/src/OpenGL/libGLESv2/Buffer.h @@ -27,7 +27,7 @@ namespace es2 { -class Buffer : public gl::Object +class Buffer : public gl::NamedObject { public: explicit Buffer(GLuint name); diff --git a/src/OpenGL/libGLESv2/Query.cpp b/src/OpenGL/libGLESv2/Query.cpp index 4cc6b81f2..52e23ac1f 100644 --- a/src/OpenGL/libGLESv2/Query.cpp +++ b/src/OpenGL/libGLESv2/Query.cpp @@ -19,7 +19,7 @@ namespace es2 { -Query::Query(GLuint name, GLenum type) : Object(name) +Query::Query(GLuint name, GLenum type) : NamedObject(name) { mQuery = NULL; mStatus = GL_FALSE; diff --git a/src/OpenGL/libGLESv2/Query.h b/src/OpenGL/libGLESv2/Query.h index 0e5ead85a..2f991814f 100644 --- a/src/OpenGL/libGLESv2/Query.h +++ b/src/OpenGL/libGLESv2/Query.h @@ -23,7 +23,7 @@ namespace es2 { -class Query : public gl::Object +class Query : public gl::NamedObject { public: Query(GLuint name, GLenum type); diff --git a/src/OpenGL/libGLESv2/Renderbuffer.cpp b/src/OpenGL/libGLESv2/Renderbuffer.cpp index b35405d3b..38f418986 100644 --- a/src/OpenGL/libGLESv2/Renderbuffer.cpp +++ b/src/OpenGL/libGLESv2/Renderbuffer.cpp @@ -272,7 +272,7 @@ GLsizei RenderbufferTextureCubeMap::getSamples() const ////// Renderbuffer Implementation ////// -Renderbuffer::Renderbuffer(GLuint name, RenderbufferInterface *instance) : Object(name) +Renderbuffer::Renderbuffer(GLuint name, RenderbufferInterface *instance) : NamedObject(name) { ASSERT(instance != NULL); mInstance = instance; diff --git a/src/OpenGL/libGLESv2/Renderbuffer.h b/src/OpenGL/libGLESv2/Renderbuffer.h index cfacbd5a3..4ffae7c64 100644 --- a/src/OpenGL/libGLESv2/Renderbuffer.h +++ b/src/OpenGL/libGLESv2/Renderbuffer.h @@ -164,7 +164,7 @@ protected: // Renderbuffer implements the GL renderbuffer object. // It's only a proxy for a RenderbufferInterface instance; the internal object // can change whenever glRenderbufferStorage is called. -class Renderbuffer : public gl::Object +class Renderbuffer : public gl::NamedObject { public: Renderbuffer(GLuint name, RenderbufferInterface *storage); diff --git a/src/OpenGL/libGLESv2/Sampler.h b/src/OpenGL/libGLESv2/Sampler.h index e0b9502d3..476ad5a96 100644 --- a/src/OpenGL/libGLESv2/Sampler.h +++ b/src/OpenGL/libGLESv2/Sampler.h @@ -23,10 +23,10 @@ namespace es2 { -class Sampler : public gl::Object +class Sampler : public gl::NamedObject { public: - Sampler(GLuint name) : Object(name) + Sampler(GLuint name) : NamedObject(name) { mMinFilter = GL_NEAREST_MIPMAP_LINEAR; mMagFilter = GL_LINEAR; diff --git a/src/OpenGL/libGLESv2/TransformFeedback.cpp b/src/OpenGL/libGLESv2/TransformFeedback.cpp index 8c403dc1f..282bd748a 100644 --- a/src/OpenGL/libGLESv2/TransformFeedback.cpp +++ b/src/OpenGL/libGLESv2/TransformFeedback.cpp @@ -18,7 +18,7 @@ namespace es2 { -TransformFeedback::TransformFeedback(GLuint name) : Object(name), mActive(false), mPaused(false) +TransformFeedback::TransformFeedback(GLuint name) : NamedObject(name), mActive(false), mPaused(false) { mGenericBuffer = NULL; } diff --git a/src/OpenGL/libGLESv2/TransformFeedback.h b/src/OpenGL/libGLESv2/TransformFeedback.h index 52a1bfeae..e46d748a1 100644 --- a/src/OpenGL/libGLESv2/TransformFeedback.h +++ b/src/OpenGL/libGLESv2/TransformFeedback.h @@ -24,7 +24,7 @@ namespace es2 { class Buffer; -class TransformFeedback : public gl::Object +class TransformFeedback : public gl::NamedObject { public: // FIXME: Change this when implementing transform feedback -- 2.11.0