Define destroy method called by softpipe's destructor.
authormichal <michal@michal-laptop.(none)>
Fri, 26 Oct 2007 16:25:09 +0000 (17:25 +0100)
committermichal <michal@michal-laptop.(none)>
Sat, 27 Oct 2007 18:01:11 +0000 (19:01 +0100)
12 files changed:
src/mesa/pipe/softpipe/sp_quad.h
src/mesa/pipe/softpipe/sp_quad_alpha_test.c
src/mesa/pipe/softpipe/sp_quad_blend.c
src/mesa/pipe/softpipe/sp_quad_bufloop.c
src/mesa/pipe/softpipe/sp_quad_colormask.c
src/mesa/pipe/softpipe/sp_quad_coverage.c
src/mesa/pipe/softpipe/sp_quad_depth_test.c
src/mesa/pipe/softpipe/sp_quad_fs.c
src/mesa/pipe/softpipe/sp_quad_occlusion.c
src/mesa/pipe/softpipe/sp_quad_output.c
src/mesa/pipe/softpipe/sp_quad_stencil.c
src/mesa/pipe/softpipe/sp_quad_stipple.c

index cca7dbdcbefdcfacb5ddd1f4880922465f4d754d..534541122b34fd9d16d2da16daaf35cd36b4ea8c 100644 (file)
@@ -45,6 +45,8 @@ struct quad_stage {
 
    /** the stage action */
    void (*run)(struct quad_stage *qs, struct quad_header *quad);
+
+   void (*destroy)(struct quad_stage *qs);
 };
 
 
index 4f28414b0e0a90718d4766522f9a175bfc54006b..d9b914d896b942361bd086abeb0a95b2b470bda6 100644 (file)
@@ -88,6 +88,12 @@ static void alpha_test_begin(struct quad_stage *qs)
 }
 
 
+static void alpha_test_destroy(struct quad_stage *qs)\r
+{\r
+   free( qs );\r
+}
+
+
 struct quad_stage *
 sp_quad_alpha_test_stage( struct softpipe_context *softpipe )
 {
@@ -96,6 +102,7 @@ sp_quad_alpha_test_stage( struct softpipe_context *softpipe )
    stage->softpipe = softpipe;
    stage->begin = alpha_test_begin;
    stage->run = alpha_test_quad;
+   stage->destroy = alpha_test_destroy;
 
    return stage;
 }
index 9b7a48669d46eaf5491e397f6f0517b1571ccbbb..cecf8af29ba1fd2c67a2c7d98279bca3c07bf3e2 100644 (file)
@@ -727,6 +727,12 @@ static void blend_begin(struct quad_stage *qs)
 }
 
 
+static void blend_destroy(struct quad_stage *qs)\r
+{\r
+   free( qs );\r
+}
+
+
 struct quad_stage *sp_quad_blend_stage( struct softpipe_context *softpipe )
 {
    struct quad_stage *stage = CALLOC_STRUCT(quad_stage);
@@ -734,6 +740,7 @@ struct quad_stage *sp_quad_blend_stage( struct softpipe_context *softpipe )
    stage->softpipe = softpipe;
    stage->begin = blend_begin;
    stage->run = blend_quad;
+   stage->destroy = blend_destroy;
 
    return stage;
 }
index ae2fb5ef973379c8af9b34f067caebab8952ff47..bdf491d4b1575e34db01a7030fc2c34dfdf159e5 100644 (file)
@@ -50,6 +50,12 @@ static void cbuf_loop_begin(struct quad_stage *qs)
 }
 
 
+static void cbuf_loop_destroy(struct quad_stage *qs)\r
+{\r
+   free( qs );\r
+}
+
+
 /**
  * Create the colorbuffer loop stage.
  * This is used to implement multiple render targets and GL_FRONT_AND_BACK
@@ -62,6 +68,7 @@ struct quad_stage *sp_quad_bufloop_stage( struct softpipe_context *softpipe )
    stage->softpipe = softpipe;
    stage->begin = cbuf_loop_begin;
    stage->run = cbuf_loop_quad;
+   stage->destroy = cbuf_loop_destroy;
 
    return stage;
 }
index 8872825555e07a099f060a2b75cd356225efbd7d..f0aa657e95f6070d8161a31622e0f5a1c080c9a3 100644 (file)
@@ -90,6 +90,12 @@ static void colormask_begin(struct quad_stage *qs)
 }
 
 
+static void colormask_destroy(struct quad_stage *qs)\r
+{\r
+   free( qs );\r
+}
+
+
 struct quad_stage *sp_quad_colormask_stage( struct softpipe_context *softpipe )
 {
    struct quad_stage *stage = CALLOC_STRUCT(quad_stage);
@@ -97,6 +103,7 @@ struct quad_stage *sp_quad_colormask_stage( struct softpipe_context *softpipe )
    stage->softpipe = softpipe;
    stage->begin = colormask_begin;
    stage->run = colormask_quad;
+   stage->destroy = colormask_destroy;
 
    return stage;
 }
index 89f50bcca2214d4c94269aeaf9a9be319fab97b3..25e7b033b95a79003c33c57a73cd8676a50267f1 100644 (file)
@@ -69,6 +69,12 @@ static void coverage_begin(struct quad_stage *qs)
 }
 
 
+static void coverage_destroy(struct quad_stage *qs)\r
+{\r
+   free( qs );\r
+}
+
+
 struct quad_stage *sp_quad_coverage_stage( struct softpipe_context *softpipe )
 {
    struct quad_stage *stage = CALLOC_STRUCT(quad_stage);
@@ -76,6 +82,7 @@ struct quad_stage *sp_quad_coverage_stage( struct softpipe_context *softpipe )
    stage->softpipe = softpipe;
    stage->begin = coverage_begin;
    stage->run = coverage_quad;
+   stage->destroy = coverage_destroy;
 
    return stage;
 }
index 188509065b608026561c9f15dd2a7820c9338d22..c24232bf1ecf3b8ab8a3a188c1f639cac16081f1 100644 (file)
@@ -231,6 +231,12 @@ static void depth_test_begin(struct quad_stage *qs)
 }
 
 
+static void depth_test_destroy(struct quad_stage *qs)\r
+{\r
+   free( qs );\r
+}
+
+
 struct quad_stage *sp_quad_depth_test_stage( struct softpipe_context *softpipe )
 {
    struct quad_stage *stage = CALLOC_STRUCT(quad_stage);
@@ -238,6 +244,7 @@ struct quad_stage *sp_quad_depth_test_stage( struct softpipe_context *softpipe )
    stage->softpipe = softpipe;
    stage->begin = depth_test_begin;
    stage->run = depth_test_quad;
+   stage->destroy = depth_test_destroy;
 
    return stage;
 }
index 9b9504cd157da10b9a2a89e106944da948e5adfc..dc8d6e0e2301a94a310c44f0c2cd3d498efe4fa4 100644 (file)
@@ -190,6 +190,12 @@ static void shade_begin(struct quad_stage *qs)
 }
 
 
+static void shade_destroy(struct quad_stage *qs)\r
+{\r
+   free( qs );\r
+}
+
+
 struct quad_stage *sp_quad_shade_stage( struct softpipe_context *softpipe )
 {
    struct quad_shade_stage *qss = CALLOC_STRUCT(quad_shade_stage);
@@ -204,6 +210,7 @@ struct quad_stage *sp_quad_shade_stage( struct softpipe_context *softpipe )
    qss->stage.softpipe = softpipe;
    qss->stage.begin = shade_begin;
    qss->stage.run = shade_quad;
+   qss->stage.destroy = shade_destroy;
 
    /* set TGSI sampler state that's constant */
    for (i = 0; i < PIPE_MAX_SAMPLERS; i++) {
index 4f178f0557ebeaa6f6c0a46565cd78fb371fe6bf..18a36e82862e55b96b3fb6a5b366a34393ca8083 100644 (file)
@@ -64,6 +64,11 @@ static void occlusion_begin(struct quad_stage *qs)
 }
 
 
+static void occlusion_destroy(struct quad_stage *qs)\r
+{\r
+   free( qs );\r
+}
+
 
 struct quad_stage *sp_quad_occlusion_stage( struct softpipe_context *softpipe )
 {
@@ -72,6 +77,7 @@ struct quad_stage *sp_quad_occlusion_stage( struct softpipe_context *softpipe )
    stage->softpipe = softpipe;
    stage->begin = occlusion_begin;
    stage->run = occlusion_count_quad;
+   stage->destroy = occlusion_destroy;
 
    return stage;
 }
index f757a43927994e3107d3c36922067fd27c52cd6b..09194c14a6f083654e6a6afdcd0bc123a22b9613 100644 (file)
@@ -70,6 +70,12 @@ static void output_begin(struct quad_stage *qs)
 }
 
 
+static void output_destroy(struct quad_stage *qs)\r
+{\r
+   free( qs );\r
+}
+
+
 struct quad_stage *sp_quad_output_stage( struct softpipe_context *softpipe )
 {
    struct quad_stage *stage = CALLOC_STRUCT(quad_stage);
@@ -77,6 +83,7 @@ struct quad_stage *sp_quad_output_stage( struct softpipe_context *softpipe )
    stage->softpipe = softpipe;
    stage->begin = output_begin;
    stage->run = output_quad;
+   stage->destroy = output_destroy;
 
    return stage;
 }
index c4240f1f8b900656d6bc9768fbcafe2d26f676b5..14aa7df279eb8e47bc262ec7eb963d9f4c3e68ae 100644 (file)
@@ -323,6 +323,12 @@ static void stencil_begin(struct quad_stage *qs)
 }
 
 
+static void stencil_destroy(struct quad_stage *qs)\r
+{\r
+   free( qs );\r
+}
+
+
 struct quad_stage *sp_quad_stencil_test_stage( struct softpipe_context *softpipe )
 {
    struct quad_stage *stage = CALLOC_STRUCT(quad_stage);
@@ -330,6 +336,7 @@ struct quad_stage *sp_quad_stencil_test_stage( struct softpipe_context *softpipe
    stage->softpipe = softpipe;
    stage->begin = stencil_begin;
    stage->run = stencil_test_quad;
+   stage->destroy = stencil_destroy;
 
    return stage;
 }
index 4af5059d67e169433bd88245d1f3b5ef10f81894..7916dcd0cafdc55c1622216be8c20daf15d673f7 100644 (file)
@@ -65,6 +65,12 @@ static void stipple_begin(struct quad_stage *qs)
 }
 
 
+static void stipple_destroy(struct quad_stage *qs)\r
+{\r
+   free( qs );\r
+}
+
+
 struct quad_stage *
 sp_quad_polygon_stipple_stage( struct softpipe_context *softpipe )
 {
@@ -73,6 +79,7 @@ sp_quad_polygon_stipple_stage( struct softpipe_context *softpipe )
    stage->softpipe = softpipe;
    stage->begin = stipple_begin;
    stage->run = stipple_quad;
+   stage->destroy = stipple_destroy;
 
    return stage;
 }