mirror of https://gitee.com/openkylin/linux.git
drm/amd/display: differentiate vsc sdp colorimetry use criteria between MST and SST
[Why] We should check MST BU support capability on output port before building vsc info packet. [How] Add a new definition for port and sink capability check. Signed-off-by: Martin Tsai <martin.tsai@amd.com> Reviewed-by: Wenjing Liu <Wenjing.Liu@amd.com> Acked-by: Rodrigo Siqueira <Rodrigo.Siqueira@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
This commit is contained in:
parent
a19620ea91
commit
c38cc6770f
|
@ -4316,9 +4316,22 @@ create_stream_for_sink(struct amdgpu_dm_connector *aconnector,
|
|||
struct dmcu *dmcu = core_dc->res_pool->dmcu;
|
||||
|
||||
stream->psr_version = dmcu->dmcu_version.psr_version;
|
||||
mod_build_vsc_infopacket(stream,
|
||||
&stream->vsc_infopacket,
|
||||
&stream->use_vsc_sdp_for_colorimetry);
|
||||
|
||||
//
|
||||
// should decide stream support vsc sdp colorimetry capability
|
||||
// before building vsc info packet
|
||||
//
|
||||
stream->use_vsc_sdp_for_colorimetry = false;
|
||||
if (aconnector->dc_sink->sink_signal == SIGNAL_TYPE_DISPLAY_PORT_MST) {
|
||||
stream->use_vsc_sdp_for_colorimetry =
|
||||
aconnector->dc_sink->is_vsc_sdp_colorimetry_supported;
|
||||
} else {
|
||||
if (stream->link->dpcd_caps.dpcd_rev.raw >= 0x14 &&
|
||||
stream->link->dpcd_caps.dprx_feature.bits.VSC_SDP_COLORIMETRY_SUPPORTED) {
|
||||
stream->use_vsc_sdp_for_colorimetry = true;
|
||||
}
|
||||
}
|
||||
mod_build_vsc_infopacket(stream, &stream->vsc_infopacket);
|
||||
}
|
||||
}
|
||||
finish:
|
||||
|
|
|
@ -1047,6 +1047,8 @@ struct dc_sink {
|
|||
struct dc_sink_dsc_caps dsc_caps;
|
||||
struct dc_sink_fec_caps fec_caps;
|
||||
|
||||
bool is_vsc_sdp_colorimetry_supported;
|
||||
|
||||
/* private to DC core */
|
||||
struct dc_link *link;
|
||||
struct dc_context *ctx;
|
||||
|
|
|
@ -34,8 +34,7 @@ struct dc_info_packet;
|
|||
struct mod_vrr_params;
|
||||
|
||||
void mod_build_vsc_infopacket(const struct dc_stream_state *stream,
|
||||
struct dc_info_packet *info_packet,
|
||||
bool *use_vsc_sdp_for_colorimetry);
|
||||
struct dc_info_packet *info_packet);
|
||||
|
||||
void mod_build_hf_vsif_infopacket(const struct dc_stream_state *stream,
|
||||
struct dc_info_packet *info_packet, int ALLMEnabled, int ALLMValue);
|
||||
|
|
|
@ -130,8 +130,7 @@ enum ColorimetryYCCDP {
|
|||
};
|
||||
|
||||
void mod_build_vsc_infopacket(const struct dc_stream_state *stream,
|
||||
struct dc_info_packet *info_packet,
|
||||
bool *use_vsc_sdp_for_colorimetry)
|
||||
struct dc_info_packet *info_packet)
|
||||
{
|
||||
unsigned int vsc_packet_revision = vsc_packet_undefined;
|
||||
unsigned int i;
|
||||
|
@ -139,11 +138,6 @@ void mod_build_vsc_infopacket(const struct dc_stream_state *stream,
|
|||
unsigned int colorimetryFormat = 0;
|
||||
bool stereo3dSupport = false;
|
||||
|
||||
/* Initialize first, later if infopacket is valid determine if VSC SDP
|
||||
* should be used to signal colorimetry format and pixel encoding.
|
||||
*/
|
||||
*use_vsc_sdp_for_colorimetry = false;
|
||||
|
||||
if (stream->timing.timing_3d_format != TIMING_3D_FORMAT_NONE && stream->view_format != VIEW_3D_FORMAT_NONE) {
|
||||
vsc_packet_revision = vsc_packet_rev1;
|
||||
stereo3dSupport = true;
|
||||
|
@ -153,9 +147,8 @@ void mod_build_vsc_infopacket(const struct dc_stream_state *stream,
|
|||
if (stream->psr_version != 0)
|
||||
vsc_packet_revision = vsc_packet_rev2;
|
||||
|
||||
/* Update to revision 5 for extended colorimetry support for DPCD 1.4+ */
|
||||
if (stream->link->dpcd_caps.dpcd_rev.raw >= 0x14 &&
|
||||
stream->link->dpcd_caps.dprx_feature.bits.VSC_SDP_COLORIMETRY_SUPPORTED)
|
||||
/* Update to revision 5 for extended colorimetry support */
|
||||
if (stream->use_vsc_sdp_for_colorimetry)
|
||||
vsc_packet_revision = vsc_packet_rev5;
|
||||
|
||||
/* VSC packet not needed based on the features
|
||||
|
@ -269,13 +262,6 @@ void mod_build_vsc_infopacket(const struct dc_stream_state *stream,
|
|||
|
||||
info_packet->valid = true;
|
||||
|
||||
/* If we are using VSC SDP revision 05h, use this to signal for
|
||||
* colorimetry format and pixel encoding. HW should later be
|
||||
* programmed to set MSA MISC1 bit 6 to indicate ignore
|
||||
* colorimetry format and pixel encoding in the MSA.
|
||||
*/
|
||||
*use_vsc_sdp_for_colorimetry = true;
|
||||
|
||||
/* Set VSC SDP fields for pixel encoding and colorimetry format from DP 1.3 specs
|
||||
* Data Bytes DB 18~16
|
||||
* Bits 3:0 (Colorimetry Format) | Bits 7:4 (Pixel Encoding)
|
||||
|
|
Loading…
Reference in New Issue