From 60076a6171931b92dcdda53c2962666cc27fda2d Mon Sep 17 00:00:00 2001 From: =?utf8?q?Mathias=20Fr=C3=B6hlich?= Date: Wed, 3 Apr 2019 12:33:37 +0200 Subject: [PATCH] mesa: Factor out index function that will have multiple use. MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit For access to glArrayElement methods factor out a function to get the table lookup index for normalized/integer/double access. The function will be used in the next patch at least twice. v2: Use vertex_format_to_index instead of NORM_IDX. Reviewed-by: Brian Paul Signed-off-by: Mathias Fröhlich --- src/mesa/main/api_arrayelt.c | 29 ++++++++++++++++++----------- 1 file changed, 18 insertions(+), 11 deletions(-) diff --git a/src/mesa/main/api_arrayelt.c b/src/mesa/main/api_arrayelt.c index 1c086bbcda4..0fe9311adae 100644 --- a/src/mesa/main/api_arrayelt.c +++ b/src/mesa/main/api_arrayelt.c @@ -90,6 +90,23 @@ TYPE_IDX(GLenum t) } +/* + * Convert normalized/integer/double to the range [0, 3]. + */ +static inline int +vertex_format_to_index(const struct gl_vertex_format *vformat) +{ + if (vformat->Doubles) + return 3; + else if (vformat->Integer) + return 2; + else if (vformat->Normalized) + return 1; + else + return 0; +} + + bool _ae_is_state_dirty(struct gl_context *ctx) { @@ -1610,7 +1627,6 @@ _ae_update_state(struct gl_context *ctx) if (vao->Enabled & VERT_BIT_GENERIC(i)) { struct gl_array_attributes *attribArray = &vao->VertexAttrib[VERT_ATTRIB_GENERIC(i)]; - GLint intOrNorm; at->array = attribArray; at->binding = &vao->BufferBinding[attribArray->BufferBindingIndex]; /* Note: we can't grab the _glapi_Dispatch->VertexAttrib1fvNV @@ -1618,16 +1634,7 @@ _ae_update_state(struct gl_context *ctx) * change from one execution of _ae_ArrayElement() to * the next. Doing so caused UT to break. */ - if (at->array->Format.Doubles) - intOrNorm = 3; - else if (at->array->Format.Integer) - intOrNorm = 2; - else if (at->array->Format.Normalized) - intOrNorm = 1; - else - intOrNorm = 0; - - at->func = AttribFuncsARB[intOrNorm] + at->func = AttribFuncsARB[vertex_format_to_index(&at->array->Format)] [at->array->Format.Size-1] [TYPE_IDX(at->array->Format.Type)]; -- 2.30.2