mirror of
https://gitlab.freedesktop.org/wlroots/wlroots.git
synced 2026-06-13 14:32:57 -04:00
backend/drm: introduce introspect_drm_prop_enum() helper
This commit is contained in:
parent
97b945beee
commit
94a982d4e3
2 changed files with 23 additions and 0 deletions
|
|
@ -234,3 +234,25 @@ bool introspect_drm_prop_range(int fd, uint32_t prop_id,
|
||||||
drmModeFreeProperty(prop);
|
drmModeFreeProperty(prop);
|
||||||
return true;
|
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;
|
||||||
|
}
|
||||||
|
|
|
||||||
|
|
@ -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,
|
bool introspect_drm_prop_range(int fd, uint32_t prop_id,
|
||||||
uint64_t *min, uint64_t *max);
|
uint64_t *min, uint64_t *max);
|
||||||
|
bool introspect_drm_prop_enum(int fd, uint32_t prop_id, uint64_t *bitmask);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue