summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorJakob Bornecrantz <[email protected]>2010-03-25 00:27:46 +0100
committerJakob Bornecrantz <[email protected]>2010-03-25 00:45:28 +0100
commit372011bc892481e61c273a12d9601fd6008751ea (patch)
tree99e84e481e0c9f43556d49e14ea77af074d06040 /src
parent2ad8692aad0f4ad49643d5f697a036afccdeb9f0 (diff)
st/dri: Fix for X server 1.6.0 (DRI2 version 1)
Diffstat (limited to 'src')
-rw-r--r--src/gallium/state_trackers/dri/dri_st_api.c10
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: