Mesa (master): intel: use more efficient loop over buffers

Brian Paul brianp at kemper.freedesktop.org
Sun Aug 30 15:16:26 UTC 2009


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

Author: Brian Paul <brianp at vmware.com>
Date:   Thu Aug 27 14:34:21 2009 -0600

intel: use more efficient loop over buffers

---

 src/mesa/drivers/dri/intel/intel_clear.c |   10 +++++++---
 1 files changed, 7 insertions(+), 3 deletions(-)

diff --git a/src/mesa/drivers/dri/intel/intel_clear.c b/src/mesa/drivers/dri/intel/intel_clear.c
index cfddabd..630d2ad 100644
--- a/src/mesa/drivers/dri/intel/intel_clear.c
+++ b/src/mesa/drivers/dri/intel/intel_clear.c
@@ -150,14 +150,18 @@ intelClear(GLcontext *ctx, GLbitfield mask)
    /* SW fallback clearing */
    swrast_mask = mask & ~tri_mask & ~blit_mask;
 
-   for (i = 0; i < BUFFER_COUNT; i++) {
-      GLuint bufBit = 1 << i;
-      if ((blit_mask | tri_mask) & bufBit) {
+   {
+      /* look for non-Intel renderbuffers (clear them with swrast) */
+      GLbitfield blit_or_tri = blit_mask | tri_mask;
+      while (blit_or_tri) {
+         GLuint i = _mesa_ffs(blit_or_tri) - 1;
+         GLbitfield bufBit = 1 << i;
          if (!fb->Attachment[i].Renderbuffer->ClassID) {
             blit_mask &= ~bufBit;
             tri_mask &= ~bufBit;
             swrast_mask |= bufBit;
          }
+         blit_or_tri ^= bufBit;
       }
    }
 




More information about the mesa-commit mailing list