mirror of
https://github.com/brl/mutter.git
synced 2025-02-05 16:14:10 +00:00
backends/native: Add color space and HDR metadata KMS properties
The Colorspace property informs the display about the colorimetry of the content. Only variants supported by the sink are exposed in the property. The strings representing the color spaces are undocumented but can be found in the `hdmi_colorspaces` list in `drivers/gpu/drm/drm_connector.c` in the Linux kernel (v 6.2). The HDR_OUTPUT_METADATA property is a blob with the InfoFrame content. We have to query support for the different values in the struct from the EDID/DisplayID ourselfs. Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/2879>
This commit is contained in:
parent
48e759c443
commit
2e69eafa06
@ -40,6 +40,8 @@ typedef enum _MetaKmsConnectorProp
|
|||||||
META_KMS_CONNECTOR_PROP_PANEL_ORIENTATION,
|
META_KMS_CONNECTOR_PROP_PANEL_ORIENTATION,
|
||||||
META_KMS_CONNECTOR_PROP_NON_DESKTOP,
|
META_KMS_CONNECTOR_PROP_NON_DESKTOP,
|
||||||
META_KMS_CONNECTOR_PROP_MAX_BPC,
|
META_KMS_CONNECTOR_PROP_MAX_BPC,
|
||||||
|
META_KMS_CONNECTOR_PROP_COLORSPACE,
|
||||||
|
META_KMS_CONNECTOR_PROP_HDR_OUTPUT_METADATA,
|
||||||
META_KMS_CONNECTOR_N_PROPS
|
META_KMS_CONNECTOR_N_PROPS
|
||||||
} MetaKmsConnectorProp;
|
} MetaKmsConnectorProp;
|
||||||
|
|
||||||
@ -92,6 +94,28 @@ typedef enum _MetaKmsConnectorPanelOrientation
|
|||||||
META_KMS_CONNECTOR_PANEL_ORIENTATION_UNKNOWN,
|
META_KMS_CONNECTOR_PANEL_ORIENTATION_UNKNOWN,
|
||||||
} MetaKmsConnectorPanelOrientation;
|
} MetaKmsConnectorPanelOrientation;
|
||||||
|
|
||||||
|
typedef enum _MetaKmsConnectorColorspace
|
||||||
|
{
|
||||||
|
META_KMS_CONNECTOR_COLORSPACE_DEFAULT = 0,
|
||||||
|
META_KMS_CONNECTOR_COLORSPACE_RGB_WIDE_GAMUT_FIXED_POINT,
|
||||||
|
META_KMS_CONNECTOR_COLORSPACE_RGB_WIDE_GAMUT_FLOATING_POINT,
|
||||||
|
META_KMS_CONNECTOR_COLORSPACE_RGB_OPRGB,
|
||||||
|
META_KMS_CONNECTOR_COLORSPACE_RGB_DCI_P3_RGB_D65,
|
||||||
|
META_KMS_CONNECTOR_COLORSPACE_BT2020_RGB,
|
||||||
|
META_KMS_CONNECTOR_COLORSPACE_BT601_YCC,
|
||||||
|
META_KMS_CONNECTOR_COLORSPACE_BT709_YCC,
|
||||||
|
META_KMS_CONNECTOR_COLORSPACE_XVYCC_601,
|
||||||
|
META_KMS_CONNECTOR_COLORSPACE_XVYCC_709,
|
||||||
|
META_KMS_CONNECTOR_COLORSPACE_SYCC_601,
|
||||||
|
META_KMS_CONNECTOR_COLORSPACE_OPYCC_601,
|
||||||
|
META_KMS_CONNECTOR_COLORSPACE_BT2020_CYCC,
|
||||||
|
META_KMS_CONNECTOR_COLORSPACE_BT2020_YCC,
|
||||||
|
META_KMS_CONNECTOR_COLORSPACE_SMPTE_170M_YCC,
|
||||||
|
META_KMS_CONNECTOR_COLORSPACE_DCI_P3_RGB_THEATER,
|
||||||
|
META_KMS_CONNECTOR_COLORSPACE_N_PROPS,
|
||||||
|
META_KMS_CONNECTOR_COLORSPACE_UNKNOWN,
|
||||||
|
} MetaKmsConnectorColorspace;
|
||||||
|
|
||||||
uint32_t meta_kms_connector_get_prop_id (MetaKmsConnector *connector,
|
uint32_t meta_kms_connector_get_prop_id (MetaKmsConnector *connector,
|
||||||
MetaKmsConnectorProp prop);
|
MetaKmsConnectorProp prop);
|
||||||
|
|
||||||
|
@ -40,6 +40,7 @@ typedef struct _MetaKmsConnectorPropTable
|
|||||||
MetaKmsEnum privacy_screen_hw_enum[META_KMS_CONNECTOR_PRIVACY_SCREEN_N_PROPS];
|
MetaKmsEnum privacy_screen_hw_enum[META_KMS_CONNECTOR_PRIVACY_SCREEN_N_PROPS];
|
||||||
MetaKmsEnum scaling_mode_enum[META_KMS_CONNECTOR_SCALING_MODE_N_PROPS];
|
MetaKmsEnum scaling_mode_enum[META_KMS_CONNECTOR_SCALING_MODE_N_PROPS];
|
||||||
MetaKmsEnum panel_orientation_enum[META_KMS_CONNECTOR_PANEL_ORIENTATION_N_PROPS];
|
MetaKmsEnum panel_orientation_enum[META_KMS_CONNECTOR_PANEL_ORIENTATION_N_PROPS];
|
||||||
|
MetaKmsEnum colorspace_enum[META_KMS_CONNECTOR_COLORSPACE_N_PROPS];
|
||||||
} MetaKmsConnectorPropTable;
|
} MetaKmsConnectorPropTable;
|
||||||
|
|
||||||
struct _MetaKmsConnector
|
struct _MetaKmsConnector
|
||||||
@ -967,6 +968,19 @@ init_properties (MetaKmsConnector *connector,
|
|||||||
.name = "max bpc",
|
.name = "max bpc",
|
||||||
.type = DRM_MODE_PROP_RANGE,
|
.type = DRM_MODE_PROP_RANGE,
|
||||||
},
|
},
|
||||||
|
[META_KMS_CONNECTOR_PROP_COLORSPACE] =
|
||||||
|
{
|
||||||
|
.name = "Colorspace",
|
||||||
|
.type = DRM_MODE_PROP_ENUM,
|
||||||
|
.enum_values = prop_table->colorspace_enum,
|
||||||
|
.num_enum_values = META_KMS_CONNECTOR_COLORSPACE_N_PROPS,
|
||||||
|
.default_value = META_KMS_CONNECTOR_COLORSPACE_UNKNOWN,
|
||||||
|
},
|
||||||
|
[META_KMS_CONNECTOR_PROP_HDR_OUTPUT_METADATA] =
|
||||||
|
{
|
||||||
|
.name = "HDR_OUTPUT_METADATA",
|
||||||
|
.type = DRM_MODE_PROP_BLOB,
|
||||||
|
},
|
||||||
},
|
},
|
||||||
.dpms_enum = {
|
.dpms_enum = {
|
||||||
[META_KMS_CONNECTOR_DPMS_ON] =
|
[META_KMS_CONNECTOR_DPMS_ON] =
|
||||||
@ -1071,7 +1085,73 @@ init_properties (MetaKmsConnector *connector,
|
|||||||
{
|
{
|
||||||
.name = "Right Side Up",
|
.name = "Right Side Up",
|
||||||
},
|
},
|
||||||
}
|
},
|
||||||
|
.colorspace_enum = {
|
||||||
|
[META_KMS_CONNECTOR_COLORSPACE_DEFAULT] =
|
||||||
|
{
|
||||||
|
.name = "Default",
|
||||||
|
},
|
||||||
|
[META_KMS_CONNECTOR_COLORSPACE_RGB_WIDE_GAMUT_FIXED_POINT] =
|
||||||
|
{
|
||||||
|
.name = "RGB_Wide_Gamut_Fixed_Point",
|
||||||
|
},
|
||||||
|
[META_KMS_CONNECTOR_COLORSPACE_RGB_WIDE_GAMUT_FLOATING_POINT] =
|
||||||
|
{
|
||||||
|
.name = "RGB_Wide_Gamut_Floating_Point",
|
||||||
|
},
|
||||||
|
[META_KMS_CONNECTOR_COLORSPACE_RGB_OPRGB] =
|
||||||
|
{
|
||||||
|
.name = "opRGB",
|
||||||
|
},
|
||||||
|
[META_KMS_CONNECTOR_COLORSPACE_RGB_DCI_P3_RGB_D65] =
|
||||||
|
{
|
||||||
|
.name = "DCI-P3_RGB_D65",
|
||||||
|
},
|
||||||
|
[META_KMS_CONNECTOR_COLORSPACE_BT2020_RGB] =
|
||||||
|
{
|
||||||
|
.name = "BT2020_RGB",
|
||||||
|
},
|
||||||
|
[META_KMS_CONNECTOR_COLORSPACE_BT601_YCC] =
|
||||||
|
{
|
||||||
|
.name = "BT601_YCC",
|
||||||
|
},
|
||||||
|
[META_KMS_CONNECTOR_COLORSPACE_BT709_YCC] =
|
||||||
|
{
|
||||||
|
.name = "BT709_YCC",
|
||||||
|
},
|
||||||
|
[META_KMS_CONNECTOR_COLORSPACE_XVYCC_601] =
|
||||||
|
{
|
||||||
|
.name = "XVYCC_601",
|
||||||
|
},
|
||||||
|
[META_KMS_CONNECTOR_COLORSPACE_XVYCC_709] =
|
||||||
|
{
|
||||||
|
.name = "XVYCC_709",
|
||||||
|
},
|
||||||
|
[META_KMS_CONNECTOR_COLORSPACE_SYCC_601] =
|
||||||
|
{
|
||||||
|
.name = "SYCC_601",
|
||||||
|
},
|
||||||
|
[META_KMS_CONNECTOR_COLORSPACE_OPYCC_601] =
|
||||||
|
{
|
||||||
|
.name = "opYCC_601",
|
||||||
|
},
|
||||||
|
[META_KMS_CONNECTOR_COLORSPACE_BT2020_CYCC] =
|
||||||
|
{
|
||||||
|
.name = "BT2020_CYCC",
|
||||||
|
},
|
||||||
|
[META_KMS_CONNECTOR_COLORSPACE_BT2020_YCC] =
|
||||||
|
{
|
||||||
|
.name = "BT2020_YCC",
|
||||||
|
},
|
||||||
|
[META_KMS_CONNECTOR_COLORSPACE_SMPTE_170M_YCC] =
|
||||||
|
{
|
||||||
|
.name = "SMPTE_170M_YCC",
|
||||||
|
},
|
||||||
|
[META_KMS_CONNECTOR_COLORSPACE_DCI_P3_RGB_THEATER] =
|
||||||
|
{
|
||||||
|
.name = "DCI-P3_RGB_Theater",
|
||||||
|
},
|
||||||
|
},
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user