From 3b3adf3daa9f92cb6904b0327a713baf2d529fc7 Mon Sep 17 00:00:00 2001 From: Dave Airlie Date: Fri, 28 Oct 2005 12:00:09 +0000 Subject: fix up radeon span functions using latest r200 code from Brian, tested with reflect on 32-bit.. not sure why depthHasSurface isn't needed --- src/mesa/drivers/dri/r300/radeon_screen.c | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) (limited to 'src/mesa/drivers/dri/r300/radeon_screen.c') diff --git a/src/mesa/drivers/dri/r300/radeon_screen.c b/src/mesa/drivers/dri/r300/radeon_screen.c index cceb917c75..37b5235f2c 100644 --- a/src/mesa/drivers/dri/r300/radeon_screen.c +++ b/src/mesa/drivers/dri/r300/radeon_screen.c @@ -567,6 +567,9 @@ static radeonScreenPtr radeonCreateScreen(__DRIscreenPrivate * sPriv) screen->backPitch = dri_priv->backPitch; screen->depthOffset = dri_priv->depthOffset; screen->depthPitch = dri_priv->depthPitch; + + /* Check if ddx has set up a surface reg to cover depth buffer */ + screen->depthHasSurface = (sPriv->ddxMajor > 4); screen->texOffset[RADEON_LOCAL_TEX_HEAP] = dri_priv->textureOffset + screen->fbLocation; @@ -675,7 +678,8 @@ radeonCreateBuffer(__DRIscreenPrivate * driScrnPriv, struct gl_framebuffer *fb = _mesa_create_framebuffer(mesaVis); { driRenderbuffer *frontRb - = driNewRenderbuffer(GL_RGBA, NULL, + = driNewRenderbuffer(GL_RGBA, + driScrnPriv->pFB + screen->frontOffset, screen->cpp, screen->frontOffset, screen->frontPitch, @@ -685,7 +689,8 @@ radeonCreateBuffer(__DRIscreenPrivate * driScrnPriv, } if (mesaVis->doubleBufferMode) { driRenderbuffer *backRb - = driNewRenderbuffer(GL_RGBA, NULL, + = driNewRenderbuffer(GL_RGBA, + driScrnPriv->pFB + screen->backOffset, screen->cpp, screen->backOffset, screen->backPitch, @@ -696,36 +701,39 @@ radeonCreateBuffer(__DRIscreenPrivate * driScrnPriv, if (mesaVis->depthBits == 16) { driRenderbuffer *depthRb = driNewRenderbuffer(GL_DEPTH_COMPONENT16, - NULL, + 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, - NULL, + 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; } if (mesaVis->stencilBits > 0 && !swStencil) { driRenderbuffer *stencilRb = driNewRenderbuffer(GL_STENCIL_INDEX8_EXT, - NULL, + 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; } _mesa_add_soft_renderbuffers(fb, -- cgit v1.2.3