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 <marek.olsak@amd.com>
This commit is contained in:
@@ -625,6 +625,38 @@ update_array(struct gl_context *ctx,
|
|||||||
effectiveStride);
|
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
|
void GLAPIENTRY
|
||||||
_mesa_VertexPointer_no_error(GLint size, GLenum type, GLsizei stride,
|
_mesa_VertexPointer_no_error(GLint size, GLenum type, GLsizei stride,
|
||||||
const GLvoid *ptr)
|
const GLvoid *ptr)
|
||||||
|
Reference in New Issue
Block a user