util: store number of colors for indexed formats

Store the number of available colors for color-indexed frame
buffer formats in the format_info[] array.  This avoids the need of test
code for having to use switch statements all the time to obtain the
number of colors, or to check if a mode is color-indexed or not.

Signed-off-by: Geert Uytterhoeven <geert@linux-m68k.org>
Acked-by: Sam Ravnborg <sam@ravnborg.org>
Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
---
v5:
  - Add Reviewed-by,

v4:
  - No changes,

v3:
  - Add Acked-by,

v2:
  - New.
main
Geert Uytterhoeven 2022-06-30 15:21:57 +02:00
parent 236766b0b3
commit 8134deb31f
2 changed files with 5 additions and 4 deletions

View File

@ -40,10 +40,10 @@
static const struct util_format_info format_info[] = { static const struct util_format_info format_info[] = {
/* Indexed */ /* Indexed */
{ DRM_FORMAT_C1, "C1" }, { DRM_FORMAT_C1, "C1", .ncolors = 2 },
{ DRM_FORMAT_C2, "C2" }, { DRM_FORMAT_C2, "C2", .ncolors = 4 },
{ DRM_FORMAT_C4, "C4" }, { DRM_FORMAT_C4, "C4", .ncolors = 16 },
{ DRM_FORMAT_C8, "C8" }, { DRM_FORMAT_C8, "C8", .ncolors = 256 },
/* YUV packed */ /* YUV packed */
{ DRM_FORMAT_UYVY, "UYVY", MAKE_YUV_INFO(YUV_YCbCr | YUV_CY, 2, 2, 2) }, { DRM_FORMAT_UYVY, "UYVY", MAKE_YUV_INFO(YUV_YCbCr | YUV_CY, 2, 2, 2) },
{ DRM_FORMAT_VYUY, "VYUY", MAKE_YUV_INFO(YUV_YCrCb | YUV_CY, 2, 2, 2) }, { DRM_FORMAT_VYUY, "VYUY", MAKE_YUV_INFO(YUV_YCrCb | YUV_CY, 2, 2, 2) },

View File

@ -55,6 +55,7 @@ struct util_yuv_info {
struct util_format_info { struct util_format_info {
uint32_t format; uint32_t format;
const char *name; const char *name;
unsigned int ncolors;
const struct util_rgb_info rgb; const struct util_rgb_info rgb;
const struct util_yuv_info yuv; const struct util_yuv_info yuv;
}; };