softpipe: make z/s test always pass if no zsbuf, instead of crashing

D3D10 specifies this.
This commit is contained in:
Luca Barbieri 2010-09-20 19:22:44 +02:00
parent 6d0b695fa7
commit 2e7d1c2c86
1 changed files with 6 additions and 2 deletions

View File

@ -695,8 +695,9 @@ depth_test_quads_fallback(struct quad_stage *qs,
nr = alpha_test_quads(qs, quads, nr);
}
if (qs->softpipe->depth_stencil->depth.enabled ||
qs->softpipe->depth_stencil->stencil[0].enabled) {
if (qs->softpipe->framebuffer.zsbuf &&
(qs->softpipe->depth_stencil->depth.enabled ||
qs->softpipe->depth_stencil->stencil[0].enabled)) {
data.ps = qs->softpipe->framebuffer.zsbuf;
data.format = data.ps->format;
@ -805,6 +806,9 @@ choose_depth_test(struct quad_stage *qs,
boolean occlusion = qs->softpipe->active_query_count;
if(!qs->softpipe->framebuffer.zsbuf)
depth = depthwrite = stencil = FALSE;
/* default */
qs->run = depth_test_quads_fallback;