From: Jakob Bornecrantz Date: Wed, 26 Aug 2009 11:45:31 +0000 (+0200) Subject: st/xorg: Find out correct type for depth stencil buffers X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=23fe960be0d0d27fcd676534c692ab164f854acb;p=mesa.git st/xorg: Find out correct type for depth stencil buffers --- diff --git a/src/gallium/state_trackers/xorg/xorg_dri2.c b/src/gallium/state_trackers/xorg/xorg_dri2.c index f089965b03c..e72710befb0 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 da850bbf649..8c60d50927d 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;