From 4463f38766061bd058dc668e0ac2820a4cba79e7 Mon Sep 17 00:00:00 2001 From: Nicolas Dufresne Date: Sat, 16 Apr 2016 20:49:43 -0400 Subject: [PATCH] st/dri: Factor out DRI2 to PIPE_FORMAT conversion MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit This code is already duplicated twice and will be useful again. This will also help when adding formats. Signed-off-by: Nicolas Dufresne Reviewed-by: Michel Dänzer --- src/gallium/state_trackers/dri/dri2.c | 61 ++++++++++++--------------- 1 file changed, 27 insertions(+), 34 deletions(-) diff --git a/src/gallium/state_trackers/dri/dri2.c b/src/gallium/state_trackers/dri/dri2.c index fb0a1802cf2..d46d131fce4 100644 --- a/src/gallium/state_trackers/dri/dri2.c +++ b/src/gallium/state_trackers/dri/dri2.c @@ -101,6 +101,31 @@ static int convert_to_fourcc(int format) return format; } +static enum pipe_format dri2_format_to_pipe_format (int format) +{ + enum pipe_format pf; + + switch (format) { + case __DRI_IMAGE_FORMAT_RGB565: + pf = PIPE_FORMAT_B5G6R5_UNORM; + break; + case __DRI_IMAGE_FORMAT_XRGB8888: + pf = PIPE_FORMAT_BGRX8888_UNORM; + break; + case __DRI_IMAGE_FORMAT_ARGB8888: + pf = PIPE_FORMAT_BGRA8888_UNORM; + break; + case __DRI_IMAGE_FORMAT_ABGR8888: + pf = PIPE_FORMAT_RGBA8888_UNORM; + break; + default: + pf = PIPE_FORMAT_NONE; + break; + } + + return pf; +} + /** * DRI2 flush extension. */ @@ -722,23 +747,7 @@ dri2_create_image_from_winsys(__DRIscreen *_screen, tex_usage = PIPE_BIND_RENDER_TARGET | PIPE_BIND_SAMPLER_VIEW; - switch (format) { - case __DRI_IMAGE_FORMAT_RGB565: - pf = PIPE_FORMAT_B5G6R5_UNORM; - break; - case __DRI_IMAGE_FORMAT_XRGB8888: - pf = PIPE_FORMAT_BGRX8888_UNORM; - break; - case __DRI_IMAGE_FORMAT_ARGB8888: - pf = PIPE_FORMAT_BGRA8888_UNORM; - break; - case __DRI_IMAGE_FORMAT_ABGR8888: - pf = PIPE_FORMAT_RGBA8888_UNORM; - break; - default: - pf = PIPE_FORMAT_NONE; - break; - } + pf = dri2_format_to_pipe_format (format); if (pf == PIPE_FORMAT_NONE) return NULL; @@ -845,23 +854,7 @@ dri2_create_image(__DRIscreen *_screen, tex_usage |= PIPE_BIND_CURSOR; } - switch (format) { - case __DRI_IMAGE_FORMAT_RGB565: - pf = PIPE_FORMAT_B5G6R5_UNORM; - break; - case __DRI_IMAGE_FORMAT_XRGB8888: - pf = PIPE_FORMAT_BGRX8888_UNORM; - break; - case __DRI_IMAGE_FORMAT_ARGB8888: - pf = PIPE_FORMAT_BGRA8888_UNORM; - break; - case __DRI_IMAGE_FORMAT_ABGR8888: - pf = PIPE_FORMAT_RGBA8888_UNORM; - break; - default: - pf = PIPE_FORMAT_NONE; - break; - } + pf = dri2_format_to_pipe_format (format); if (pf == PIPE_FORMAT_NONE) return NULL; -- 2.30.2