Mesa (master): mesa: optimize get_index_size

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Thu Mar 5 01:17:03 UTC 2020


Module: Mesa
Branch: master
Commit: 7700ac3d80ae70d00e3cca52b6ea3d00122c7893
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=7700ac3d80ae70d00e3cca52b6ea3d00122c7893

Author: Marek Olšák <marek.olsak at amd.com>
Date:   Tue Mar  3 15:08:09 2020 -0500

mesa: optimize get_index_size

Reviewed-by: Ian Romanick <ian.d.romanick at intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4052>

---

 src/mesa/main/draw.c | 25 +++++++++----------------
 1 file changed, 9 insertions(+), 16 deletions(-)

diff --git a/src/mesa/main/draw.c b/src/mesa/main/draw.c
index b39d200c098..99a5afebd27 100644
--- a/src/mesa/main/draw.c
+++ b/src/mesa/main/draw.c
@@ -107,22 +107,15 @@ check_array_data(struct gl_context *ctx, struct gl_vertex_array_object *vao,
 static inline void
 get_index_size(GLenum type, struct _mesa_index_buffer *ib)
 {
-   switch (type) {
-   case GL_UNSIGNED_INT:
-      ib->index_size_shift = 2;
-      break;
-   case GL_UNSIGNED_SHORT:
-      ib->index_size_shift = 1;
-      break;
-   case GL_UNSIGNED_BYTE:
-      ib->index_size_shift = 0;
-      break;
-   default:
-      assert(!"unsupported index data type");
-      /* In case assert is turned off */
-      ib->index_size_shift = 0;
-      break;
-   }
+   /* The type is already validated, so use a fast conversion.
+    *
+    * GL_UNSIGNED_BYTE  - GL_UNSIGNED_BYTE = 0
+    * GL_UNSIGNED_SHORT - GL_UNSIGNED_BYTE = 2
+    * GL_UNSIGNED_INT   - GL_UNSIGNED_BYTE = 4
+    *
+    * Divide by 2 to get 0,1,2.
+    */
+   ib->index_size_shift = (type - GL_UNSIGNED_BYTE) >> 1;
 }
 
 /**



More information about the mesa-commit mailing list