Module: Mesa
Branch: master
Commit: 23fe960be0d0d27fcd676534c692ab164f854acb
URL:    
http://cgit.freedesktop.org/mesa/mesa/commit/?id=23fe960be0d0d27fcd676534c692ab164f854acb

Author: Jakob Bornecrantz <ja...@vmware.com>
Date:   Wed Aug 26 13:45:31 2009 +0200

st/xorg: Find out correct type for depth stencil buffers

---

 src/gallium/state_trackers/xorg/xorg_dri2.c    |   12 +++++++++++-
 src/gallium/state_trackers/xorg/xorg_tracker.h |    2 ++
 2 files changed, 13 insertions(+), 1 deletions(-)

diff --git a/src/gallium/state_trackers/xorg/xorg_dri2.c 
b/src/gallium/state_trackers/xorg/xorg_dri2.c
index f089965..e72710b 100644
--- a/src/gallium/state_trackers/xorg/xorg_dri2.c
+++ b/src/gallium/state_trackers/xorg/xorg_dri2.c
@@ -88,7 +88,8 @@ driCreateBuffers(DrawablePtr pDraw, unsigned int 
*attachments, int count)
            struct pipe_texture template;
            memset(&template, 0, sizeof(template));
            template.target = PIPE_TEXTURE_2D;
-           template.format = PIPE_FORMAT_S8Z24_UNORM;
+           template.format = ms->ds_depth_bits_last ?
+               PIPE_FORMAT_S8Z24_UNORM : PIPE_FORMAT_Z24S8_UNORM;
            pf_get_block(template.format, &template.block);
            template.width[0] = pDraw->width;
            template.height[0] = pDraw->height;
@@ -270,6 +271,15 @@ driScreenInit(ScreenPtr pScreen)
     dri2info.DestroyBuffers = driDestroyBuffers;
     dri2info.CopyRegion = driCopyRegion;
 
+    ms->d_depth_bits_last =
+        ms->screen->is_format_supported(ms->screen, PIPE_FORMAT_X8Z24_UNORM,
+                                        PIPE_TEXTURE_2D,
+                                        PIPE_TEXTURE_USAGE_DEPTH_STENCIL, 0);
+    ms->ds_depth_bits_last =
+        ms->screen->is_format_supported(ms->screen, PIPE_FORMAT_S8Z24_UNORM,
+                                        PIPE_TEXTURE_2D,
+                                        PIPE_TEXTURE_USAGE_DEPTH_STENCIL, 0);
+
     return DRI2ScreenInit(pScreen, &dri2info);
 }
 
diff --git a/src/gallium/state_trackers/xorg/xorg_tracker.h 
b/src/gallium/state_trackers/xorg/xorg_tracker.h
index da850bb..8c60d50 100644
--- a/src/gallium/state_trackers/xorg/xorg_tracker.h
+++ b/src/gallium/state_trackers/xorg/xorg_tracker.h
@@ -87,6 +87,8 @@ typedef struct _modesettingRec
     struct drm_api *api;
     struct pipe_screen *screen;
     struct pipe_context *ctx;
+    boolean d_depth_bits_last;
+    boolean ds_depth_bits_last;
 
     /* exa */
     void *exa;

_______________________________________________
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-commit

Reply via email to