summaryrefslogtreecommitdiff
path: root/src/mesa/drivers/dri/r300/radeon_screen.c
diff options
context:
space:
mode:
authorDave Airlie <airliedfreedesktop.org>2005-10-28 12:00:09 +0000
committerDave Airlie <airliedfreedesktop.org>2005-10-28 12:00:09 +0000
commit3b3adf3daa9f92cb6904b0327a713baf2d529fc7 (patch)
tree24393d246ca7e28e67f16de5ad384d30055dbf1f /src/mesa/drivers/dri/r300/radeon_screen.c
parenta4af1119f5fb9322e1ddaa4808fed7579a758e4f (diff)
fix up radeon span functions using latest r200 code from Brian,
tested with reflect on 32-bit.. not sure why depthHasSurface isn't needed
Diffstat (limited to 'src/mesa/drivers/dri/r300/radeon_screen.c')
-rw-r--r--src/mesa/drivers/dri/r300/radeon_screen.c18
1 files changed, 13 insertions, 5 deletions
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,