main: Add utility function _mesa_lookup_bufferobj_err.
authorLaura Ekstrand <laura@jlekstrand.net>
Sat, 10 Jan 2015 00:16:48 +0000 (16:16 -0800)
committerLaura Ekstrand <laura@jlekstrand.net>
Mon, 9 Mar 2015 20:33:53 +0000 (13:33 -0700)
This function is exposed to mesa driver internals so that texture buffer
objects and array objects can use it.

Reviewed-by: Anuj Phogat <anuj.phogat@gmail.com>
src/mesa/main/bufferobj.c
src/mesa/main/bufferobj.h

index e1c5877797a9920972130f895c99e3c47ae210cb..cef284fb7ce60c4ca417c559e03e885f85fc67fb 100644 (file)
@@ -1006,6 +1006,25 @@ _mesa_lookup_bufferobj_locked(struct gl_context *ctx, GLuint buffer)
       _mesa_HashLookupLocked(ctx->Shared->BufferObjects, buffer);
 }
 
+/**
+ * A convenience function for direct state access functions that throws
+ * GL_INVALID_OPERATION if buffer is not the name of a buffer object in the
+ * hash table.
+ */
+struct gl_buffer_object *
+_mesa_lookup_bufferobj_err(struct gl_context *ctx, GLuint buffer,
+                           const char *caller)
+{
+   struct gl_buffer_object *bufObj;
+
+   bufObj = _mesa_lookup_bufferobj(ctx, buffer);
+   if (!bufObj)
+      _mesa_error(ctx, GL_INVALID_OPERATION,
+                  "%s(non-generated buffer name %u)", caller, buffer);
+
+   return bufObj;
+}
+
 
 void
 _mesa_begin_bufferobj_lookups(struct gl_context *ctx)
index fe294fc0bed23f668b379408d5d28212cd176281..8e53bfd979eff934ea3dc44a4d5e3a4fa7fac0e6 100644 (file)
@@ -89,6 +89,10 @@ _mesa_lookup_bufferobj(struct gl_context *ctx, GLuint buffer);
 extern struct gl_buffer_object *
 _mesa_lookup_bufferobj_locked(struct gl_context *ctx, GLuint buffer);
 
+extern struct gl_buffer_object *
+_mesa_lookup_bufferobj_err(struct gl_context *ctx, GLuint buffer,
+                           const char *caller);
+
 extern void
 _mesa_begin_bufferobj_lookups(struct gl_context *ctx);