summaryrefslogtreecommitdiffstats
path: root/src/mesa/state_tracker
diff options
context:
space:
mode:
authorBrian <[email protected]>2007-06-20 17:20:02 -0600
committerBrian <[email protected]>2007-06-20 17:20:02 -0600
commitecfa794037e8be351ecfec0229d1e3b1677ae369 (patch)
tree926451791d253e4059182e41619ee77306e92413 /src/mesa/state_tracker
parent3c0790ca9254e20e273f4f3023750b456260a499 (diff)
checkpoint: implement z/depth testing
Diffstat (limited to 'src/mesa/state_tracker')
-rw-r--r--src/mesa/state_tracker/st_atom.c1
-rw-r--r--src/mesa/state_tracker/st_atom_framebuffer.c14
2 files changed, 15 insertions, 0 deletions
diff --git a/src/mesa/state_tracker/st_atom.c b/src/mesa/state_tracker/st_atom.c
index e1d187f2db9..5fcd9d7af59 100644
--- a/src/mesa/state_tracker/st_atom.c
+++ b/src/mesa/state_tracker/st_atom.c
@@ -44,6 +44,7 @@ static const struct st_tracked_state *atoms[] =
{
&st_update_framebuffer,
&st_update_clear_color,
+ &st_update_depth,
&st_update_clip,
&st_update_fs,
&st_update_point,
diff --git a/src/mesa/state_tracker/st_atom_framebuffer.c b/src/mesa/state_tracker/st_atom_framebuffer.c
index f203e1df60b..8e98cbc2df0 100644
--- a/src/mesa/state_tracker/st_atom_framebuffer.c
+++ b/src/mesa/state_tracker/st_atom_framebuffer.c
@@ -39,6 +39,12 @@
extern struct pipe_surface *
xmesa_get_color_surface(GLcontext *ctx, GLuint i);
+extern struct pipe_surface *
+xmesa_get_z_surface(GLcontext *ctx, GLuint i);
+
+extern struct pipe_surface *
+xmesa_get_stencil_surface(GLcontext *ctx, GLuint i);
+
/**
* Update framebuffer state (color, depth, stencil, etc. buffers)
@@ -58,6 +64,14 @@ update_framebuffer_state( struct st_context *st )
framebuffer.cbufs[i] = xmesa_get_color_surface(st->ctx, i);
}
+ if (st->ctx->DrawBuffer->Attachment[BUFFER_DEPTH].Renderbuffer) {
+ framebuffer.zbuf = xmesa_get_z_surface(st->ctx, i);
+ }
+
+ if (st->ctx->DrawBuffer->Attachment[BUFFER_STENCIL].Renderbuffer) {
+ framebuffer.sbuf = xmesa_get_stencil_surface(st->ctx, i);
+ }
+
if (memcmp(&framebuffer, &st->state.framebuffer, sizeof(framebuffer)) != 0) {
st->state.framebuffer = framebuffer;
st->pipe->set_framebuffer_state( st->pipe, &framebuffer );