From 9b42100c04f14b4f2c1e5fe9748bb0519ed6c516 Mon Sep 17 00:00:00 2001 From: Michel Dänzer Date: Mon, 19 Mar 2007 17:23:44 +0100 Subject: i915tex: Fix triple buffering after recent Mesa core changes. Remove superfluous _mesa_resize_framebuffer call which is now harmful because it causes the third renderbuffer to have width/height 0, so Mesa refuses to render to it. In the long term, it would be nice to remove the hack in intel_alloc_window_storage in favour of a proper Mesa interface for flipping between more than two colour buffers. --- src/mesa/drivers/dri/i915tex/intel_buffers.c | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/src/mesa/drivers/dri/i915tex/intel_buffers.c b/src/mesa/drivers/dri/i915tex/intel_buffers.c index 62ff54b007..c0b4f438be 100644 --- a/src/mesa/drivers/dri/i915tex/intel_buffers.c +++ b/src/mesa/drivers/dri/i915tex/intel_buffers.c @@ -349,6 +349,28 @@ intelWindowMoved(struct intel_context *intel) /* Update Mesa's notion of window size */ driUpdateFramebufferSize(ctx, dPriv); + + /* Update size of third renderbuffer */ + if (intel_fb->pf_num_pages == 3) { + struct gl_renderbuffer *rb = &intel_fb->color_rb[(intel_fb->pf_current_page + + 2) % 3]->Base; + + /* only resize if size is changing */ + if (rb->Width != intel_fb->Base.Width || + rb->Height != intel_fb->Base.Height) { + /* could just as well pass rb->_ActualFormat here */ + if (rb->AllocStorage(ctx, rb, rb->InternalFormat, + intel_fb->Base.Width, intel_fb->Base.Height)) { + ASSERT(rb->Width == intel_fb->Base.Width); + ASSERT(rb->Height == intel_fb->Base.Height); + } + else { + _mesa_error(ctx, GL_OUT_OF_MEMORY, "Resizing framebuffer"); + /* no return */ + } + } + } + intel_fb->Base.Initialized = GL_TRUE; /* XXX remove someday */ /* Update hardware scissor */ -- cgit v1.2.3