From: Mathias Fröhlich Date: Thu, 9 Jun 2016 04:35:34 +0000 (+0200) Subject: mesa: Make use of u_bit_scan{,64}. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=ed2dae86aef759a6858f56d77eba77895bec5020;p=mesa.git mesa: Make use of u_bit_scan{,64}. Reviewed-by: Brian Paul Tested-by: Brian Paul Signed-off-by: Mathias Fröhlich --- diff --git a/src/mesa/main/arrayobj.c b/src/mesa/main/arrayobj.c index 897dac6e5db..9c3451ec203 100644 --- a/src/mesa/main/arrayobj.c +++ b/src/mesa/main/arrayobj.c @@ -52,6 +52,7 @@ #include "mtypes.h" #include "varray.h" #include "main/dispatch.h" +#include "util/bitscan.h" /** @@ -342,13 +343,12 @@ _mesa_update_vao_client_arrays(struct gl_context *ctx, GLbitfield64 arrays = vao->NewArrays; while (arrays) { + const int attrib = u_bit_scan64(&arrays); + struct gl_client_array *client_array; struct gl_vertex_attrib_array *attrib_array; struct gl_vertex_buffer_binding *buffer_binding; - GLint attrib = ffsll(arrays) - 1; - arrays ^= BITFIELD64_BIT(attrib); - attrib_array = &vao->VertexAttrib[attrib]; buffer_binding = &vao->VertexBinding[attrib_array->VertexBinding]; client_array = &vao->_VertexAttrib[attrib]; diff --git a/src/mesa/main/buffers.c b/src/mesa/main/buffers.c index a28c5831576..e8aedde8777 100644 --- a/src/mesa/main/buffers.c +++ b/src/mesa/main/buffers.c @@ -36,6 +36,7 @@ #include "enums.h" #include "fbobject.h" #include "mtypes.h" +#include "util/bitscan.h" #define BAD_MASK ~0u @@ -595,13 +596,12 @@ _mesa_drawbuffers(struct gl_context *ctx, struct gl_framebuffer *fb, if (n > 0 && _mesa_bitcount(destMask[0]) > 1) { GLuint count = 0, destMask0 = destMask[0]; while (destMask0) { - GLint bufIndex = ffs(destMask0) - 1; + const int bufIndex = u_bit_scan(&destMask0); if (fb->_ColorDrawBufferIndexes[count] != bufIndex) { updated_drawbuffers(ctx, fb); fb->_ColorDrawBufferIndexes[count] = bufIndex; } count++; - destMask0 &= ~(1 << bufIndex); } fb->ColorDrawBuffer[0] = buffers[0]; fb->_NumColorDrawBuffers = count;