Constness in Context
Added proper constness to Context getters.
Change-Id: I0495cbe7ab0c9f50d4d9aa3d969507f117539bd8
Reviewed-on: https://swiftshader-review.googlesource.com/2983
Tested-by: Alexis Hétu <sugoi@google.com>
Reviewed-by: Nicolas Capens <capn@google.com>
diff --git a/src/OpenGL/libGLESv2/Context.cpp b/src/OpenGL/libGLESv2/Context.cpp
index bf1e22b..166fc3b 100644
--- a/src/OpenGL/libGLESv2/Context.cpp
+++ b/src/OpenGL/libGLESv2/Context.cpp
@@ -760,7 +760,7 @@
mState.vertexAttribute[attribNum].mDivisor = divisor;
}
-const VertexAttribute &Context::getVertexAttribState(unsigned int attribNum)
+const VertexAttribute &Context::getVertexAttribState(unsigned int attribNum) const
{
return mState.vertexAttribute[attribNum];
}
@@ -1019,37 +1019,37 @@
}
}
-Buffer *Context::getBuffer(GLuint handle)
+Buffer *Context::getBuffer(GLuint handle) const
{
return mResourceManager->getBuffer(handle);
}
-Shader *Context::getShader(GLuint handle)
+Shader *Context::getShader(GLuint handle) const
{
return mResourceManager->getShader(handle);
}
-Program *Context::getProgram(GLuint handle)
+Program *Context::getProgram(GLuint handle) const
{
return mResourceManager->getProgram(handle);
}
-Texture *Context::getTexture(GLuint handle)
+Texture *Context::getTexture(GLuint handle) const
{
return mResourceManager->getTexture(handle);
}
-Renderbuffer *Context::getRenderbuffer(GLuint handle)
+Renderbuffer *Context::getRenderbuffer(GLuint handle) const
{
return mResourceManager->getRenderbuffer(handle);
}
-Framebuffer *Context::getReadFramebuffer()
+Framebuffer *Context::getReadFramebuffer() const
{
return getFramebuffer(mState.readFramebuffer);
}
-Framebuffer *Context::getDrawFramebuffer()
+Framebuffer *Context::getDrawFramebuffer() const
{
return getFramebuffer(mState.drawFramebuffer);
}
@@ -1264,7 +1264,7 @@
ASSERT(false);
}
- Query *queryObject = getQuery(query, true, target);
+ Query *queryObject = createQuery(query, target);
// Check that name was obtained with glGenQueries
if(!queryObject)
@@ -1325,9 +1325,9 @@
renderbufferObject->setStorage(renderbuffer);
}
-Framebuffer *Context::getFramebuffer(unsigned int handle)
+Framebuffer *Context::getFramebuffer(unsigned int handle) const
{
- FramebufferMap::iterator framebuffer = mFramebufferMap.find(handle);
+ FramebufferMap::const_iterator framebuffer = mFramebufferMap.find(handle);
if(framebuffer == mFramebufferMap.end())
{
@@ -1339,9 +1339,9 @@
}
}
-Fence *Context::getFence(unsigned int handle)
+Fence *Context::getFence(unsigned int handle) const
{
- FenceMap::iterator fence = mFenceMap.find(handle);
+ FenceMap::const_iterator fence = mFenceMap.find(handle);
if(fence == mFenceMap.end())
{
@@ -1353,83 +1353,97 @@
}
}
-Query *Context::getQuery(unsigned int handle, bool create, GLenum type)
+Query *Context::getQuery(unsigned int handle) const
{
- QueryMap::iterator query = mQueryMap.find(handle);
+ QueryMap::const_iterator query = mQueryMap.find(handle);
- if(query == mQueryMap.end())
- {
- return NULL;
- }
- else
- {
- if(!query->second && create)
- {
- query->second = new Query(handle, type);
- query->second->addRef();
- }
-
- return query->second;
- }
+ if(query == mQueryMap.end())
+ {
+ return NULL;
+ }
+ else
+ {
+ return query->second;
+ }
}
-VertexArray *Context::getVertexArray(GLuint array)
+Query *Context::createQuery(unsigned int handle, GLenum type)
{
- VertexArrayMap::iterator vertexArray = mVertexArrayMap.find(array);
+ QueryMap::iterator query = mQueryMap.find(handle);
+
+ if(query == mQueryMap.end())
+ {
+ return NULL;
+ }
+ else
+ {
+ if(!query->second)
+ {
+ query->second = new Query(handle, type);
+ query->second->addRef();
+ }
+
+ return query->second;
+ }
+}
+
+VertexArray *Context::getVertexArray(GLuint array) const
+{
+ VertexArrayMap::const_iterator vertexArray = mVertexArrayMap.find(array);
return (vertexArray == mVertexArrayMap.end()) ? NULL : vertexArray->second;
}
-TransformFeedback *Context::getTransformFeedback(GLuint transformFeedback)
+TransformFeedback *Context::getTransformFeedback(GLuint transformFeedback) const
{
- TransformFeedbackMap::iterator transformFeedbackObject = mTransformFeedbackMap.find(transformFeedback);
+ TransformFeedbackMap::const_iterator transformFeedbackObject = mTransformFeedbackMap.find(transformFeedback);
return (transformFeedbackObject == mTransformFeedbackMap.end()) ? NULL : transformFeedbackObject->second;
}
-Sampler *Context::getSampler(GLuint sampler)
+Sampler *Context::getSampler(GLuint sampler) const
{
- SamplerMap::iterator samplerObject = mSamplerMap.find(sampler);
+ SamplerMap::const_iterator samplerObject = mSamplerMap.find(sampler);
return (samplerObject == mSamplerMap.end()) ? NULL : samplerObject->second;
}
-Buffer *Context::getArrayBuffer()
+Buffer *Context::getArrayBuffer() const
{
return mState.arrayBuffer;
}
-Buffer *Context::getElementArrayBuffer()
+Buffer *Context::getElementArrayBuffer() const
{
return mState.elementArrayBuffer;
}
-Buffer *Context::getCopyReadBuffer()
+Buffer *Context::getCopyReadBuffer() const
{
return mState.copyReadBuffer;
}
-Buffer *Context::getCopyWriteBuffer()
+Buffer *Context::getCopyWriteBuffer() const
{
return mState.copyWriteBuffer;
}
-Buffer *Context::getPixelPackBuffer()
+Buffer *Context::getPixelPackBuffer() const
{
return mState.pixelPackBuffer;
}
-Buffer *Context::getPixelUnpackBuffer()
+Buffer *Context::getPixelUnpackBuffer() const
{
return mState.pixelUnpackBuffer;
}
-Buffer *Context::getUniformBuffer()
+Buffer *Context::getUniformBuffer() const
{
return mState.uniformBuffer;
}
-bool Context::getBuffer(GLenum target, es2::Buffer **buffer)
+bool Context::getBuffer(GLenum target, es2::Buffer **buffer) const
{
switch(target)
{
@@ -1488,37 +1502,37 @@
return true;
}
-TransformFeedback *Context::getTransformFeedback()
+TransformFeedback *Context::getTransformFeedback() const
{
return getTransformFeedback(mState.transformFeedback);
}
-Program *Context::getCurrentProgram()
+Program *Context::getCurrentProgram() const
{
return mResourceManager->getProgram(mState.currentProgram);
}
-Texture2D *Context::getTexture2D()
+Texture2D *Context::getTexture2D() const
{
return static_cast<Texture2D*>(getSamplerTexture(mState.activeSampler, TEXTURE_2D));
}
-Texture3D *Context::getTexture3D()
+Texture3D *Context::getTexture3D() const
{
return static_cast<Texture3D*>(getSamplerTexture(mState.activeSampler, TEXTURE_3D));
}
-TextureCubeMap *Context::getTextureCubeMap()
+TextureCubeMap *Context::getTextureCubeMap() const
{
return static_cast<TextureCubeMap*>(getSamplerTexture(mState.activeSampler, TEXTURE_CUBE));
}
-TextureExternal *Context::getTextureExternal()
+TextureExternal *Context::getTextureExternal() const
{
return static_cast<TextureExternal*>(getSamplerTexture(mState.activeSampler, TEXTURE_EXTERNAL));
}
-Texture *Context::getSamplerTexture(unsigned int sampler, TextureType type)
+Texture *Context::getSamplerTexture(unsigned int sampler, TextureType type) const
{
GLuint texid = mState.samplerTexture[type][sampler].name();
@@ -1537,7 +1551,7 @@
return mState.samplerTexture[type][sampler];
}
-bool Context::getBooleanv(GLenum pname, GLboolean *params)
+bool Context::getBooleanv(GLenum pname, GLboolean *params) const
{
switch (pname)
{
@@ -1588,7 +1602,7 @@
return true;
}
-bool Context::getFloatv(GLenum pname, GLfloat *params)
+bool Context::getFloatv(GLenum pname, GLfloat *params) const
{
// Please note: DEPTH_CLEAR_VALUE is included in our internal getFloatv implementation
// because it is stored as a float, despite the fact that the GL ES 2.0 spec names
@@ -1635,7 +1649,7 @@
return true;
}
-bool Context::getIntegerv(GLenum pname, GLint *params)
+bool Context::getIntegerv(GLenum pname, GLint *params) const
{
// Please note: DEPTH_CLEAR_VALUE is not included in our internal getIntegerv implementation
// because it is stored as a float, despite the fact that the GL ES 2.0 spec names
@@ -2121,7 +2135,7 @@
return true;
}
-bool Context::getTransformFeedbackiv(GLuint xfb, GLenum pname, GLint *param)
+bool Context::getTransformFeedbackiv(GLuint xfb, GLenum pname, GLint *param) const
{
UNIMPLEMENTED();
@@ -2162,7 +2176,7 @@
return true;
}
-bool Context::getQueryParameterInfo(GLenum pname, GLenum *type, unsigned int *numParams)
+bool Context::getQueryParameterInfo(GLenum pname, GLenum *type, unsigned int *numParams) const
{
// Please note: the query type returned for DEPTH_CLEAR_VALUE in this implementation
// is FLOAT rather than INT, as would be suggested by the GL ES 2.0 spec. This is due
@@ -4028,7 +4042,7 @@
return device;
}
-const GLubyte* Context::getExtensions(GLuint index, GLuint* numExt)
+const GLubyte* Context::getExtensions(GLuint index, GLuint* numExt) const
{
// Keep list sorted in following order:
// OES extensions
diff --git a/src/OpenGL/libGLESv2/Context.h b/src/OpenGL/libGLESv2/Context.h
index 2c1cdf4..8ebf2d4 100644
--- a/src/OpenGL/libGLESv2/Context.h
+++ b/src/OpenGL/libGLESv2/Context.h
@@ -435,7 +435,7 @@
void setEnableVertexAttribArray(unsigned int attribNum, bool enabled);
void setVertexAttribDivisor(unsigned int attribNum, GLuint divisor);
- const VertexAttribute &getVertexAttribState(unsigned int attribNum);
+ const VertexAttribute &getVertexAttribState(unsigned int attribNum) const;
void setVertexAttribState(unsigned int attribNum, Buffer *boundBuffer, GLint size, GLenum type,
bool normalized, GLsizei stride, const void *pointer);
const void *getVertexAttribPointer(unsigned int attribNum) const;
@@ -517,42 +517,43 @@
void setVertexAttrib(GLuint index, const GLint *values);
void setVertexAttrib(GLuint index, const GLuint *values);
- Buffer *getBuffer(GLuint handle);
- Fence *getFence(GLuint handle);
- Shader *getShader(GLuint handle);
- Program *getProgram(GLuint handle);
- virtual Texture *getTexture(GLuint handle);
- Framebuffer *getFramebuffer(GLuint handle);
- virtual Renderbuffer *getRenderbuffer(GLuint handle);
- Query *getQuery(GLuint handle, bool create, GLenum type);
- VertexArray *getVertexArray(GLuint array);
- TransformFeedback *getTransformFeedback(GLuint transformFeedback);
- TransformFeedback *getTransformFeedback();
- Sampler *getSampler(GLuint sampler);
+ Buffer *getBuffer(GLuint handle) const;
+ Fence *getFence(GLuint handle) const;
+ Shader *getShader(GLuint handle) const;
+ Program *getProgram(GLuint handle) const;
+ virtual Texture *getTexture(GLuint handle) const;
+ Framebuffer *getFramebuffer(GLuint handle) const;
+ virtual Renderbuffer *getRenderbuffer(GLuint handle) const;
+ Query *getQuery(GLuint handle) const;
+ VertexArray *getVertexArray(GLuint array) const;
+ VertexArray *getCurrentVertexArray() const;
+ TransformFeedback *getTransformFeedback(GLuint transformFeedback) const;
+ TransformFeedback *getTransformFeedback() const;
+ Sampler *getSampler(GLuint sampler) const;
- Buffer *getArrayBuffer();
- Buffer *getElementArrayBuffer();
- Buffer *getCopyReadBuffer();
- Buffer *getCopyWriteBuffer();
- Buffer *getPixelPackBuffer();
- Buffer *getPixelUnpackBuffer();
- Buffer *getUniformBuffer();
- bool getBuffer(GLenum target, es2::Buffer **buffer);
- Program *getCurrentProgram();
- Texture2D *getTexture2D();
- Texture3D *getTexture3D();
- TextureCubeMap *getTextureCubeMap();
- TextureExternal *getTextureExternal();
- Texture *getSamplerTexture(unsigned int sampler, TextureType type);
- Framebuffer *getReadFramebuffer();
- Framebuffer *getDrawFramebuffer();
+ Buffer *getArrayBuffer() const;
+ Buffer *getElementArrayBuffer() const;
+ Buffer *getCopyReadBuffer() const;
+ Buffer *getCopyWriteBuffer() const;
+ Buffer *getPixelPackBuffer() const;
+ Buffer *getPixelUnpackBuffer() const;
+ Buffer *getUniformBuffer() const;
+ bool getBuffer(GLenum target, es2::Buffer **buffer) const;
+ Program *getCurrentProgram() const;
+ Texture2D *getTexture2D() const;
+ Texture3D *getTexture3D() const;
+ TextureCubeMap *getTextureCubeMap() const;
+ TextureExternal *getTextureExternal() const;
+ Texture *getSamplerTexture(unsigned int sampler, TextureType type) const;
+ Framebuffer *getReadFramebuffer() const;
+ Framebuffer *getDrawFramebuffer() const;
- bool getFloatv(GLenum pname, GLfloat *params);
- bool getIntegerv(GLenum pname, GLint *params);
- bool getBooleanv(GLenum pname, GLboolean *params);
- bool getTransformFeedbackiv(GLuint xfb, GLenum pname, GLint *param);
+ bool getFloatv(GLenum pname, GLfloat *params) const;
+ bool getIntegerv(GLenum pname, GLint *params) const;
+ bool getBooleanv(GLenum pname, GLboolean *params) const;
+ bool getTransformFeedbackiv(GLuint xfb, GLenum pname, GLint *param) const;
- bool getQueryParameterInfo(GLenum pname, GLenum *type, unsigned int *numParams);
+ bool getQueryParameterInfo(GLenum pname, GLenum *type, unsigned int *numParams) const;
void readPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLsizei *bufSize, void* pixels);
void clear(GLbitfield mask);
@@ -581,7 +582,7 @@
Device *getDevice();
- const GLubyte* getExtensions(GLuint index, GLuint* numExt = nullptr);
+ const GLubyte* getExtensions(GLuint index, GLuint* numExt = nullptr) const;
private:
virtual ~Context();
@@ -603,6 +604,8 @@
bool cullSkipsDraw(GLenum drawMode);
bool isTriangleMode(GLenum drawMode);
+ Query *createQuery(GLuint handle, GLenum type);
+
const EGLint clientVersion;
const egl::Config *const mConfig;
diff --git a/src/OpenGL/libGLESv2/libGLESv2.cpp b/src/OpenGL/libGLESv2/libGLESv2.cpp
index f7164e6..34a096f 100644
--- a/src/OpenGL/libGLESv2/libGLESv2.cpp
+++ b/src/OpenGL/libGLESv2/libGLESv2.cpp
@@ -3045,7 +3045,7 @@
if(context)
{
- es2::Query *queryObject = context->getQuery(name, false, GL_NONE);
+ es2::Query *queryObject = context->getQuery(name);
if(!queryObject)
{
@@ -4029,7 +4029,7 @@
if(context)
{
- es2::Query *queryObject = context->getQuery(name, false, GL_NONE);
+ es2::Query *queryObject = context->getQuery(name);
if(queryObject)
{
diff --git a/src/OpenGL/libGLESv2/libGLESv3.cpp b/src/OpenGL/libGLESv2/libGLESv3.cpp
index 823b008..950f4ec 100644
--- a/src/OpenGL/libGLESv2/libGLESv3.cpp
+++ b/src/OpenGL/libGLESv2/libGLESv3.cpp
@@ -882,7 +882,7 @@
if(context)
{
- es2::Query *queryObject = context->getQuery(id, false, GL_NONE);
+ es2::Query *queryObject = context->getQuery(id);
if(queryObject)
{
@@ -968,7 +968,7 @@
if(context)
{
- es2::Query *queryObject = context->getQuery(id, false, GL_NONE);
+ es2::Query *queryObject = context->getQuery(id);
if(!queryObject)
{