Mesa (master): r600g: only add blocks once to the dirty/enabled lists.

Dave Airlie airlied at kemper.freedesktop.org
Wed Jun 8 04:04:37 UTC 2011


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

Author: Dave Airlie <airlied at redhat.com>
Date:   Wed Jun  8 14:02:00 2011 +1000

r600g: only add blocks once to the dirty/enabled lists.

This caused a loop in some tests.

Signed-off-by: Dave Airlie <airlied at redhat.com>

---

 src/gallium/winsys/r600/drm/r600_hw_context.c |    8 +++++---
 1 files changed, 5 insertions(+), 3 deletions(-)

diff --git a/src/gallium/winsys/r600/drm/r600_hw_context.c b/src/gallium/winsys/r600/drm/r600_hw_context.c
index 50a6dec..4249299 100644
--- a/src/gallium/winsys/r600/drm/r600_hw_context.c
+++ b/src/gallium/winsys/r600/drm/r600_hw_context.c
@@ -110,9 +110,11 @@ static void r600_init_block(struct r600_context *ctx,
 			block->flags |= REG_FLAG_DIRTY_ALWAYS;
 		}
 		if (reg[i+j].flags & REG_FLAG_ENABLE_ALWAYS) {
-			block->status |= R600_BLOCK_STATUS_ENABLED;
-			LIST_ADDTAIL(&block->enable_list, &ctx->enable_list);
-			LIST_ADDTAIL(&block->list,&ctx->dirty);
+			if (!(block->status & R600_BLOCK_STATUS_ENABLED)) {
+				block->status |= R600_BLOCK_STATUS_ENABLED;
+				LIST_ADDTAIL(&block->enable_list, &ctx->enable_list);
+				LIST_ADDTAIL(&block->list,&ctx->dirty);
+			}
 		}
 
 		if (reg[i+j].flags & REG_FLAG_NEED_BO) {




More information about the mesa-commit mailing list