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

Author: Jerome Glisse <[email protected]>
Date:   Tue Oct  5 15:23:07 2010 -0400

r600g: simplify block relocation

Since flush rework there could be only one relocation per
register in a block.

Signed-off-by: Jerome Glisse <[email protected]>

---

 src/gallium/drivers/r600/r600.h               |    5 ++---
 src/gallium/winsys/r600/drm/r600_hw_context.c |    2 +-
 src/gallium/winsys/r600/drm/r600_priv.h       |   14 ++++++--------
 3 files changed, 9 insertions(+), 12 deletions(-)

diff --git a/src/gallium/drivers/r600/r600.h b/src/gallium/drivers/r600/r600.h
index acacec0..630177d 100644
--- a/src/gallium/drivers/r600/r600.h
+++ b/src/gallium/drivers/r600/r600.h
@@ -152,11 +152,10 @@ static inline void r600_pipe_state_add_reg(struct 
r600_pipe_state *state,
 #define R600_BLOCK_STATUS_DIRTY                (1 << 1)
 
 struct r600_block_reloc {
-       struct r600_bo  *bo;
-       unsigned                nreloc;
+       struct r600_bo          *bo;
        unsigned                flush_flags;
        unsigned                flush_mask;
-       unsigned                bo_pm4_index[R600_BLOCK_MAX_BO];
+       unsigned                bo_pm4_index;
 };
 
 struct r600_block {
diff --git a/src/gallium/winsys/r600/drm/r600_hw_context.c 
b/src/gallium/winsys/r600/drm/r600_hw_context.c
index 5019c26..b379499 100644
--- a/src/gallium/winsys/r600/drm/r600_hw_context.c
+++ b/src/gallium/winsys/r600/drm/r600_hw_context.c
@@ -96,7 +96,7 @@ int r600_context_add_block(struct r600_context *ctx, const 
struct r600_reg *reg,
                                block->pm4[block->pm4_ndwords++] = 0x00000000;
                                block->reloc[block->nbo].flush_flags = 
reg[i+j].flush_flags;
                                block->reloc[block->nbo].flush_mask = 
reg[i+j].flush_mask;
-                               
block->reloc[block->nbo].bo_pm4_index[block->reloc[block->nbo].nreloc++] = 
block->pm4_ndwords - 1;
+                               block->reloc[block->nbo].bo_pm4_index = 
block->pm4_ndwords - 1;
                        }
                }
                for (j = 0; j < n; j++) {
diff --git a/src/gallium/winsys/r600/drm/r600_priv.h 
b/src/gallium/winsys/r600/drm/r600_priv.h
index 9a38cc5..ea2cf34 100644
--- a/src/gallium/winsys/r600/drm/r600_priv.h
+++ b/src/gallium/winsys/r600/drm/r600_priv.h
@@ -149,15 +149,13 @@ static inline void r600_context_block_emit_dirty(struct 
r600_context *ctx, struc
                if (block->pm4_bo_index[j]) {
                        /* find relocation */
                        id = block->pm4_bo_index[j];
-                       for (int k = 0; k < block->reloc[id].nreloc; k++) {
-                               r600_context_bo_reloc(ctx,
-                                       
&block->pm4[block->reloc[id].bo_pm4_index[k]],
+                       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);
-                               r600_context_bo_flush(ctx,
-                                                       
block->reloc[id].flush_flags,
-                                                       
block->reloc[id].flush_mask,
-                                                       block->reloc[id].bo);
-                       }
                }
        }
        memcpy(&ctx->pm4[ctx->pm4_cdwords], block->pm4, block->pm4_ndwords * 4);

_______________________________________________
mesa-commit mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/mesa-commit

Reply via email to