diff options
Diffstat (limited to 'src/gallium/winsys/r600/drm/r600_priv.h')
-rw-r--r-- | src/gallium/winsys/r600/drm/r600_priv.h | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/src/gallium/winsys/r600/drm/r600_priv.h b/src/gallium/winsys/r600/drm/r600_priv.h index 46192074328..f6ceb0adc36 100644 --- a/src/gallium/winsys/r600/drm/r600_priv.h +++ b/src/gallium/winsys/r600/drm/r600_priv.h @@ -53,6 +53,7 @@ struct r600_reg { unsigned offset; unsigned need_bo; unsigned flush_flags; + unsigned flush_mask; }; struct radeon_bo { @@ -68,6 +69,7 @@ struct radeon_bo { boolean set_busy; struct r600_reloc *reloc; unsigned reloc_id; + unsigned last_flush; }; struct r600_bo { @@ -102,6 +104,8 @@ struct pb_buffer *radeon_bo_pb_create_buffer_from_handle(struct pb_manager *_mgr /* r600_hw_context.c */ void r600_context_bo_reloc(struct r600_context *ctx, u32 *pm4, struct r600_bo *rbo); +void r600_context_bo_flush(struct r600_context *ctx, unsigned flush_flags, + unsigned flush_mask, struct r600_bo *rbo); struct r600_bo *r600_context_reg_bo(struct r600_context *ctx, unsigned offset); int r600_context_add_block(struct r600_context *ctx, const struct r600_reg *reg, unsigned nreg); @@ -148,6 +152,10 @@ static inline void r600_context_block_emit_dirty(struct r600_context *ctx, struc r600_context_bo_reloc(ctx, &block->pm4[block->reloc[id].bo_pm4_index[k]], block->reloc[id].bo); + r600_context_bo_flush(ctx, + block->reloc[id].flush_flags, + block->reloc[id].flush_mask, + block->reloc[id].bo); } } } |