From: Nicolas Dufresne Date: Sun, 17 Apr 2016 00:49:43 +0000 (-0400) Subject: st/dri: Factor out DRI2 to PIPE_FORMAT conversion X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=4463f38766061bd058dc668e0ac2820a4cba79e7;p=mesa.git st/dri: Factor out DRI2 to PIPE_FORMAT conversion 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 --- 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;