gbm: Put common device creation in a helper function

Subsequent changes will use this same logic to
instantiate devices with the correct version and
set up their backend reference.

Signed-off-by: James Jones <jajones@nvidia.com>
Reviewed-by: Michel Dänzer <mdaenzer@redhat.com>
Reviewed-by: Emil Velikov <emil.l.velikov@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9902>
This commit is contained in:
James Jones
2021-06-22 18:00:01 -07:00
committed by Marge Bot
parent 6d0c935846
commit 8c935464ad

View File

@@ -48,13 +48,27 @@ static const struct gbm_backend_desc builtin_backends[] = {
{ "dri", &gbm_dri_backend },
};
static struct gbm_device *
backend_create_device(const struct gbm_backend_desc *bd, int fd)
{
const uint32_t abi_ver = VER_MIN(GBM_BACKEND_ABI_VERSION,
bd->backend->v0.backend_version);
struct gbm_device *dev = bd->backend->v0.create_device(fd, abi_ver);
if (dev) {
assert(abi_ver == dev->v0.backend_version);
dev->v0.backend_desc = bd;
}
return dev;
}
static struct gbm_device *
find_backend(const char *name, int fd)
{
struct gbm_device *dev = NULL;
const struct gbm_backend_desc *bd;
unsigned i;
uint32_t abi_ver;
for (i = 0; i < ARRAY_SIZE(builtin_backends); ++i) {
bd = &builtin_backends[i];
@@ -62,15 +76,10 @@ find_backend(const char *name, int fd)
if (name && strcmp(bd->name, name))
continue;
abi_ver = VER_MIN(GBM_BACKEND_ABI_VERSION,
bd->backend->v0.backend_version);
dev = bd->backend->v0.create_device(fd, abi-ver);
dev = backend_create_device(bd, fd);
if (dev) {
assert(abi_ver == dev->v0.backend_version);
dev->v0.backend_desc = bd;
if (dev)
break;
}
}
return dev;