[RFC PATCH i-g-t] lib/igt_kms: move setting DRM_CLIENT_CAP_WRITEBACK_CONNECTORS to kms_writeback
Rob Clark
robdclark at gmail.com
Mon Apr 15 18:31:10 UTC 2024
On Tue, Apr 2, 2024 at 6:33 PM Abhinav Kumar <quic_abhinavk at quicinc.com> wrote:
>
> Currently DRM_CLIENT_CAP_WRITEBACK_CONNECTORS is set in the igt_display_require()
> which is invoked for all IGT tests irrespective of whether the rest of the
> writeback connector properties such as the FB_ID are set.
>
> This results in all IGT tests running even on writeback connector
> which certainly fails many tests on MSM hardware because tests such as CTM
> rely on CRC being collected post CTM in the display pipeline but for MSM hardware
> there is no CRC collection point post CTM for writeback connectors.
>
> It is unclear whether this is intentional to be able to run all IGT tests even
> with writeback connector or it is only kms_writeback which is supposed to
> be the one.
>
> Lets try with the latter approach by setting DRM_CLIENT_CAP_WRITEBACK_CONNECTORS
> only within kms_writeback.
Makes sense to me.. trying to use writeback as an output for
non-writeback tests seems like the sort of mistake that the
DRM_CLIENT_CAP_WRITEBACK_CONNECTORS cap was intended to prevent.
Reviewed-by: Rob Clark <robdclark at gmail.com>
>
> Signed-off-by: Abhinav Kumar <quic_abhinavk at quicinc.com>
> ---
> lib/igt_kms.c | 2 --
> tests/kms_writeback.c | 5 +++++
> 2 files changed, 5 insertions(+), 2 deletions(-)
>
> diff --git a/lib/igt_kms.c b/lib/igt_kms.c
> index c38021dd7f74..c03eabdf1d6e 100644
> --- a/lib/igt_kms.c
> +++ b/lib/igt_kms.c
> @@ -2750,8 +2750,6 @@ void igt_display_require(igt_display_t *display, int drm_fd)
> if (drmSetClientCap(drm_fd, DRM_CLIENT_CAP_ATOMIC, 1) == 0)
> display->is_atomic = 1;
>
> - drmSetClientCap(drm_fd, DRM_CLIENT_CAP_WRITEBACK_CONNECTORS, 1);
> -
> resources = drmModeGetResources(display->drm_fd);
> if (!resources)
> goto out;
> diff --git a/tests/kms_writeback.c b/tests/kms_writeback.c
> index 6cd685b37af2..3448dc06f891 100644
> --- a/tests/kms_writeback.c
> +++ b/tests/kms_writeback.c
> @@ -558,6 +558,7 @@ igt_main_args("b:c:f:dl", long_options, help_str, opt_handler, NULL)
> igt_fb_t input_fb, input_fb_10bit;
> drmModeModeInfo mode;
> unsigned int fb_id;
> + int ret;
>
> memset(&display, 0, sizeof(display));
>
> @@ -570,6 +571,10 @@ igt_main_args("b:c:f:dl", long_options, help_str, opt_handler, NULL)
>
> igt_require(display.is_atomic);
>
> + ret = drmSetClientCap(display.drm_fd, DRM_CLIENT_CAP_WRITEBACK_CONNECTORS, 1);
> +
> + igt_require(!ret);
> +
> output = kms_writeback_get_output(&display);
> igt_require(output);
>
> --
> 2.44.0
>
More information about the igt-dev
mailing list