Files
third_party_mesa3d/src/mesa/pipe/softpipe/sp_quad.c

65 lines
1.6 KiB
C
Raw Normal View History

#include "sp_context.h"
void
sp_build_quad_pipeline(struct softpipe_context *sp)
{
2007-06-20 17:20:02 -06:00
/* build up the pipeline in reverse order... */
sp->quad.first = sp->quad.output;
if (sp->blend.colormask != 0xf) {
sp->quad.colormask->next = sp->quad.first;
sp->quad.first = sp->quad.colormask;
}
if (sp->blend.blend_enable) {
sp->quad.blend->next = sp->quad.first;
sp->quad.first = sp->quad.blend;
}
if (sp->framebuffer.num_cbufs == 1) {
/* the usual case: write to exactly one colorbuf */
sp->cbuf = sp->framebuffer.cbufs[0];
}
else {
/* insert bufloop stage */
sp->quad.bufloop->next = sp->quad.first;
sp->quad.first = sp->quad.bufloop;
}
2007-07-13 09:25:57 -06:00
if (sp->depth_test.occlusion_count) {
sp->quad.occlusion->next = sp->quad.first;
sp->quad.first = sp->quad.occlusion;
}
2007-07-10 16:37:18 -06:00
if ( sp->stencil.front_enabled
|| sp->stencil.front_enabled) {
sp->quad.stencil_test->next = sp->quad.first;
sp->quad.first = sp->quad.stencil_test;
}
else if (sp->depth_test.enabled) {
2007-06-20 17:20:02 -06:00
sp->quad.depth_test->next = sp->quad.first;
sp->quad.first = sp->quad.depth_test;
}
2007-06-21 20:08:10 -06:00
if (sp->alpha_test.enabled) {
sp->quad.alpha_test->next = sp->quad.first;
sp->quad.first = sp->quad.alpha_test;
}
/* XXX always enable shader? */
if (1) {
sp->quad.shade->next = sp->quad.first;
sp->quad.first = sp->quad.shade;
}
if (sp->setup.poly_stipple_enable) {
sp->quad.polygon_stipple->next = sp->quad.first;
sp->quad.first = sp->quad.polygon_stipple;
}
}