Commit a5aed5ee by Nicolas Capens Committed by Nicolas Capens

Log an error when unsupported Android pixel formats are used.

Known projects avoid using HAL_PIXEL_FORMAT_RGB_888 because we have no immediate desire to support it (for performance reasons), but other users may run into unexpected issues that previously would leave no trace. Change-Id: Idc606809117f8e0b200b4b38c58ba24696e7193c Reviewed-on: https://swiftshader-review.googlesource.com/11311Tested-by: 's avatarNicolas Capens <nicolascapens@google.com> Reviewed-by: 's avatarAlexis Hétu <sugoi@google.com> Reviewed-by: 's avatarNicolas Capens <nicolascapens@google.com>
parent 0c3c6f1b
...@@ -100,15 +100,22 @@ namespace sw ...@@ -100,15 +100,22 @@ namespace sw
switch(buffer->format) switch(buffer->format)
{ {
default: ALOGE("Unsupported buffer format %d", buffer->format); ASSERT(false); case HAL_PIXEL_FORMAT_RGB_565: destFormat = FORMAT_R5G6B5; break;
case HAL_PIXEL_FORMAT_RGB_565: destFormat = FORMAT_R5G6B5; break;
case HAL_PIXEL_FORMAT_RGB_888: destFormat = FORMAT_R8G8B8; break;
case HAL_PIXEL_FORMAT_RGBA_8888: destFormat = FORMAT_A8B8G8R8; break; case HAL_PIXEL_FORMAT_RGBA_8888: destFormat = FORMAT_A8B8G8R8; break;
#if ANDROID_PLATFORM_SDK_VERSION > 16 #if ANDROID_PLATFORM_SDK_VERSION > 16
case HAL_PIXEL_FORMAT_IMPLEMENTATION_DEFINED: destFormat = FORMAT_X8B8G8R8; break; case HAL_PIXEL_FORMAT_IMPLEMENTATION_DEFINED: destFormat = FORMAT_X8B8G8R8; break;
#endif #endif
case HAL_PIXEL_FORMAT_RGBX_8888: destFormat = FORMAT_X8B8G8R8; break; case HAL_PIXEL_FORMAT_RGBX_8888: destFormat = FORMAT_X8B8G8R8; break;
case HAL_PIXEL_FORMAT_BGRA_8888: destFormat = FORMAT_A8R8G8B8; break; case HAL_PIXEL_FORMAT_BGRA_8888: destFormat = FORMAT_A8R8G8B8; break;
case HAL_PIXEL_FORMAT_RGB_888:
// Frame buffers are expected to have 16-bit or 32-bit colors, not 24-bit.
ALOGE("Unsupported frame buffer format RGB_888"); ASSERT(false);
destFormat = FORMAT_R8G8B8; // Wrong component order.
break;
default:
ALOGE("Unsupported frame buffer format %d", buffer->format); ASSERT(false);
destFormat = FORMAT_NULL;
break;
} }
stride = buffer->stride * Surface::bytes(destFormat); stride = buffer->stride * Surface::bytes(destFormat);
......
...@@ -220,14 +220,16 @@ inline GLenum GLPixelFormatFromAndroid(int halFormat) ...@@ -220,14 +220,16 @@ inline GLenum GLPixelFormatFromAndroid(int halFormat)
case HAL_PIXEL_FORMAT_IMPLEMENTATION_DEFINED: return GL_RGB8; case HAL_PIXEL_FORMAT_IMPLEMENTATION_DEFINED: return GL_RGB8;
#endif #endif
case HAL_PIXEL_FORMAT_RGBX_8888: return GL_RGB8; case HAL_PIXEL_FORMAT_RGBX_8888: return GL_RGB8;
case HAL_PIXEL_FORMAT_RGB_888: return GL_NONE; // Unsupported
case HAL_PIXEL_FORMAT_BGRA_8888: return GL_BGRA8_EXT; case HAL_PIXEL_FORMAT_BGRA_8888: return GL_BGRA8_EXT;
case HAL_PIXEL_FORMAT_RGB_565: return GL_RGB565; case HAL_PIXEL_FORMAT_RGB_565: return GL_RGB565;
case HAL_PIXEL_FORMAT_YV12: return SW_YV12_BT601; case HAL_PIXEL_FORMAT_YV12: return SW_YV12_BT601;
#ifdef GRALLOC_MODULE_API_VERSION_0_2 #ifdef GRALLOC_MODULE_API_VERSION_0_2
case HAL_PIXEL_FORMAT_YCbCr_420_888: return SW_YV12_BT601; case HAL_PIXEL_FORMAT_YCbCr_420_888: return SW_YV12_BT601;
#endif #endif
default: return GL_NONE; case HAL_PIXEL_FORMAT_RGB_888: // Unsupported.
default:
ALOGE("Unsupported EGL image format %d", halFormat); ASSERT(false);
return GL_NONE;
} }
} }
...@@ -240,14 +242,16 @@ inline GLenum GLPixelTypeFromAndroid(int halFormat) ...@@ -240,14 +242,16 @@ inline GLenum GLPixelTypeFromAndroid(int halFormat)
case HAL_PIXEL_FORMAT_IMPLEMENTATION_DEFINED: return GL_UNSIGNED_BYTE; case HAL_PIXEL_FORMAT_IMPLEMENTATION_DEFINED: return GL_UNSIGNED_BYTE;
#endif #endif
case HAL_PIXEL_FORMAT_RGBX_8888: return GL_UNSIGNED_BYTE; case HAL_PIXEL_FORMAT_RGBX_8888: return GL_UNSIGNED_BYTE;
case HAL_PIXEL_FORMAT_RGB_888: return GL_NONE; // Unsupported
case HAL_PIXEL_FORMAT_BGRA_8888: return GL_UNSIGNED_BYTE; case HAL_PIXEL_FORMAT_BGRA_8888: return GL_UNSIGNED_BYTE;
case HAL_PIXEL_FORMAT_RGB_565: return GL_UNSIGNED_SHORT_5_6_5; case HAL_PIXEL_FORMAT_RGB_565: return GL_UNSIGNED_SHORT_5_6_5;
case HAL_PIXEL_FORMAT_YV12: return GL_UNSIGNED_BYTE; case HAL_PIXEL_FORMAT_YV12: return GL_UNSIGNED_BYTE;
#ifdef GRALLOC_MODULE_API_VERSION_0_2 #ifdef GRALLOC_MODULE_API_VERSION_0_2
case HAL_PIXEL_FORMAT_YCbCr_420_888: return GL_UNSIGNED_BYTE; case HAL_PIXEL_FORMAT_YCbCr_420_888: return GL_UNSIGNED_BYTE;
#endif #endif
default: return GL_NONE; case HAL_PIXEL_FORMAT_RGB_888: // Unsupported.
default:
ALOGE("Unsupported EGL image format %d", halFormat); ASSERT(false);
return GL_NONE;
} }
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment