Module: Mesa
Branch: gallium-st-api
Commit: 543a29f1a16cc46c6d019d2cf2bd13a96b5a3f2f
URL:    
http://cgit.freedesktop.org/mesa/mesa/commit/?id=543a29f1a16cc46c6d019d2cf2bd13a96b5a3f2f

Author: Chia-I Wu <[email protected]>
Date:   Fri Mar 12 11:27:50 2010 +0800

st/mesa: Check the format before adding depth/stencil buffers.

The format might have depth bits, stencil bits, or both.  Add the
renderbuffers as needed.

---

 src/mesa/state_tracker/st_manager.c |   12 +++++++++---
 1 files changed, 9 insertions(+), 3 deletions(-)

diff --git a/src/mesa/state_tracker/st_manager.c 
b/src/mesa/state_tracker/st_manager.c
index 6c3cde0..f0dda4b 100644
--- a/src/mesa/state_tracker/st_manager.c
+++ b/src/mesa/state_tracker/st_manager.c
@@ -270,9 +270,15 @@ st_framebuffer_add_renderbuffer(struct st_framebuffer 
*stfb,
    if (!rb)
       return FALSE;
 
-   _mesa_add_renderbuffer(&stfb->Base, idx, rb);
-   if (idx == BUFFER_DEPTH)
-      _mesa_add_renderbuffer(&stfb->Base, BUFFER_STENCIL, rb);
+   if (idx != BUFFER_DEPTH) {
+      _mesa_add_renderbuffer(&stfb->Base, idx, rb);
+   }
+   else {
+      if (util_format_get_component_bits(format, UTIL_FORMAT_COLORSPACE_ZS, 0))
+         _mesa_add_renderbuffer(&stfb->Base, BUFFER_DEPTH, rb);
+      if (util_format_get_component_bits(format, UTIL_FORMAT_COLORSPACE_ZS, 1))
+         _mesa_add_renderbuffer(&stfb->Base, BUFFER_STENCIL, rb);
+   }
 
    return TRUE;
 }

_______________________________________________
mesa-commit mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/mesa-commit

Reply via email to