From: Michel Dänzer <michel.daen...@amd.com> Signed-off-by: Michel Dänzer <michel.daen...@amd.com> --- src/radeon_dri2.c | 25 ++++++++++++++++++++++--- 1 file changed, 22 insertions(+), 3 deletions(-)
diff --git a/src/radeon_dri2.c b/src/radeon_dri2.c index f0c5c01..36a44e4 100644 --- a/src/radeon_dri2.c +++ b/src/radeon_dri2.c @@ -164,6 +164,26 @@ radeon_dri2_create_buffer2(ScreenPtr pScreen, unsigned aligned_width = drawable->width; unsigned height = drawable->height; Bool is_glamor_pixmap = FALSE; + int depth; + int cpp; + + if (format) { + depth = format; + + switch (depth) { + case 15: + cpp = 2; + break; + case 24: + cpp = 4; + break; + default: + cpp = depth / 8; + } + } else { + depth = drawable->depth; + cpp = drawable->bitsPerPixel / 8; + } pixmap = pScreen->GetScreenPixmap(pScreen); front_width = pixmap->drawable.width; @@ -248,14 +268,13 @@ radeon_dri2_create_buffer2(ScreenPtr pScreen, if (flags & RADEON_CREATE_PIXMAP_TILING_MACRO) tiling |= RADEON_TILING_MACRO; - if (aligned_width == front_width) aligned_width = pScrn->virtualX; pixmap = (*pScreen->CreatePixmap)(pScreen, aligned_width, height, - (format != 0)?format:drawable->depth, + depth, flags | RADEON_CREATE_PIXMAP_DRI2); } @@ -292,7 +311,7 @@ radeon_dri2_create_buffer2(ScreenPtr pScreen, buffers->attachment = attachment; if (pixmap) { buffers->pitch = pixmap->devKind; - buffers->cpp = pixmap->drawable.bitsPerPixel / 8; + buffers->cpp = cpp; } buffers->driverPrivate = privates; buffers->format = format; -- 1.8.1 _______________________________________________ xorg-driver-ati mailing list xorg-driver-ati@lists.x.org http://lists.x.org/mailman/listinfo/xorg-driver-ati