[Mesa-dev] [PATCH 02/41] main: Created a standard function that looks up a texture object by its ID and throws INVALID_OPERATION if the ID isn't in the hash table.
Laura Ekstrand
laura at jlekstrand.net
Mon Dec 15 17:22:17 PST 2014
Most ARB_DIRECT_STATE_ACCESS functions take an object's ID and use it to look
up the object in its hash table. If the user passes a fake object ID (ie. a
non-generated name), the implementation should throw INVALID_OPERATION.
This is a convenience function for texture objects.
---
src/mesa/main/texobj.c | 17 ++++++++++++++++-
src/mesa/main/texobj.h | 3 +++
2 files changed, 19 insertions(+), 1 deletion(-)
diff --git a/src/mesa/main/texobj.c b/src/mesa/main/texobj.c
index 923cf60..49ab2c4 100644
--- a/src/mesa/main/texobj.c
+++ b/src/mesa/main/texobj.c
@@ -60,6 +60,22 @@ _mesa_lookup_texture(struct gl_context *ctx, GLuint id)
_mesa_HashLookup(ctx->Shared->TexObjects, id);
}
+/**
+ * Wrapper around _mesa_lookup_texture that throws GL_INVALID_OPERATION if id
+ * is not in the hash table. After calling _mesa_error, it returns NULL.
+ */
+struct gl_texture_object *
+_mesa_lookup_texture_err(struct gl_context *ctx, GLuint id, const char* func)
+{
+ struct gl_texture_object *texObj;
+
+ texObj = _mesa_lookup_texture(ctx, id); /* Returns NULL if not found. */
+
+ if (!texObj)
+ _mesa_error(ctx, GL_INVALID_OPERATION, "%s(texture)", func);
+
+ return texObj;
+}
void
_mesa_begin_texture_lookups(struct gl_context *ctx)
@@ -1419,7 +1435,6 @@ _mesa_BindTexture( GLenum target, GLuint texName )
ctx->Driver.BindTexture(ctx, ctx->Texture.CurrentUnit, target, newTexObj);
}
-
void GLAPIENTRY
_mesa_BindTextures(GLuint first, GLsizei count, const GLuint *textures)
{
diff --git a/src/mesa/main/texobj.h b/src/mesa/main/texobj.h
index b1b7a30..abf03a1 100644
--- a/src/mesa/main/texobj.h
+++ b/src/mesa/main/texobj.h
@@ -46,6 +46,9 @@
extern struct gl_texture_object *
_mesa_lookup_texture(struct gl_context *ctx, GLuint id);
+extern struct gl_texture_object *
+_mesa_lookup_texture_err(struct gl_context *ctx, GLuint id, const char* func);
+
extern void
_mesa_begin_texture_lookups(struct gl_context *ctx);
--
2.1.0
More information about the mesa-dev
mailing list