From 36b05793372b86b914d9b95d0188f5f387e01d68 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Fredrik=20H=C3=B6glund?= Date: Sun, 10 May 2015 20:54:18 +0200 Subject: [PATCH] mesa: Add ARB_direct_state_access checks in VAO functions MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Signed-off-by: Fredrik Höglund Reviewed-by: Adam Jackson --- src/mesa/main/arrayobj.c | 22 +++++++++++++++++ src/mesa/main/varray.c | 64 ++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 86 insertions(+) diff --git a/src/mesa/main/arrayobj.c b/src/mesa/main/arrayobj.c index 7c40040..320f435 100644 --- a/src/mesa/main/arrayobj.c +++ b/src/mesa/main/arrayobj.c @@ -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 is not diff --git a/src/mesa/main/varray.c b/src/mesa/main/varray.c index 7389037..da6bbce 100644 --- a/src/mesa/main/varray.c +++ b/src/mesa/main/varray.c @@ -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 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 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 -- 2.7.4