mirror of
https://github.com/brl/mutter.git
synced 2025-02-17 05:44:08 +00:00
backends/native: Store supported variants for KMS enum/bitmasks
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/2861>
This commit is contained in:
parent
80dd26428b
commit
36aada2164
@ -551,24 +551,31 @@ update_prop_value (MetaKmsProp *prop,
|
|||||||
case DRM_MODE_PROP_ENUM:
|
case DRM_MODE_PROP_ENUM:
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
|
uint64_t result = prop->default_value;
|
||||||
|
uint64_t supported = 0;
|
||||||
|
|
||||||
for (i = 0; i < prop->num_enum_values; i++)
|
for (i = 0; i < prop->num_enum_values; i++)
|
||||||
{
|
{
|
||||||
if (prop->enum_values[i].valid &&
|
if (!prop->enum_values[i].valid)
|
||||||
prop->enum_values[i].value == drm_value)
|
continue;
|
||||||
|
|
||||||
|
if (prop->enum_values[i].value == drm_value)
|
||||||
{
|
{
|
||||||
prop->value = i;
|
result = i;
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
supported |= (1 << i);
|
||||||
}
|
}
|
||||||
|
|
||||||
prop->value = prop->default_value;
|
prop->value = result;
|
||||||
|
prop->supported_variants = supported;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
case DRM_MODE_PROP_BITMASK:
|
case DRM_MODE_PROP_BITMASK:
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
uint64_t result = 0;
|
uint64_t result = 0;
|
||||||
|
uint64_t supported = 0;
|
||||||
|
|
||||||
for (i = 0; i < prop->num_enum_values; i++)
|
for (i = 0; i < prop->num_enum_values; i++)
|
||||||
{
|
{
|
||||||
@ -580,11 +587,15 @@ update_prop_value (MetaKmsProp *prop,
|
|||||||
result |= prop->enum_values[i].bitmask;
|
result |= prop->enum_values[i].bitmask;
|
||||||
drm_value &= ~(1 << prop->enum_values[i].value);
|
drm_value &= ~(1 << prop->enum_values[i].value);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
supported |= prop->enum_values[i].bitmask;
|
||||||
}
|
}
|
||||||
if (drm_value != 0)
|
|
||||||
|
if (drm_value != 0)
|
||||||
result |= prop->default_value;
|
result |= prop->default_value;
|
||||||
|
|
||||||
prop->value = result;
|
prop->value = result;
|
||||||
|
prop->supported_variants = supported;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
default:
|
default:
|
||||||
|
@ -70,6 +70,8 @@ struct _MetaKmsProp
|
|||||||
int64_t range_min_signed;
|
int64_t range_min_signed;
|
||||||
int64_t range_max_signed;
|
int64_t range_max_signed;
|
||||||
|
|
||||||
|
uint64_t supported_variants;
|
||||||
|
|
||||||
uint32_t prop_id;
|
uint32_t prop_id;
|
||||||
uint64_t value;
|
uint64_t value;
|
||||||
};
|
};
|
||||||
|
Loading…
x
Reference in New Issue
Block a user