common/drm-formats: Add function to map Cogl → DRM

It's basically the reverse mapping. It does not deal with
multiplanar formats.

Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3175>
This commit is contained in:
Georges Basile Stavracas Neto 2023-08-11 16:12:52 -03:00
parent fdc3f3fec3
commit b814aff600
2 changed files with 25 additions and 0 deletions

View File

@ -51,3 +51,25 @@ meta_cogl_pixel_format_from_drm_format (uint32_t drm_format,
return TRUE; return TRUE;
} }
gboolean
meta_drm_format_from_cogl_pixel_format (CoglPixelFormat cogl_format,
uint32_t *out_drm_format)
{
const size_t n = G_N_ELEMENTS (meta_cogl_drm_format_map);
size_t i;
for (i = 0; i < n; i++)
{
if (meta_cogl_drm_format_map[i].cogl_format == cogl_format)
break;
}
if (i == n)
return FALSE;
if (out_drm_format)
*out_drm_format = meta_cogl_drm_format_map[i].drm_format;
return TRUE;
}

View File

@ -81,4 +81,7 @@ gboolean meta_cogl_pixel_format_from_drm_format (uint32_t drm_for
CoglPixelFormat *out_format, CoglPixelFormat *out_format,
MetaMultiTextureFormat *out_multi_texture_format); MetaMultiTextureFormat *out_multi_texture_format);
gboolean meta_drm_format_from_cogl_pixel_format (CoglPixelFormat cogl_format,
uint32_t *out_drm_format);
G_END_DECLS G_END_DECLS