gbm/dri: Use PIPE_FORMAT_* instead of using __DRI_IMAGE_*

__DRI_IMAGE formats are not well defined for big endian.
This patch has no functionnal change and prepare the work to better support
big endian.

Signed-off-by: Jocelyn Falempe <jfalempe@redhat.com>
Cc: mesa-stable
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/31707>
(cherry picked from commit 3814dee11a)
This commit is contained in:
Jocelyn Falempe 2024-10-15 14:11:17 +02:00 committed by Eric Engestrom
parent 10e69d7843
commit 325ee5941d
4 changed files with 30 additions and 30 deletions

View file

@ -744,7 +744,7 @@
"description": "gbm/dri: Use PIPE_FORMAT_* instead of using __DRI_IMAGE_*",
"nominated": true,
"nomination_type": 0,
"resolution": 0,
"resolution": 1,
"main_sha": null,
"because_sha": null,
"notes": null

View file

@ -122,7 +122,7 @@ dri2_drm_config_is_compatible(struct dri2_egl_display *dri2_dpy,
const struct util_format_description *fmt_c =
util_format_description(gl_config->color_format);
const struct util_format_description *fmt_s =
util_format_description(visual->dri_image_format);
util_format_description(visual->pipe_format);
if (util_is_format_compatible(fmt_c, fmt_s) ||
util_is_format_compatible(fmt_s, fmt_c))
@ -507,7 +507,7 @@ drm_add_configs_for_visuals(_EGLDisplay *disp)
for (unsigned j = 0; j < num_visuals; j++) {
struct dri2_egl_config *dri2_conf;
if (visuals[j].dri_image_format != gl_config->color_format)
if (visuals[j].pipe_format != gl_config->color_format)
continue;
const EGLint attr_list[] = {

View file

@ -358,33 +358,33 @@ dri_screen_create_sw(struct gbm_dri_device *dri, bool driver_name_is_inferred)
}
static const struct gbm_dri_visual gbm_dri_visuals_table[] = {
{ GBM_FORMAT_R8, __DRI_IMAGE_FORMAT_R8 },
{ GBM_FORMAT_R16, __DRI_IMAGE_FORMAT_R16 },
{ GBM_FORMAT_GR88, __DRI_IMAGE_FORMAT_GR88 },
{ GBM_FORMAT_GR1616, __DRI_IMAGE_FORMAT_GR1616 },
{ GBM_FORMAT_ARGB1555, __DRI_IMAGE_FORMAT_ARGB1555 },
{ GBM_FORMAT_RGB565, __DRI_IMAGE_FORMAT_RGB565 },
{ GBM_FORMAT_XRGB8888, __DRI_IMAGE_FORMAT_XRGB8888 },
{ GBM_FORMAT_ARGB8888, __DRI_IMAGE_FORMAT_ARGB8888 },
{ GBM_FORMAT_XBGR8888, __DRI_IMAGE_FORMAT_XBGR8888 },
{ GBM_FORMAT_ABGR8888, __DRI_IMAGE_FORMAT_ABGR8888 },
{ GBM_FORMAT_XRGB2101010, __DRI_IMAGE_FORMAT_XRGB2101010 },
{ GBM_FORMAT_ARGB2101010, __DRI_IMAGE_FORMAT_ARGB2101010 },
{ GBM_FORMAT_XBGR2101010, __DRI_IMAGE_FORMAT_XBGR2101010 },
{ GBM_FORMAT_ABGR2101010, __DRI_IMAGE_FORMAT_ABGR2101010 },
{ GBM_FORMAT_XBGR16161616, __DRI_IMAGE_FORMAT_XBGR16161616 },
{ GBM_FORMAT_ABGR16161616, __DRI_IMAGE_FORMAT_ABGR16161616 },
{ GBM_FORMAT_XBGR16161616F, __DRI_IMAGE_FORMAT_XBGR16161616F },
{ GBM_FORMAT_ABGR16161616F, __DRI_IMAGE_FORMAT_ABGR16161616F },
{ GBM_FORMAT_R8, PIPE_FORMAT_R8_UNORM },
{ GBM_FORMAT_R16, PIPE_FORMAT_R16_UNORM },
{ GBM_FORMAT_GR88, PIPE_FORMAT_RG88_UNORM },
{ GBM_FORMAT_GR1616, PIPE_FORMAT_RG1616_UNORM },
{ GBM_FORMAT_ARGB1555, PIPE_FORMAT_B5G5R5A1_UNORM },
{ GBM_FORMAT_RGB565, PIPE_FORMAT_B5G6R5_UNORM },
{ GBM_FORMAT_XRGB8888, PIPE_FORMAT_BGRX8888_UNORM },
{ GBM_FORMAT_ARGB8888, PIPE_FORMAT_BGRA8888_UNORM },
{ GBM_FORMAT_XBGR8888, PIPE_FORMAT_RGBX8888_UNORM },
{ GBM_FORMAT_ABGR8888, PIPE_FORMAT_RGBA8888_UNORM },
{ GBM_FORMAT_XRGB2101010, PIPE_FORMAT_B10G10R10X2_UNORM },
{ GBM_FORMAT_ARGB2101010, PIPE_FORMAT_B10G10R10A2_UNORM },
{ GBM_FORMAT_XBGR2101010, PIPE_FORMAT_R10G10B10X2_UNORM },
{ GBM_FORMAT_ABGR2101010, PIPE_FORMAT_R10G10B10A2_UNORM },
{ GBM_FORMAT_XBGR16161616, PIPE_FORMAT_R16G16B16X16_UNORM },
{ GBM_FORMAT_ABGR16161616, PIPE_FORMAT_R16G16B16A16_UNORM },
{ GBM_FORMAT_XBGR16161616F, PIPE_FORMAT_R16G16B16X16_FLOAT },
{ GBM_FORMAT_ABGR16161616F, PIPE_FORMAT_R16G16B16A16_FLOAT },
};
static int
gbm_format_to_dri_format(uint32_t gbm_format)
gbm_format_to_pipe_format(uint32_t gbm_format)
{
gbm_format = gbm_core.v0.format_canonicalize(gbm_format);
for (size_t i = 0; i < ARRAY_SIZE(gbm_dri_visuals_table); i++) {
if (gbm_dri_visuals_table[i].gbm_format == gbm_format)
return gbm_dri_visuals_table[i].dri_image_format;
return gbm_dri_visuals_table[i].pipe_format;
}
return 0;
@ -402,7 +402,7 @@ gbm_dri_is_format_supported(struct gbm_device *gbm,
return 0;
format = gbm_core.v0.format_canonicalize(format);
if (gbm_format_to_dri_format(format) == 0)
if (gbm_format_to_pipe_format(format) == 0)
return 0;
/* If there is no query, fall back to the small table which was originally
@ -438,7 +438,7 @@ gbm_dri_get_format_modifier_plane_count(struct gbm_device *gbm,
return -1;
format = gbm_core.v0.format_canonicalize(format);
if (gbm_format_to_dri_format(format) == 0)
if (gbm_format_to_pipe_format(format) == 0)
return -1;
if (!dri->image->queryDmaBufFormatModifierAttribs(
@ -923,7 +923,7 @@ gbm_dri_bo_create(struct gbm_device *gbm,
{
struct gbm_dri_device *dri = gbm_dri_device(gbm);
struct gbm_dri_bo *bo;
int dri_format;
int pipe_format;
unsigned dri_use = 0;
uint64_t *mods_comp = NULL;
uint64_t *mods_filtered = NULL;
@ -943,8 +943,8 @@ gbm_dri_bo_create(struct gbm_device *gbm,
bo->base.v0.height = height;
bo->base.v0.format = format;
dri_format = gbm_format_to_dri_format(format);
if (dri_format == 0) {
pipe_format = gbm_format_to_pipe_format(format);
if (pipe_format == 0) {
errno = EINVAL;
goto failed;
}
@ -1045,7 +1045,7 @@ gbm_dri_bo_create(struct gbm_device *gbm,
}
bo->image = loader_dri_create_image(dri->screen, dri->image, width, height,
dri_format, dri_use,
pipe_format, dri_use,
mods_filtered ? mods_filtered : modifiers,
mods_filtered ? count_filtered : count,
bo);

View file

@ -43,7 +43,7 @@ struct gbm_dri_bo;
struct gbm_dri_visual {
uint32_t gbm_format;
int dri_image_format;
int pipe_format;
};
struct gbm_dri_device {