Merge remote-tracking branch 'origin/master' into pipe-video
authorChristian König <deathsimple@vodafone.de>
Thu, 9 Jun 2011 07:35:09 +0000 (09:35 +0200)
committerChristian König <deathsimple@vodafone.de>
Thu, 9 Jun 2011 07:35:09 +0000 (09:35 +0200)
Conflicts:
src/gallium/tests/unit/u_format_test.c
src/gallium/winsys/r600/drm/r600_hw_context.c

1  2 
src/gallium/auxiliary/Makefile
src/gallium/auxiliary/SConscript
src/gallium/drivers/r300/Makefile
src/gallium/drivers/r300/r300_screen.c
src/gallium/drivers/r600/r600_state.c
src/gallium/drivers/softpipe/sp_screen.c
src/gallium/winsys/r600/drm/r600_bo.c
src/gallium/winsys/r600/drm/r600_hw_context.c

Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
@@@ -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;