From 238de2db120bb090a7f28a25093874b32a90c546 Mon Sep 17 00:00:00 2001 From: Brian Paul Date: Thu, 1 Sep 2005 20:11:32 +0000 Subject: added driFlipRenderbuffers() --- src/mesa/drivers/dri/common/drirenderbuffer.c | 32 +++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) (limited to 'src/mesa/drivers/dri/common/drirenderbuffer.c') diff --git a/src/mesa/drivers/dri/common/drirenderbuffer.c b/src/mesa/drivers/dri/common/drirenderbuffer.c index 201ce44950..45c81e293c 100644 --- a/src/mesa/drivers/dri/common/drirenderbuffer.c +++ b/src/mesa/drivers/dri/common/drirenderbuffer.c @@ -100,3 +100,35 @@ driNewRenderbuffer(GLenum format, GLint cpp, GLint offset, GLint pitch) } return drb; } + + +/** + * Update the front and back renderbuffers' flippedPitch/Offset fields. + * This is used when we do double buffering via page flipping. + */ +void +driFlipRenderbuffers(struct gl_framebuffer *fb, GLenum flipped) +{ + driRenderbuffer *front_drb + = (driRenderbuffer *) fb->Attachment[BUFFER_FRONT_LEFT].Renderbuffer; + driRenderbuffer *back_drb + = (driRenderbuffer *) fb->Attachment[BUFFER_BACK_LEFT].Renderbuffer; + + /* If this fails, it means we're trying to do page flipping for a + * single-buffered window! + */ + assert(back_drb); + + if (flipped) { + front_drb->flippedOffset = back_drb->offset; + front_drb->flippedPitch = back_drb->pitch; + back_drb->flippedOffset = front_drb->offset; + back_drb->flippedPitch = front_drb->pitch; + } + else { + front_drb->flippedOffset = front_drb->offset; + front_drb->flippedPitch = front_drb->pitch; + back_drb->flippedOffset = back_drb->offset; + back_drb->flippedPitch = back_drb->pitch; + } +} -- cgit v1.2.3