ctx->cs = ctx->ws->cs_create(ctx->ws);
- /* allocate cs variables */
- ctx->bo = calloc(RADEON_MAX_CMDBUF_DWORDS, sizeof(void *));
- if (ctx->bo == NULL) {
- r = -ENOMEM;
- goto out_err;
- }
-
r600_init_cs(ctx);
ctx->max_db = 8;
return 0;
r600_free_resource_range(ctx, &ctx->fs_resources, ctx->num_fs_resources);
free(ctx->range);
free(ctx->blocks);
- free(ctx->bo);
ctx->ws->cs_destroy(ctx->cs);
}
ctx->cs = ctx->ws->cs_create(ctx->ws);
- /* allocate cs variables */
- ctx->bo = calloc(RADEON_MAX_CMDBUF_DWORDS, sizeof(void *));
- if (ctx->bo == NULL) {
- r = -ENOMEM;
- goto out_err;
- }
-
r600_init_cs(ctx);
ctx->max_db = 4;
return 0;
/* Flush the CS. */
ctx->ws->cs_flush(ctx->cs, flags);
- /* restart */
- for (int i = 0; i < ctx->creloc; i++) {
- pipe_resource_reference((struct pipe_resource**)&ctx->bo[i], NULL);
- }
- ctx->creloc = 0;
ctx->pm4_dirty_cdwords = 0;
ctx->flags = 0;
static INLINE unsigned r600_context_bo_reloc(struct r600_context *ctx, struct r600_resource *rbo,
enum radeon_bo_usage usage)
{
- unsigned reloc_index;
-
assert(usage);
-
- reloc_index = ctx->ws->cs_add_reloc(ctx->cs, rbo->cs_buf, usage, rbo->domains);
- if (reloc_index >= ctx->creloc)
- ctx->creloc = reloc_index+1;
-
- pipe_resource_reference((struct pipe_resource**)&ctx->bo[reloc_index], &rbo->b.b.b);
- return reloc_index * 4;
+ return ctx->ws->cs_add_reloc(ctx->cs, rbo->cs_buf, usage, rbo->domains) * 4;
}
#endif
unsigned ctx_pm4_ndwords;
unsigned init_dwords;
- unsigned creloc;
- struct r600_resource **bo;
-
/* The list of active queries. Only one query of each type can be active. */
struct list_head active_query_list;
unsigned num_cs_dw_queries_suspend;