diff options
author | Ben Skeggs <skeggsb@gmail.com> | 2007-12-13 11:55:35 +1100 |
---|---|---|
committer | Ben Skeggs <skeggsb@gmail.com> | 2007-12-13 11:55:35 +1100 |
commit | 72d47f1949f99231f18cc5144b1c45c58b35f890 (patch) | |
tree | 00e1d37839f01bc6fade418ae85d51f28fc47a13 /src/mesa/drivers/dri | |
parent | f1c5415675f695b302ffb7e5d46473bff9617dc1 (diff) |
nouveau: more adaption..
Diffstat (limited to 'src/mesa/drivers/dri')
-rw-r--r-- | src/mesa/drivers/dri/nouveau_winsys/nouveau_screen.c | 21 |
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; |