draw: corrections to allow for different cliptest cases
[mesa.git] / src / gallium / drivers / r600 / r600_context.c
index 776dc24569b692b826382d8c100ed0bf19eb2fdd..091751e93a910fbfa27c234d15e16378048685c5 100644 (file)
@@ -57,6 +57,8 @@ static void r600_destroy_context(struct pipe_context *context)
        free(rctx->vs_constant);
        free(rctx->vs_resource);
 
+       util_blitter_destroy(rctx->blitter);
+
        u_upload_destroy(rctx->upload_vb);
        u_upload_destroy(rctx->upload_ib);
 
@@ -69,6 +71,10 @@ void r600_flush(struct pipe_context *ctx, unsigned flags,
 {
        struct r600_context *rctx = r600_context(ctx);
        struct r600_query *rquery = NULL;
+#if 0
+       static int dc = 0;
+       char dname[256];
+#endif
 
        /* flush upload buffers */
        u_upload_flush(rctx->upload_vb);
@@ -77,10 +83,20 @@ void r600_flush(struct pipe_context *ctx, unsigned flags,
        /* suspend queries */
        r600_queries_suspend(ctx);
 
+
+#if 0
+       sprintf(dname, "gallium-%08d.bof", dc);
+       if (dc < 20) {
+               radeon_ctx_dump_bof(rctx->ctx, dname);
+               R600_ERR("dumped %s\n", dname);
+       }
+       dc++;
+#endif
+
        radeon_ctx_submit(rctx->ctx);
 
        LIST_FOR_EACH_ENTRY(rquery, &rctx->query_list, list) {
-               rquery->flushed = true;
+               rquery->flushed = TRUE;
        }
 
        radeon_ctx_clear(rctx->ctx);
@@ -88,13 +104,6 @@ void r600_flush(struct pipe_context *ctx, unsigned flags,
        r600_queries_resume(ctx);
 }
 
-void r600_flush_ctx(void *data)
-{
-        struct r600_context *rctx = data;
-
-        rctx->context.flush(&rctx->context, 0, NULL);
-}
-
 struct pipe_context *r600_create_context(struct pipe_screen *screen, void *priv)
 {
        struct r600_context *rctx = CALLOC_STRUCT(r600_context);
@@ -113,16 +122,17 @@ struct pipe_context *r600_create_context(struct pipe_screen *screen, void *priv)
        rctx->screen = rscreen;
        rctx->rw = rscreen->rw;
 
-       if (rscreen->chip_class == EVERGREEN)
+       if (radeon_get_family_class(rscreen->rw) == EVERGREEN)
                rctx->vtbl = &eg_hw_state_vtbl;
        else
                rctx->vtbl = &r600_hw_state_vtbl;
 
-       r600_init_blit_functions(rctx);
        r600_init_query_functions(rctx);
        r600_init_state_functions(rctx);
        r600_init_context_resource_functions(rctx);
 
+       r600_init_blit_functions(rctx);
+
        rctx->blitter = util_blitter_create(&rctx->context);
        if (rctx->blitter == NULL) {
                FREE(rctx);
@@ -160,6 +170,7 @@ struct pipe_context *r600_create_context(struct pipe_screen *screen, void *priv)
 
        rctx->ctx = radeon_ctx_init(rscreen->rw);
        radeon_draw_init(&rctx->draw, rscreen->rw);
+       r600_blit_uncompress_depth_ptr = r600_blit_uncompress_depth;
        return &rctx->context;
  out_free:
        FREE(rctx);