Module: Mesa Branch: main Commit: 42a46f2c5f169c4f06db3a7d1e944fcf34b36e82 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=42a46f2c5f169c4f06db3a7d1e944fcf34b36e82
Author: Yogesh Mohanmarimuthu <yogesh.mohanmarimu...@amd.com> Date: Mon Nov 22 20:13:41 2021 +0530 loader: make image_format_to_fourcc() non-static the image_format_to_fourcc() function will be used from egl/wayland hence make it non-static. Also move the function into loader_dri_helper.c from loader_dri3_helper.c since loader_dri3_helper library depends on xcb which will make egl wayland depend on xcb indirectly. v2: add loader tag to extern image_format_to_fourcc() (Marek Olšák) V3: move image_format_to_fourcc to loader_dri_helper.c Signed-off-by: Yogesh Mohanmarimuthu <yogesh.mohanmarimu...@amd.com> Reviewed-by: Pierre-Eric Pelloux-Prayer <pierre-eric.pelloux-pra...@amd.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/13422> --- src/loader/loader_dri3_helper.c | 41 +++++------------------------------------ src/loader/loader_dri_helper.c | 31 +++++++++++++++++++++++++++++++ src/loader/loader_dri_helper.h | 3 +++ 3 files changed, 39 insertions(+), 36 deletions(-) diff --git a/src/loader/loader_dri3_helper.c b/src/loader/loader_dri3_helper.c index 0cc73f78ef0..8d79e31d7c5 100644 --- a/src/loader/loader_dri3_helper.c +++ b/src/loader/loader_dri3_helper.c @@ -1371,37 +1371,6 @@ dri3_linear_format_for_format(struct loader_dri3_drawable *draw, uint32_t format } } -/* the DRIimage createImage function takes __DRI_IMAGE_FORMAT codes, while - * the createImageFromFds call takes DRM_FORMAT codes. To avoid - * complete confusion, just deal in __DRI_IMAGE_FORMAT codes for now and - * translate to DRM_FORMAT codes in the call to createImageFromFds - */ -static int -image_format_to_fourcc(int format) -{ - - /* Convert from __DRI_IMAGE_FORMAT to DRM_FORMAT (sigh) */ - switch (format) { - case __DRI_IMAGE_FORMAT_SARGB8: return __DRI_IMAGE_FOURCC_SARGB8888; - case __DRI_IMAGE_FORMAT_SABGR8: return __DRI_IMAGE_FOURCC_SABGR8888; - case __DRI_IMAGE_FORMAT_SXRGB8: return __DRI_IMAGE_FOURCC_SXRGB8888; - case __DRI_IMAGE_FORMAT_RGB565: return DRM_FORMAT_RGB565; - case __DRI_IMAGE_FORMAT_XRGB8888: return DRM_FORMAT_XRGB8888; - case __DRI_IMAGE_FORMAT_ARGB8888: return DRM_FORMAT_ARGB8888; - case __DRI_IMAGE_FORMAT_ABGR8888: return DRM_FORMAT_ABGR8888; - case __DRI_IMAGE_FORMAT_XBGR8888: return DRM_FORMAT_XBGR8888; - case __DRI_IMAGE_FORMAT_XRGB2101010: return DRM_FORMAT_XRGB2101010; - case __DRI_IMAGE_FORMAT_ARGB2101010: return DRM_FORMAT_ARGB2101010; - case __DRI_IMAGE_FORMAT_XBGR2101010: return DRM_FORMAT_XBGR2101010; - case __DRI_IMAGE_FORMAT_ABGR2101010: return DRM_FORMAT_ABGR2101010; - case __DRI_IMAGE_FORMAT_ABGR16161616: return DRM_FORMAT_ABGR16161616; - case __DRI_IMAGE_FORMAT_XBGR16161616: return DRM_FORMAT_XBGR16161616; - case __DRI_IMAGE_FORMAT_XBGR16161616F: return DRM_FORMAT_XBGR16161616F; - case __DRI_IMAGE_FORMAT_ABGR16161616F: return DRM_FORMAT_ABGR16161616F; - } - return 0; -} - #ifdef HAVE_DRI3_MODIFIERS static bool has_supported_modifier(struct loader_dri3_drawable *draw, unsigned int format, @@ -1515,7 +1484,7 @@ dri3_alloc_render_buffer(struct loader_dri3_drawable *draw, unsigned int format, xcb_dri3_get_supported_modifiers_window_modifiers(mod_reply), count * sizeof(uint64_t)); - if (!has_supported_modifier(draw, image_format_to_fourcc(format), + if (!has_supported_modifier(draw, loader_image_format_to_fourcc(format), modifiers, count)) { free(modifiers); count = 0; @@ -1648,7 +1617,7 @@ dri3_alloc_render_buffer(struct loader_dri3_drawable *draw, unsigned int format, draw->ext->image->createImageFromFds2(draw->dri_screen, width, height, - image_format_to_fourcc(format), + loader_image_format_to_fourcc(format), &buffer_fds[0], num_planes, __DRI_IMAGE_PRIME_LINEAR_BUFFER, &buffer->strides[0], @@ -1659,7 +1628,7 @@ dri3_alloc_render_buffer(struct loader_dri3_drawable *draw, unsigned int format, draw->ext->image->createImageFromFds(draw->dri_screen, width, height, - image_format_to_fourcc(format), + loader_image_format_to_fourcc(format), &buffer_fds[0], num_planes, &buffer->strides[0], &buffer->offsets[0], @@ -1884,7 +1853,7 @@ loader_dri3_create_image(xcb_connection_t *c, image_planar = image->createImageFromFds(dri_screen, bp_reply->width, bp_reply->height, - image_format_to_fourcc(format), + loader_image_format_to_fourcc(format), fds, 1, &stride, &offset, loaderPrivate); close(fds[0]); @@ -1931,7 +1900,7 @@ loader_dri3_create_image_from_buffers(xcb_connection_t *c, ret = image->createImageFromDmaBufs2(dri_screen, bp_reply->width, bp_reply->height, - image_format_to_fourcc(format), + loader_image_format_to_fourcc(format), bp_reply->modifier, fds, bp_reply->nfd, strides, offsets, diff --git a/src/loader/loader_dri_helper.c b/src/loader/loader_dri_helper.c index 58edf23b3c4..89d41bdcfb6 100644 --- a/src/loader/loader_dri_helper.c +++ b/src/loader/loader_dri_helper.c @@ -120,3 +120,34 @@ bool dri_valid_swap_interval(__DRIscreen *driScreen, return true; } + +/* the DRIimage createImage function takes __DRI_IMAGE_FORMAT codes, while + * the createImageFromFds call takes DRM_FORMAT codes. To avoid + * complete confusion, just deal in __DRI_IMAGE_FORMAT codes for now and + * translate to DRM_FORMAT codes in the call to createImageFromFds + */ +int +loader_image_format_to_fourcc(int format) +{ + + /* Convert from __DRI_IMAGE_FORMAT to DRM_FORMAT (sigh) */ + switch (format) { + case __DRI_IMAGE_FORMAT_SARGB8: return __DRI_IMAGE_FOURCC_SARGB8888; + case __DRI_IMAGE_FORMAT_SABGR8: return __DRI_IMAGE_FOURCC_SABGR8888; + case __DRI_IMAGE_FORMAT_SXRGB8: return __DRI_IMAGE_FOURCC_SXRGB8888; + case __DRI_IMAGE_FORMAT_RGB565: return DRM_FORMAT_RGB565; + case __DRI_IMAGE_FORMAT_XRGB8888: return DRM_FORMAT_XRGB8888; + case __DRI_IMAGE_FORMAT_ARGB8888: return DRM_FORMAT_ARGB8888; + case __DRI_IMAGE_FORMAT_ABGR8888: return DRM_FORMAT_ABGR8888; + case __DRI_IMAGE_FORMAT_XBGR8888: return DRM_FORMAT_XBGR8888; + case __DRI_IMAGE_FORMAT_XRGB2101010: return DRM_FORMAT_XRGB2101010; + case __DRI_IMAGE_FORMAT_ARGB2101010: return DRM_FORMAT_ARGB2101010; + case __DRI_IMAGE_FORMAT_XBGR2101010: return DRM_FORMAT_XBGR2101010; + case __DRI_IMAGE_FORMAT_ABGR2101010: return DRM_FORMAT_ABGR2101010; + case __DRI_IMAGE_FORMAT_ABGR16161616: return DRM_FORMAT_ABGR16161616; + case __DRI_IMAGE_FORMAT_XBGR16161616: return DRM_FORMAT_XBGR16161616; + case __DRI_IMAGE_FORMAT_XBGR16161616F: return DRM_FORMAT_XBGR16161616F; + case __DRI_IMAGE_FORMAT_ABGR16161616F: return DRM_FORMAT_ABGR16161616F; + } + return 0; +} diff --git a/src/loader/loader_dri_helper.h b/src/loader/loader_dri_helper.h index 906ca9ab046..ba349802290 100644 --- a/src/loader/loader_dri_helper.h +++ b/src/loader/loader_dri_helper.h @@ -37,3 +37,6 @@ int dri_get_initial_swap_interval(__DRIscreen *driScreen, bool dri_valid_swap_interval(__DRIscreen *driScreen, const __DRI2configQueryExtension *config, int interval); + +int +loader_image_format_to_fourcc(int format);