From: Rodrigo Siqueira <Rodrigo.Siqueira-5C7GfCeVMHo@public.gmane.org> To: amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Cc: Stylon Wang <stylon.wang-5C7GfCeVMHo@public.gmane.org>, Nicholas Kazlauskas <Nicholas.Kazlauskas-5C7GfCeVMHo@public.gmane.org> Subject: [PATCH 06/30] drm/amd/display: Fix incorrect deep color setting in YCBCR420 modes Date: Mon, 11 Nov 2019 19:33:00 -0500 [thread overview] Message-ID: <20191112003324.8419-7-Rodrigo.Siqueira@amd.com> (raw) In-Reply-To: <20191112003324.8419-1-Rodrigo.Siqueira-5C7GfCeVMHo@public.gmane.org> From: Stylon Wang <stylon.wang@amd.com> [Why] HDMI 2.0 HF-VSDB in EDID defines supported color depths in YCBCR420 modes. But we did not honor these bit masks when choosing pixel encoding. HDMI 2.0 compliance tests with deep color and YCBCR420 failed as a result. [How] Cap color depth based on y420_dc_modes from EDID. Signed-off-by: Stylon Wang <stylon.wang@amd.com> Reviewed-by: Nicholas Kazlauskas <Nicholas.Kazlauskas@amd.com> Acked-by: Rodrigo Siqueira <Rodrigo.Siqueira@amd.com> --- .../gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 31 +++++++++++++++---- 1 file changed, 25 insertions(+), 6 deletions(-) diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c index ed7cad4a182d..5573c5d9b328 100644 --- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c +++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c @@ -3611,12 +3611,26 @@ static void update_stream_scaling_settings(const struct drm_display_mode *mode, static enum dc_color_depth convert_color_depth_from_display_info(const struct drm_connector *connector, - const struct drm_connector_state *state) + const struct drm_connector_state *state, + bool is_y420) { - uint8_t bpc = (uint8_t)connector->display_info.bpc; + uint8_t bpc; - /* Assume 8 bpc by default if no bpc is specified. */ - bpc = bpc ? bpc : 8; + if (is_y420) { + bpc = 8; + + /* Cap display bpc based on HDMI 2.0 HF-VSDB */ + if (connector->display_info.hdmi.y420_dc_modes & DRM_EDID_YCBCR420_DC_48) + bpc = 16; + else if (connector->display_info.hdmi.y420_dc_modes & DRM_EDID_YCBCR420_DC_36) + bpc = 12; + else if (connector->display_info.hdmi.y420_dc_modes & DRM_EDID_YCBCR420_DC_30) + bpc = 10; + } else { + bpc = (uint8_t)connector->display_info.bpc; + /* Assume 8 bpc by default if no bpc is specified. */ + bpc = bpc ? bpc : 8; + } if (!state) state = connector->state; @@ -3787,7 +3801,8 @@ static void fill_stream_properties_from_drm_display_mode( timing_out->timing_3d_format = TIMING_3D_FORMAT_NONE; timing_out->display_color_depth = convert_color_depth_from_display_info( - connector, connector_state); + connector, connector_state, + (timing_out->pixel_encoding == PIXEL_ENCODING_YCBCR420)); timing_out->scan_type = SCANNING_TYPE_NODATA; timing_out->hdmi_vic = 0; @@ -4926,6 +4941,7 @@ static int dm_encoder_helper_atomic_check(struct drm_encoder *encoder, struct drm_dp_mst_port *mst_port; enum dc_color_depth color_depth; int clock, bpp = 0; + bool is_y420 = false; if (!aconnector->port || !aconnector->dc_sink) return 0; @@ -4937,7 +4953,10 @@ static int dm_encoder_helper_atomic_check(struct drm_encoder *encoder, return 0; if (!state->duplicated) { - color_depth = convert_color_depth_from_display_info(connector, conn_state); + is_y420 = drm_mode_is_420_also(&connector->display_info, adjusted_mode) && + aconnector->force_yuv420_output; + color_depth = convert_color_depth_from_display_info(connector, conn_state, + is_y420); bpp = convert_dc_color_depth_into_bpc(color_depth) * 3; clock = adjusted_mode->clock; dm_new_connector_state->pbn = drm_dp_calc_pbn_mode(clock, bpp); -- 2.24.0 _______________________________________________ amd-gfx mailing list amd-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/amd-gfx
WARNING: multiple messages have this Message-ID (diff)
From: Rodrigo Siqueira <Rodrigo.Siqueira@amd.com> To: amd-gfx@lists.freedesktop.org Cc: Stylon Wang <stylon.wang@amd.com>, Nicholas Kazlauskas <Nicholas.Kazlauskas@amd.com> Subject: [PATCH 06/30] drm/amd/display: Fix incorrect deep color setting in YCBCR420 modes Date: Mon, 11 Nov 2019 19:33:00 -0500 [thread overview] Message-ID: <20191112003324.8419-7-Rodrigo.Siqueira@amd.com> (raw) Message-ID: <20191112003300.wUetc3dzoRfQMwjCrsbAgiwsdXiZUolIkQ--Y5nK7fU@z> (raw) In-Reply-To: <20191112003324.8419-1-Rodrigo.Siqueira@amd.com> From: Stylon Wang <stylon.wang@amd.com> [Why] HDMI 2.0 HF-VSDB in EDID defines supported color depths in YCBCR420 modes. But we did not honor these bit masks when choosing pixel encoding. HDMI 2.0 compliance tests with deep color and YCBCR420 failed as a result. [How] Cap color depth based on y420_dc_modes from EDID. Signed-off-by: Stylon Wang <stylon.wang@amd.com> Reviewed-by: Nicholas Kazlauskas <Nicholas.Kazlauskas@amd.com> Acked-by: Rodrigo Siqueira <Rodrigo.Siqueira@amd.com> --- .../gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 31 +++++++++++++++---- 1 file changed, 25 insertions(+), 6 deletions(-) diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c index ed7cad4a182d..5573c5d9b328 100644 --- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c +++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c @@ -3611,12 +3611,26 @@ static void update_stream_scaling_settings(const struct drm_display_mode *mode, static enum dc_color_depth convert_color_depth_from_display_info(const struct drm_connector *connector, - const struct drm_connector_state *state) + const struct drm_connector_state *state, + bool is_y420) { - uint8_t bpc = (uint8_t)connector->display_info.bpc; + uint8_t bpc; - /* Assume 8 bpc by default if no bpc is specified. */ - bpc = bpc ? bpc : 8; + if (is_y420) { + bpc = 8; + + /* Cap display bpc based on HDMI 2.0 HF-VSDB */ + if (connector->display_info.hdmi.y420_dc_modes & DRM_EDID_YCBCR420_DC_48) + bpc = 16; + else if (connector->display_info.hdmi.y420_dc_modes & DRM_EDID_YCBCR420_DC_36) + bpc = 12; + else if (connector->display_info.hdmi.y420_dc_modes & DRM_EDID_YCBCR420_DC_30) + bpc = 10; + } else { + bpc = (uint8_t)connector->display_info.bpc; + /* Assume 8 bpc by default if no bpc is specified. */ + bpc = bpc ? bpc : 8; + } if (!state) state = connector->state; @@ -3787,7 +3801,8 @@ static void fill_stream_properties_from_drm_display_mode( timing_out->timing_3d_format = TIMING_3D_FORMAT_NONE; timing_out->display_color_depth = convert_color_depth_from_display_info( - connector, connector_state); + connector, connector_state, + (timing_out->pixel_encoding == PIXEL_ENCODING_YCBCR420)); timing_out->scan_type = SCANNING_TYPE_NODATA; timing_out->hdmi_vic = 0; @@ -4926,6 +4941,7 @@ static int dm_encoder_helper_atomic_check(struct drm_encoder *encoder, struct drm_dp_mst_port *mst_port; enum dc_color_depth color_depth; int clock, bpp = 0; + bool is_y420 = false; if (!aconnector->port || !aconnector->dc_sink) return 0; @@ -4937,7 +4953,10 @@ static int dm_encoder_helper_atomic_check(struct drm_encoder *encoder, return 0; if (!state->duplicated) { - color_depth = convert_color_depth_from_display_info(connector, conn_state); + is_y420 = drm_mode_is_420_also(&connector->display_info, adjusted_mode) && + aconnector->force_yuv420_output; + color_depth = convert_color_depth_from_display_info(connector, conn_state, + is_y420); bpp = convert_dc_color_depth_into_bpc(color_depth) * 3; clock = adjusted_mode->clock; dm_new_connector_state->pbn = drm_dp_calc_pbn_mode(clock, bpp); -- 2.24.0 _______________________________________________ amd-gfx mailing list amd-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/amd-gfx
next prev parent reply other threads:[~2019-11-12 0:33 UTC|newest] Thread overview: 62+ messages / expand[flat|nested] mbox.gz Atom feed top 2019-11-12 0:32 [PATCH 00/30] DC Patches 11 Nov 2019 Rodrigo Siqueira 2019-11-12 0:32 ` Rodrigo Siqueira [not found] ` <20191112003324.8419-1-Rodrigo.Siqueira-5C7GfCeVMHo@public.gmane.org> 2019-11-12 0:32 ` [PATCH 01/30] drm/amd/display: add automated audio test support Rodrigo Siqueira 2019-11-12 0:32 ` Rodrigo Siqueira 2019-11-12 0:32 ` [PATCH 02/30] drm/amd/display: Renoir chroma viewport WA change formula Rodrigo Siqueira 2019-11-12 0:32 ` Rodrigo Siqueira 2019-11-12 0:32 ` [PATCH 03/30] drm/amd/display: Renoir chroma viewport WA Read the correct register Rodrigo Siqueira 2019-11-12 0:32 ` Rodrigo Siqueira 2019-11-12 0:32 ` [PATCH 04/30] drm/amd/display: Add hubp clock status in DTN log for Navi Rodrigo Siqueira 2019-11-12 0:32 ` Rodrigo Siqueira 2019-11-12 0:32 ` [PATCH 05/30] drm/amd/display: Update background color in bottommost mpcc Rodrigo Siqueira 2019-11-12 0:32 ` Rodrigo Siqueira 2019-11-12 0:33 ` Rodrigo Siqueira [this message] 2019-11-12 0:33 ` [PATCH 06/30] drm/amd/display: Fix incorrect deep color setting in YCBCR420 modes Rodrigo Siqueira 2019-11-12 0:33 ` [PATCH 07/30] drm/amd/display: 3.2.59 Rodrigo Siqueira 2019-11-12 0:33 ` Rodrigo Siqueira 2019-11-12 0:33 ` [PATCH 08/30] drm/amd/display: Fix stereo with DCC enabled Rodrigo Siqueira 2019-11-12 0:33 ` Rodrigo Siqueira 2019-11-12 0:33 ` [PATCH 09/30] drm/amd/display: Changes in dc to allow full update in some cases Rodrigo Siqueira 2019-11-12 0:33 ` Rodrigo Siqueira 2019-11-12 0:33 ` [PATCH 10/30] drm/amd/display: Add DMUB service function check if hw initialized Rodrigo Siqueira 2019-11-12 0:33 ` Rodrigo Siqueira 2019-11-12 0:33 ` [PATCH 11/30] drm/amd/display: Add DMUB param to load inst const from driver Rodrigo Siqueira 2019-11-12 0:33 ` Rodrigo Siqueira 2019-11-12 0:33 ` [PATCH 12/30] drm/amd/display: Add debugfs initalization on mst connectors Rodrigo Siqueira 2019-11-12 0:33 ` Rodrigo Siqueira 2019-11-12 0:33 ` [PATCH 13/30] drm/amd/display: Connect DIG FE to its BE before link training starts Rodrigo Siqueira 2019-11-12 0:33 ` Rodrigo Siqueira 2019-11-12 0:33 ` [PATCH 14/30] drm/amd/display: Clean up some code with unused registers Rodrigo Siqueira 2019-11-12 0:33 ` Rodrigo Siqueira 2019-11-12 0:33 ` [PATCH 15/30] drm/amd/display: revert change causing DTN hang for RV Rodrigo Siqueira 2019-11-12 0:33 ` Rodrigo Siqueira 2019-11-12 0:33 ` [PATCH 16/30] drm/amd/display: Fix debugfs on MST connectors Rodrigo Siqueira 2019-11-12 0:33 ` Rodrigo Siqueira 2019-11-12 0:33 ` [PATCH 17/30] drm/amd/display: cleanup of construct and destruct funcs Rodrigo Siqueira 2019-11-12 0:33 ` Rodrigo Siqueira 2019-11-12 0:33 ` [PATCH 18/30] drm/amd/display: add color space option when sending link test pattern Rodrigo Siqueira 2019-11-12 0:33 ` Rodrigo Siqueira 2019-11-12 0:33 ` [PATCH 19/30] drm/amd/display: Adjust DML workaround threshold Rodrigo Siqueira 2019-11-12 0:33 ` Rodrigo Siqueira 2019-11-12 0:33 ` [PATCH 20/30] drm/amd/display: Add debug trace for dmcub FW autoload Rodrigo Siqueira 2019-11-12 0:33 ` Rodrigo Siqueira 2019-11-12 0:33 ` [PATCH 21/30] drm/amd/display: 3.2.60 Rodrigo Siqueira 2019-11-12 0:33 ` Rodrigo Siqueira 2019-11-12 0:33 ` [PATCH 22/30] drm/amd/display: add debugfs sdp hook up function for Navi Rodrigo Siqueira 2019-11-12 0:33 ` Rodrigo Siqueira 2019-11-12 0:33 ` [PATCH 23/30] drm/amd/display: Avoid conflict between HDR multiplier and 3dlut Rodrigo Siqueira 2019-11-12 0:33 ` Rodrigo Siqueira 2019-11-12 0:33 ` [PATCH 24/30] drm/amd/display: Don't spin forever waiting for DMCUB phy/auto init Rodrigo Siqueira 2019-11-12 0:33 ` Rodrigo Siqueira 2019-11-12 0:33 ` [PATCH 25/30] drm/amd/display: cleanup of function pointer tables Rodrigo Siqueira 2019-11-12 0:33 ` Rodrigo Siqueira 2019-11-12 0:33 ` [PATCH 26/30] drm/amd/display: DML Validation Dump/Check with Logging Rodrigo Siqueira 2019-11-12 0:33 ` Rodrigo Siqueira 2019-11-12 0:33 ` [PATCH 27/30] drm/amd/display: Spin for DMCUB PHY init in DC Rodrigo Siqueira 2019-11-12 0:33 ` Rodrigo Siqueira 2019-11-12 0:33 ` [PATCH 28/30] drm/amd/display: Use a temporary copy of the current state when updating DSC config Rodrigo Siqueira 2019-11-12 0:33 ` Rodrigo Siqueira 2019-11-12 0:33 ` [PATCH 29/30] drm/amd/display: Add DSC 422Native debug option Rodrigo Siqueira 2019-11-12 0:33 ` Rodrigo Siqueira 2019-11-12 0:33 ` [PATCH 30/30] drm/amd/display: Add Navi10 DMUB VBIOS code Rodrigo Siqueira 2019-11-12 0:33 ` Rodrigo Siqueira
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20191112003324.8419-7-Rodrigo.Siqueira@amd.com \ --to=rodrigo.siqueira-5c7gfcevmho@public.gmane.org \ --cc=Nicholas.Kazlauskas-5C7GfCeVMHo@public.gmane.org \ --cc=amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org \ --cc=stylon.wang-5C7GfCeVMHo@public.gmane.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).