mirror of
https://github.com/brl/mutter.git
synced 2025-03-30 23:23:47 +00:00
output-kms: Add max_bpc support
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/2412>
This commit is contained in:
parent
4eef54f80a
commit
f19b350c94
@ -97,6 +97,36 @@ meta_output_kms_set_underscan (MetaOutputKms *output_kms,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
meta_output_kms_set_max_bpc (MetaOutputKms *output_kms,
|
||||||
|
MetaKmsUpdate *kms_update)
|
||||||
|
{
|
||||||
|
MetaKmsConnector *kms_connector = output_kms->kms_connector;
|
||||||
|
const MetaKmsRange *range;
|
||||||
|
|
||||||
|
range = meta_kms_connector_get_max_bpc (kms_connector);
|
||||||
|
if (range)
|
||||||
|
{
|
||||||
|
MetaOutput *output = META_OUTPUT (output_kms);
|
||||||
|
unsigned int max_bpc;
|
||||||
|
|
||||||
|
if (!meta_output_get_max_bpc (output, &max_bpc))
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (max_bpc >= range->min_value && max_bpc <= range->max_value)
|
||||||
|
{
|
||||||
|
meta_kms_update_set_max_bpc (kms_update, kms_connector, max_bpc);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
g_warning ("Ignoring out of range value %u for max bpc (%u-%u)",
|
||||||
|
max_bpc,
|
||||||
|
(unsigned) range->min_value,
|
||||||
|
(unsigned) range->max_value);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
static MetaPrivacyScreenState
|
static MetaPrivacyScreenState
|
||||||
meta_output_kms_get_privacy_screen_state (MetaOutput *output)
|
meta_output_kms_get_privacy_screen_state (MetaOutput *output)
|
||||||
{
|
{
|
||||||
@ -362,6 +392,7 @@ meta_output_kms_new (MetaGpuKms *gpu_kms,
|
|||||||
const MetaKmsConnectorState *connector_state;
|
const MetaKmsConnectorState *connector_state;
|
||||||
GArray *crtcs;
|
GArray *crtcs;
|
||||||
GList *l;
|
GList *l;
|
||||||
|
const MetaKmsRange *max_bpc_range;
|
||||||
|
|
||||||
gpu_id = meta_gpu_kms_get_id (gpu_kms);
|
gpu_id = meta_gpu_kms_get_id (gpu_kms);
|
||||||
connector_id = meta_kms_connector_get_id (kms_connector);
|
connector_id = meta_kms_connector_get_id (kms_connector);
|
||||||
@ -409,6 +440,13 @@ meta_output_kms_new (MetaGpuKms *gpu_kms,
|
|||||||
output_info->supports_underscanning =
|
output_info->supports_underscanning =
|
||||||
meta_kms_connector_is_underscanning_supported (kms_connector);
|
meta_kms_connector_is_underscanning_supported (kms_connector);
|
||||||
|
|
||||||
|
max_bpc_range = meta_kms_connector_get_max_bpc (kms_connector);
|
||||||
|
if (max_bpc_range)
|
||||||
|
{
|
||||||
|
output_info->max_bpc_min = max_bpc_range->min_value;
|
||||||
|
output_info->max_bpc_max = max_bpc_range->max_value;
|
||||||
|
}
|
||||||
|
|
||||||
meta_output_info_parse_edid (output_info, connector_state->edid_data);
|
meta_output_info_parse_edid (output_info, connector_state->edid_data);
|
||||||
|
|
||||||
drm_connector_type = meta_kms_connector_get_connector_type (kms_connector);
|
drm_connector_type = meta_kms_connector_get_connector_type (kms_connector);
|
||||||
|
@ -40,6 +40,9 @@ void meta_output_kms_set_power_save_mode (MetaOutputKms *output_kms,
|
|||||||
void meta_output_kms_set_underscan (MetaOutputKms *output_kms,
|
void meta_output_kms_set_underscan (MetaOutputKms *output_kms,
|
||||||
MetaKmsUpdate *kms_update);
|
MetaKmsUpdate *kms_update);
|
||||||
|
|
||||||
|
void meta_output_kms_set_max_bpc (MetaOutputKms *output_kms,
|
||||||
|
MetaKmsUpdate *kms_update);
|
||||||
|
|
||||||
gboolean meta_output_kms_can_clone (MetaOutputKms *output_kms,
|
gboolean meta_output_kms_can_clone (MetaOutputKms *output_kms,
|
||||||
MetaOutputKms *other_output_kms);
|
MetaOutputKms *other_output_kms);
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user