mirror of
https://github.com/brl/mutter.git
synced 2024-11-22 16:10:41 -05:00
onscreen/native: Use max bpc support from OutputInfo
The max bpc support is already tracked in the OutputInfo, so let's use that instead of querying the KMS Connector directly. Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3552>
This commit is contained in:
parent
8acf250583
commit
706bee2a58
@ -261,6 +261,14 @@ meta_kms_connector_is_broadcast_rgb_supported (MetaKmsConnector *connector,
|
||||
return !!(connector->current_state->broadcast_rgb.supported & (1 << broadcast_rgb));
|
||||
}
|
||||
|
||||
gboolean
|
||||
meta_kms_connector_is_max_bpc_supported (MetaKmsConnector *connector,
|
||||
int max_bpc)
|
||||
{
|
||||
return max_bpc >= connector->current_state->max_bpc.min_value &&
|
||||
max_bpc <= connector->current_state->max_bpc.max_value;
|
||||
}
|
||||
|
||||
static void
|
||||
set_panel_orientation (MetaKmsConnectorState *state,
|
||||
MetaKmsProp *panel_orientation)
|
||||
|
@ -107,3 +107,6 @@ gboolean meta_kms_connector_is_broadcast_rgb_supported (MetaKmsConnector *conn
|
||||
MetaOutputRGBRange broadcast_rgb);
|
||||
|
||||
gboolean meta_kms_connector_is_hdr_metadata_supported (MetaKmsConnector *connector);
|
||||
|
||||
gboolean meta_kms_connector_is_max_bpc_supported (MetaKmsConnector *connector,
|
||||
int max_bpc);
|
||||
|
@ -430,6 +430,8 @@ meta_kms_update_set_max_bpc (MetaKmsUpdate *update,
|
||||
MetaKmsConnectorUpdate *connector_update;
|
||||
|
||||
g_assert (meta_kms_connector_get_device (connector) == update->device);
|
||||
g_return_if_fail (meta_kms_connector_is_max_bpc_supported (connector,
|
||||
max_bpc));
|
||||
|
||||
connector_update = ensure_connector_update (update, connector);
|
||||
connector_update->max_bpc.value = max_bpc;
|
||||
|
@ -624,31 +624,28 @@ static void
|
||||
set_max_bpc (MetaOutputKms *output_kms,
|
||||
MetaKmsUpdate *kms_update)
|
||||
{
|
||||
MetaOutput *output = META_OUTPUT (output_kms);
|
||||
const MetaOutputInfo *output_info = meta_output_get_info (output);
|
||||
MetaKmsConnector *kms_connector =
|
||||
meta_output_kms_get_kms_connector (output_kms);
|
||||
const MetaKmsRange *range;
|
||||
unsigned int max_bpc;
|
||||
|
||||
range = meta_kms_connector_get_max_bpc (kms_connector);
|
||||
if (range)
|
||||
if (!meta_output_get_max_bpc (output, &max_bpc))
|
||||
return;
|
||||
|
||||
if (output_info->max_bpc_min == 0 && output_info->max_bpc_max == 0)
|
||||
return;
|
||||
|
||||
if (max_bpc < output_info->max_bpc_min || max_bpc > output_info->max_bpc_max)
|
||||
{
|
||||
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);
|
||||
}
|
||||
g_warning ("Ignoring out of range value %u for max bpc (%u-%u)",
|
||||
max_bpc,
|
||||
(unsigned) output_info->max_bpc_min,
|
||||
(unsigned) output_info->max_bpc_max);
|
||||
return;
|
||||
}
|
||||
|
||||
meta_kms_update_set_max_bpc (kms_update, kms_connector, max_bpc);
|
||||
}
|
||||
|
||||
static void
|
||||
|
Loading…
Reference in New Issue
Block a user