Mesa (master): st/xorg: Find out correct type for depth stencil buffers
Jakob Bornecrantz
wallbraker at kemper.freedesktop.org
Wed Aug 26 12:53:49 UTC 2009
Module: Mesa
Branch: master
Commit: 23fe960be0d0d27fcd676534c692ab164f854acb
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=23fe960be0d0d27fcd676534c692ab164f854acb
Author: Jakob Bornecrantz <jakob at 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;
More information about the mesa-commit
mailing list