summaryrefslogtreecommitdiff
path: root/src/mesa/drivers/dri
diff options
context:
space:
mode:
authorBen Skeggs <skeggsb@gmail.com>2007-12-13 11:55:35 +1100
committerBen Skeggs <skeggsb@gmail.com>2007-12-13 11:55:35 +1100
commit72d47f1949f99231f18cc5144b1c45c58b35f890 (patch)
tree00e1d37839f01bc6fade418ae85d51f28fc47a13 /src/mesa/drivers/dri
parentf1c5415675f695b302ffb7e5d46473bff9617dc1 (diff)
nouveau: more adaption..
Diffstat (limited to 'src/mesa/drivers/dri')
-rw-r--r--src/mesa/drivers/dri/nouveau_winsys/nouveau_screen.c21
1 files changed, 20 insertions, 1 deletions
diff --git a/src/mesa/drivers/dri/nouveau_winsys/nouveau_screen.c b/src/mesa/drivers/dri/nouveau_winsys/nouveau_screen.c
index a1eed2e44a..5a957f48eb 100644
--- a/src/mesa/drivers/dri/nouveau_winsys/nouveau_screen.c
+++ b/src/mesa/drivers/dri/nouveau_winsys/nouveau_screen.c
@@ -76,6 +76,7 @@ nouveau_create_buffer(__DRIscreenPrivate * driScrnPriv,
const __GLcontextModes *glVis, GLboolean pixmapBuffer)
{
struct nouveau_framebuffer *nvfb;
+ enum pipe_format colour, depth, stencil;
if (pixmapBuffer)
return GL_FALSE;
@@ -84,7 +85,25 @@ nouveau_create_buffer(__DRIscreenPrivate * driScrnPriv,
if (!nvfb)
return GL_FALSE;
- nvfb->stfb = st_create_framebuffer(glVis, GL_TRUE, (void*)nvfb);
+ if (glVis->redBits == 5)
+ colour = PIPE_FORMAT_R5G6B5_UNORM;
+ else
+ colour = PIPE_FORMAT_A8R8G8B8_UNORM;
+
+ if (glVis->depthBits == 16)
+ depth = PIPE_FORMAT_Z16_UNORM;
+ else if (glVis->depthBits == 24)
+ depth = PIPE_FORMAT_Z24S8_UNORM;
+ else
+ depth = PIPE_FORMAT_NONE;
+
+ if (glVis->stencilBits == 8)
+ stencil = PIPE_FORMAT_Z24S8_UNORM;
+ else
+ stencil = PIPE_FORMAT_NONE;
+
+ nvfb->stfb = st_create_framebuffer(glVis, GL_TRUE, colour, depth,
+ stencil, (void*)nvfb);
if (!nvfb->stfb) {
free(nvfb);
return GL_FALSE;