From 372011bc892481e61c273a12d9601fd6008751ea Mon Sep 17 00:00:00 2001 From: Jakob Bornecrantz Date: Thu, 25 Mar 2010 00:27:46 +0100 Subject: st/dri: Fix for X server 1.6.0 (DRI2 version 1) --- src/gallium/state_trackers/dri/dri_st_api.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) (limited to 'src/gallium') diff --git a/src/gallium/state_trackers/dri/dri_st_api.c b/src/gallium/state_trackers/dri/dri_st_api.c index 2cde01967d..263c1e19a7 100644 --- a/src/gallium/state_trackers/dri/dri_st_api.c +++ b/src/gallium/state_trackers/dri/dri_st_api.c @@ -168,13 +168,18 @@ dri_drawable_get_buffers(struct dri_drawable *drawable, boolean with_format; __DRIbuffer *buffers; int num_buffers; - unsigned attachments[8]; + unsigned attachments[10]; unsigned num_attachments, i; assert(loader); with_format = (loader->base.version > 2 && loader->getBuffersWithFormat); num_attachments = 0; + + /* for Xserver 1.6.0 (DRI2 version 1) we always need to ask for the front */ + if (!with_format) + attachments[num_attachments++] = __DRI_BUFFER_FRONT_LEFT; + for (i = 0; i < *count; i++) { enum pipe_format format; int att; @@ -185,6 +190,9 @@ dri_drawable_get_buffers(struct dri_drawable *drawable, switch (statts[i]) { case ST_ATTACHMENT_FRONT_LEFT: + /* already added */ + if (!with_format) + continue; att = __DRI_BUFFER_FRONT_LEFT; break; case ST_ATTACHMENT_BACK_LEFT: -- cgit v1.2.3