Add new void *addr and __DRIdrawablePrivate parameters to

driNewRenderbuffer().
This commit is contained in:
Brian Paul 2005-09-04 22:13:42 +00:00
parent 6e0e6eff05
commit 61ba6b5a74
20 changed files with 373 additions and 249 deletions

View file

@ -38,12 +38,16 @@ driDeleteRenderbuffer(struct gl_renderbuffer *rb)
* this function.
* \param format Either GL_RGBA, GL_DEPTH_COMPONENT16, GL_DEPTH_COMPONENT24,
* GL_DEPTH_COMPONENT32, or GL_STENCIL_INDEX8_EXT (for now).
* \param addr address in main memory of the buffer. Probably a memory
* mapped region.
* \param cpp chars or bytes per pixel
* \param offset start of renderbuffer with respect to start of framebuffer
* \param pitch pixels per row
*/
driRenderbuffer *
driNewRenderbuffer(GLenum format, GLint cpp, GLint offset, GLint pitch)
driNewRenderbuffer(GLenum format, GLvoid *addr,
GLint cpp, GLint offset, GLint pitch,
__DRIdrawablePrivate *dPriv)
{
driRenderbuffer *drb;
@ -98,7 +102,10 @@ driNewRenderbuffer(GLenum format, GLint cpp, GLint offset, GLint pitch)
drb->Base.AllocStorage = driRenderbufferStorage;
drb->Base.Delete = driDeleteRenderbuffer;
drb->Base.Data = addr;
/* DRI renderbuffer-specific fields: */
drb->dPriv = dPriv;
drb->offset = offset;
drb->pitch = pitch;
drb->cpp = cpp;
@ -106,6 +113,7 @@ driNewRenderbuffer(GLenum format, GLint cpp, GLint offset, GLint pitch)
/* may be changed if page flipping is active: */
drb->flippedOffset = offset;
drb->flippedPitch = pitch;
drb->flippedData = addr;
}
return drb;
}

View file

@ -11,6 +11,8 @@
#define DRIRENDERBUFFER_H
#include "mtypes.h"
#include "dri_util.h"
typedef struct {
struct gl_renderbuffer Base;
@ -38,7 +40,12 @@ typedef struct {
*/
GLint flippedOffset;
GLint flippedPitch;
GLubyte *flippedData; /* mmap'd memory, if used */
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.
@ -53,7 +60,9 @@ typedef struct {
extern driRenderbuffer *
driNewRenderbuffer(GLenum format, GLint cpp, GLint offset, GLint pitch);
driNewRenderbuffer(GLenum format, GLvoid *addr,
GLint cpp, GLint offset, GLint pitch,
__DRIdrawablePrivate *dPriv);
extern void
driFlipRenderbuffers(struct gl_framebuffer *fb, GLboolean flipped);

View file

@ -426,21 +426,27 @@ fbCreateBuffer( __DRIscreenPrivate *driScrnPriv,
/* XXX double-check these parameters (bpp vs cpp, etc) */
{
driRenderbuffer *drb = driNewRenderbuffer(GL_RGBA, driScrnPriv->fbBPP / 8,
driScrnPriv->fbOrigin,
driScrnPriv->fbStride);
driRenderbuffer *drb = driNewRenderbuffer(GL_RGBA,
driScrnPriv->pFB,
driScrnPriv->fbBPP / 8,
driScrnPriv->fbOrigin,
driScrnPriv->fbStride,
driDrawPriv);
fbSetSpanFunctions(drb, mesaVis);
drb->Base.Data = driScrnPriv->pFB;
_mesa_add_renderbuffer(mesa_framebuffer,
BUFFER_FRONT_LEFT, &drb->Base);
}
if (mesaVis->doubleBufferMode) {
/* XXX what are the correct origin/stride values? */
driRenderbuffer *drb = driNewRenderbuffer(GL_RGBA, driScrnPriv->fbBPP /8,
driScrnPriv->fbOrigin,
driScrnPriv->fbStride);
GLvoid *backBuf = _mesa_malloc(driScrnPriv->fbStride
* driScrnPriv->fbHeight);
driRenderbuffer *drb = driNewRenderbuffer(GL_RGBA,
backBuf,
driScrnPriv->fbBPP /8,
driScrnPriv->fbOrigin,
driScrnPriv->fbStride,
driDrawPriv);
fbSetSpanFunctions(drb, mesaVis);
drb->Base.Data = _mesa_malloc(driScrnPriv->fbStride * driScrnPriv->fbHeight);
_mesa_add_renderbuffer(mesa_framebuffer,
BUFFER_BACK_LEFT, &drb->Base);
}

View file

@ -682,20 +682,21 @@ fbCreateScreenSurfaceMESA(_EGLDriver *drv, EGLDisplay dpy, EGLConfig cfg,
/* front color renderbuffer */
{
driRenderbuffer *drb = driNewRenderbuffer(GL_RGBA, bytesPerPixel,
origin, stride);
driRenderbuffer *drb = driNewRenderbuffer(GL_RGBA, display->pFB,
bytesPerPixel,
origin, stride, NULL);
fbSetSpanFunctions(drb, &vis);
drb->Base.Data = display->pFB;
_mesa_add_renderbuffer(surface->mesa_framebuffer,
BUFFER_FRONT_LEFT, &drb->Base);
}
/* back color renderbuffer */
if (vis.doubleBufferMode) {
driRenderbuffer *drb = driNewRenderbuffer(GL_RGBA, bytesPerPixel,
origin, stride);
GLubyte *backBuf = _mesa_malloc(stride * height);
driRenderbuffer *drb = driNewRenderbuffer(GL_RGBA, backBuf,
bytesPerPixel,
origin, stride, NULL);
fbSetSpanFunctions(drb, &vis);
drb->Base.Data = _mesa_malloc(stride * height);
_mesa_add_renderbuffer(surface->mesa_framebuffer,
BUFFER_BACK_LEFT, &drb->Base);
}

View file

@ -343,28 +343,32 @@ ffbCreateBuffer(__DRIscreenPrivate *driScrnPriv,
{
driRenderbuffer *frontRb
= driNewRenderbuffer(GL_RGBA, bpp, offset, bogusPitch);
= driNewRenderbuffer(GL_RGBA, NULL, bpp, offset, bogusPitch,
driDrawPriv);
ffbSetSpanFunctions(frontRb, mesaVis);
_mesa_add_renderbuffer(fb, BUFFER_FRONT_LEFT, &frontRb->Base);
}
if (mesaVis->doubleBufferMode) {
driRenderbuffer *backRb
= driNewRenderbuffer(GL_RGBA, bpp, offset, bogusPitch);
= driNewRenderbuffer(GL_RGBA, NULL, bpp, offset, bogusPitch,
driDrawPriv);
ffbSetSpanFunctions(backRb, mesaVis);
_mesa_add_renderbuffer(fb, BUFFER_BACK_LEFT, &backRb->Base);
}
if (mesaVis->depthBits == 16) {
driRenderbuffer *depthRb
= driNewRenderbuffer(GL_DEPTH_COMPONENT16, bpp, offset, bogusPitch);
= driNewRenderbuffer(GL_DEPTH_COMPONENT16, NULL, bpp, offset,
bogusPitch, driDrawPriv);
ffbSetDepthFunctions(depthRb, mesaVis);
_mesa_add_renderbuffer(fb, BUFFER_DEPTH, &depthRb->Base);
}
if (mesaVis->stencilBits > 0 && !swStencil) {
driRenderbuffer *stencilRb
= driNewRenderbuffer(GL_STENCIL_INDEX8_EXT, bpp, offset,bogusPitch);
= driNewRenderbuffer(GL_STENCIL_INDEX8_EXT, NULL, bpp, offset,
bogusPitch, driDrawPriv);
ffbSetStencilFunctions(stencilRb, mesaVis);
_mesa_add_renderbuffer(fb, BUFFER_STENCIL, &stencilRb->Base);
}

View file

@ -346,41 +346,39 @@ i810CreateBuffer( __DRIscreenPrivate *driScrnPriv,
return GL_FALSE; /* not implemented */
}
else {
#if 0
driDrawPriv->driverPrivate = (void *)
_mesa_create_framebuffer(mesaVis,
GL_FALSE, /* software depth buffer? */
mesaVis->stencilBits > 0,
mesaVis->accumRedBits > 0,
GL_FALSE /* s/w alpha planes */);
#else
struct gl_framebuffer *fb = _mesa_create_framebuffer(mesaVis);
{
driRenderbuffer *frontRb
= driNewRenderbuffer(GL_RGBA, screen->cpp,
/*screen->frontOffset*/0, screen->backPitch);
= driNewRenderbuffer(GL_RGBA,
driScrnPriv->pFB,
screen->cpp,
/*screen->frontOffset*/0, screen->backPitch,
driDrawPriv);
i810SetSpanFunctions(frontRb, mesaVis);
_mesa_add_renderbuffer(fb, BUFFER_FRONT_LEFT, &frontRb->Base);
frontRb->Base.Data = driScrnPriv->pFB;
}
if (mesaVis->doubleBufferMode) {
driRenderbuffer *backRb
= driNewRenderbuffer(GL_RGBA, screen->cpp,
screen->backOffset, screen->backPitch);
= driNewRenderbuffer(GL_RGBA,
screen->back.map,
screen->cpp,
screen->backOffset, screen->backPitch,
driDrawPriv);
i810SetSpanFunctions(backRb, mesaVis);
_mesa_add_renderbuffer(fb, BUFFER_BACK_LEFT, &backRb->Base);
backRb->Base.Data = (GLubyte *) screen->back.map;
}
if (mesaVis->depthBits == 16) {
driRenderbuffer *depthRb
= driNewRenderbuffer(GL_DEPTH_COMPONENT16, screen->cpp,
screen->depthOffset, screen->backPitch);
= driNewRenderbuffer(GL_DEPTH_COMPONENT16,
screen->depth.map,
screen->cpp,
screen->depthOffset, screen->backPitch,
driDrawPriv);
i810SetSpanFunctions(depthRb, mesaVis);
_mesa_add_renderbuffer(fb, BUFFER_DEPTH, &depthRb->Base);
depthRb->Base.Data = (GLubyte *) screen->depth.map;
}
_mesa_add_soft_renderbuffers(fb,
@ -391,7 +389,7 @@ i810CreateBuffer( __DRIscreenPrivate *driScrnPriv,
GL_FALSE, /* alpha */
GL_FALSE /* aux */);
driDrawPriv->driverPrivate = (void *) fb;
#endif
return (driDrawPriv->driverPrivate != NULL);
}
}

View file

@ -326,52 +326,49 @@ static GLboolean i830CreateBuffer(__DRIscreenPrivate *driScrnPriv,
GLboolean swStencil = mesaVis->stencilBits > 0;
#endif
#if 0
driDrawPriv->driverPrivate = (void *)
_mesa_create_framebuffer(mesaVis,
GL_FALSE, /* software depth buffer? */
swStencil,
mesaVis->accumRedBits > 0,
GL_FALSE /* s/w alpha planes */);
#else
struct gl_framebuffer *fb = _mesa_create_framebuffer(mesaVis);
{
driRenderbuffer *frontRb
= driNewRenderbuffer(GL_RGBA, screen->cpp,
/*screen->frontOffset*/0, screen->backPitch);
= driNewRenderbuffer(GL_RGBA, NULL, screen->cpp,
/*screen->frontOffset*/0, screen->backPitch,
driDrawPriv);
i830SetSpanFunctions(frontRb, mesaVis);
_mesa_add_renderbuffer(fb, BUFFER_FRONT_LEFT, &frontRb->Base);
}
if (mesaVis->doubleBufferMode) {
driRenderbuffer *backRb
= driNewRenderbuffer(GL_RGBA, screen->cpp,
screen->backOffset, screen->backPitch);
= driNewRenderbuffer(GL_RGBA, NULL, screen->cpp,
screen->backOffset, screen->backPitch,
driDrawPriv);
i830SetSpanFunctions(backRb, mesaVis);
_mesa_add_renderbuffer(fb, BUFFER_BACK_LEFT, &backRb->Base);
}
if (mesaVis->depthBits == 16) {
driRenderbuffer *depthRb
= driNewRenderbuffer(GL_DEPTH_COMPONENT16, screen->cpp,
screen->depthOffset, screen->backPitch);
= driNewRenderbuffer(GL_DEPTH_COMPONENT16, NULL, screen->cpp,
screen->depthOffset, screen->backPitch,
driDrawPriv);
i830SetSpanFunctions(depthRb, mesaVis);
_mesa_add_renderbuffer(fb, BUFFER_DEPTH, &depthRb->Base);
}
else if (mesaVis->depthBits == 24) {
if (mesaVis->stencilBits == 8) {
driRenderbuffer *depthRb
= driNewRenderbuffer(GL_DEPTH_COMPONENT24, screen->cpp,
screen->depthOffset, screen->backPitch);
= driNewRenderbuffer(GL_DEPTH_COMPONENT24, NULL, screen->cpp,
screen->depthOffset, screen->backPitch,
driDrawPriv);
i830SetSpanFunctions(depthRb, mesaVis);
_mesa_add_renderbuffer(fb, BUFFER_DEPTH, &depthRb->Base);
}
else {
/* not really 32-bit Z, but use GL_DEPTH_COMPONENT32 anyway */
driRenderbuffer *depthRb
= driNewRenderbuffer(GL_DEPTH_COMPONENT32, screen->cpp,
screen->depthOffset, screen->backPitch);
= driNewRenderbuffer(GL_DEPTH_COMPONENT32, NULL, screen->cpp,
screen->depthOffset, screen->backPitch,
driDrawPriv);
i830SetSpanFunctions(depthRb, mesaVis);
_mesa_add_renderbuffer(fb, BUFFER_DEPTH, &depthRb->Base);
}
@ -379,8 +376,9 @@ static GLboolean i830CreateBuffer(__DRIscreenPrivate *driScrnPriv,
if (mesaVis->stencilBits > 0 && !swStencil) {
driRenderbuffer *stencilRb
= driNewRenderbuffer(GL_STENCIL_INDEX8_EXT, screen->cpp,
screen->depthOffset, screen->backPitch);
= driNewRenderbuffer(GL_STENCIL_INDEX8_EXT, NULL, screen->cpp,
screen->depthOffset, screen->backPitch,
driDrawPriv);
i830SetSpanFunctions(stencilRb, mesaVis);
_mesa_add_renderbuffer(fb, BUFFER_STENCIL, &stencilRb->Base);
}
@ -393,7 +391,6 @@ static GLboolean i830CreateBuffer(__DRIscreenPrivate *driScrnPriv,
GL_FALSE, /* alpha */
GL_FALSE /* aux */);
driDrawPriv->driverPrivate = (void *) fb;
#endif
return (driDrawPriv->driverPrivate != NULL);
}

View file

@ -243,46 +243,56 @@ static GLboolean intelCreateBuffer( __DRIscreenPrivate *driScrnPriv,
{
driRenderbuffer *frontRb
= driNewRenderbuffer(GL_RGBA, screen->cpp,
screen->frontOffset, screen->frontPitch);
= driNewRenderbuffer(GL_RGBA,
driScrnPriv->pFB,
screen->cpp,
screen->frontOffset, screen->frontPitch,
driDrawPriv);
intelSetSpanFunctions(frontRb, mesaVis);
_mesa_add_renderbuffer(fb, BUFFER_FRONT_LEFT, &frontRb->Base);
frontRb->Base.Data = driScrnPriv->pFB;
}
if (mesaVis->doubleBufferMode) {
driRenderbuffer *backRb
= driNewRenderbuffer(GL_RGBA, screen->cpp,
screen->backOffset, screen->backPitch);
= driNewRenderbuffer(GL_RGBA,
screen->back.map,
screen->cpp,
screen->backOffset, screen->backPitch,
driDrawPriv);
intelSetSpanFunctions(backRb, mesaVis);
_mesa_add_renderbuffer(fb, BUFFER_BACK_LEFT, &backRb->Base);
backRb->Base.Data = screen->back.map;
}
if (mesaVis->depthBits == 16) {
driRenderbuffer *depthRb
= driNewRenderbuffer(GL_DEPTH_COMPONENT16, screen->cpp,
screen->depthOffset, screen->depthPitch);
= driNewRenderbuffer(GL_DEPTH_COMPONENT16,
screen->depth.map,
screen->cpp,
screen->depthOffset, screen->depthPitch,
driDrawPriv);
intelSetSpanFunctions(depthRb, mesaVis);
_mesa_add_renderbuffer(fb, BUFFER_DEPTH, &depthRb->Base);
depthRb->Base.Data = screen->depth.map;
}
else if (mesaVis->depthBits == 24) {
driRenderbuffer *depthRb
= driNewRenderbuffer(GL_DEPTH_COMPONENT24, screen->cpp,
screen->depthOffset, screen->depthPitch);
= driNewRenderbuffer(GL_DEPTH_COMPONENT24,
screen->depth.map,
screen->cpp,
screen->depthOffset, screen->depthPitch,
driDrawPriv);
intelSetSpanFunctions(depthRb, mesaVis);
_mesa_add_renderbuffer(fb, BUFFER_DEPTH, &depthRb->Base);
depthRb->Base.Data = screen->depth.map;
}
if (mesaVis->stencilBits > 0 && !swStencil) {
driRenderbuffer *stencilRb
= driNewRenderbuffer(GL_STENCIL_INDEX8_EXT, screen->cpp,
screen->depthOffset, screen->depthPitch);
= driNewRenderbuffer(GL_STENCIL_INDEX8_EXT,
screen->depth.map,
screen->cpp,
screen->depthOffset, screen->depthPitch,
driDrawPriv);
intelSetSpanFunctions(stencilRb, mesaVis);
_mesa_add_renderbuffer(fb, BUFFER_STENCIL, &stencilRb->Base);
stencilRb->Base.Data = screen->depth.map;
}
_mesa_add_soft_renderbuffers(fb,

View file

@ -376,32 +376,43 @@ mach64CreateBuffer( __DRIscreenPrivate *driScrnPriv,
{
driRenderbuffer *frontRb
= driNewRenderbuffer(GL_RGBA, screen->cpp,
screen->frontOffset, screen->frontPitch);
= driNewRenderbuffer(GL_RGBA,
NULL,
screen->cpp,
screen->frontOffset, screen->frontPitch,
driDrawPriv);
mach64SetSpanFunctions(frontRb, mesaVis);
_mesa_add_renderbuffer(fb, BUFFER_FRONT_LEFT, &frontRb->Base);
}
if (mesaVis->doubleBufferMode) {
driRenderbuffer *backRb
= driNewRenderbuffer(GL_RGBA, screen->cpp,
screen->backOffset, screen->backPitch);
= driNewRenderbuffer(GL_RGBA,
NULL,
screen->cpp,
screen->backOffset, screen->backPitch,
driDrawPriv);
mach64SetSpanFunctions(backRb, mesaVis);
_mesa_add_renderbuffer(fb, BUFFER_BACK_LEFT, &backRb->Base);
}
if (mesaVis->depthBits == 16) {
driRenderbuffer *depthRb
= driNewRenderbuffer(GL_DEPTH_COMPONENT16, screen->cpp,
screen->depthOffset, screen->depthPitch);
= driNewRenderbuffer(GL_DEPTH_COMPONENT16,
NULL, screen->cpp,
screen->depthOffset, screen->depthPitch,
driDrawPriv);
mach64SetSpanFunctions(depthRb, mesaVis);
_mesa_add_renderbuffer(fb, BUFFER_DEPTH, &depthRb->Base);
}
else if (mesaVis->depthBits == 24) {
/* XXX I don't think 24-bit Z is supported - so this isn't used */
driRenderbuffer *depthRb
= driNewRenderbuffer(GL_DEPTH_COMPONENT24, screen->cpp,
screen->depthOffset, screen->depthPitch);
= driNewRenderbuffer(GL_DEPTH_COMPONENT24,
NULL,
screen->cpp,
screen->depthOffset, screen->depthPitch,
driDrawPriv);
mach64SetSpanFunctions(depthRb, mesaVis);
_mesa_add_renderbuffer(fb, BUFFER_DEPTH, &depthRb->Base);
}

View file

@ -735,24 +735,33 @@ mgaCreateBuffer( __DRIscreenPrivate *driScrnPriv,
{
driRenderbuffer *frontRb
= driNewRenderbuffer(GL_RGBA, screen->cpp,
screen->frontOffset, screen->frontPitch);
= driNewRenderbuffer(GL_RGBA,
NULL,
screen->cpp,
screen->frontOffset, screen->frontPitch,
driDrawPriv);
mgaSetSpanFunctions(frontRb, mesaVis);
_mesa_add_renderbuffer(fb, BUFFER_FRONT_LEFT, &frontRb->Base);
}
if (mesaVis->doubleBufferMode) {
driRenderbuffer *backRb
= driNewRenderbuffer(GL_RGBA, screen->cpp,
screen->backOffset, screen->backPitch);
= driNewRenderbuffer(GL_RGBA,
NULL,
screen->cpp,
screen->backOffset, screen->backPitch,
driDrawPriv);
mgaSetSpanFunctions(backRb, mesaVis);
_mesa_add_renderbuffer(fb, BUFFER_BACK_LEFT, &backRb->Base);
}
if (mesaVis->depthBits == 16) {
driRenderbuffer *depthRb
= driNewRenderbuffer(GL_DEPTH_COMPONENT16, screen->cpp,
screen->depthOffset, screen->depthPitch);
= driNewRenderbuffer(GL_DEPTH_COMPONENT16,
NULL,
screen->cpp,
screen->depthOffset, screen->depthPitch,
driDrawPriv);
mgaSetSpanFunctions(depthRb, mesaVis);
_mesa_add_renderbuffer(fb, BUFFER_DEPTH, &depthRb->Base);
}
@ -760,31 +769,43 @@ mgaCreateBuffer( __DRIscreenPrivate *driScrnPriv,
/* XXX is this right? */
if (mesaVis->stencilBits) {
driRenderbuffer *depthRb
= driNewRenderbuffer(GL_DEPTH_COMPONENT24, screen->cpp,
screen->depthOffset, screen->depthPitch);
= driNewRenderbuffer(GL_DEPTH_COMPONENT24,
NULL,
screen->cpp,
screen->depthOffset, screen->depthPitch,
driDrawPriv);
mgaSetSpanFunctions(depthRb, mesaVis);
_mesa_add_renderbuffer(fb, BUFFER_DEPTH, &depthRb->Base);
}
else {
driRenderbuffer *depthRb
= driNewRenderbuffer(GL_DEPTH_COMPONENT32, screen->cpp,
screen->depthOffset, screen->depthPitch);
= driNewRenderbuffer(GL_DEPTH_COMPONENT32,
NULL,
screen->cpp,
screen->depthOffset, screen->depthPitch,
driDrawPriv);
mgaSetSpanFunctions(depthRb, mesaVis);
_mesa_add_renderbuffer(fb, BUFFER_DEPTH, &depthRb->Base);
}
}
else if (mesaVis->depthBits == 32) {
driRenderbuffer *depthRb
= driNewRenderbuffer(GL_DEPTH_COMPONENT32, screen->cpp,
screen->depthOffset, screen->depthPitch);
= driNewRenderbuffer(GL_DEPTH_COMPONENT32,
NULL,
screen->cpp,
screen->depthOffset, screen->depthPitch,
driDrawPriv);
mgaSetSpanFunctions(depthRb, mesaVis);
_mesa_add_renderbuffer(fb, BUFFER_DEPTH, &depthRb->Base);
}
if (mesaVis->stencilBits > 0 && !swStencil) {
driRenderbuffer *stencilRb
= driNewRenderbuffer(GL_STENCIL_INDEX8_EXT, screen->cpp,
screen->depthOffset, screen->depthPitch);
= driNewRenderbuffer(GL_STENCIL_INDEX8_EXT,
NULL,
screen->cpp,
screen->depthOffset, screen->depthPitch,
driDrawPriv);
mgaSetSpanFunctions(stencilRb, mesaVis);
_mesa_add_renderbuffer(fb, BUFFER_STENCIL, &stencilRb->Base);
}

View file

@ -275,31 +275,43 @@ r128CreateBuffer( __DRIscreenPrivate *driScrnPriv,
{
driRenderbuffer *frontRb
= driNewRenderbuffer(GL_RGBA, screen->cpp,
screen->frontOffset, screen->frontPitch);
= driNewRenderbuffer(GL_RGBA,
NULL,
screen->cpp,
screen->frontOffset, screen->frontPitch,
driDrawPriv);
r128SetSpanFunctions(frontRb, mesaVis);
_mesa_add_renderbuffer(fb, BUFFER_FRONT_LEFT, &frontRb->Base);
}
if (mesaVis->doubleBufferMode) {
driRenderbuffer *backRb
= driNewRenderbuffer(GL_RGBA, screen->cpp,
screen->backOffset, screen->backPitch);
= driNewRenderbuffer(GL_RGBA,
NULL,
screen->cpp,
screen->backOffset, screen->backPitch,
driDrawPriv);
r128SetSpanFunctions(backRb, mesaVis);
_mesa_add_renderbuffer(fb, BUFFER_BACK_LEFT, &backRb->Base);
}
if (mesaVis->depthBits == 16) {
driRenderbuffer *depthRb
= driNewRenderbuffer(GL_DEPTH_COMPONENT16, screen->cpp,
screen->depthOffset, screen->depthPitch);
= driNewRenderbuffer(GL_DEPTH_COMPONENT16,
NULL,
screen->cpp,
screen->depthOffset, screen->depthPitch,
driDrawPriv);
r128SetSpanFunctions(depthRb, mesaVis);
_mesa_add_renderbuffer(fb, BUFFER_DEPTH, &depthRb->Base);
}
else if (mesaVis->depthBits == 24) {
driRenderbuffer *depthRb
= driNewRenderbuffer(GL_DEPTH_COMPONENT24, screen->cpp,
screen->depthOffset, screen->depthPitch);
= driNewRenderbuffer(GL_DEPTH_COMPONENT24,
NULL,
screen->cpp,
screen->depthOffset, screen->depthPitch,
driDrawPriv);
r128SetSpanFunctions(depthRb, mesaVis);
_mesa_add_renderbuffer(fb, BUFFER_DEPTH, &depthRb->Base);
}

View file

@ -552,8 +552,11 @@ r200CreateBuffer( __DRIscreenPrivate *driScrnPriv,
/* front color renderbuffer */
{
driRenderbuffer *frontRb
= driNewRenderbuffer(GL_RGBA, screen->cpp,
screen->frontOffset, screen->frontPitch);
= driNewRenderbuffer(GL_RGBA,
driScrnPriv->pFB + screen->frontOffset,
screen->cpp,
screen->frontOffset, screen->frontPitch,
driDrawPriv);
r200SetSpanFunctions(frontRb, mesaVis);
_mesa_add_renderbuffer(fb, BUFFER_FRONT_LEFT, &frontRb->Base);
}
@ -561,8 +564,11 @@ r200CreateBuffer( __DRIscreenPrivate *driScrnPriv,
/* back color renderbuffer */
if (mesaVis->doubleBufferMode) {
driRenderbuffer *backRb
= driNewRenderbuffer(GL_RGBA, screen->cpp,
screen->backOffset, screen->backPitch);
= driNewRenderbuffer(GL_RGBA,
driScrnPriv->pFB + screen->backOffset,
screen->cpp,
screen->backOffset, screen->backPitch,
driDrawPriv);
r200SetSpanFunctions(backRb, mesaVis);
_mesa_add_renderbuffer(fb, BUFFER_BACK_LEFT, &backRb->Base);
}
@ -570,16 +576,22 @@ r200CreateBuffer( __DRIscreenPrivate *driScrnPriv,
/* depth renderbuffer */
if (mesaVis->depthBits == 16) {
driRenderbuffer *depthRb
= driNewRenderbuffer(GL_DEPTH_COMPONENT16, screen->cpp,
screen->depthOffset, screen->depthPitch);
= driNewRenderbuffer(GL_DEPTH_COMPONENT16,
driScrnPriv->pFB + screen->depthOffset,
screen->cpp,
screen->depthOffset, screen->depthPitch,
driDrawPriv);
r200SetSpanFunctions(depthRb, mesaVis);
_mesa_add_renderbuffer(fb, BUFFER_DEPTH, &depthRb->Base);
depthRb->depthHasSurface = screen->depthHasSurface;
}
else if (mesaVis->depthBits == 24) {
driRenderbuffer *depthRb
= driNewRenderbuffer(GL_DEPTH_COMPONENT24, screen->cpp,
screen->depthOffset, screen->depthPitch);
= driNewRenderbuffer(GL_DEPTH_COMPONENT24,
driScrnPriv->pFB + screen->depthOffset,
screen->cpp,
screen->depthOffset, screen->depthPitch,
driDrawPriv);
r200SetSpanFunctions(depthRb, mesaVis);
_mesa_add_renderbuffer(fb, BUFFER_DEPTH, &depthRb->Base);
depthRb->depthHasSurface = screen->depthHasSurface;
@ -588,8 +600,11 @@ r200CreateBuffer( __DRIscreenPrivate *driScrnPriv,
/* stencil renderbuffer */
if (mesaVis->stencilBits > 0 && !swStencil) {
driRenderbuffer *stencilRb
= driNewRenderbuffer(GL_STENCIL_INDEX8_EXT, screen->cpp,
screen->depthOffset, screen->depthPitch);
= driNewRenderbuffer(GL_STENCIL_INDEX8_EXT,
driScrnPriv->pFB + screen->depthOffset,
screen->cpp,
screen->depthOffset, screen->depthPitch,
driDrawPriv);
r200SetSpanFunctions(stencilRb, mesaVis);
_mesa_add_renderbuffer(fb, BUFFER_STENCIL, &stencilRb->Base);
stencilRb->depthHasSurface = screen->depthHasSurface;

View file

@ -665,46 +665,59 @@ radeonCreateBuffer(__DRIscreenPrivate * driScrnPriv,
const GLboolean swAccum = mesaVis->accumRedBits > 0;
const GLboolean swStencil = mesaVis->stencilBits > 0 &&
mesaVis->depthBits != 24;
#if 0
driDrawPriv->driverPrivate = (void *)
_mesa_create_framebuffer(mesaVis,
swDepth,
swStencil, swAccum, swAlpha);
#else
struct gl_framebuffer *fb = _mesa_create_framebuffer(mesaVis);
{
driRenderbuffer *frontRb
= driNewRenderbuffer(GL_RGBA, screen->cpp,
screen->frontOffset, screen->frontPitch);
= driNewRenderbuffer(GL_RGBA, NULL,
screen->cpp,
screen->frontOffset,
screen->frontPitch,
driDrawPriv);
radeonSetSpanFunctions(frontRb, mesaVis);
_mesa_add_renderbuffer(fb, BUFFER_FRONT_LEFT, &frontRb->Base);
}
if (mesaVis->doubleBufferMode) {
driRenderbuffer *backRb
= driNewRenderbuffer(GL_RGBA, screen->cpp,
screen->backOffset, screen->backPitch);
= driNewRenderbuffer(GL_RGBA, NULL,
screen->cpp,
screen->backOffset,
screen->backPitch,
driDrawPriv);
radeonSetSpanFunctions(backRb, mesaVis);
_mesa_add_renderbuffer(fb, BUFFER_BACK_LEFT, &backRb->Base);
}
if (mesaVis->depthBits == 16) {
driRenderbuffer *depthRb
= driNewRenderbuffer(GL_DEPTH_COMPONENT16, screen->cpp,
screen->depthOffset, screen->depthPitch);
= driNewRenderbuffer(GL_DEPTH_COMPONENT16,
NULL,
screen->cpp,
screen->depthOffset,
screen->depthPitch,
driDrawPriv);
radeonSetSpanFunctions(depthRb, mesaVis);
_mesa_add_renderbuffer(fb, BUFFER_DEPTH, &depthRb->Base);
}
else if (mesaVis->depthBits == 24) {
driRenderbuffer *depthRb
= driNewRenderbuffer(GL_DEPTH_COMPONENT24, screen->cpp,
screen->depthOffset, screen->depthPitch);
= driNewRenderbuffer(GL_DEPTH_COMPONENT24,
NULL,
screen->cpp,
screen->depthOffset,
screen->depthPitch,
driDrawPriv);
radeonSetSpanFunctions(depthRb, mesaVis);
_mesa_add_renderbuffer(fb, BUFFER_DEPTH, &depthRb->Base);
}
if (mesaVis->stencilBits > 0 && !swStencil) {
driRenderbuffer *stencilRb
= driNewRenderbuffer(GL_STENCIL_INDEX8_EXT, screen->cpp,
screen->depthOffset, screen->depthPitch);
= driNewRenderbuffer(GL_STENCIL_INDEX8_EXT,
NULL,
screen->cpp,
screen->depthOffset,
screen->depthPitch,
driDrawPriv);
radeonSetSpanFunctions(stencilRb, mesaVis);
_mesa_add_renderbuffer(fb, BUFFER_STENCIL, &stencilRb->Base);
}
@ -717,7 +730,7 @@ radeonCreateBuffer(__DRIscreenPrivate * driScrnPriv,
swAlpha,
GL_FALSE /* aux */);
driDrawPriv->driverPrivate = (void *) fb;
#endif
return (driDrawPriv->driverPrivate != NULL);
}
}

View file

@ -477,8 +477,11 @@ radeonCreateBuffer( __DRIscreenPrivate *driScrnPriv,
/* front color renderbuffer */
{
driRenderbuffer *frontRb
= driNewRenderbuffer(GL_RGBA, screen->cpp,
screen->frontOffset, screen->frontPitch);
= driNewRenderbuffer(GL_RGBA,
driScrnPriv->pFB + screen->frontOffset,
screen->cpp,
screen->frontOffset, screen->frontPitch,
driDrawPriv);
radeonSetSpanFunctions(frontRb, mesaVis);
_mesa_add_renderbuffer(fb, BUFFER_FRONT_LEFT, &frontRb->Base);
}
@ -486,8 +489,11 @@ radeonCreateBuffer( __DRIscreenPrivate *driScrnPriv,
/* back color renderbuffer */
if (mesaVis->doubleBufferMode) {
driRenderbuffer *backRb
= driNewRenderbuffer(GL_RGBA, screen->cpp,
screen->backOffset, screen->backPitch);
= driNewRenderbuffer(GL_RGBA,
driScrnPriv->pFB + screen->backOffset,
screen->cpp,
screen->backOffset, screen->backPitch,
driDrawPriv);
radeonSetSpanFunctions(backRb, mesaVis);
_mesa_add_renderbuffer(fb, BUFFER_BACK_LEFT, &backRb->Base);
}
@ -495,16 +501,22 @@ radeonCreateBuffer( __DRIscreenPrivate *driScrnPriv,
/* depth renderbuffer */
if (mesaVis->depthBits == 16) {
driRenderbuffer *depthRb
= driNewRenderbuffer(GL_DEPTH_COMPONENT16, screen->cpp,
screen->depthOffset, screen->depthPitch);
= driNewRenderbuffer(GL_DEPTH_COMPONENT16,
driScrnPriv->pFB + screen->depthOffset,
screen->cpp,
screen->depthOffset, screen->depthPitch,
driDrawPriv);
radeonSetSpanFunctions(depthRb, mesaVis);
_mesa_add_renderbuffer(fb, BUFFER_DEPTH, &depthRb->Base);
depthRb->depthHasSurface = screen->depthHasSurface;
}
else if (mesaVis->depthBits == 24) {
driRenderbuffer *depthRb
= driNewRenderbuffer(GL_DEPTH_COMPONENT24, screen->cpp,
screen->depthOffset, screen->depthPitch);
= driNewRenderbuffer(GL_DEPTH_COMPONENT24,
driScrnPriv->pFB + screen->depthOffset,
screen->cpp,
screen->depthOffset, screen->depthPitch,
driDrawPriv);
radeonSetSpanFunctions(depthRb, mesaVis);
_mesa_add_renderbuffer(fb, BUFFER_DEPTH, &depthRb->Base);
depthRb->depthHasSurface = screen->depthHasSurface;
@ -513,8 +525,11 @@ radeonCreateBuffer( __DRIscreenPrivate *driScrnPriv,
/* stencil renderbuffer */
if (mesaVis->stencilBits > 0 && !swStencil) {
driRenderbuffer *stencilRb
= driNewRenderbuffer(GL_STENCIL_INDEX8_EXT, screen->cpp,
screen->depthOffset, screen->depthPitch);
= driNewRenderbuffer(GL_STENCIL_INDEX8_EXT,
driScrnPriv->pFB + screen->depthOffset,
screen->cpp,
screen->depthOffset, screen->depthPitch,
driDrawPriv);
radeonSetSpanFunctions(stencilRb, mesaVis);
_mesa_add_renderbuffer(fb, BUFFER_STENCIL, &stencilRb->Base);
stencilRb->depthHasSurface = screen->depthHasSurface;

View file

@ -65,29 +65,22 @@ s3vCreateBuffer( __DRIscreenPrivate *driScrnPriv,
return GL_FALSE; /* not implemented */
}
else {
#if 0
driDrawPriv->driverPrivate = (void *)
_mesa_create_framebuffer(mesaVis,
GL_FALSE, /* software depth buffer? */
mesaVis->stencilBits > 0,
mesaVis->accumRedBits > 0,
mesaVis->alphaBits > 0
);
#else
struct gl_framebuffer *fb = _mesa_create_framebuffer(mesaVis);
{
driRenderbuffer *frontRb
= driNewRenderbuffer(GL_RGBA, screen->cpp,
screen->frontOffset, screen->frontPitch);
= driNewRenderbuffer(GL_RGBA, NULL, screen->cpp,
screen->frontOffset, screen->frontPitch,
driDrawPriv);
s3vSetSpanFunctions(frontRb, mesaVis);
_mesa_add_renderbuffer(fb, BUFFER_FRONT_LEFT, &frontRb->Base);
}
if (mesaVis->doubleBufferMode) {
driRenderbuffer *backRb
= driNewRenderbuffer(GL_RGBA, screen->cpp,
screen->backOffset, screen->backPitch);
= driNewRenderbuffer(GL_RGBA, NULL, screen->cpp,
screen->backOffset, screen->backPitch,
driDrawPriv);
s3vSetSpanFunctions(backRb, mesaVis);
_mesa_add_renderbuffer(fb, BUFFER_BACK_LEFT, &backRb->Base);
backRb->backBuffer = GL_TRUE;
@ -95,15 +88,17 @@ s3vCreateBuffer( __DRIscreenPrivate *driScrnPriv,
if (mesaVis->depthBits == 16) {
driRenderbuffer *depthRb
= driNewRenderbuffer(GL_DEPTH_COMPONENT16, screen->cpp,
screen->depthOffset, screen->depthPitch);
= driNewRenderbuffer(GL_DEPTH_COMPONENT16, NULL, screen->cpp,
screen->depthOffset, screen->depthPitch,
driDrawPriv);
s3vSetSpanFunctions(depthRb, mesaVis);
_mesa_add_renderbuffer(fb, BUFFER_DEPTH, &depthRb->Base);
}
else if (mesaVis->depthBits == 24) {
driRenderbuffer *depthRb
= driNewRenderbuffer(GL_DEPTH_COMPONENT24, screen->cpp,
screen->depthOffset, screen->depthPitch);
= driNewRenderbuffer(GL_DEPTH_COMPONENT24, NULL, screen->cpp,
screen->depthOffset, screen->depthPitch,
driDrawPriv);
s3vSetSpanFunctions(depthRb, mesaVis);
_mesa_add_renderbuffer(fb, BUFFER_DEPTH, &depthRb->Base);
}
@ -111,7 +106,9 @@ s3vCreateBuffer( __DRIscreenPrivate *driScrnPriv,
/* no h/w stencil yet?
if (mesaVis->stencilBits > 0) {
driRenderbuffer *stencilRb
= driNewRenderbuffer(GL_STENCIL_INDEX8_EXT);
= driNewRenderbuffer(GL_STENCIL_INDEX8_EXT, NULL,
screen->cpp, screen->depthOffset,
screen->depthPitch, driDrawPriv);
s3vSetSpanFunctions(stencilRb, mesaVis);
_mesa_add_renderbuffer(fb, BUFFER_STENCIL, &stencilRb->Base);
}
@ -125,7 +122,7 @@ s3vCreateBuffer( __DRIscreenPrivate *driScrnPriv,
GL_FALSE, /* alpha */
GL_FALSE /* aux */);
driDrawPriv->driverPrivate = (void *) fb;
#endif
return (driDrawPriv->driverPrivate != NULL);
}
}

View file

@ -611,15 +611,7 @@ savageCreateBuffer( __DRIscreenPrivate *driScrnPriv,
return GL_FALSE; /* not implemented */
}
else {
GLboolean swStencil = mesaVis->stencilBits > 0 && mesaVis->depthBits != 24;
#if 0
driDrawPriv->driverPrivate = (void *)
_mesa_create_framebuffer(mesaVis,
GL_FALSE, /* software depth buffer? */
swStencil,
mesaVis->accumRedBits > 0,
mesaVis->alphaBits > 0 );
#else
GLboolean swStencil = mesaVis->stencilBits > 0 && mesaVis->depthBits != 24;
struct gl_framebuffer *fb = _mesa_create_framebuffer(mesaVis);
/*
* XXX: this value needs to be set according to the config file
@ -630,47 +622,59 @@ savageCreateBuffer( __DRIscreenPrivate *driScrnPriv,
{
driRenderbuffer *frontRb
= driNewRenderbuffer(GL_RGBA, screen->cpp,
screen->frontOffset, screen->aperturePitch);
= driNewRenderbuffer(GL_RGBA,
(GLubyte *) screen->aperture.map
+ 0x01000000 * TARGET_FRONT,
screen->cpp,
screen->frontOffset, screen->aperturePitch,
driDrawPriv);
savageSetSpanFunctions(frontRb, mesaVis, float_depth);
_mesa_add_renderbuffer(fb, BUFFER_FRONT_LEFT, &frontRb->Base);
frontRb->Base.Data = frontRb->flippedData
= (GLubyte *) screen->aperture.map + 0x01000000 * TARGET_FRONT;
}
if (mesaVis->doubleBufferMode) {
driRenderbuffer *backRb
= driNewRenderbuffer(GL_RGBA, screen->cpp,
screen->backOffset, screen->aperturePitch);
= driNewRenderbuffer(GL_RGBA,
(GLubyte *) screen->aperture.map
+ 0x01000000 * TARGET_BACK,
screen->cpp,
screen->backOffset, screen->aperturePitch,
driDrawPriv);
savageSetSpanFunctions(backRb, mesaVis, float_depth);
_mesa_add_renderbuffer(fb, BUFFER_BACK_LEFT, &backRb->Base);
backRb->Base.Data = backRb->flippedData
= (GLubyte *) screen->aperture.map + 0x01000000 * TARGET_BACK;
}
if (mesaVis->depthBits == 16) {
driRenderbuffer *depthRb
= driNewRenderbuffer(GL_DEPTH_COMPONENT16, screen->zpp,
screen->depthOffset, screen->aperturePitch);
= driNewRenderbuffer(GL_DEPTH_COMPONENT16,
(GLubyte *) screen->aperture.map
+ 0x01000000 * TARGET_DEPTH,
screen->zpp,
screen->depthOffset, screen->aperturePitch,
driDrawPriv);
savageSetSpanFunctions(depthRb, mesaVis, float_depth);
_mesa_add_renderbuffer(fb, BUFFER_DEPTH, &depthRb->Base);
depthRb->Base.Data = depthRb->flippedData
= (GLubyte *) screen->aperture.map + 0x01000000 * TARGET_DEPTH;
}
else if (mesaVis->depthBits == 24) {
driRenderbuffer *depthRb
= driNewRenderbuffer(GL_DEPTH_COMPONENT24, screen->zpp,
screen->depthOffset, screen->aperturePitch);
= driNewRenderbuffer(GL_DEPTH_COMPONENT24,
(GLubyte *) screen->aperture.map
+ 0x01000000 * TARGET_DEPTH,
screen->zpp,
screen->depthOffset, screen->aperturePitch,
driDrawPriv);
savageSetSpanFunctions(depthRb, mesaVis, float_depth);
_mesa_add_renderbuffer(fb, BUFFER_DEPTH, &depthRb->Base);
depthRb->Base.Data = depthRb->flippedData
= (GLubyte *) screen->aperture.map + 0x01000000 * TARGET_DEPTH;
}
if (mesaVis->stencilBits > 0 && !swStencil) {
driRenderbuffer *stencilRb
= driNewRenderbuffer(GL_STENCIL_INDEX8_EXT, screen->zpp,
screen->depthOffset, screen->aperturePitch);
= driNewRenderbuffer(GL_STENCIL_INDEX8_EXT,
(GLubyte *) screen->aperture.map
+ 0x01000000 * TARGET_DEPTH,
screen->zpp,
screen->depthOffset, screen->aperturePitch,
driDrawPriv);
savageSetSpanFunctions(stencilRb, mesaVis, float_depth);
_mesa_add_renderbuffer(fb, BUFFER_STENCIL, &stencilRb->Base);
}
@ -683,8 +687,8 @@ savageCreateBuffer( __DRIscreenPrivate *driScrnPriv,
GL_FALSE, /* alpha */
GL_FALSE /* aux */);
driDrawPriv->driverPrivate = (void *) fb;
#endif
return (driDrawPriv->driverPrivate != NULL);
return (driDrawPriv->driverPrivate != NULL);
}
}

View file

@ -215,38 +215,38 @@ sisCreateBuffer( __DRIscreenPrivate *driScrnPriv,
/* XXX double-check the Offset/Pitch parameters! */
{
driRenderbuffer *frontRb
= driNewRenderbuffer(GL_RGBA, screen->cpp,
0, driScrnPriv->fbStride);
= driNewRenderbuffer(GL_RGBA, NULL, screen->cpp,
0, driScrnPriv->fbStride, driDrawPriv);
sisSetSpanFunctions(frontRb, mesaVis);
_mesa_add_renderbuffer(fb, BUFFER_FRONT_LEFT, &frontRb->Base);
}
if (mesaVis->doubleBufferMode) {
driRenderbuffer *backRb
= driNewRenderbuffer(GL_RGBA, screen->cpp,
0, driScrnPriv->fbStride);
= driNewRenderbuffer(GL_RGBA, NULL, screen->cpp,
0, driScrnPriv->fbStride, driDrawPriv);
sisSetSpanFunctions(backRb, mesaVis);
_mesa_add_renderbuffer(fb, BUFFER_BACK_LEFT, &backRb->Base);
}
if (mesaVis->depthBits == 16) {
driRenderbuffer *depthRb
= driNewRenderbuffer(GL_DEPTH_COMPONENT16, screen->cpp,
0, driScrnPriv->fbStride);
= driNewRenderbuffer(GL_DEPTH_COMPONENT16, NULL, screen->cpp,
0, driScrnPriv->fbStride, driDrawPriv);
sisSetSpanFunctions(depthRb, mesaVis);
_mesa_add_renderbuffer(fb, BUFFER_DEPTH, &depthRb->Base);
}
else if (mesaVis->depthBits == 24) {
driRenderbuffer *depthRb
= driNewRenderbuffer(GL_DEPTH_COMPONENT24, screen->cpp,
0, driScrnPriv->fbStride);
= driNewRenderbuffer(GL_DEPTH_COMPONENT24, NULL, screen->cpp,
0, driScrnPriv->fbStride, driDrawPriv);
sisSetSpanFunctions(depthRb, mesaVis);
_mesa_add_renderbuffer(fb, BUFFER_DEPTH, &depthRb->Base);
}
else if (mesaVis->depthBits == 32) {
driRenderbuffer *depthRb
= driNewRenderbuffer(GL_DEPTH_COMPONENT32, screen->cpp,
0, driScrnPriv->fbStride);
= driNewRenderbuffer(GL_DEPTH_COMPONENT32, NULL, screen->cpp,
0, driScrnPriv->fbStride, driDrawPriv);
sisSetSpanFunctions(depthRb, mesaVis);
_mesa_add_renderbuffer(fb, BUFFER_DEPTH, &depthRb->Base);
}

View file

@ -163,51 +163,47 @@ tdfxCreateBuffer( __DRIscreenPrivate *driScrnPriv,
return GL_FALSE; /* not implemented */
}
else {
#if 0
driDrawPriv->driverPrivate = (void *)
_mesa_create_framebuffer( mesaVis,
GL_FALSE, /* software depth buffer? */
mesaVis->stencilBits > 0,
mesaVis->accumRedBits > 0,
GL_FALSE /* software alpha channel? */ );
#else
struct gl_framebuffer *fb = _mesa_create_framebuffer(mesaVis);
{
driRenderbuffer *frontRb
= driNewRenderbuffer(GL_RGBA, screen->cpp,
screen->fbOffset, screen->width);
= driNewRenderbuffer(GL_RGBA, NULL, screen->cpp,
screen->fbOffset, screen->width, driDrawPriv);
tdfxSetSpanFunctions(frontRb, mesaVis);
_mesa_add_renderbuffer(fb, BUFFER_FRONT_LEFT, &frontRb->Base);
}
if (mesaVis->doubleBufferMode) {
driRenderbuffer *backRb
= driNewRenderbuffer(GL_RGBA, screen->cpp,
screen->backOffset, screen->width);
= driNewRenderbuffer(GL_RGBA, NULL, screen->cpp,
screen->backOffset, screen->width,
driDrawPriv);
tdfxSetSpanFunctions(backRb, mesaVis);
_mesa_add_renderbuffer(fb, BUFFER_BACK_LEFT, &backRb->Base);
}
if (mesaVis->depthBits == 16) {
driRenderbuffer *depthRb
= driNewRenderbuffer(GL_DEPTH_COMPONENT16, screen->cpp,
screen->depthOffset, screen->width);
= driNewRenderbuffer(GL_DEPTH_COMPONENT16, NULL, screen->cpp,
screen->depthOffset, screen->width,
driDrawPriv);
tdfxSetSpanFunctions(depthRb, mesaVis);
_mesa_add_renderbuffer(fb, BUFFER_DEPTH, &depthRb->Base);
}
else if (mesaVis->depthBits == 24) {
driRenderbuffer *depthRb
= driNewRenderbuffer(GL_DEPTH_COMPONENT24, screen->cpp,
screen->depthOffset, screen->width);
= driNewRenderbuffer(GL_DEPTH_COMPONENT24, NULL, screen->cpp,
screen->depthOffset, screen->width,
driDrawPriv);
tdfxSetSpanFunctions(depthRb, mesaVis);
_mesa_add_renderbuffer(fb, BUFFER_DEPTH, &depthRb->Base);
}
if (mesaVis->stencilBits > 0) {
driRenderbuffer *stencilRb
= driNewRenderbuffer(GL_STENCIL_INDEX8_EXT, screen->cpp,
screen->depthOffset, screen->width);
= driNewRenderbuffer(GL_STENCIL_INDEX8_EXT, NULL, screen->cpp,
screen->depthOffset, screen->width,
driDrawPriv);
tdfxSetSpanFunctions(stencilRb, mesaVis);
_mesa_add_renderbuffer(fb, BUFFER_STENCIL, &stencilRb->Base);
}
@ -220,7 +216,7 @@ tdfxCreateBuffer( __DRIscreenPrivate *driScrnPriv,
GL_FALSE, /* alpha */
GL_FALSE /* aux */);
driDrawPriv->driverPrivate = (void *) fb;
#endif
return (driDrawPriv->driverPrivate != NULL);
}
}

View file

@ -206,21 +206,13 @@ tridentCreateBuffer( __DRIscreenPrivate *driScrnPriv,
return GL_FALSE; /* not implemented */
}
else {
#if 0
driDrawPriv->driverPrivate = (void *)
_mesa_create_framebuffer(mesaVis,
GL_FALSE, /* software depth buffer? */
mesaVis->stencilBits > 0,
mesaVis->accumRedBits > 0,
mesaVis->alphaBits > 0
);
#else
struct gl_framebuffer *fb = _mesa_create_framebuffer(mesaVis);
{
driRenderbuffer *frontRb
= driNewRenderbuffer(GL_RGBA, screen->cpp,
screen->frontOffset, screen->frontPitch);
= driNewRenderbuffer(GL_RGBA, NULL, screen->cpp,
screen->frontOffset, screen->frontPitch,
driDrawPriv);
/*
tridentSetSpanFunctions(frontRb, mesaVis);
*/
@ -229,8 +221,9 @@ tridentCreateBuffer( __DRIscreenPrivate *driScrnPriv,
if (mesaVis->doubleBufferMode) {
driRenderbuffer *backRb
= driNewRenderbuffer(GL_RGBA, screen->cpp,
screen->backOffset, screen->backPitch);
= driNewRenderbuffer(GL_RGBA, NULL, screen->cpp,
screen->backOffset, screen->backPitch,
driDrawPriv);
/*
tridentSetSpanFunctions(backRb, mesaVis);
*/
@ -239,8 +232,9 @@ tridentCreateBuffer( __DRIscreenPrivate *driScrnPriv,
if (mesaVis->depthBits == 16) {
driRenderbuffer *depthRb
= driNewRenderbuffer(GL_DEPTH_COMPONENT16, screen->cpp,
screen->depthOffset, screen->depthPitch);
= driNewRenderbuffer(GL_DEPTH_COMPONENT16, NULL, screen->cpp,
screen->depthOffset, screen->depthPitch,
driDrawPriv);
/*
tridentSetSpanFunctions(depthRb, mesaVis);
*/
@ -248,8 +242,9 @@ tridentCreateBuffer( __DRIscreenPrivate *driScrnPriv,
}
else if (mesaVis->depthBits == 24) {
driRenderbuffer *depthRb
= driNewRenderbuffer(GL_DEPTH_COMPONENT24, screen->cpp,
screen->depthOffset, screen->depthPitch);
= driNewRenderbuffer(GL_DEPTH_COMPONENT24, NULL, screen->cpp,
screen->depthOffset, screen->depthPitch,
driDrawPriv);
/*
tridentSetSpanFunctions(depthRb, mesaVis);
*/
@ -273,7 +268,7 @@ tridentCreateBuffer( __DRIscreenPrivate *driScrnPriv,
GL_FALSE, /* alpha */
GL_FALSE /* aux */);
driDrawPriv->driverPrivate = (void *) fb;
#endif
return (driDrawPriv->driverPrivate != NULL);
}
}

View file

@ -44,6 +44,7 @@
#include "via_dri.h"
#include "GL/internal/dri_interface.h"
#include "drirenderbuffer.h"
/* Radeon configuration
*/
@ -240,49 +241,60 @@ viaCreateBuffer(__DRIscreenPrivate *driScrnPriv,
*/
#if 000
/* This code _should_ be put to use. We have to move the
* viaRenderbuffer members out of the via_context structure.
* Those members should just be the renderbuffers hanging off the
* gl_framebuffer object.
*/
/* XXX check/fix the offset/pitch parameters! */
{
driRenderbuffer *frontRb
= driNewRenderbuffer(GL_RGBA, screen->bytesPerPixel,
0, screen->width);
= driNewRenderbuffer(GL_RGBA, NULL,
screen->bytesPerPixel,
0, screen->width, driDrawPriv);
viaSetSpanFunctions(frontRb, mesaVis);
_mesa_add_renderbuffer(fb, BUFFER_FRONT_LEFT, &frontRb->Base);
}
if (mesaVis->doubleBufferMode) {
driRenderbuffer *backRb
= driNewRenderbuffer(GL_RGBA, screen->bytesPerPixel,
0, screen->width);
= driNewRenderbuffer(GL_RGBA, NULL,
screen->bytesPerPixel,
0, screen->width, driDrawPriv);
viaSetSpanFunctions(backRb, mesaVis);
_mesa_add_renderbuffer(fb, BUFFER_BACK_LEFT, &backRb->Base);
}
if (mesaVis->depthBits == 16) {
driRenderbuffer *depthRb
= driNewRenderbuffer(GL_DEPTH_COMPONENT16, screen->bytesPerPixel,
0, screen->width);
= driNewRenderbuffer(GL_DEPTH_COMPONENT16, NULL,
screen->bytesPerPixel,
0, screen->width, driDrawPriv);
viaSetSpanFunctions(depthRb, mesaVis);
_mesa_add_renderbuffer(fb, BUFFER_DEPTH, &depthRb->Base);
}
else if (mesaVis->depthBits == 24) {
driRenderbuffer *depthRb
= driNewRenderbuffer(GL_DEPTH_COMPONENT24, screen->bytesPerPixel,
0, screen->width);
= driNewRenderbuffer(GL_DEPTH_COMPONENT24, NULL,
screen->bytesPerPixel,
0, screen->width, driDrawPriv);
viaSetSpanFunctions(depthRb, mesaVis);
_mesa_add_renderbuffer(fb, BUFFER_DEPTH, &depthRb->Base);
}
else if (mesaVis->depthBits == 32) {
driRenderbuffer *depthRb
= driNewRenderbuffer(GL_DEPTH_COMPONENT32, screen->bytesPerPixel,
0, screen->width);
= driNewRenderbuffer(GL_DEPTH_COMPONENT32, NULL,
screen->bytesPerPixel,
0, screen->width, driDrawPriv);
viaSetSpanFunctions(depthRb, mesaVis);
_mesa_add_renderbuffer(fb, BUFFER_DEPTH, &depthRb->Base);
}
if (mesaVis->stencilBits > 0 && !swStencil) {
driRenderbuffer *stencilRb
= driNewRenderbuffer(GL_STENCIL_INDEX8_EXT, screen->bytesPerPixel,
0, screen->width);
= driNewRenderbuffer(GL_STENCIL_INDEX8_EXT, NULL,
screen->bytesPerPixel,
0, screen->width, driDrawPriv);
viaSetSpanFunctions(stencilRb, mesaVis);
_mesa_add_renderbuffer(fb, BUFFER_STENCIL, &stencilRb->Base);
}