mesa: merge 2 switch statements into one in _mesa_get_derived_vao_masks
authorMarek Olšák <marek.olsak@amd.com>
Fri, 18 Nov 2022 23:38:39 +0000 (18:38 -0500)
committerMarge Bot <emma+marge@anholt.net>
Mon, 12 Dec 2022 19:15:34 +0000 (19:15 +0000)
_mesa_vao_enable_to_vp_inputs has a switch statement and we call it twice.
Let's inline it.

Acked-by: Pierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/19953>

src/mesa/main/arrayobj.h

index 6f7acdc..5da0486 100644 (file)
@@ -182,24 +182,40 @@ _mesa_get_derived_vao_masks(const struct gl_context *ctx,
                             GLbitfield *nonzero_divisor_attribs)
 {
    const struct gl_vertex_array_object *const vao = ctx->Array._DrawVAO;
-   const gl_attribute_map_mode mode = vao->_AttributeMapMode;
-   /* Enabled array bits. */
    const GLbitfield enabled = vao->Enabled;
-   /* VBO array bits. */
-   const GLbitfield vbos = vao->VertexAttribBufferMask;
-   const GLbitfield divisor_is_nonzero = vao->NonZeroDivisorMask;
+   const GLbitfield enabled_nonuser = enabled & vao->VertexAttribBufferMask;
+   const GLbitfield enabled_nonzero_divisor = enabled & vao->NonZeroDivisorMask;
 
    assert(!vao->NewVertexBuffers && !vao->NewVertexElements);
 
-   /* Mask of VERT_BIT_* enabled arrays past position/generic0 mapping. */
-   *enabled_user_attribs =
-      ~_mesa_vao_enable_to_vp_inputs(mode, enabled & vbos) &
-      ctx->Array._DrawVAOEnabledAttribs;
+   *enabled_user_attribs = ~enabled_nonuser &
+                           ctx->Array._DrawVAOEnabledAttribs;
+   *nonzero_divisor_attribs = enabled_nonzero_divisor &
+                              ctx->Array._DrawVAOEnabledAttribs;
 
-   /* Same as above, but for instance divisors. */
-   *nonzero_divisor_attribs =
-      _mesa_vao_enable_to_vp_inputs(mode, enabled & divisor_is_nonzero) &
-      ctx->Array._DrawVAOEnabledAttribs;
+   switch (vao->_AttributeMapMode) {
+   case ATTRIBUTE_MAP_MODE_POSITION:
+      /* Copy VERT_ATTRIB_POS enable bit into GENERIC0 position */
+      *enabled_user_attribs =
+         (*enabled_user_attribs & ~VERT_BIT_GENERIC0) |
+         ((*enabled_user_attribs & VERT_BIT_POS) << VERT_ATTRIB_GENERIC0);
+      *nonzero_divisor_attribs =
+         (*nonzero_divisor_attribs & ~VERT_BIT_GENERIC0) |
+         ((*nonzero_divisor_attribs & VERT_BIT_POS) << VERT_ATTRIB_GENERIC0);
+      break;
+
+   case ATTRIBUTE_MAP_MODE_GENERIC0:
+      /* Copy VERT_ATTRIB_GENERIC0 enable bit into POS position */
+      *enabled_user_attribs =
+         (*enabled_user_attribs & ~VERT_BIT_POS) |
+         ((*enabled_user_attribs & VERT_BIT_GENERIC0) >> VERT_ATTRIB_GENERIC0);
+      *nonzero_divisor_attribs =
+         (*nonzero_divisor_attribs & ~VERT_BIT_POS) |
+         ((*nonzero_divisor_attribs & VERT_BIT_GENERIC0) >> VERT_ATTRIB_GENERIC0);
+      break;
+   default:
+      break;
+   }
 }
 
 /**