summaryrefslogtreecommitdiff
path: root/src/mesa/drivers/dri/radeon/radeon_screen.c
diff options
context:
space:
mode:
authorDave Airlie <airlied@linux.ie>2009-03-20 22:07:05 +1000
committerDave Airlie <airlied@linux.ie>2009-03-20 22:07:05 +1000
commit230abc06f817b5d9868f7e6a094f56bb3294b476 (patch)
treed81dd5d490f25cf906971fb403ab16a4c6d26a62 /src/mesa/drivers/dri/radeon/radeon_screen.c
parentfabce837f9740df2553b6cc0dd991b2cb8b8fc5b (diff)
radeon: some more fbo work
Diffstat (limited to 'src/mesa/drivers/dri/radeon/radeon_screen.c')
-rw-r--r--src/mesa/drivers/dri/radeon/radeon_screen.c95
1 files changed, 6 insertions, 89 deletions
diff --git a/src/mesa/drivers/dri/radeon/radeon_screen.c b/src/mesa/drivers/dri/radeon/radeon_screen.c
index 1d4f008cbc..a14a0c3cb2 100644
--- a/src/mesa/drivers/dri/radeon/radeon_screen.c
+++ b/src/mesa/drivers/dri/radeon/radeon_screen.c
@@ -1175,90 +1175,7 @@ radeonInitDriver( __DRIscreenPrivate *sPriv )
return GL_TRUE;
}
-static GLboolean
-radeon_alloc_window_storage(GLcontext *ctx, struct gl_renderbuffer *rb,
- GLenum intFormat, GLuint w, GLuint h)
-{
- rb->Width = w;
- rb->Height = h;
- rb->_ActualFormat = intFormat;
-
- return GL_TRUE;
-}
-
-
-static struct radeon_renderbuffer *
-radeon_create_renderbuffer(GLenum format, __DRIdrawablePrivate *driDrawPriv)
-{
- struct radeon_renderbuffer *ret;
- ret = CALLOC_STRUCT(radeon_renderbuffer);
- if (!ret)
- return NULL;
-
- _mesa_init_renderbuffer(&ret->base, 0);
- ret->base.ClassID = RADEON_RB_CLASS;
-
- /* XXX format junk */
- switch (format) {
- case GL_RGB5:
- ret->base._ActualFormat = GL_RGB5;
- ret->base._BaseFormat = GL_RGBA;
- ret->base.RedBits = 5;
- ret->base.GreenBits = 6;
- ret->base.BlueBits = 5;
- ret->base.DataType = GL_UNSIGNED_BYTE;
- break;
- case GL_RGBA8:
- ret->base._ActualFormat = GL_RGBA8;
- ret->base._BaseFormat = GL_RGBA;
- ret->base.RedBits = 8;
- ret->base.GreenBits = 8;
- ret->base.BlueBits = 8;
- ret->base.AlphaBits = 8;
- ret->base.DataType = GL_UNSIGNED_BYTE;
- break;
- case GL_STENCIL_INDEX8_EXT:
- ret->base._ActualFormat = GL_STENCIL_INDEX8_EXT;
- ret->base._BaseFormat = GL_STENCIL_INDEX;
- ret->base.StencilBits = 8;
- ret->base.DataType = GL_UNSIGNED_BYTE;
- break;
- case GL_DEPTH_COMPONENT16:
- ret->base._ActualFormat = GL_DEPTH_COMPONENT16;
- ret->base._BaseFormat = GL_DEPTH_COMPONENT;
- ret->base.DepthBits = 16;
- ret->base.DataType = GL_UNSIGNED_SHORT;
- break;
- case GL_DEPTH_COMPONENT24:
- ret->base._ActualFormat = GL_DEPTH24_STENCIL8_EXT;
- ret->base._BaseFormat = GL_DEPTH_COMPONENT;
- ret->base.DepthBits = 24;
- ret->base.DataType = GL_UNSIGNED_INT;
- break;
- case GL_DEPTH24_STENCIL8_EXT:
- ret->base._ActualFormat = GL_DEPTH24_STENCIL8_EXT;
- ret->base._BaseFormat = GL_DEPTH_STENCIL_EXT;
- ret->base.DepthBits = 24;
- ret->base.StencilBits = 8;
- ret->base.DataType = GL_UNSIGNED_INT_24_8_EXT;
- break;
- default:
- fprintf(stderr, "%s: Unknown format 0x%04x\n", __FUNCTION__, format);
- _mesa_delete_renderbuffer(&ret->base);
- return NULL;
- }
-
- ret->dPriv = driDrawPriv;
- ret->base.InternalFormat = format;
-
- ret->base.AllocStorage = radeon_alloc_window_storage;
-
- radeonSetSpanFunctions(ret);
-
- ret->bo = NULL;
- return ret;
-}
/**
* Create the Mesa framebuffer and renderbuffers for a given window/drawable.
@@ -1298,29 +1215,29 @@ radeonCreateBuffer( __DRIscreenPrivate *driScrnPriv,
depthFormat = GL_DEPTH_COMPONENT24;
/* front color renderbuffer */
- rfb->color_rb[0] = radeon_create_renderbuffer(rgbFormat, driDrawPriv);
+ rfb->color_rb[0] = radeon_renderbuffer(radeon_create_renderbuffer(rgbFormat, driDrawPriv));
_mesa_add_renderbuffer(&rfb->base, BUFFER_FRONT_LEFT, &rfb->color_rb[0]->base);
rfb->color_rb[0]->has_surface = 1;
/* back color renderbuffer */
if (mesaVis->doubleBufferMode) {
- rfb->color_rb[1] = radeon_create_renderbuffer(rgbFormat, driDrawPriv);
+ rfb->color_rb[1] = radeon_renderbuffer(radeon_create_renderbuffer(rgbFormat, driDrawPriv));
_mesa_add_renderbuffer(&rfb->base, BUFFER_BACK_LEFT, &rfb->color_rb[1]->base);
rfb->color_rb[1]->has_surface = 1;
}
/* depth renderbuffer */
if (depthFormat != GL_NONE) {
- struct radeon_renderbuffer *depth =
- radeon_create_renderbuffer(depthFormat, driDrawPriv);
+ struct radeon_renderbuffer *depth = radeon_renderbuffer(
+ radeon_create_renderbuffer(depthFormat, driDrawPriv));
_mesa_add_renderbuffer(&rfb->base, BUFFER_DEPTH, &depth->base);
depth->has_surface = screen->depthHasSurface;
}
/* stencil renderbuffer */
if (mesaVis->stencilBits > 0 && !swStencil) {
- struct radeon_renderbuffer *stencil =
- radeon_create_renderbuffer(GL_STENCIL_INDEX8_EXT, driDrawPriv);
+ struct radeon_renderbuffer *stencil = radeon_renderbuffer(
+ radeon_create_renderbuffer(GL_STENCIL_INDEX8_EXT, driDrawPriv));
_mesa_add_renderbuffer(&rfb->base, BUFFER_STENCIL, &stencil->base);
stencil->has_surface = screen->depthHasSurface;
}