diff options
author | Jakob Bornecrantz <[email protected]> | 2010-03-25 00:27:46 +0100 |
---|---|---|
committer | Jakob Bornecrantz <[email protected]> | 2010-03-25 00:45:28 +0100 |
commit | 372011bc892481e61c273a12d9601fd6008751ea (patch) | |
tree | 99e84e481e0c9f43556d49e14ea77af074d06040 /src/gallium/state_trackers/dri | |
parent | 2ad8692aad0f4ad49643d5f697a036afccdeb9f0 (diff) |
st/dri: Fix for X server 1.6.0 (DRI2 version 1)
Diffstat (limited to 'src/gallium/state_trackers/dri')
-rw-r--r-- | src/gallium/state_trackers/dri/dri_st_api.c | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/src/gallium/state_trackers/dri/dri_st_api.c b/src/gallium/state_trackers/dri/dri_st_api.c index 2cde01967d8..263c1e19a70 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: |