From: Christian König Date: Thu, 9 Jun 2011 07:35:09 +0000 (+0200) Subject: Merge remote-tracking branch 'origin/master' into pipe-video X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=003401f95c9b59471c22368b7da16fe7a951e490;p=mesa.git Merge remote-tracking branch 'origin/master' into pipe-video Conflicts: src/gallium/tests/unit/u_format_test.c src/gallium/winsys/r600/drm/r600_hw_context.c --- 003401f95c9b59471c22368b7da16fe7a951e490 diff --cc src/gallium/winsys/r600/drm/r600_hw_context.c index af80aa67a44,44957db89af..711ce18c6ca --- a/src/gallium/winsys/r600/drm/r600_hw_context.c +++ b/src/gallium/winsys/r600/drm/r600_hw_context.c @@@ -1186,26 -1281,29 +1281,31 @@@ void r600_context_block_emit_dirty(stru goto out; } - optional &= (block->nreg_dirty != block->nreg); - - ctx->flags |= R600_CONTEXT_CHECK_EVENT_FLUSH; - for (int j = 0; j < block->nreg; j++) { - if (block->pm4_bo_index[j]) { - /* find relocation */ - id = block->pm4_bo_index[j]; - if (block->reloc[id].bo) { - r600_context_bo_reloc(ctx, - &block->pm4[block->reloc[id].bo_pm4_index], - block->reloc[id].bo); - r600_context_bo_flush(ctx, - block->reloc[id].flush_flags, - block->reloc[id].flush_mask, - block->reloc[id].bo); + if (nbo) { + ctx->flags |= R600_CONTEXT_CHECK_EVENT_FLUSH; + + for (int j = 0; j < block->nreg; j++) { + if (block->pm4_bo_index[j]) { + /* find relocation */ + id = block->pm4_bo_index[j]; - r600_context_bo_reloc(ctx, - &block->pm4[block->reloc[id].bo_pm4_index], - block->reloc[id].bo); - r600_context_bo_flush(ctx, - block->reloc[id].flush_flags, - block->reloc[id].flush_mask, - block->reloc[id].bo); ++ if (block->reloc[id].bo) { ++ r600_context_bo_reloc(ctx, ++ &block->pm4[block->reloc[id].bo_pm4_index], ++ block->reloc[id].bo); ++ r600_context_bo_flush(ctx, ++ block->reloc[id].flush_flags, ++ block->reloc[id].flush_mask, ++ block->reloc[id].bo); ++ } + nbo--; + if (nbo == 0) + break; } } + ctx->flags &= ~R600_CONTEXT_CHECK_EVENT_FLUSH; } - ctx->flags &= ~R600_CONTEXT_CHECK_EVENT_FLUSH; + optional &= (block->nreg_dirty != block->nreg); if (optional) { new_dwords = block->nreg_dirty; start_dword = ctx->pm4_cdwords;