On 2025-09-24 12:16, Mario Limonciello wrote: > [Why] > The main reason common modes are added is for compatibility with > clone mode when a laptop is connected to a projector or external > monitor. Since commit 978fa2f6d0b12 ("drm/amd/display: Use scaling > for non-native resolutions on eDP") when non-native modes are picked > for eDP the GPU scalar will be used. This is because it is inconsistent > whether eDP panels have the capability to actually drive non-native > resolutions. With panels connected to other connectors this limitation > generally doesn't exist as we the EDID will advertise support for a > number of resolutions and monitors will use built in scaling hardware. > > Comparing DC and non-DC code paths the non-DC code path only adds > common modes for LVDS and eDP whereas the DC codepath does it for > all connector types. > > In the past there was an experiment done to disable common mode adding > for eDP and LVDS from commit 6d396e7ac1ce3 ("drm/amd/display: Disable > common modes for LVDS") and commit 7948afb46af92 ("drm/amd/display: > Disable common modes for eDP") but this was reverted in > commit a8b79b09185de ("drm/amd: Re-enable common modes for eDP and > LVDS") because it caused problems with Xorg. > > [How] > Only add common modes for eDP and LVDS for DC, matching the behavior > of non-DC. > > Suggested-by: Timur Kristóf <timur.kris...@gmail.com> > Signed-off-by: Mario Limonciello <mario.limoncie...@amd.com> Reviewed-by: Harry Wentland <harry.wentl...@amd.com> Harry > --- > drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 4 ++++ > 1 file changed, 4 insertions(+) > > 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 97d9eba17963..5a05ee6746af 100644 > --- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c > +++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c > @@ -8151,6 +8151,10 @@ static void > amdgpu_dm_connector_add_common_modes(struct drm_encoder *encoder, > {"1920x1200", 1920, 1200} > }; > > + if ((connector->connector_type != DRM_MODE_CONNECTOR_eDP) && > + (connector->connector_type != DRM_MODE_CONNECTOR_LVDS)) > + return; > + > n = ARRAY_SIZE(common_modes); > > for (i = 0; i < n; i++) {