onscreen/native: Set default color encoding and range values
In order to ensure consistent behavior with the composited path as well as across different KMS drivers. In the future we'll want to use other values as well, requested by client via the upcoming color representation protocol. Note that right now KMS drivers default to different values. Most use BT709 and narrow range, notably Intel and AMD, but some others do not. BT709/narrow is arguably a much better default than BT601/narrow as the former is used for most contemporary video content and the later more for still images. Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/4204>
This commit is contained in:
parent
5bb7a0f13e
commit
377532f2f5
@ -462,6 +462,32 @@ apply_transform (MetaCrtcKms *crtc_kms,
|
||||
hw_transform);
|
||||
}
|
||||
|
||||
static void
|
||||
apply_color_encoding (MetaKmsPlaneAssignment *kms_plane_assignment,
|
||||
MetaKmsPlane *kms_plane)
|
||||
{
|
||||
if (!meta_kms_plane_is_color_encoding_handled (kms_plane,
|
||||
META_KMS_PLANE_YCBCR_COLOR_ENCODING_BT709))
|
||||
return;
|
||||
|
||||
meta_kms_plane_update_set_color_encoding (kms_plane,
|
||||
kms_plane_assignment,
|
||||
META_KMS_PLANE_YCBCR_COLOR_ENCODING_BT709);
|
||||
}
|
||||
|
||||
static void
|
||||
apply_color_range (MetaKmsPlaneAssignment *kms_plane_assignment,
|
||||
MetaKmsPlane *kms_plane)
|
||||
{
|
||||
if (!meta_kms_plane_is_color_range_handled (kms_plane,
|
||||
META_KMS_PLANE_YCBCR_COLOR_RANGE_LIMITED))
|
||||
return;
|
||||
|
||||
meta_kms_plane_update_set_color_range (kms_plane,
|
||||
kms_plane_assignment,
|
||||
META_KMS_PLANE_YCBCR_COLOR_RANGE_LIMITED);
|
||||
}
|
||||
|
||||
static MetaKmsPlaneAssignment *
|
||||
assign_primary_plane (MetaCrtcKms *crtc_kms,
|
||||
MetaDrmBuffer *buffer,
|
||||
@ -501,6 +527,8 @@ assign_primary_plane (MetaCrtcKms *crtc_kms,
|
||||
*dst_rect,
|
||||
flags);
|
||||
apply_transform (crtc_kms, plane_assignment, primary_kms_plane);
|
||||
apply_color_encoding (plane_assignment, primary_kms_plane);
|
||||
apply_color_range (plane_assignment, primary_kms_plane);
|
||||
|
||||
return plane_assignment;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user