backends: Move MetaOutputHdrMetadata from KmsConnector to Output
This makes it independent of the native backend and allows us to use it in more places. Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3904>
This commit is contained in:
parent
fefcc6edec
commit
6dc9cab14b
5 changed files with 70 additions and 70 deletions
|
@ -712,6 +712,70 @@ meta_tile_info_equal (MetaTileInfo *a,
|
|||
return TRUE;
|
||||
}
|
||||
|
||||
static gboolean
|
||||
hdr_primaries_equal (double x1, double x2)
|
||||
{
|
||||
return fabs (x1 - x2) < (0.00002 - DBL_EPSILON);
|
||||
}
|
||||
|
||||
static gboolean
|
||||
hdr_nits_equal (double x1, double x2)
|
||||
{
|
||||
return fabs (x1 - x2) < (1.0 - DBL_EPSILON);
|
||||
}
|
||||
|
||||
static gboolean
|
||||
hdr_min_luminance_equal (double x1, double x2)
|
||||
{
|
||||
return fabs (x1 - x2) < (0.0001 - DBL_EPSILON);
|
||||
}
|
||||
|
||||
gboolean
|
||||
meta_output_hdr_metadata_equal (MetaOutputHdrMetadata *metadata,
|
||||
MetaOutputHdrMetadata *other_metadata)
|
||||
{
|
||||
if (!metadata->active && !other_metadata->active)
|
||||
return TRUE;
|
||||
|
||||
if (metadata->active != other_metadata->active)
|
||||
return FALSE;
|
||||
|
||||
if (metadata->eotf != other_metadata->eotf)
|
||||
return FALSE;
|
||||
|
||||
if (!hdr_primaries_equal (metadata->mastering_display_primaries[0].x,
|
||||
other_metadata->mastering_display_primaries[0].x) ||
|
||||
!hdr_primaries_equal (metadata->mastering_display_primaries[0].y,
|
||||
other_metadata->mastering_display_primaries[0].y) ||
|
||||
!hdr_primaries_equal (metadata->mastering_display_primaries[1].x,
|
||||
other_metadata->mastering_display_primaries[1].x) ||
|
||||
!hdr_primaries_equal (metadata->mastering_display_primaries[1].y,
|
||||
other_metadata->mastering_display_primaries[1].y) ||
|
||||
!hdr_primaries_equal (metadata->mastering_display_primaries[2].x,
|
||||
other_metadata->mastering_display_primaries[2].x) ||
|
||||
!hdr_primaries_equal (metadata->mastering_display_primaries[2].y,
|
||||
other_metadata->mastering_display_primaries[2].y) ||
|
||||
!hdr_primaries_equal (metadata->mastering_display_white_point.x,
|
||||
other_metadata->mastering_display_white_point.x) ||
|
||||
!hdr_primaries_equal (metadata->mastering_display_white_point.y,
|
||||
other_metadata->mastering_display_white_point.y))
|
||||
return FALSE;
|
||||
|
||||
if (!hdr_nits_equal (metadata->mastering_display_max_luminance,
|
||||
other_metadata->mastering_display_max_luminance))
|
||||
return FALSE;
|
||||
|
||||
if (!hdr_min_luminance_equal (metadata->mastering_display_min_luminance,
|
||||
other_metadata->mastering_display_min_luminance))
|
||||
return FALSE;
|
||||
|
||||
if (!hdr_nits_equal (metadata->max_cll, other_metadata->max_cll) ||
|
||||
!hdr_nits_equal (metadata->max_fall, other_metadata->max_fall))
|
||||
return FALSE;
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
void
|
||||
meta_output_update_modes (MetaOutput *output,
|
||||
MetaCrtcMode *preferred_mode,
|
||||
|
|
|
@ -188,6 +188,10 @@ gboolean
|
|||
meta_tile_info_equal (MetaTileInfo *a,
|
||||
MetaTileInfo *b);
|
||||
|
||||
META_EXPORT_TEST
|
||||
gboolean meta_output_hdr_metadata_equal (MetaOutputHdrMetadata *metadata,
|
||||
MetaOutputHdrMetadata *other_metadata);
|
||||
|
||||
const char * meta_output_colorspace_get_name (MetaOutputColorspace color_space);
|
||||
|
||||
#define META_TYPE_OUTPUT_INFO (meta_output_info_get_type ())
|
||||
|
|
|
@ -161,7 +161,3 @@ void meta_set_drm_hdr_metadata (MetaOutputHdrMetadata *metadata,
|
|||
META_EXPORT_TEST
|
||||
gboolean set_output_hdr_metadata (struct hdr_output_metadata *drm_metadata,
|
||||
MetaOutputHdrMetadata *metadata);
|
||||
|
||||
META_EXPORT_TEST
|
||||
gboolean hdr_metadata_equal (MetaOutputHdrMetadata *metadata,
|
||||
MetaOutputHdrMetadata *other_metadata);
|
||||
|
|
|
@ -900,70 +900,6 @@ kms_modes_equal (GList *modes,
|
|||
return TRUE;
|
||||
}
|
||||
|
||||
static gboolean
|
||||
hdr_primaries_equal (double x1, double x2)
|
||||
{
|
||||
return fabs (x1 - x2) < (0.00002 - DBL_EPSILON);
|
||||
}
|
||||
|
||||
static gboolean
|
||||
hdr_nits_equal (double x1, double x2)
|
||||
{
|
||||
return fabs (x1 - x2) < (1.0 - DBL_EPSILON);
|
||||
}
|
||||
|
||||
static gboolean
|
||||
hdr_min_luminance_equal (double x1, double x2)
|
||||
{
|
||||
return fabs (x1 - x2) < (0.0001 - DBL_EPSILON);
|
||||
}
|
||||
|
||||
gboolean
|
||||
hdr_metadata_equal (MetaOutputHdrMetadata *metadata,
|
||||
MetaOutputHdrMetadata *other_metadata)
|
||||
{
|
||||
if (!metadata->active && !other_metadata->active)
|
||||
return TRUE;
|
||||
|
||||
if (metadata->active != other_metadata->active)
|
||||
return FALSE;
|
||||
|
||||
if (metadata->eotf != other_metadata->eotf)
|
||||
return FALSE;
|
||||
|
||||
if (!hdr_primaries_equal (metadata->mastering_display_primaries[0].x,
|
||||
other_metadata->mastering_display_primaries[0].x) ||
|
||||
!hdr_primaries_equal (metadata->mastering_display_primaries[0].y,
|
||||
other_metadata->mastering_display_primaries[0].y) ||
|
||||
!hdr_primaries_equal (metadata->mastering_display_primaries[1].x,
|
||||
other_metadata->mastering_display_primaries[1].x) ||
|
||||
!hdr_primaries_equal (metadata->mastering_display_primaries[1].y,
|
||||
other_metadata->mastering_display_primaries[1].y) ||
|
||||
!hdr_primaries_equal (metadata->mastering_display_primaries[2].x,
|
||||
other_metadata->mastering_display_primaries[2].x) ||
|
||||
!hdr_primaries_equal (metadata->mastering_display_primaries[2].y,
|
||||
other_metadata->mastering_display_primaries[2].y) ||
|
||||
!hdr_primaries_equal (metadata->mastering_display_white_point.x,
|
||||
other_metadata->mastering_display_white_point.x) ||
|
||||
!hdr_primaries_equal (metadata->mastering_display_white_point.y,
|
||||
other_metadata->mastering_display_white_point.y))
|
||||
return FALSE;
|
||||
|
||||
if (!hdr_nits_equal (metadata->mastering_display_max_luminance,
|
||||
other_metadata->mastering_display_max_luminance))
|
||||
return FALSE;
|
||||
|
||||
if (!hdr_min_luminance_equal (metadata->mastering_display_min_luminance,
|
||||
other_metadata->mastering_display_min_luminance))
|
||||
return FALSE;
|
||||
|
||||
if (!hdr_nits_equal (metadata->max_cll, other_metadata->max_cll) ||
|
||||
!hdr_nits_equal (metadata->max_fall, other_metadata->max_fall))
|
||||
return FALSE;
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
static MetaKmsResourceChanges
|
||||
meta_kms_connector_state_changes (MetaKmsConnectorState *state,
|
||||
MetaKmsConnectorState *new_state)
|
||||
|
@ -1030,7 +966,7 @@ meta_kms_connector_state_changes (MetaKmsConnectorState *state,
|
|||
|
||||
if (state->hdr.supported != new_state->hdr.supported ||
|
||||
state->hdr.unknown != new_state->hdr.unknown ||
|
||||
!hdr_metadata_equal (&state->hdr.value, &new_state->hdr.value))
|
||||
!meta_output_hdr_metadata_equal (&state->hdr.value, &new_state->hdr.value))
|
||||
return META_KMS_RESOURCE_CHANGE_FULL;
|
||||
|
||||
if (state->broadcast_rgb.value != new_state->broadcast_rgb.value ||
|
||||
|
|
|
@ -96,7 +96,7 @@ meta_test_hdr_metadata_equality2 (void)
|
|||
&metadata_out,
|
||||
sizeof (MetaOutputHdrMetadata)), !=, 0);
|
||||
|
||||
g_assert_true (hdr_metadata_equal (&metadata_in, &metadata_out));
|
||||
g_assert_true (meta_output_hdr_metadata_equal (&metadata_in, &metadata_out));
|
||||
}
|
||||
|
||||
void
|
||||
|
|
Loading…
Reference in a new issue