From: Brian Paul Date: Mon, 2 Nov 2009 20:20:19 +0000 (-0700) Subject: mesa: use ffs() to shorten loop in _mesa_drawbuffers() X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=b28c637382cd3c3fcd54cd77062dab3df78230a9;p=mesa.git mesa: use ffs() to shorten loop in _mesa_drawbuffers() --- diff --git a/src/mesa/main/buffers.c b/src/mesa/main/buffers.c index b5acda8823c..cdd16a8ad1d 100644 --- a/src/mesa/main/buffers.c +++ b/src/mesa/main/buffers.c @@ -375,15 +375,19 @@ _mesa_drawbuffers(GLcontext *ctx, GLuint n, const GLenum *buffers, destMask = mask; } + /* + * If n==1, destMask[0] may have up to four bits set. + * Otherwise, destMask[x] can only have one bit set. + */ if (n == 1) { - GLuint buf, count = 0; + GLuint count = 0, destMask0 = destMask[0]; /* init to -1 to help catch errors */ fb->_ColorDrawBufferIndexes[0] = -1; - for (buf = 0; buf < BUFFER_COUNT; buf++) { - if (destMask[0] & (1 << buf)) { - fb->_ColorDrawBufferIndexes[count] = buf; - count++; - } + while (destMask0) { + GLint bufIndex = _mesa_ffs(destMask0) - 1; + fb->_ColorDrawBufferIndexes[count] = bufIndex; + count++; + destMask0 &= ~(1 << bufIndex); } fb->ColorDrawBuffer[0] = buffers[0]; fb->_NumColorDrawBuffers = count;