From 6cc293a6d97a2f8277660613a1ced9b2688bd7c0 Mon Sep 17 00:00:00 2001 From: Mike Erwin Date: Mon, 22 May 2017 16:43:33 -0400 Subject: [PATCH] Gawain: replace switch with lookup table This function is not performance critical, but I prefer the branch-free code and no hack needed to appease gcc. Follow-up to recent 23035cf46fb4dd6a0bf7e688b0f15128030c77d1 and f637145450010d14660fcb029d41560a138eae14. --- intern/gawain/src/element.c | 19 ++++++------------- 1 file changed, 6 insertions(+), 13 deletions(-) diff --git a/intern/gawain/src/element.c b/intern/gawain/src/element.c index 1875c0a3cc8..425e3705003 100644 --- a/intern/gawain/src/element.c +++ b/intern/gawain/src/element.c @@ -28,19 +28,12 @@ static GLenum convert_index_type_to_gl(IndexType type) unsigned ElementList_size(const ElementList* elem) { #if TRACK_INDEX_RANGE - switch (elem->index_type) - { - case INDEX_U8: return elem->index_ct * sizeof(GLubyte); - case INDEX_U16: return elem->index_ct * sizeof(GLushort); - case INDEX_U32: return elem->index_ct * sizeof(GLuint); - - default: -#if TRUST_NO_ONE - assert(false); -#endif - return 0; - } - + static const unsigned table[] = { + [INDEX_U8] = sizeof(GLubyte), // GL has this, Vulkan does not + [INDEX_U16] = sizeof(GLushort), + [INDEX_U32] = sizeof(GLuint) + }; + return elem->index_ct * table[elem->index_type]; #else return elem->index_ct * sizeof(GLuint); #endif