[Intel-gfx] [PATCH] drm/i915: Prune 2560x2880 mode for 5K tiled dual DP monitors
Nautiyal, Ankit K
ankit.k.nautiyal at intel.com
Tue Aug 27 09:34:59 UTC 2019
Hi Shashank,
Thanks for the comments.
If we see the connector info, the 5K display is detected as two DP
connectors with the various modes (pasted below, based on some limited
experimentation with Dell UP2715K Panel).
The problem is only observed when on both the connectors the mode
2560x2880 is applied, looks like only then the TV monitor takes it as 5K.
Any other combination, like 3840x2160 and 2560x2880 does not have this
problem, it seems to act something like two connectors with extended
display configuration.
Even 2560x1440 resolution applied for both the connectors at a time,
does not create a problem. So removing the exact-mode 2560x2880 from any
of the connector is sufficient to avoid the corruption case.
DP-1:
modes:
"848x480": 60 29750 848 896 928 1008 480 483 488 494 0x48 0x9
"2560x2880": 60 483240 2560 2608 2640 2720 2880 2883 2893 2962 0x40 0x9
"2560x2880": 30 238240 2560 2608 2640 2720 2880 2883 2893 2921 0x40 0x9
Tile information:
has_tile = 1
tile_is_single_monitor = 1
tile_group_id = 1
num_h_tile = 2
num_v_tile = 1
tile_h_loc = 0
tile_v_loc = 0
tile_h_size = 2560
tile_v_size = 2880
DP-2:
modes:
"3840x2160": 60 533240 3840 3888 3920 4000 2160 2163 2168 2222 0x48 0x9
"2560x1440": 60 241500 2560 2608 2640 2720 1440 1443 1448 1481 0x48 0x9
"3840x2160": 60 533250 3840 3920 3952 4000 2160 2214 2219 2222 0x40 0xa
"2560x2880": 60 483240 2560 2608 2640 2720 2880 2883 2893 2962 0x40 0x9
"2560x2880": 30 238240 2560 2608 2640 2720 2880 2883 2893 2921 0x40 0x9
"1920x1200": 60 193250 1920 2056 2256 2592 1200 1203 1209 1245 0x40 0x6
"1920x1080": 60 148500 1920 2008 2052 2200 1080 1084 1089 1125 0x40 0xa
"1600x1200": 60 162000 1600 1664 1856 2160 1200 1201 1204 1250 0x40 0x5
"1680x1050": 60 146250 1680 1784 1960 2240 1050 1053 1059 1089 0x40 0x6
"1280x1024": 60 108000 1280 1328 1440 1688 1024 1025 1028 1066 0x40 0x5
"1280x800": 60 83500 1280 1352 1480 1680 800 803 809 831 0x40 0x6
"1024x768": 60 65000 1024 1048 1184 1344 768 771 777 806 0x40 0xa
"800x600": 60 40000 800 840 968 1056 600 601 605 628 0x40 0x5
"640x480": 60 25200 640 656 752 800 480 490 492 525 0x40 0xa
"640x480": 60 25175 640 656 752 800 480 490 492 525 0x40 0xa
Tile information:
has_tile = 1
tile_is_single_monitor = 1
tile_group_id = 1
num_h_tile = 2
num_v_tile = 1
tile_h_loc = 1
tile_v_loc = 0
tile_h_size = 2560
tile_v_size = 2880
Regards,
Ankit
On 8/27/2019 1:09 PM, Sharma, Shashank wrote:
> Hello Ankit,
>
> On 8/27/2019 11:59 AM, Nautiyal, Ankit K wrote:
>> From: Ankit Nautiyal <ankit.k.nautiyal at intel.com>
>>
>> Currently, the transcoder port sync feature is not available, due to
>> which the 5K-tiled dual DP monitors experience corruption when
>> 2560x2880 mode is applied for both of the tiled DP connectors.
>> Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=97244
>>
>> There is a patch series to enable transcode port sync feature for
>> tiled display for ICL+, which is under review:
>> https://patchwork.kernel.org/project/intel-gfx/list/?series=137339
>>
>> For the older platforms, we need to remove the 2560x2880 mode to avoid
>> a possibility of userspace choosing 2560x2880 mode for both tiled
>> displays, resulting in corruption.
>>
>> This patch prunes 2560x2880 mode for one of the tiled DP connector.
>> Since both the tiled DP connectors have different tile_h_loc and
>> tile_v_loc, the tiled connector with tile_h_loc and tile_v_loc as '0',
>> is chosen, for which the given resolution is removed.
>>
>> Signed-off-by: Ankit Nautiyal <ankit.k.nautiyal at intel.com>
>> CC: Manasi Navare <manasi.d.navare at intel.com>
>> ---
>> drivers/gpu/drm/i915/display/intel_dp.c | 11 +++++++++++
>> 1 file changed, 11 insertions(+)
>>
>> diff --git a/drivers/gpu/drm/i915/display/intel_dp.c b/drivers/gpu/drm/i915/display/intel_dp.c
>> index 5c45a3b..aa43a3b 100644
>> --- a/drivers/gpu/drm/i915/display/intel_dp.c
>> +++ b/drivers/gpu/drm/i915/display/intel_dp.c
>> @@ -564,6 +564,17 @@ intel_dp_mode_valid(struct drm_connector *connector,
>> if (mode->flags & DRM_MODE_FLAG_DBLCLK)
>> return MODE_H_ILLEGAL;
>>
>> + /*
>> + * For 5K tiled dual DP monitors, dual-DP sync is not yet supported.
>> + * This results in display sync issues, when both tiled connectors run
>> + * on 2560x2880 resolution. Therefore prune the 2560x2880 mode on one
>> + * of the tiled connector, to avoid such a case.
>> + */
>> + if (connector->has_tile &&
>> + (connector->tile_h_loc == 0 && connector->tile_v_loc == 0) &&
>> + (mode->hdisplay == 2560 && mode->vdisplay == 2880))
>
> Shouldn't this be for >= 2560/2880 than == ? Also, do we want
> (mode->hdisplay >= 2560 *||* mode->vdisplay >= 2880 )
>
> - Shashank
>
>> + return MODE_PANEL;
>> +
>> return MODE_OK;
>> }
>>
More information about the Intel-gfx
mailing list