Go to the source code of this file.
Functions | |
static void | sp_push_quad_first (struct softpipe_context *sp, struct quad_stage *quad, uint i) |
static void | sp_build_depth_stencil (struct softpipe_context *sp, uint i) |
void | sp_build_quad_pipeline (struct softpipe_context *sp) |
static void sp_build_depth_stencil | ( | struct softpipe_context * | sp, | |
uint | i | |||
) | [static] |
Definition at line 44 of file sp_quad.c.
References pipe_depth_stencil_alpha_state::depth, softpipe_context::depth_stencil, softpipe_context::depth_test, pipe_depth_state::enabled, pipe_stencil_state::enabled, softpipe_context::framebuffer, softpipe_context::quad, sp_push_quad_first(), pipe_depth_stencil_alpha_state::stencil, softpipe_context::stencil_test, and pipe_framebuffer_state::zsbuf.
00047 { 00048 if (sp->depth_stencil->stencil[0].enabled || 00049 sp->depth_stencil->stencil[1].enabled) { 00050 sp_push_quad_first( sp, sp->quad[i].stencil_test, i ); 00051 } 00052 else if (sp->depth_stencil->depth.enabled && 00053 sp->framebuffer.zsbuf) { 00054 sp_push_quad_first( sp, sp->quad[i].depth_test, i ); 00055 } 00056 }
void sp_build_quad_pipeline | ( | struct softpipe_context * | sp | ) |
Definition at line 59 of file sp_quad.c.
References pipe_depth_stencil_alpha_state::alpha, softpipe_context::alpha_test, softpipe_context::blend, pipe_blend_state::blend_enable, softpipe_context::colormask, pipe_blend_state::colormask, softpipe_context::coverage, pipe_depth_stencil_alpha_state::depth, softpipe_context::depth_stencil, softpipe_context::earlyz, pipe_alpha_state::enabled, pipe_depth_state::enabled, softpipe_context::first, softpipe_context::framebuffer, softpipe_context::fs, sp_fragment_shader::info, pipe_rasterizer_state::line_smooth, pipe_blend_state::logicop_enable, softpipe_context::occlusion, pipe_depth_state::occlusion_count, softpipe_context::output, pipe_rasterizer_state::point_smooth, pipe_rasterizer_state::poly_smooth, pipe_rasterizer_state::poly_stipple_enable, softpipe_context::polygon_stipple, softpipe_context::quad, softpipe_context::rasterizer, softpipe_context::shade, sp_build_depth_stencil(), SP_NUM_QUAD_THREADS, sp_push_quad_first(), tgsi_shader_info::uses_kill, tgsi_shader_info::writes_z, and pipe_framebuffer_state::zsbuf.
00060 { 00061 uint i; 00062 00063 boolean early_depth_test = 00064 sp->depth_stencil->depth.enabled && 00065 sp->framebuffer.zsbuf && 00066 !sp->depth_stencil->alpha.enabled && 00067 !sp->fs->info.uses_kill && 00068 !sp->fs->info.writes_z; 00069 00070 /* build up the pipeline in reverse order... */ 00071 for (i = 0; i < SP_NUM_QUAD_THREADS; i++) { 00072 sp->quad[i].first = sp->quad[i].output; 00073 00074 if (sp->blend->colormask != 0xf) { 00075 sp_push_quad_first( sp, sp->quad[i].colormask, i ); 00076 } 00077 00078 if (sp->blend->blend_enable || 00079 sp->blend->logicop_enable) { 00080 sp_push_quad_first( sp, sp->quad[i].blend, i ); 00081 } 00082 00083 if (sp->depth_stencil->depth.occlusion_count) { 00084 sp_push_quad_first( sp, sp->quad[i].occlusion, i ); 00085 } 00086 00087 if (sp->rasterizer->poly_smooth || 00088 sp->rasterizer->line_smooth || 00089 sp->rasterizer->point_smooth) { 00090 sp_push_quad_first( sp, sp->quad[i].coverage, i ); 00091 } 00092 00093 if (!early_depth_test) { 00094 sp_build_depth_stencil( sp, i ); 00095 } 00096 00097 if (sp->depth_stencil->alpha.enabled) { 00098 sp_push_quad_first( sp, sp->quad[i].alpha_test, i ); 00099 } 00100 00101 /* XXX always enable shader? */ 00102 if (1) { 00103 sp_push_quad_first( sp, sp->quad[i].shade, i ); 00104 } 00105 00106 if (early_depth_test) { 00107 sp_build_depth_stencil( sp, i ); 00108 sp_push_quad_first( sp, sp->quad[i].earlyz, i ); 00109 } 00110 00111 #if !USE_DRAW_STAGE_PSTIPPLE 00112 if (sp->rasterizer->poly_stipple_enable) { 00113 sp_push_quad_first( sp, sp->quad[i].polygon_stipple, i ); 00114 } 00115 #endif 00116 } 00117 }
static void sp_push_quad_first | ( | struct softpipe_context * | sp, | |
struct quad_stage * | quad, | |||
uint | i | |||
) | [static] |
Definition at line 34 of file sp_quad.c.
References softpipe_context::first, quad_stage::next, and softpipe_context::quad.