<div dir="ltr"><div>For the series:</div><div><br></div><div>Reviewed-by: Marek Olšák <<a href="mailto:marek.olsak@amd.com">marek.olsak@amd.com</a>></div><div><br></div><div>Marek</div><div><br></div></div><div class="gmail_extra"><br><div class="gmail_quote">On Fri, May 18, 2018 at 11:14 AM, Eric Engestrom <span dir="ltr"><<a href="mailto:eric.engestrom@intel.com" target="_blank">eric.engestrom@intel.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Signed-off-by: Eric Engestrom <<a href="mailto:eric.engestrom@intel.com">eric.engestrom@intel.com</a>><br>
---<br>
 src/mesa/drivers/dri/common/<wbr>dri_util.c | 142 +++++++++++++------------<br>
 1 file changed, 76 insertions(+), 66 deletions(-)<br>
<br>
diff --git a/src/mesa/drivers/dri/common/<wbr>dri_util.c b/src/mesa/drivers/dri/common/<wbr>dri_util.c<br>
index 66c034819dc7956a1b7a..<wbr>1da47054b6a8c7a75417 100644<br>
--- a/src/mesa/drivers/dri/common/<wbr>dri_util.c<br>
+++ b/src/mesa/drivers/dri/common/<wbr>dri_util.c<br>
@@ -864,80 +864,90 @@ driUpdateFramebufferSize(<wbr>struct gl_context *ctx, const __DRIdrawable *dPriv)<br>
    }<br>
 }<br>
<br>
+/*<br>
+ * Note: the first match is returned, which is important for formats like<br>
+ * __DRI_IMAGE_FORMAT_R8 which maps to both MESA_FORMAT_{R,L}_UNORM8<br>
+ */<br>
+static const struct {<br>
+   uint32_t    image_format;<br>
+   mesa_format mesa_format;<br>
+} format_mapping[] = {<br>
+   {<br>
+      .image_format = __DRI_IMAGE_FORMAT_RGB565,<br>
+      .mesa_format  =        MESA_FORMAT_B5G6R5_UNORM,<br>
+   },<br>
+   {<br>
+      .image_format = __DRI_IMAGE_FORMAT_ARGB1555,<br>
+      .mesa_format  =        MESA_FORMAT_B5G5R5A1_UNORM,<br>
+   },<br>
+   {<br>
+      .image_format = __DRI_IMAGE_FORMAT_XRGB8888,<br>
+      .mesa_format  =        MESA_FORMAT_B8G8R8X8_UNORM,<br>
+   },<br>
+   {<br>
+      .image_format = __DRI_IMAGE_FORMAT_<wbr>ARGB2101010,<br>
+      .mesa_format  =        MESA_FORMAT_B10G10R10A2_UNORM,<br>
+   },<br>
+   {<br>
+      .image_format = __DRI_IMAGE_FORMAT_<wbr>XRGB2101010,<br>
+      .mesa_format  =        MESA_FORMAT_B10G10R10X2_UNORM,<br>
+   },<br>
+   {<br>
+      .image_format = __DRI_IMAGE_FORMAT_ARGB8888,<br>
+      .mesa_format  =        MESA_FORMAT_B8G8R8A8_UNORM,<br>
+   },<br>
+   {<br>
+      .image_format = __DRI_IMAGE_FORMAT_ABGR8888,<br>
+      .mesa_format  =        MESA_FORMAT_R8G8B8A8_UNORM,<br>
+   },<br>
+   {<br>
+      .image_format = __DRI_IMAGE_FORMAT_XBGR8888,<br>
+      .mesa_format  =        MESA_FORMAT_R8G8B8X8_UNORM,<br>
+   },<br>
+   {<br>
+      .image_format = __DRI_IMAGE_FORMAT_R8,<br>
+      .mesa_format  =        MESA_FORMAT_R_UNORM8,<br>
+   },<br>
+   {<br>
+      .image_format = __DRI_IMAGE_FORMAT_R8,<br>
+      .mesa_format  =        MESA_FORMAT_L_UNORM8,<br>
+   },<br>
+   {<br>
+      .image_format = __DRI_IMAGE_FORMAT_GR88,<br>
+      .mesa_format  =        MESA_FORMAT_R8G8_UNORM,<br>
+   },<br>
+   {<br>
+      .image_format = __DRI_IMAGE_FORMAT_GR88,<br>
+      .mesa_format  =        MESA_FORMAT_L8A8_UNORM,<br>
+   },<br>
+   {<br>
+      .image_format = __DRI_IMAGE_FORMAT_SABGR8,<br>
+      .mesa_format  =        MESA_FORMAT_R8G8B8A8_SRGB,<br>
+   },<br>
+   {<br>
+      .image_format = __DRI_IMAGE_FORMAT_SARGB8,<br>
+      .mesa_format  =        MESA_FORMAT_B8G8R8A8_SRGB,<br>
+   },<br>
+};<br>
+<br>
 uint32_t<br>
 driGLFormatToImageFormat(mesa_<wbr>format format)<br>
 {<br>
-   switch (format) {<br>
-   case MESA_FORMAT_B5G6R5_UNORM:<br>
-      return __DRI_IMAGE_FORMAT_RGB565;<br>
-   case MESA_FORMAT_B5G5R5A1_UNORM:<br>
-      return __DRI_IMAGE_FORMAT_ARGB1555;<br>
-   case MESA_FORMAT_B8G8R8X8_UNORM:<br>
-      return __DRI_IMAGE_FORMAT_XRGB8888;<br>
-   case MESA_FORMAT_B10G10R10A2_UNORM:<br>
-      return __DRI_IMAGE_FORMAT_<wbr>ARGB2101010;<br>
-   case MESA_FORMAT_B10G10R10X2_UNORM:<br>
-      return __DRI_IMAGE_FORMAT_<wbr>XRGB2101010;<br>
-   case MESA_FORMAT_B8G8R8A8_UNORM:<br>
-      return __DRI_IMAGE_FORMAT_ARGB8888;<br>
-   case MESA_FORMAT_R8G8B8A8_UNORM:<br>
-      return __DRI_IMAGE_FORMAT_ABGR8888;<br>
-   case MESA_FORMAT_R8G8B8X8_UNORM:<br>
-      return __DRI_IMAGE_FORMAT_XBGR8888;<br>
-   case MESA_FORMAT_L_UNORM8:<br>
-   case MESA_FORMAT_R_UNORM8:<br>
-      return __DRI_IMAGE_FORMAT_R8;<br>
-   case MESA_FORMAT_L8A8_UNORM:<br>
-   case MESA_FORMAT_R8G8_UNORM:<br>
-      return __DRI_IMAGE_FORMAT_GR88;<br>
-   case MESA_FORMAT_NONE:<br>
-      return __DRI_IMAGE_FORMAT_NONE;<br>
-   case MESA_FORMAT_R8G8B8A8_SRGB:<br>
-      return __DRI_IMAGE_FORMAT_SABGR8;<br>
-   case MESA_FORMAT_B8G8R8A8_SRGB:<br>
-      return __DRI_IMAGE_FORMAT_SARGB8;<br>
-   default:<br>
-      return __DRI_IMAGE_FORMAT_NONE;<br>
-   }<br>
+   for (size_t i = 0; i < ARRAY_SIZE(format_mapping); i++)<br>
+      if (format_mapping[i].mesa_format == format)<br>
+         return format_mapping[i].image_<wbr>format;<br>
+<br>
+   return __DRI_IMAGE_FORMAT_NONE;<br>
 }<br>
<br>
 mesa_format<br>
 driImageFormatToGLFormat(<wbr>uint32_t image_format)<br>
 {<br>
-   switch (image_format) {<br>
-   case __DRI_IMAGE_FORMAT_RGB565:<br>
-      return MESA_FORMAT_B5G6R5_UNORM;<br>
-   case __DRI_IMAGE_FORMAT_ARGB1555:<br>
-      return MESA_FORMAT_B5G5R5A1_UNORM;<br>
-   case __DRI_IMAGE_FORMAT_XRGB8888:<br>
-      return MESA_FORMAT_B8G8R8X8_UNORM;<br>
-   case __DRI_IMAGE_FORMAT_<wbr>ARGB2101010:<br>
-      return MESA_FORMAT_B10G10R10A2_UNORM;<br>
-   case __DRI_IMAGE_FORMAT_<wbr>XRGB2101010:<br>
-      return MESA_FORMAT_B10G10R10X2_UNORM;<br>
-   case __DRI_IMAGE_FORMAT_ARGB8888:<br>
-      return MESA_FORMAT_B8G8R8A8_UNORM;<br>
-   case __DRI_IMAGE_FORMAT_ABGR8888:<br>
-      return MESA_FORMAT_R8G8B8A8_UNORM;<br>
-   case __DRI_IMAGE_FORMAT_XBGR8888:<br>
-      return MESA_FORMAT_R8G8B8X8_UNORM;<br>
-   case __DRI_IMAGE_FORMAT_R8:<br>
-      return MESA_FORMAT_R_UNORM8;<br>
-   case __DRI_IMAGE_FORMAT_R16:<br>
-      return MESA_FORMAT_R_UNORM16;<br>
-   case __DRI_IMAGE_FORMAT_GR88:<br>
-      return MESA_FORMAT_R8G8_UNORM;<br>
-   case __DRI_IMAGE_FORMAT_GR1616:<br>
-      return MESA_FORMAT_R16G16_UNORM;<br>
-   case __DRI_IMAGE_FORMAT_SARGB8:<br>
-      return MESA_FORMAT_B8G8R8A8_SRGB;<br>
-   case __DRI_IMAGE_FORMAT_SABGR8:<br>
-      return MESA_FORMAT_R8G8B8A8_SRGB;<br>
-   case __DRI_IMAGE_FORMAT_NONE:<br>
-      return MESA_FORMAT_NONE;<br>
-   default:<br>
-      return MESA_FORMAT_NONE;<br>
-   }<br>
+   for (size_t i = 0; i < ARRAY_SIZE(format_mapping); i++)<br>
+      if (format_mapping[i].image_<wbr>format == image_format)<br>
+         return format_mapping[i].mesa_format;<br>
+<br>
+   return MESA_FORMAT_NONE;<br>
 }<br>
<br>
 /** Image driver interface */<br>
<span class="HOEnZb"><font color="#888888">-- <br>
Cheers,<br>
  Eric<br>
<br>
______________________________<wbr>_________________<br>
mesa-dev mailing list<br>
<a href="mailto:mesa-dev@lists.freedesktop.org">mesa-dev@lists.freedesktop.org</a><br>
<a href="https://lists.freedesktop.org/mailman/listinfo/mesa-dev" rel="noreferrer" target="_blank">https://lists.freedesktop.org/<wbr>mailman/listinfo/mesa-dev</a><br>
</font></span></blockquote></div><br></div>