diff options
Diffstat (limited to 'mesalib/src/mesa/drivers/dri/common/drirenderbuffer.h')
| -rw-r--r-- | mesalib/src/mesa/drivers/dri/common/drirenderbuffer.h | 78 | 
1 files changed, 78 insertions, 0 deletions
| diff --git a/mesalib/src/mesa/drivers/dri/common/drirenderbuffer.h b/mesalib/src/mesa/drivers/dri/common/drirenderbuffer.h new file mode 100644 index 000000000..cf55286b3 --- /dev/null +++ b/mesalib/src/mesa/drivers/dri/common/drirenderbuffer.h @@ -0,0 +1,78 @@ + +/** + * A driRenderbuffer is dervied from gl_renderbuffer. + * It describes a color buffer (front or back), a depth buffer, or stencil + * buffer etc. + * Specific to DRI drivers are the offset and pitch fields. + */ + + +#ifndef DRIRENDERBUFFER_H +#define DRIRENDERBUFFER_H + +#include "main/mtypes.h" +#include "dri_util.h" + + +typedef struct { +   struct gl_renderbuffer Base; + +   /* Chars or bytes per pixel.  If Z and Stencil are stored together this +    * will typically be 32 whether this a depth or stencil renderbuffer. +    */ +   GLint cpp; + +   /* Buffer position and pitch (row stride).  Recall that for today's DRI +    * drivers, we have statically allocated color/depth/stencil buffers. +    * So this information describes the whole screen, not just a window. +    * To address pixels in a window, we need to know the window's position +    * and size with respect to the screen. +    */ +   GLint offset;  /* in bytes */ +   GLint pitch;   /* in pixels */ + +   /* If the driver can do page flipping (full-screen double buffering) +    * the current front/back buffers may get swapped. +    * If page flipping is disabled, these  fields will be identical to +    * the offset/pitch/Data above. +    * If page flipping is enabled, and this is the front(back) renderbuffer, +    * flippedOffset/Pitch/Data will have the back(front) renderbuffer's values. +    */ +   GLint flippedOffset; +   GLint flippedPitch; +   GLvoid *flippedData;  /* mmap'd address of buffer memory, if used */ + +   /* Pointer to corresponding __DRIdrawablePrivate.  This is used to compute +    * the window's position within the framebuffer. +    */ +   __DRIdrawablePrivate *dPriv; + +   /* XXX this is for radeon/r200 only.  We should really create a new +    * r200Renderbuffer class, derived from this class...  not a huge deal. +    */ +   GLboolean depthHasSurface; + +   /** +    * A handy flag to know if this is the back color buffer. +    *  +    * \note +    * This is currently only used by s3v and tdfx. +    */ +   GLboolean backBuffer; +} driRenderbuffer; + + +extern driRenderbuffer * +driNewRenderbuffer(GLenum format, GLvoid *addr, +                   GLint cpp, GLint offset, GLint pitch, +                   __DRIdrawablePrivate *dPriv); + +extern void +driFlipRenderbuffers(struct gl_framebuffer *fb, GLboolean flipped); + + +extern void +driUpdateFramebufferSize(GLcontext *ctx, const __DRIdrawablePrivate *dPriv); + + +#endif /* DRIRENDERBUFFER_H */ | 
