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
@ -712,6 +712,70 @@ meta_tile_info_equal (MetaTileInfo *a,
|
|||||||
return TRUE;
|
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
|
void
|
||||||
meta_output_update_modes (MetaOutput *output,
|
meta_output_update_modes (MetaOutput *output,
|
||||||
MetaCrtcMode *preferred_mode,
|
MetaCrtcMode *preferred_mode,
|
||||||
|
@ -188,6 +188,10 @@ gboolean
|
|||||||
meta_tile_info_equal (MetaTileInfo *a,
|
meta_tile_info_equal (MetaTileInfo *a,
|
||||||
MetaTileInfo *b);
|
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);
|
const char * meta_output_colorspace_get_name (MetaOutputColorspace color_space);
|
||||||
|
|
||||||
#define META_TYPE_OUTPUT_INFO (meta_output_info_get_type ())
|
#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
|
META_EXPORT_TEST
|
||||||
gboolean set_output_hdr_metadata (struct hdr_output_metadata *drm_metadata,
|
gboolean set_output_hdr_metadata (struct hdr_output_metadata *drm_metadata,
|
||||||
MetaOutputHdrMetadata *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;
|
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
|
static MetaKmsResourceChanges
|
||||||
meta_kms_connector_state_changes (MetaKmsConnectorState *state,
|
meta_kms_connector_state_changes (MetaKmsConnectorState *state,
|
||||||
MetaKmsConnectorState *new_state)
|
MetaKmsConnectorState *new_state)
|
||||||
@ -1030,7 +966,7 @@ meta_kms_connector_state_changes (MetaKmsConnectorState *state,
|
|||||||
|
|
||||||
if (state->hdr.supported != new_state->hdr.supported ||
|
if (state->hdr.supported != new_state->hdr.supported ||
|
||||||
state->hdr.unknown != new_state->hdr.unknown ||
|
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;
|
return META_KMS_RESOURCE_CHANGE_FULL;
|
||||||
|
|
||||||
if (state->broadcast_rgb.value != new_state->broadcast_rgb.value ||
|
if (state->broadcast_rgb.value != new_state->broadcast_rgb.value ||
|
||||||
|
@ -96,7 +96,7 @@ meta_test_hdr_metadata_equality2 (void)
|
|||||||
&metadata_out,
|
&metadata_out,
|
||||||
sizeof (MetaOutputHdrMetadata)), !=, 0);
|
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
|
void
|
||||||
|
Loading…
x
Reference in New Issue
Block a user