[PATCH 1/2] DRI2: Properly use buffer depth passed in by client.

Alex Deucher alexdeucher at gmail.com
Thu Jan 10 09:48:51 PST 2013


On Thu, Jan 10, 2013 at 11:04 AM, Michel Dänzer <michel at daenzer.net> wrote:
> From: Michel Dänzer <michel.daenzer at amd.com>
>
> Signed-off-by: Michel Dänzer <michel.daenzer at amd.com>

For the series:
Reviewed-by: Alex Deucher <alexander.deucher at 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 at lists.x.org
> http://lists.x.org/mailman/listinfo/xorg-driver-ati


More information about the xorg-driver-ati mailing list