diff options
Diffstat (limited to 'src/gallium/drivers/r600')
-rw-r--r-- | src/gallium/drivers/r600/r600_blit.c | 4 | ||||
-rw-r--r-- | src/gallium/drivers/r600/r600_context.c | 31 | ||||
-rw-r--r-- | src/gallium/drivers/r600/r600_context.h | 2 | ||||
-rw-r--r-- | src/gallium/drivers/r600/r600_draw.c | 4 | ||||
-rw-r--r-- | src/gallium/drivers/r600/r600_query.c | 16 | ||||
-rw-r--r-- | src/gallium/drivers/r600/radeon.h | 13 |
6 files changed, 22 insertions, 48 deletions
diff --git a/src/gallium/drivers/r600/r600_blit.c b/src/gallium/drivers/r600/r600_blit.c index e6b3be6d3b..2c22adb62a 100644 --- a/src/gallium/drivers/r600/r600_blit.c +++ b/src/gallium/drivers/r600/r600_blit.c @@ -570,10 +570,10 @@ int r600_blit_uncompress_depth(struct pipe_context *ctx, struct r600_resource_te r600_queries_suspend(ctx); /* schedule draw*/ - r = radeon_ctx_set_draw(&rctx->ctx, &draw); + r = radeon_ctx_set_draw(rctx->ctx, &draw); if (r == -EBUSY) { r600_flush(ctx, 0, NULL); - r = radeon_ctx_set_draw(&rctx->ctx, &draw); + r = radeon_ctx_set_draw(rctx->ctx, &draw); } if (r) { goto out; diff --git a/src/gallium/drivers/r600/r600_context.c b/src/gallium/drivers/r600/r600_context.c index 00df4dcd42..2ec25548e3 100644 --- a/src/gallium/drivers/r600/r600_context.c +++ b/src/gallium/drivers/r600/r600_context.c @@ -56,7 +56,7 @@ static void r600_destroy_context(struct pipe_context *context) free(rctx->vs_constant); free(rctx->vs_resource); - radeon_ctx_fini(&rctx->ctx); + radeon_ctx_fini(rctx->ctx); FREE(rctx); } @@ -65,34 +65,17 @@ void r600_flush(struct pipe_context *ctx, unsigned flags, { struct r600_context *rctx = r600_context(ctx); struct r600_query *rquery = NULL; - static int dc = 0; -#if 0 - char dname[256]; -#endif /* suspend queries */ r600_queries_suspend(ctx); - /* FIXME dumping should be removed once shader support instructions - * without throwing bad code - */ - if (!rctx->ctx.cdwords) - goto out; -#if 0 - sprintf(dname, "gallium-%08d.bof", dc); - if (dc < 2) { - radeon_ctx_dump_bof(&rctx->ctx, dname); - R600_ERR("dumped %s\n", dname); - } -#endif -#if 1 - radeon_ctx_submit(&rctx->ctx); -#endif + + radeon_ctx_submit(rctx->ctx); + LIST_FOR_EACH_ENTRY(rquery, &rctx->query_list, list) { rquery->flushed = true; } - dc++; -out: - radeon_ctx_clear(&rctx->ctx); + + radeon_ctx_clear(rctx->ctx); /* resume queries */ r600_queries_resume(ctx); } @@ -151,7 +134,7 @@ struct pipe_context *r600_create_context(struct pipe_screen *screen, void *priv) return NULL; } - radeon_ctx_init(&rctx->ctx, rscreen->rw); + rctx->ctx = radeon_ctx_init(rscreen->rw); radeon_draw_init(&rctx->draw, rscreen->rw); return &rctx->context; } diff --git a/src/gallium/drivers/r600/r600_context.h b/src/gallium/drivers/r600/r600_context.h index 6d4a554b99..73037fdb1b 100644 --- a/src/gallium/drivers/r600/r600_context.h +++ b/src/gallium/drivers/r600/r600_context.h @@ -210,7 +210,7 @@ struct r600_context { struct pipe_context context; struct r600_screen *screen; struct radeon *rw; - struct radeon_ctx ctx; + struct radeon_ctx *ctx; struct blitter_context *blitter; struct radeon_draw draw; struct r600_context_hw_state_vtbl *vtbl; diff --git a/src/gallium/drivers/r600/r600_draw.c b/src/gallium/drivers/r600/r600_draw.c index d0de1658ba..669c9b4cdb 100644 --- a/src/gallium/drivers/r600/r600_draw.c +++ b/src/gallium/drivers/r600/r600_draw.c @@ -105,10 +105,10 @@ static int r600_draw_common(struct r600_draw *draw) rctx->vtbl->vgt_prim(draw, prim, vgt_dma_index_type); radeon_draw_bind(&rctx->draw, &draw->vgt); - r = radeon_ctx_set_draw(&rctx->ctx, &rctx->draw); + r = radeon_ctx_set_draw(rctx->ctx, &rctx->draw); if (r == -EBUSY) { r600_flush(draw->ctx, 0, NULL); - r = radeon_ctx_set_draw(&rctx->ctx, &rctx->draw); + r = radeon_ctx_set_draw(rctx->ctx, &rctx->draw); } radeon_state_fini(&draw->draw); diff --git a/src/gallium/drivers/r600/r600_query.c b/src/gallium/drivers/r600/r600_query.c index 0073072b4a..68358f9dd7 100644 --- a/src/gallium/drivers/r600/r600_query.c +++ b/src/gallium/drivers/r600/r600_query.c @@ -155,12 +155,12 @@ static void r600_begin_query(struct pipe_context *ctx, struct pipe_query *query) rquery->num_results = 0; rquery->flushed = false; r600_query_resume(ctx, rquery); - r = radeon_ctx_set_query_state(&rctx->ctx, &rquery->rstate); + r = radeon_ctx_set_query_state(rctx->ctx, &rquery->rstate); if (r == -EBUSY) { /* this shouldn't happen */ R600_ERR("had to flush while emitting end query\n"); ctx->flush(ctx, 0, NULL); - r = radeon_ctx_set_query_state(&rctx->ctx, &rquery->rstate); + r = radeon_ctx_set_query_state(rctx->ctx, &rquery->rstate); } } @@ -173,12 +173,12 @@ static void r600_end_query(struct pipe_context *ctx, struct pipe_query *query) rquery->state &= ~R600_QUERY_STATE_STARTED; rquery->state |= R600_QUERY_STATE_ENDED; r600_query_suspend(ctx, rquery); - r = radeon_ctx_set_query_state(&rctx->ctx, &rquery->rstate); + r = radeon_ctx_set_query_state(rctx->ctx, &rquery->rstate); if (r == -EBUSY) { /* this shouldn't happen */ R600_ERR("had to flush while emitting end query\n"); ctx->flush(ctx, 0, NULL); - r = radeon_ctx_set_query_state(&rctx->ctx, &rquery->rstate); + r = radeon_ctx_set_query_state(rctx->ctx, &rquery->rstate); } } @@ -191,12 +191,12 @@ void r600_queries_suspend(struct pipe_context *ctx) LIST_FOR_EACH_ENTRY(rquery, &rctx->query_list, list) { if (rquery->state & R600_QUERY_STATE_STARTED) { r600_query_suspend(ctx, rquery); - r = radeon_ctx_set_query_state(&rctx->ctx, &rquery->rstate); + r = radeon_ctx_set_query_state(rctx->ctx, &rquery->rstate); if (r == -EBUSY) { /* this shouldn't happen */ R600_ERR("had to flush while emitting end query\n"); ctx->flush(ctx, 0, NULL); - r = radeon_ctx_set_query_state(&rctx->ctx, &rquery->rstate); + r = radeon_ctx_set_query_state(rctx->ctx, &rquery->rstate); } } rquery->state |= R600_QUERY_STATE_SUSPENDED; @@ -212,12 +212,12 @@ void r600_queries_resume(struct pipe_context *ctx) LIST_FOR_EACH_ENTRY(rquery, &rctx->query_list, list) { if (rquery->state & R600_QUERY_STATE_STARTED) { r600_query_resume(ctx, rquery); - r = radeon_ctx_set_query_state(&rctx->ctx, &rquery->rstate); + r = radeon_ctx_set_query_state(rctx->ctx, &rquery->rstate); if (r == -EBUSY) { /* this shouldn't happen */ R600_ERR("had to flush while emitting end query\n"); ctx->flush(ctx, 0, NULL); - r = radeon_ctx_set_query_state(&rctx->ctx, &rquery->rstate); + r = radeon_ctx_set_query_state(rctx->ctx, &rquery->rstate); } } rquery->state &= ~R600_QUERY_STATE_SUSPENDED; diff --git a/src/gallium/drivers/r600/radeon.h b/src/gallium/drivers/r600/radeon.h index 7991821dda..12e8b993c8 100644 --- a/src/gallium/drivers/r600/radeon.h +++ b/src/gallium/drivers/r600/radeon.h @@ -161,18 +161,9 @@ struct radeon_cs_reloc { }; #pragma pack() -struct radeon_ctx { - struct radeon *radeon; - u32 *pm4; - int cdwords; - int ndwords; - unsigned nreloc; - struct radeon_cs_reloc *reloc; - unsigned nbo; - struct radeon_bo **bo; -}; +struct radeon_ctx; -int radeon_ctx_init(struct radeon_ctx *ctx, struct radeon *radeon); +struct radeon_ctx *radeon_ctx_init(struct radeon *radeon); void radeon_ctx_fini(struct radeon_ctx *ctx); void radeon_ctx_clear(struct radeon_ctx *ctx); int radeon_ctx_set_draw(struct radeon_ctx *ctx, struct radeon_draw *draw); |