egl/android: Make get_fourcc() accept HAL formats
authorTomasz Figa <tfiga@chromium.org>
Tue, 2 Aug 2016 11:07:53 +0000 (20:07 +0900)
committerChad Versace <chad@kiwitree.net>
Mon, 8 Aug 2016 18:40:41 +0000 (11:40 -0700)
There are DRI_IMAGE_FOURCC macros, for which there are no corresponding
DRI_IMAGE_FORMAT macros. To support such formats we need to make the
lookup function take the native format directly. As a side effect, it
simplifies all existing calls to this function, because they all called
get_format() first to convert from native to DRI_IMAGE_FORMAT.

Signed-off-by: Tomasz Figa <tfiga@chromium.org>
Tested-by: Rob Herring <rob@kernel.org>
Reviewed-by: Chad Versace <chad@kiwitree.net>
Change-Id: I4674000fb5ccfd02e38b8fa89bc567ac1d4fc16b

src/egl/drivers/dri2/platform_android.c

index 94e765d7d8bb7d63ddbdef6000120c6d465aa4b2..596833e8501a0343efae4db7fce2c43de8b9970f 100644 (file)
@@ -66,14 +66,15 @@ get_format_bpp(int native)
 }
 
 /* createImageFromFds requires fourcc format */
-static int get_fourcc(int format)
+static int get_fourcc(int native)
 {
-   switch(format) {
-   case __DRI_IMAGE_FORMAT_RGB565:   return __DRI_IMAGE_FOURCC_RGB565;
-   case __DRI_IMAGE_FORMAT_ARGB8888: return __DRI_IMAGE_FOURCC_ARGB8888;
-   case __DRI_IMAGE_FORMAT_XRGB8888: return __DRI_IMAGE_FOURCC_XRGB8888;
-   case __DRI_IMAGE_FORMAT_ABGR8888: return __DRI_IMAGE_FOURCC_ABGR8888;
-   case __DRI_IMAGE_FORMAT_XBGR8888: return __DRI_IMAGE_FOURCC_XBGR8888;
+   switch (native) {
+   case HAL_PIXEL_FORMAT_RGB_565:   return __DRI_IMAGE_FOURCC_RGB565;
+   case HAL_PIXEL_FORMAT_BGRA_8888: return __DRI_IMAGE_FOURCC_ARGB8888;
+   case HAL_PIXEL_FORMAT_RGBA_8888: return __DRI_IMAGE_FOURCC_ABGR8888;
+   case HAL_PIXEL_FORMAT_RGBX_8888: return __DRI_IMAGE_FOURCC_XBGR8888;
+   default:
+      _eglLog(_EGL_WARNING, "unsupported native buffer format 0x%x", native);
    }
    return -1;
 }
@@ -92,6 +93,7 @@ static int get_format(int format)
    }
    return -1;
 }
+
 static int
 get_native_buffer_fd(struct ANativeWindowBuffer *buf)
 {
@@ -397,7 +399,7 @@ get_back_bo(struct dri2_egl_surface *dri2_surf)
       return -1;
    }
 
-   fourcc = get_fourcc(get_format(dri2_surf->buffer->format));
+   fourcc = get_fourcc(dri2_surf->buffer->format);
 
    pitch = dri2_surf->buffer->stride *
       get_format_bpp(dri2_surf->buffer->format);
@@ -481,7 +483,7 @@ static _EGLImage *
 droid_create_image_from_prime_fd(_EGLDisplay *disp, _EGLContext *ctx,
                                  struct ANativeWindowBuffer *buf, int fd)
 {
-   const int fourcc = get_fourcc(get_format(buf->format));
+   const int fourcc = get_fourcc(buf->format);
    const int pitch = buf->stride * get_format_bpp(buf->format);
 
    const EGLint attr_list[14] = {