backend/drm: introduce introspect_drm_prop_enum() helper

This commit is contained in:
Simon Ser 2026-06-04 16:57:52 +02:00
parent 97b945beee
commit 94a982d4e3
2 changed files with 23 additions and 0 deletions

View file

@ -234,3 +234,25 @@ bool introspect_drm_prop_range(int fd, uint32_t prop_id,
drmModeFreeProperty(prop);
return true;
}
bool introspect_drm_prop_enum(int fd, uint32_t prop_id, uint64_t *bitmask) {
drmModePropertyRes *prop = drmModeGetProperty(fd, prop_id);
if (!prop) {
return false;
}
if (drmModeGetPropertyType(prop) != DRM_MODE_PROP_ENUM) {
drmModeFreeProperty(prop);
return false;
}
*bitmask = 0;
for (int i = 0; i < prop->count_enums; i++) {
uint64_t value = prop->enums[i].value;
assert(value < 64);
*bitmask |= 1 << value;
}
drmModeFreeProperty(prop);
return true;
}

View file

@ -106,5 +106,6 @@ char *get_drm_prop_enum(int fd, uint32_t obj, uint32_t prop);
bool introspect_drm_prop_range(int fd, uint32_t prop_id,
uint64_t *min, uint64_t *max);
bool introspect_drm_prop_enum(int fd, uint32_t prop_id, uint64_t *bitmask);
#endif