ctx->cs_shader_state.shader->resources;
/* make sure that the gfx ring is only one active */
- ctx->rings.dma.flush(ctx, RADEON_FLUSH_ASYNC);
+ if (ctx->rings.dma.cs) {
+ ctx->rings.dma.flush(ctx, RADEON_FLUSH_ASYNC);
+ }
/* Initialize all the compute-related registers.
*
*rfence = r600_create_fence(rctx);
}
/* flush gfx & dma ring, order does not matter as only one can be live */
- rctx->rings.dma.flush(rctx, fflags);
+ if (rctx->rings.dma.cs) {
+ rctx->rings.dma.flush(rctx, fflags);
+ }
rctx->rings.gfx.flush(rctx, fflags);
}
if (ctx->ws->cs_is_buffer_referenced(ctx->rings.gfx.cs, buf, usage)) {
return TRUE;
}
- if (ctx->ws->cs_is_buffer_referenced(ctx->rings.dma.cs, buf, usage)) {
- return TRUE;
+ if (ctx->rings.dma.cs) {
+ if (ctx->ws->cs_is_buffer_referenced(ctx->rings.dma.cs, buf, usage)) {
+ return TRUE;
+ }
}
return FALSE;
}
return NULL;
}
}
- if (ctx->ws->cs_is_buffer_referenced(ctx->rings.dma.cs, resource->cs_buf, rusage) && ctx->rings.dma.cs->cdw) {
- ctx->rings.dma.flush(ctx, flags);
- if (usage & PIPE_TRANSFER_DONTBLOCK) {
- return NULL;
+ if (ctx->rings.dma.cs) {
+ if (ctx->ws->cs_is_buffer_referenced(ctx->rings.dma.cs, resource->cs_buf, rusage) && ctx->rings.dma.cs->cdw) {
+ ctx->rings.dma.flush(ctx, flags);
+ if (usage & PIPE_TRANSFER_DONTBLOCK) {
+ return NULL;
+ }
}
}
* look serialized from driver pov
*/
if (!ring->flushing) {
- if (ring == &ctx->rings.gfx) {
+ if (ring == &ctx->rings.gfx && ctx->rings.dma.cs) {
/* flush dma ring */
ctx->rings.dma.flush(ctx, RADEON_FLUSH_ASYNC);
} else {
}
/* make sure that the gfx ring is only one active */
- rctx->rings.dma.flush(rctx, RADEON_FLUSH_ASYNC);
+ if (rctx->rings.dma.cs) {
+ rctx->rings.dma.flush(rctx, RADEON_FLUSH_ASYNC);
+ }
if (!r600_update_derived_state(rctx)) {
/* useless to render because current rendering command
if (usage & PIPE_TRANSFER_READ) {
r600_copy_to_staging_texture(ctx, trans);
/* flush gfx & dma ring, order does not matter as only one can be live */
- rctx->rings.dma.flush(rctx, 0);
+ if (rctx->rings.dma.cs) {
+ rctx->rings.dma.flush(rctx, 0);
+ }
rctx->rings.gfx.flush(rctx, 0);
}
} else {