r600g: flush the whole context when CS is full, not just hw_context
Because we disable render condition in r600_flush, but not in r600_context_flush.
This commit is contained in:
@@ -192,6 +192,9 @@ struct r600_context {
|
|||||||
struct r600_screen *screen;
|
struct r600_screen *screen;
|
||||||
struct radeon_winsys *ws;
|
struct radeon_winsys *ws;
|
||||||
struct radeon_winsys_cs *cs;
|
struct radeon_winsys_cs *cs;
|
||||||
|
struct pipe_context *pipe;
|
||||||
|
|
||||||
|
void (*flush)(void *pipe, unsigned flags);
|
||||||
|
|
||||||
struct r600_range *range;
|
struct r600_range *range;
|
||||||
unsigned nblocks;
|
unsigned nblocks;
|
||||||
|
@@ -956,7 +956,7 @@ void r600_need_cs_space(struct r600_context *ctx, unsigned num_dw,
|
|||||||
|
|
||||||
/* Flush if there's not enough space. */
|
/* Flush if there's not enough space. */
|
||||||
if (num_dw > RADEON_MAX_CMDBUF_DWORDS) {
|
if (num_dw > RADEON_MAX_CMDBUF_DWORDS) {
|
||||||
r600_context_flush(ctx, RADEON_FLUSH_ASYNC);
|
ctx->flush(ctx->pipe, RADEON_FLUSH_ASYNC);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -272,6 +272,8 @@ static struct pipe_context *r600_create_context(struct pipe_screen *screen, void
|
|||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
rctx->ctx.pipe = &rctx->context;
|
||||||
|
rctx->ctx.flush = r600_flush_from_winsys;
|
||||||
rctx->ws->cs_set_flush_callback(rctx->ctx.cs, r600_flush_from_winsys, rctx);
|
rctx->ws->cs_set_flush_callback(rctx->ctx.cs, r600_flush_from_winsys, rctx);
|
||||||
|
|
||||||
util_slab_create(&rctx->pool_transfers,
|
util_slab_create(&rctx->pool_transfers,
|
||||||
|
Reference in New Issue
Block a user