From f659cc46bc80923694b88d8fc9549705d8ca90aa Mon Sep 17 00:00:00 2001 From: Dave Airlie Date: Wed, 8 Jun 2011 14:02:00 +1000 Subject: [PATCH] r600g: only add blocks once to the dirty/enabled lists. This caused a loop in some tests. Signed-off-by: Dave Airlie --- src/gallium/winsys/r600/drm/r600_hw_context.c | 8 +++++--- 1 file 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 50a6dec38ba..42492997df9 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) { -- 2.30.2