cso: put cso_release_all into cso_destroy_context
authorMarek Olšák <marek.olsak@amd.com>
Sun, 7 Dec 2014 13:21:41 +0000 (14:21 +0100)
committerMarek Olšák <marek.olsak@amd.com>
Wed, 10 Dec 2014 20:59:36 +0000 (21:59 +0100)
Reviewed-by: Brian Paul <brianp@vmware.com>
src/gallium/auxiliary/cso_cache/cso_context.c
src/gallium/auxiliary/cso_cache/cso_context.h
src/gallium/auxiliary/util/u_tests.c
src/gallium/state_trackers/nine/device9.c
src/gallium/state_trackers/vega/vg_context.c
src/gallium/state_trackers/xa/xa_context.c
src/gallium/tests/trivial/quad-tex.c
src/gallium/tests/trivial/tri.c
src/mesa/state_tracker/st_context.c

index 3d8860f7b88631debcd4fe77fae87cd2fea1c63e..5d597ba5c290f1dc43486f2b720ceb90ae61ea27 100644 (file)
@@ -286,9 +286,9 @@ out:
 }
 
 /**
- * Prior to context destruction, this function unbinds all state objects.
+ * Free the CSO context.
  */
-void cso_release_all( struct cso_context *ctx )
+void cso_destroy_context( struct cso_context *ctx )
 {
    unsigned i, shader;
 
@@ -355,20 +355,10 @@ void cso_release_all( struct cso_context *ctx )
       cso_cache_delete( ctx->cache );
       ctx->cache = NULL;
    }
-}
 
-
-/**
- * Free the CSO context.  NOTE: the state tracker should have previously called
- * cso_release_all().
- */
-void cso_destroy_context( struct cso_context *ctx )
-{
-   if (ctx) {
-      if (ctx->vbuf)
-         u_vbuf_destroy(ctx->vbuf);
-      FREE( ctx );
-   }
+   if (ctx->vbuf)
+      u_vbuf_destroy(ctx->vbuf);
+   FREE( ctx );
 }
 
 
index f0a08bb0d2cbec1fcf5cc740ac8d4b06c3715b0e..aa56c589dade4a894ce7ee102f18080c548773f8 100644 (file)
@@ -42,13 +42,9 @@ struct cso_context;
 struct u_vbuf;
 
 struct cso_context *cso_create_context( struct pipe_context *pipe );
-
-void cso_release_all( struct cso_context *ctx );
-
 void cso_destroy_context( struct cso_context *cso );
 
 
-
 enum pipe_error cso_set_blend( struct cso_context *cso,
                                const struct pipe_blend_state *blend );
 void cso_save_blend(struct cso_context *cso);
index c0f6327b6e9363699a979653204f04360ba529a2..b42f5e137ba8ec457529a527f8e065f437a3cdc4 100644 (file)
@@ -248,7 +248,6 @@ tgsi_vs_window_space_position(struct pipe_context *ctx)
                                        cb->width0, cb->height0, red);
 
    /* Cleanup. */
-   cso_release_all(cso);
    cso_destroy_context(cso);
    ctx->delete_vs_state(ctx, vs);
    ctx->delete_fs_state(ctx, fs);
index e9599b853c021f939783257dc41722c00a5690cd..b0e42ebc8abae8464c36105aedb0dbc4190ac0e3 100644 (file)
@@ -360,7 +360,6 @@ NineDevice9_dtor( struct NineDevice9 *This )
     /* state stuff */
     if (This->pipe) {
         if (This->cso) {
-            cso_release_all(This->cso);
             cso_destroy_context(This->cso);
         }
         if (This->pipe->destroy) { This->pipe->destroy(This->pipe); }
index 46c7d9649fdc62e09266a063c4c5766df6d0b366..48a03c5a64a716069c1f388054a14a3da26d6312 100644 (file)
@@ -161,7 +161,6 @@ void vg_destroy_context(struct vg_context *ctx)
    if (ctx->mask.set_fs)
       vg_shader_destroy(ctx, ctx->mask.set_fs);
 
-   cso_release_all(ctx->cso_context);
    cso_destroy_context(ctx->cso_context);
 
    cso_hash_delete(ctx->owned_objects[VG_OBJECT_PAINT]);
index df3043c89291903c1dd5e4c6903dd91b5220ac93..fd49c82a5595d6d0c22aa88d385cc64778c954af 100644 (file)
@@ -82,7 +82,6 @@ xa_context_destroy(struct xa_context *r)
         pipe_surface_reference(&r->srf, NULL);
 
     if (r->cso) {
-       cso_release_all(r->cso);
        cso_destroy_context(r->cso);
        r->cso = NULL;
     }
index 0d380125a5791b33b2ca498dbbce07b8c74e1758..abecedbd594cf054b1fb1ef9dfda4727c4c38bb3 100644 (file)
@@ -275,11 +275,7 @@ static void init_prog(struct program *p)
 
 static void close_prog(struct program *p)
 {
-       /* unset bound textures as well */
-       cso_set_sampler_views(p->cso, PIPE_SHADER_FRAGMENT, 0, NULL);
-
-       /* unset all state */
-       cso_release_all(p->cso);
+       cso_destroy_context(p->cso);
 
        p->pipe->delete_vs_state(p->pipe, p->vs);
        p->pipe->delete_fs_state(p->pipe, p->fs);
@@ -290,7 +286,6 @@ static void close_prog(struct program *p)
        pipe_resource_reference(&p->tex, NULL);
        pipe_resource_reference(&p->vbuf, NULL);
 
-       cso_destroy_context(p->cso);
        p->pipe->destroy(p->pipe);
        p->screen->destroy(p->screen);
        pipe_loader_release(&p->dev, 1);
index 13cc801ec639714f5cb576519e38cdc47d44118e..078beb8f43fe9de80a9f050ff2683f0f2ab8f025 100644 (file)
@@ -221,8 +221,7 @@ static void init_prog(struct program *p)
 
 static void close_prog(struct program *p)
 {
-       /* unset all state */
-       cso_release_all(p->cso);
+       cso_destroy_context(p->cso);
 
        p->pipe->delete_vs_state(p->pipe, p->vs);
        p->pipe->delete_fs_state(p->pipe, p->fs);
@@ -231,7 +230,6 @@ static void close_prog(struct program *p)
        pipe_resource_reference(&p->target, NULL);
        pipe_resource_reference(&p->vbuf, NULL);
 
-       cso_destroy_context(p->cso);
        p->pipe->destroy(p->pipe);
        p->screen->destroy(p->screen);
        pipe_loader_release(&p->dev, 1);
index 9da0c776d9613bd0651c222873217c9efc6848ff..9fd6caece735821e4f708767809567192fab9632 100644 (file)
@@ -136,6 +136,8 @@ st_destroy_context_priv(struct st_context *st)
    if (st->constbuf_uploader) {
       u_upload_destroy(st->constbuf_uploader);
    }
+
+   cso_destroy_context(st->cso_context);
    free( st );
 }
 
@@ -348,15 +350,11 @@ destroy_tex_sampler_cb(GLuint id, void *data, void *userData)
 void st_destroy_context( struct st_context *st )
 {
    struct pipe_context *pipe = st->pipe;
-   struct cso_context *cso = st->cso_context;
    struct gl_context *ctx = st->ctx;
    GLuint i;
 
    _mesa_HashWalk(ctx->Shared->TexObjects, destroy_tex_sampler_cb, st);
 
-   /* need to unbind and destroy CSO objects before anything else */
-   cso_release_all(st->cso_context);
-
    st_reference_fragprog(st, &st->fp, NULL);
    st_reference_geomprog(st, &st->gp, NULL);
    st_reference_vertprog(st, &st->vp, NULL);
@@ -386,8 +384,6 @@ void st_destroy_context( struct st_context *st )
    st_destroy_context_priv(st);
    st = NULL;
 
-   cso_destroy_context(cso);
-
    pipe->destroy( pipe );
 
    free(ctx);