From: Brian Paul Date: Thu, 1 Sep 2005 20:11:32 +0000 (+0000) Subject: added driFlipRenderbuffers() X-Git-Tag: 062012170305~22141 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=238de2db120bb090a7f28a25093874b32a90c546;p=profile%2Fivi%2Fmesa.git added driFlipRenderbuffers() --- diff --git a/src/mesa/drivers/dri/common/drirenderbuffer.c b/src/mesa/drivers/dri/common/drirenderbuffer.c index 201ce44..45c81e2 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; + } +} diff --git a/src/mesa/drivers/dri/common/drirenderbuffer.h b/src/mesa/drivers/dri/common/drirenderbuffer.h index b2b6fea..67affa0 100644 --- a/src/mesa/drivers/dri/common/drirenderbuffer.h +++ b/src/mesa/drivers/dri/common/drirenderbuffer.h @@ -46,8 +46,10 @@ typedef struct { } driRenderbuffer; -driRenderbuffer * +extern driRenderbuffer * driNewRenderbuffer(GLenum format, GLint cpp, GLint offset, GLint pitch); +extern void +driFlipRenderbuffers(struct gl_framebuffer *fb, GLenum flipped); #endif /* DRIRENDERBUFFER_H */