mesa: Add ARB_direct_state_access checks in VAO functions
authorFredrik Höglund <fredrik@kde.org>
Sun, 10 May 2015 18:54:18 +0000 (20:54 +0200)
committerFredrik Höglund <fredrik@kde.org>
Thu, 14 May 2015 13:48:17 +0000 (15:48 +0200)
Signed-off-by: Fredrik Höglund <fredrik@kde.org>
Reviewed-by: Adam Jackson <ajax@redhat.com>
src/mesa/main/arrayobj.c
src/mesa/main/varray.c

index 7c4004043de55be5fda1a0d73c7d551d3543ed1c..320f435ea940396aafa4d5db75ffa3266a471859 100644 (file)
@@ -617,6 +617,14 @@ void GLAPIENTRY
 _mesa_CreateVertexArrays(GLsizei n, GLuint *arrays)
 {
    GET_CURRENT_CONTEXT(ctx);
+
+   if (!ctx->Extensions.ARB_direct_state_access) {
+      _mesa_error(ctx, GL_INVALID_OPERATION,
+                   "glCreateVertexArrays(GL_ARB_direct_state_access "
+                   "is not supported");
+      return;
+   }
+
    gen_vertex_arrays(ctx, n, arrays, true, "glCreateVertexArrays");
 }
 
@@ -659,6 +667,13 @@ _mesa_VertexArrayElementBuffer(GLuint vaobj, GLuint buffer)
    struct gl_vertex_array_object *vao;
    struct gl_buffer_object *bufObj;
 
+   if (!ctx->Extensions.ARB_direct_state_access) {
+      _mesa_error(ctx, GL_INVALID_OPERATION,
+                   "glVertexArrayElementBuffer(GL_ARB_direct_state_access "
+                   "is not supported");
+      return;
+   }
+
    ASSERT_OUTSIDE_BEGIN_END(ctx);
 
    /* The GL_ARB_direct_state_access specification says:
@@ -695,6 +710,13 @@ _mesa_GetVertexArrayiv(GLuint vaobj, GLenum pname, GLint *param)
 
    ASSERT_OUTSIDE_BEGIN_END(ctx);
 
+   if (!ctx->Extensions.ARB_direct_state_access) {
+      _mesa_error(ctx, GL_INVALID_OPERATION,
+                   "glGetVertexArrayiv(GL_ARB_direct_state_access "
+                   "is not supported");
+      return;
+   }
+
    /* The GL_ARB_direct_state_access specification says:
     *
     *   "An INVALID_OPERATION error is generated if <vaobj> is not
index 7389037ae853133ed60d5449a8cbbc656086999c..da6bbce52aa2dc8c416ce080d79a7be2bcf3fb4b 100644 (file)
@@ -777,6 +777,13 @@ _mesa_EnableVertexArrayAttrib(GLuint vaobj, GLuint index)
    GET_CURRENT_CONTEXT(ctx);
    struct gl_vertex_array_object *vao;
 
+   if (!ctx->Extensions.ARB_direct_state_access) {
+      _mesa_error(ctx, GL_INVALID_OPERATION,
+                   "glEnableVertexArrayAttrib(GL_ARB_direct_state_access "
+                   "is not supported");
+      return;
+   }
+
    /* The ARB_direct_state_access specification says:
     *
     *   "An INVALID_OPERATION error is generated by EnableVertexArrayAttrib
@@ -830,6 +837,13 @@ _mesa_DisableVertexArrayAttrib(GLuint vaobj, GLuint index)
    GET_CURRENT_CONTEXT(ctx);
    struct gl_vertex_array_object *vao;
 
+   if (!ctx->Extensions.ARB_direct_state_access) {
+      _mesa_error(ctx, GL_INVALID_OPERATION,
+                   "glDisableVertexArrayAttrib(GL_ARB_direct_state_access "
+                   "is not supported");
+      return;
+   }
+
    /* The ARB_direct_state_access specification says:
     *
     *   "An INVALID_OPERATION error is generated by EnableVertexArrayAttrib
@@ -1094,6 +1108,13 @@ _mesa_GetVertexArrayIndexediv(GLuint vaobj, GLuint index,
    GET_CURRENT_CONTEXT(ctx);
    struct gl_vertex_array_object *vao;
 
+   if (!ctx->Extensions.ARB_direct_state_access) {
+      _mesa_error(ctx, GL_INVALID_OPERATION,
+                   "glGetVertexArrayIndexediv(GL_ARB_direct_state_access "
+                   "is not supported");
+      return;
+   }
+
    /* The ARB_direct_state_access specification says:
     *
     *    "An INVALID_OPERATION error is generated if <vaobj> is not
@@ -1157,6 +1178,14 @@ _mesa_GetVertexArrayIndexed64iv(GLuint vaobj, GLuint index,
    GET_CURRENT_CONTEXT(ctx);
    struct gl_vertex_array_object *vao;
 
+   if (!ctx->Extensions.ARB_direct_state_access) {
+      _mesa_error(ctx, GL_INVALID_OPERATION,
+                   "glGetVertexArrayIndexed64iv(GL_ARB_direct_state_access "
+                   "is not supported");
+      return;
+   }
+
+
    /* The ARB_direct_state_access specification says:
     *
     *    "An INVALID_OPERATION error is generated if <vaobj> is not
@@ -1745,6 +1774,13 @@ _mesa_VertexArrayVertexBuffer(GLuint vaobj, GLuint bindingIndex, GLuint buffer,
    GET_CURRENT_CONTEXT(ctx);
    struct gl_vertex_array_object *vao;
 
+   if (!ctx->Extensions.ARB_direct_state_access) {
+      _mesa_error(ctx, GL_INVALID_OPERATION,
+                   "glVertexArrayVertexBuffer(GL_ARB_direct_state_access "
+                   "is not supported");
+      return;
+   }
+
    /* The ARB_direct_state_access specification says:
     *
     *   "An INVALID_OPERATION error is generated by VertexArrayVertexBuffer
@@ -1910,6 +1946,14 @@ _mesa_VertexArrayVertexBuffers(GLuint vaobj, GLuint first, GLsizei count,
    GET_CURRENT_CONTEXT(ctx);
    struct gl_vertex_array_object *vao;
 
+   if (!ctx->Extensions.ARB_direct_state_access) {
+      _mesa_error(ctx, GL_INVALID_OPERATION,
+                   "glVertexArrayVertexBuffers(GL_ARB_direct_state_access "
+                   "is not supported");
+      return;
+   }
+
+
    /* The ARB_direct_state_access specification says:
     *
     *   "An INVALID_OPERATION error is generated by VertexArrayVertexBuffer
@@ -2018,6 +2062,12 @@ vertex_array_attrib_format(GLuint vaobj, GLuint attribIndex, GLint size,
    GET_CURRENT_CONTEXT(ctx);
    struct gl_vertex_array_object *vao;
 
+   if (!ctx->Extensions.ARB_direct_state_access) {
+      _mesa_error(ctx, GL_INVALID_OPERATION,
+                   "%s(GL_ARB_direct_state_access is not supported", func);
+      return;
+   }
+
    ASSERT_OUTSIDE_BEGIN_END(ctx);
 
    /* The ARB_direct_state_access spec says:
@@ -2155,6 +2205,13 @@ _mesa_VertexArrayAttribBinding(GLuint vaobj, GLuint attribIndex, GLuint bindingI
    GET_CURRENT_CONTEXT(ctx);
    struct gl_vertex_array_object *vao;
 
+   if (!ctx->Extensions.ARB_direct_state_access) {
+      _mesa_error(ctx, GL_INVALID_OPERATION,
+                   "glVertexArrayAttribBinding(GL_ARB_direct_state_access "
+                   "is not supported");
+      return;
+   }
+
    /* The ARB_direct_state_access specification says:
     *
     *   "An INVALID_OPERATION error is generated by VertexArrayAttribBinding
@@ -2229,6 +2286,13 @@ _mesa_VertexArrayBindingDivisor(GLuint vaobj, GLuint bindingIndex, GLuint diviso
    struct gl_vertex_array_object *vao;
    GET_CURRENT_CONTEXT(ctx);
 
+   if (!ctx->Extensions.ARB_direct_state_access) {
+      _mesa_error(ctx, GL_INVALID_OPERATION,
+                   "glVertexArrayBindingDivisor(GL_ARB_direct_state_access "
+                   "is not supported");
+      return;
+   }
+
    /* The ARB_direct_state_access specification says:
     *
     *   "An INVALID_OPERATION error is generated by VertexArrayBindingDivisor