summaryrefslogtreecommitdiff
path: root/src/mesa/state_tracker/st_atom_framebuffer.c
diff options
context:
space:
mode:
authorBrian <brian@i915.localnet.net>2007-07-30 17:17:44 -0600
committerBrian <brian@i915.localnet.net>2007-07-30 17:17:44 -0600
commit4576d754c98e3fb5d413e294d48fb70a893defcf (patch)
tree96dd5125f77209567e7ce916e5a7be07e4eced7d /src/mesa/state_tracker/st_atom_framebuffer.c
parent6558af67d380f2855b112ea3ce4dded9215c7cf7 (diff)
Lots of improvements to the surface-related code.
Z testing now works with i915 driver. Add gl_renderbuffer::surface pointer (and reverse pointer). Remove intel_surface and xmesa_surface types - no longer used.
Diffstat (limited to 'src/mesa/state_tracker/st_atom_framebuffer.c')
-rw-r--r--src/mesa/state_tracker/st_atom_framebuffer.c19
1 files changed, 14 insertions, 5 deletions
diff --git a/src/mesa/state_tracker/st_atom_framebuffer.c b/src/mesa/state_tracker/st_atom_framebuffer.c
index 595f390b28..f5e3ce8b67 100644
--- a/src/mesa/state_tracker/st_atom_framebuffer.c
+++ b/src/mesa/state_tracker/st_atom_framebuffer.c
@@ -54,22 +54,31 @@ static void
update_framebuffer_state( struct st_context *st )
{
struct pipe_framebuffer_state framebuffer;
+ struct gl_renderbuffer *rb;
GLuint i;
+ memset(&framebuffer, 0, sizeof(framebuffer));
+
/* Examine Mesa's ctx->DrawBuffer->_ColorDrawBuffers state
* to determine which surfaces to draw to
*/
framebuffer.num_cbufs = st->ctx->DrawBuffer->_NumColorDrawBuffers[0];
for (i = 0; i < framebuffer.num_cbufs; i++) {
- framebuffer.cbufs[i] = xmesa_get_color_surface(st->ctx, i);
+ rb = st->ctx->DrawBuffer->_ColorDrawBuffers[0][i];
+ assert(rb->surface);
+ framebuffer.cbufs[i] = rb->surface;
}
- if (st->ctx->DrawBuffer->_DepthBuffer/*Attachment[BUFFER_DEPTH].Renderbuffer*/) {
- framebuffer.zbuf = xmesa_get_z_surface(st->ctx);
+ rb = st->ctx->DrawBuffer->_DepthBuffer;
+ if (rb) {
+ assert(rb->surface);
+ framebuffer.zbuf = rb->Wrapped->surface;
}
- if (st->ctx->DrawBuffer->Attachment[BUFFER_STENCIL].Renderbuffer) {
- framebuffer.sbuf = xmesa_get_stencil_surface(st->ctx);
+ rb = st->ctx->DrawBuffer->_StencilBuffer;
+ if (rb) {
+ assert(rb->surface);
+ framebuffer.sbuf = rb->Wrapped->surface;
}
if (memcmp(&framebuffer, &st->state.framebuffer, sizeof(framebuffer)) != 0) {