mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-05 22:38:05 +02:00
r600g: simplify block relocation
Since flush rework there could be only one relocation per register in a block. Signed-off-by: Jerome Glisse <jglisse@redhat.com>
This commit is contained in:
parent
ac8a1ebe55
commit
2cf3199ee3
3 changed files with 9 additions and 12 deletions
|
|
@ -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 {
|
||||
|
|
|
|||
|
|
@ -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++) {
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue