/** the stage action */
void (*run)(struct quad_stage *qs, struct quad_header *quad);
+
+ void (*destroy)(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 )
{
stage->softpipe = softpipe;
stage->begin = alpha_test_begin;
stage->run = alpha_test_quad;
+ stage->destroy = alpha_test_destroy;
return stage;
}
}
+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);
stage->softpipe = softpipe;
stage->begin = blend_begin;
stage->run = blend_quad;
+ stage->destroy = blend_destroy;
return stage;
}
}
+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
stage->softpipe = softpipe;
stage->begin = cbuf_loop_begin;
stage->run = cbuf_loop_quad;
+ stage->destroy = cbuf_loop_destroy;
return stage;
}
}
+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);
stage->softpipe = softpipe;
stage->begin = colormask_begin;
stage->run = colormask_quad;
+ stage->destroy = colormask_destroy;
return stage;
}
}
+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);
stage->softpipe = softpipe;
stage->begin = coverage_begin;
stage->run = coverage_quad;
+ stage->destroy = coverage_destroy;
return stage;
}
}
+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);
stage->softpipe = softpipe;
stage->begin = depth_test_begin;
stage->run = depth_test_quad;
+ stage->destroy = depth_test_destroy;
return stage;
}
}
+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);
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++) {
}
+static void occlusion_destroy(struct quad_stage *qs)\r
+{\r
+ free( qs );\r
+}
+
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;
}
}
+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);
stage->softpipe = softpipe;
stage->begin = output_begin;
stage->run = output_quad;
+ stage->destroy = output_destroy;
return stage;
}
}
+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);
stage->softpipe = softpipe;
stage->begin = stencil_begin;
stage->run = stencil_test_quad;
+ stage->destroy = stencil_destroy;
return stage;
}
}
+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 )
{
stage->softpipe = softpipe;
stage->begin = stipple_begin;
stage->run = stipple_quad;
+ stage->destroy = stipple_destroy;
return stage;
}