[PATCH 2/2] drm/client: Handle tiled displays better
Thomas Zimmermann
tzimmermann at suse.de
Mon Jan 20 11:40:56 UTC 2025
Am 16.01.25 um 15:28 schrieb Maarten Lankhorst:
> When testing on my tiled display, initially the tiled display is
> detected correctly:
> [90376.523692] xe 0000:67:00.0: [drm:drm_client_firmware_config.isra.0 [drm]] fallback: Not all outputs enabled
> [90376.523713] xe 0000:67:00.0: [drm:drm_client_firmware_config.isra.0 [drm]] Enabled: 0, detected: 2
> ...
> [90376.523967] xe 0000:67:00.0: [drm:drm_client_modeset_probe [drm]] [CRTC:82:pipe A] desired mode 1920x2160 set (1920,0)
> [90376.524020] xe 0000:67:00.0: [drm:drm_client_modeset_probe [drm]] [CRTC:134:pipe B] desired mode 1920x2160 set (0,0)
>
> But then, when modes have been set:
> [90379.729525] xe 0000:67:00.0: [drm:drm_client_firmware_config.isra.0 [drm]] [CONNECTOR:287:DP-4] on [CRTC:82:pipe A]: 1920x2160
> [90379.729640] xe 0000:67:00.0: [drm:drm_client_firmware_config.isra.0 [drm]] [CONNECTOR:289:DP-5] on [CRTC:134:pipe B]: 1920x2160
> ...
> [90379.730036] xe 0000:67:00.0: [drm:drm_client_modeset_probe [drm]] [CRTC:82:pipe A] desired mode 1920x2160 set (0,0)
> [90379.730124] xe 0000:67:00.0: [drm:drm_client_modeset_probe [drm]] [CRTC:134:pipe B] desired mode 1920x2160 set (0,0)
>
> Call drm_client_get_tile_offsets() in drm_client_firmware_config() as
> well, to ensure that the offset is set correctly.
>
> This has to be done as a separate pass, as the tile order may not be
> equal to the drm connector order.
>
> Signed-off-by: Maarten Lankhorst <dev at lankhorst.se>
Acked-by: Thomas Zimmermann <tzimmermann at suse.de>
> ---
> drivers/gpu/drm/drm_client_modeset.c | 9 +++++++++
> 1 file changed, 9 insertions(+)
>
> diff --git a/drivers/gpu/drm/drm_client_modeset.c b/drivers/gpu/drm/drm_client_modeset.c
> index 251f943137179..aca442c25209a 100644
> --- a/drivers/gpu/drm/drm_client_modeset.c
> +++ b/drivers/gpu/drm/drm_client_modeset.c
> @@ -743,6 +743,15 @@ static bool drm_client_firmware_config(struct drm_client_dev *client,
> if ((conn_configured & mask) != mask && conn_configured != conn_seq)
> goto retry;
>
> + for (i = 0; i < count; i++) {
> + struct drm_connector *connector = connectors[i];
> +
> + if (connector->has_tile)
> + drm_client_get_tile_offsets(dev, connectors, connector_count,
> + modes, offsets, i,
> + connector->tile_h_loc, connector->tile_v_loc);
> + }
> +
> /*
> * If the BIOS didn't enable everything it could, fall back to have the
> * same user experiencing of lighting up as much as possible like the
--
--
Thomas Zimmermann
Graphics Driver Developer
SUSE Software Solutions Germany GmbH
Frankenstrasse 146, 90461 Nuernberg, Germany
GF: Ivo Totev, Andrew Myers, Andrew McDonald, Boudien Moerman
HRB 36809 (AG Nuernberg)
More information about the dri-devel
mailing list