summaryrefslogtreecommitdiffstats
path: root/src/gallium/state_trackers/dri/dri_drawable.c
diff options
context:
space:
mode:
authorJakob Bornecrantz <jakob@vmware.com>2009-08-28 11:43:19 +0200
committerJakob Bornecrantz <jakob@vmware.com>2009-08-28 12:35:42 +0200
commit205d344e2a2f0c9ea982b037ab68feab06cbebb1 (patch)
treecc70601eae0f22819f61fb70306989125be84357 /src/gallium/state_trackers/dri/dri_drawable.c
parent4322181e6a07ecb8891c2d1ada74fd48c996a8fc (diff)
downloadexternal_mesa3d-205d344e2a2f0c9ea982b037ab68feab06cbebb1.zip
external_mesa3d-205d344e2a2f0c9ea982b037ab68feab06cbebb1.tar.gz
external_mesa3d-205d344e2a2f0c9ea982b037ab68feab06cbebb1.tar.bz2
Revert "st/xorg/dri: Pass texture formats via the DRI2 protocol flags."
This reverts commit a33e9ea3b9b7ac98d6e9bc385bbbe7eac2eb73d0. As this change breaks both radeon and nouveau
Diffstat (limited to 'src/gallium/state_trackers/dri/dri_drawable.c')
-rw-r--r--src/gallium/state_trackers/dri/dri_drawable.c16
1 files changed, 10 insertions, 6 deletions
diff --git a/src/gallium/state_trackers/dri/dri_drawable.c b/src/gallium/state_trackers/dri/dri_drawable.c
index c092afe..200b4bd 100644
--- a/src/gallium/state_trackers/dri/dri_drawable.c
+++ b/src/gallium/state_trackers/dri/dri_drawable.c
@@ -183,25 +183,27 @@ dri_get_buffers(__DRIdrawablePrivate * dPriv)
drawable->is_pixmap = dri2_check_if_pixmap(buffers, count);
for (i = 0; i < count; i++) {
+ enum pipe_format format = 0;
int index = 0;
switch (buffers[i].attachment) {
case __DRI_BUFFER_FRONT_LEFT:
+ continue;
case __DRI_BUFFER_FAKE_FRONT_LEFT:
index = ST_SURFACE_FRONT_LEFT;
- drawable->color_format = buffers[i].flags;
+ format = drawable->color_format;
break;
case __DRI_BUFFER_BACK_LEFT:
index = ST_SURFACE_BACK_LEFT;
- drawable->color_format = buffers[i].flags;
+ format = drawable->color_format;
break;
case __DRI_BUFFER_DEPTH:
index = ST_SURFACE_DEPTH;
- drawable->depth_format = buffers[i].flags;
+ format = drawable->depth_format;
break;
case __DRI_BUFFER_STENCIL:
index = ST_SURFACE_DEPTH;
- drawable->stencil_format = buffers[i].flags;
+ format = drawable->stencil_format;
break;
case __DRI_BUFFER_ACCUM:
default:
@@ -218,7 +220,7 @@ dri_get_buffers(__DRIdrawablePrivate * dPriv)
surface = dri_surface_from_handle(api,
screen,
buffers[i].name,
- buffers[i].flags,
+ format,
dri_drawable->w,
dri_drawable->h, buffers[i].pitch);
@@ -248,7 +250,9 @@ void dri2_set_tex_buffer2(__DRIcontext *pDRICtx, GLint target,
st_get_framebuffer_surface(drawable->stfb, ST_SURFACE_FRONT_LEFT, &ps);
st_bind_texture_surface(ps, target == GL_TEXTURE_2D ? ST_TEXTURE_2D :
- ST_TEXTURE_RECT, 0, drawable->color_format);
+ ST_TEXTURE_RECT, 0,
+ format == GLX_TEXTURE_FORMAT_RGBA_EXT ?
+ PIPE_FORMAT_R8G8B8A8_UNORM : PIPE_FORMAT_R8G8B8X8_UNORM);
}
void dri2_set_tex_buffer(__DRIcontext *pDRICtx, GLint target,