mesa: add pixel_storei() helper
[mesa.git] / src / mesa / main / bufferobj.c
index 6e2979f6db93e2d9340fc17365954605c515136a..419972e37127137eec4f09f72debf640ed744de2 100644 (file)
@@ -1416,25 +1416,13 @@ _mesa_DeleteBuffers(GLsizei n, const GLuint *ids)
  * driver internals.
  */
 static void
-create_buffers(GLsizei n, GLuint *buffers, bool dsa)
+create_buffers(struct gl_context *ctx, GLsizei n, GLuint *buffers, bool dsa)
 {
-   GET_CURRENT_CONTEXT(ctx);
    GLuint first;
    struct gl_buffer_object *buf;
 
-   const char *func = dsa ? "glCreateBuffers" : "glGenBuffers";
-
-   if (MESA_VERBOSE & VERBOSE_API)
-      _mesa_debug(ctx, "%s(%d)\n", func, n);
-
-   if (n < 0) {
-      _mesa_error(ctx, GL_INVALID_VALUE, "%s(n %d < 0)", func, n);
+   if (!buffers)
       return;
-   }
-
-   if (!buffers) {
-      return;
-   }
 
    /*
     * This must be atomic (generation and allocation of buffer object IDs)
@@ -1453,7 +1441,7 @@ create_buffers(GLsizei n, GLuint *buffers, bool dsa)
          assert(ctx->Driver.NewBufferObject);
          buf = ctx->Driver.NewBufferObject(ctx, buffers[i]);
          if (!buf) {
-            _mesa_error(ctx, GL_OUT_OF_MEMORY, "%s", func);
+            _mesa_error(ctx, GL_OUT_OF_MEMORY, "glCreateBuffers");
             _mesa_HashUnlockMutex(ctx->Shared->BufferObjects);
             return;
          }
@@ -1467,16 +1455,42 @@ create_buffers(GLsizei n, GLuint *buffers, bool dsa)
    _mesa_HashUnlockMutex(ctx->Shared->BufferObjects);
 }
 
+
+static void
+create_buffers_err(struct gl_context *ctx, GLsizei n, GLuint *buffers, bool dsa)
+{
+   const char *func = dsa ? "glCreateBuffers" : "glGenBuffers";
+
+   if (MESA_VERBOSE & VERBOSE_API)
+      _mesa_debug(ctx, "%s(%d)\n", func, n);
+
+   if (n < 0) {
+      _mesa_error(ctx, GL_INVALID_VALUE, "%s(n %d < 0)", func, n);
+      return;
+   }
+
+   create_buffers(ctx, n, buffers, dsa);
+}
+
 /**
  * Generate a set of unique buffer object IDs and store them in \c buffers.
  *
  * \param n        Number of IDs to generate.
  * \param buffers  Array of \c n locations to store the IDs.
  */
+void GLAPIENTRY
+_mesa_GenBuffers_no_error(GLsizei n, GLuint *buffers)
+{
+   GET_CURRENT_CONTEXT(ctx);
+   create_buffers(ctx, n, buffers, false);
+}
+
+
 void GLAPIENTRY
 _mesa_GenBuffers(GLsizei n, GLuint *buffers)
 {
-   create_buffers(n, buffers, false);
+   GET_CURRENT_CONTEXT(ctx);
+   create_buffers_err(ctx, n, buffers, false);
 }
 
 /**
@@ -1485,10 +1499,19 @@ _mesa_GenBuffers(GLsizei n, GLuint *buffers)
  * \param n        Number of IDs to generate.
  * \param buffers  Array of \c n locations to store the IDs.
  */
+void GLAPIENTRY
+_mesa_CreateBuffers_no_error(GLsizei n, GLuint *buffers)
+{
+   GET_CURRENT_CONTEXT(ctx);
+   create_buffers(ctx, n, buffers, true);
+}
+
+
 void GLAPIENTRY
 _mesa_CreateBuffers(GLsizei n, GLuint *buffers)
 {
-   create_buffers(n, buffers, true);
+   GET_CURRENT_CONTEXT(ctx);
+   create_buffers_err(ctx, n, buffers, true);
 }