st/mesa: make st_manager.c set have[Stencil|Depth]Buffer only if bits > 0
authorLuca Barbieri <luca@luca-barbieri.com>
Tue, 23 Mar 2010 16:40:42 +0000 (17:40 +0100)
committerLuca Barbieri <luca@luca-barbieri.com>
Tue, 23 Mar 2010 17:02:51 +0000 (18:02 +0100)
Fixes a segfault when clearing a non-existent stencil buffer.

src/mesa/state_tracker/st_manager.c

index ca3a29cb2b891e4d72ad1cf39560df2b9efee43e..cac62e4a14cf6ffa2f5c13170b81c4adfeea56d5 100644 (file)
@@ -333,15 +333,15 @@ st_visual_to_context_mode(const struct st_visual *visual,
    }
 
    if (visual->depth_stencil_format != PIPE_FORMAT_NONE) {
-      mode->haveDepthBuffer = GL_TRUE;
-      mode->haveStencilBuffer = GL_TRUE;
-
       mode->depthBits =
          util_format_get_component_bits(visual->depth_stencil_format,
                UTIL_FORMAT_COLORSPACE_ZS, 0);
       mode->stencilBits =
          util_format_get_component_bits(visual->depth_stencil_format,
                UTIL_FORMAT_COLORSPACE_ZS, 1);
+
+      mode->haveDepthBuffer = mode->depthBits > 0;
+      mode->haveStencilBuffer = mode->stencilBits > 0;
    }
 
    if (visual->accum_format != PIPE_FORMAT_NONE) {