summaryrefslogtreecommitdiffstats
path: root/src/mesa
diff options
context:
space:
mode:
authorLaura Ekstrand <[email protected]>2014-12-03 17:47:32 -0800
committerLaura Ekstrand <[email protected]>2015-01-08 11:37:28 -0800
commit60e3bfddaf6ab4f8385561654dfe4e0034d8bc9d (patch)
tree2aadeaf3577c0a557a71c204e46cd6172a410402 /src/mesa
parent56875181c75da2c537410313fac917b75c13dfd0 (diff)
main: Added utility function _mesa_lookup_texture_err().
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. Reviewed-by: Anuj Phogat <[email protected]>
Diffstat (limited to 'src/mesa')
-rw-r--r--src/mesa/main/texobj.c16
-rw-r--r--src/mesa/main/texobj.h3
2 files changed, 19 insertions, 0 deletions
diff --git a/src/mesa/main/texobj.c b/src/mesa/main/texobj.c
index d199bd7fdb5..c309eb8d2be 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)
diff --git a/src/mesa/main/texobj.h b/src/mesa/main/texobj.h
index f33991dd2d6..109264e8901 100644
--- a/src/mesa/main/texobj.h
+++ b/src/mesa/main/texobj.h
@@ -51,6 +51,9 @@ extern "C" {
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);