render/allocator/gbm: require GBM 21.1

Mesa 21.1 was released back in 2021. Let's require it so that we
can simplify our build and remove the workaround.
This commit is contained in:
Simon Ser 2025-05-01 18:42:26 +02:00 committed by Kenny Levinsen
parent 221b37355f
commit bb50c7a5a4
2 changed files with 1 additions and 33 deletions

View file

@ -9,7 +9,6 @@
#include <wlr/util/log.h>
#include <xf86drm.h>
#include "config.h"
#include "render/allocator/gbm.h"
#include "render/drm_format_set.h"
@ -39,40 +38,12 @@ static bool export_gbm_bo(struct gbm_bo *bo,
attribs.modifier = gbm_bo_get_modifier(bo);
int i;
int32_t handle = -1;
for (i = 0; i < attribs.n_planes; ++i) {
#if HAVE_GBM_BO_GET_FD_FOR_PLANE
(void)handle;
attribs.fd[i] = gbm_bo_get_fd_for_plane(bo, i);
if (attribs.fd[i] < 0) {
wlr_log(WLR_ERROR, "gbm_bo_get_fd_for_plane failed");
goto error_fd;
}
#else
// GBM is lacking a function to get a FD for a given plane. Instead,
// check all planes have the same handle. We can't use
// drmPrimeHandleToFD because that messes up handle ref'counting in
// the user-space driver.
union gbm_bo_handle plane_handle = gbm_bo_get_handle_for_plane(bo, i);
if (plane_handle.s32 < 0) {
wlr_log(WLR_ERROR, "gbm_bo_get_handle_for_plane failed");
goto error_fd;
}
if (i == 0) {
handle = plane_handle.s32;
} else if (plane_handle.s32 != handle) {
wlr_log(WLR_ERROR, "Failed to export GBM BO: "
"all planes don't have the same GEM handle");
goto error_fd;
}
attribs.fd[i] = gbm_bo_get_fd(bo);
if (attribs.fd[i] < 0) {
wlr_log(WLR_ERROR, "gbm_bo_get_fd failed");
goto error_fd;
}
#endif
attribs.offset[i] = gbm_bo_get_offset(bo, i);
attribs.stride[i] = gbm_bo_get_stride_for_plane(bo, i);

View file

@ -13,15 +13,12 @@ wlr_files += files(
gbm = disabler()
if 'gbm' in allocators or 'auto' in allocators
gbm = dependency('gbm', version: '>=17.1.0', required: 'gbm' in allocators)
gbm = dependency('gbm', version: '>=21.1', required: 'gbm' in allocators)
endif
if gbm.found()
wlr_files += files('gbm.c')
wlr_deps += gbm
features += { 'gbm-allocator': true }
has = cc.has_function('gbm_bo_get_fd_for_plane', dependencies: [gbm])
internal_config.set10('HAVE_GBM_BO_GET_FD_FOR_PLANE', has)
endif
udmabuf = false