[PATCH i-g-t v2] lib/igt_kms: move setting DRM_CLIENT_CAP_WRITEBACK_CONNECTORS to kms_writeback

Kamil Konieczny kamil.konieczny at linux.intel.com
Mon May 13 13:09:30 UTC 2024


Hi Abhinav,
On 2024-05-10 at 11:09:35 -0700, Abhinav Kumar 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.
> 
> For the writeback connectors to function properly, additional setup steps are
> required (like setting up the output buffers and submitting the job). These steps
> are not a part of the default IGT setup, so there is no guarantee that the pipeline
> will be executed at all. This results in regressions for msm boards across multiple
> IGT tests on writeback connectors such as CTM related tests where CRC needs to
> be collected after the CTM has been applied in hardware.
> 
> 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.
> 
> changes since RFC:
> 	- minor fixes to commit message
> 
> changes in v2:
> 	- use igt_require_f to print descriptive message
> 	- add msm card failure details in commit text
> 
> Reviewed-by: Rob Clark <robdclark at gmail.com>
> Acked-by: Dmitry Baryshkov <dmitry.baryshkov at linaro.org>
> Acked-by: Kamil Konieczny <kamil.konieczny at linux.intel.com>
> Acked-by: Petri Latvala <adrinael at adrinael.net>
> Signed-off-by: Abhinav Kumar <quic_abhinavk at quicinc.com>

Thank you for contribution, I merged it. There are some fails
for Xe but on i915 all runs ok.
Adding to cc few kms devs from Intel - Bhanu and J-P.

Regards,
Kamil

> ---
>  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 98d3fb79cd22..f82102144ea1 100644
> --- a/lib/igt_kms.c
> +++ b/lib/igt_kms.c
> @@ -2878,8 +2878,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..f89b2d62fcc9 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_f(!ret, "error setting DRM_CLIENT_CAP_WRITEBACK_CONNECTORS\n");
> +
>  		output = kms_writeback_get_output(&display);
>  		igt_require(output);
>  
> 
> ---
> base-commit: 4a5fd4e7cb2798636f6464e2bd61399f3242b322
> change-id: 20240509-wb_igt_fix-87169651e0da
> 
> Best regards,
> -- 
> Abhinav Kumar <quic_abhinavk at quicinc.com>
> 


More information about the igt-dev mailing list