summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPierre-Eric Pelloux-Prayer <[email protected]>2019-10-25 14:28:21 +0200
committerPierre-Eric Pelloux-Prayer <[email protected]>2019-11-05 13:58:28 +0100
commita78d4e7e757f83f3fc5eaa289c5a608e4a3a338e (patch)
tree543a4179afae27241a3d44142b26fc7f34f51b77
parent3e842a0b0ea93a8ec754cbf656c44310f47f72e0 (diff)
mesa: add vao/vbo lookup helper for EXT_dsa
Add a single helper dealing with the lookup of both the vao and the vbo to avoid duplicating this code in all the glVertexArray* functions. Reviewed-by: Marek Olšák <[email protected]>
-rw-r--r--src/mesa/main/varray.c32
1 files changed, 32 insertions, 0 deletions
diff --git a/src/mesa/main/varray.c b/src/mesa/main/varray.c
index 963775edad6..cc9321a8327 100644
--- a/src/mesa/main/varray.c
+++ b/src/mesa/main/varray.c
@@ -625,6 +625,38 @@ update_array(struct gl_context *ctx,
effectiveStride);
}
+
+/* Helper function for all EXT_direct_state_access glVertexArray* functions */
+static bool
+_lookup_vao_and_vbo_dsa(struct gl_context *ctx,
+ GLuint vaobj, GLuint buffer,
+ GLintptr offset,
+ struct gl_vertex_array_object** vao,
+ struct gl_buffer_object** vbo,
+ const char* caller)
+{
+ *vao = _mesa_lookup_vao_err(ctx, vaobj, true, caller);
+ if (!(*vao))
+ return false;
+
+ if (buffer != 0) {
+ *vbo = _mesa_lookup_bufferobj(ctx, buffer);
+ if (!_mesa_handle_bind_buffer_gen(ctx, buffer, vbo, caller))
+ return false;
+
+ if (offset < 0) {
+ _mesa_error(ctx, GL_INVALID_VALUE,
+ "%s(negative offset with non-0 buffer)", caller);
+ return false;
+ }
+ } else {
+ *vbo = ctx->Shared->NullBufferObj;
+ }
+
+ return true;
+}
+
+
void GLAPIENTRY
_mesa_VertexPointer_no_error(GLint size, GLenum type, GLsizei stride,
const GLvoid *ptr)