[PATCH i-g-t 2/3] tests/chamelium/kms_chamelium_color: Fix ctm-limited-range subtest

Borah, Chaitanya Kumar chaitanya.kumar.borah at intel.com
Thu Mar 27 05:27:20 UTC 2025



> -----Original Message-----
> From: igt-dev <igt-dev-bounces at lists.freedesktop.org> On Behalf Of Swati
> Sharma
> Sent: Monday, March 24, 2025 2:40 PM
> To: igt-dev at lists.freedesktop.org
> Cc: Sharma, Swati2 <swati2.sharma at intel.com>
> Subject: [PATCH i-g-t 2/3] tests/chamelium/kms_chamelium_color: Fix ctm-
> limited-range subtest
> 
> Test is fixed, now we take chamelium capture after setting output to full and
> limited range and then compare frame dumps.

We should add some details on the steps we are taking during the test.

> 
> Signed-off-by: Swati Sharma <swati2.sharma at intel.com>
> ---
>  tests/chamelium/kms_chamelium_color.c | 50 +++++++++++++++------------
>  1 file changed, 27 insertions(+), 23 deletions(-)
> 
> diff --git a/tests/chamelium/kms_chamelium_color.c
> b/tests/chamelium/kms_chamelium_color.c
> index 68611ec6a..355047ed6 100644
> --- a/tests/chamelium/kms_chamelium_color.c
> +++ b/tests/chamelium/kms_chamelium_color.c
> @@ -352,9 +352,10 @@ static bool test_pipe_limited_range_ctm(data_t
> *data,
>  	gamma_lut_t *degamma_linear, *gamma_linear;
>  	igt_output_t *output = data->output;
>  	drmModeModeInfo *mode = data->mode;
> -	struct igt_fb fb_modeset, fb, fbref;
> -	struct chamelium_frame_dump *frame_limited;
> -	int fb_id, fb_modeset_id, fbref_id;
> +	struct igt_fb fb_modeset, fb;
> +	struct chamelium_frame_dump *frame_limited, *frame_full;
> +	int fb_id, fb_modeset_id;
> +	igt_crc_t *reference_crc;
>  	bool ret = false;
> 
>  	igt_require(igt_pipe_obj_has_prop(primary->pipe, IGT_CRTC_CTM));
> @@ -380,21 +381,13 @@ static bool test_pipe_limited_range_ctm(data_t
> *data,
>  				      DRM_FORMAT_MOD_LINEAR,
>  				      &fb_modeset);

We don't seem to use/commit this frame buffer at all.


>  	igt_assert(fb_modeset_id);
> -
> -	fbref_id = igt_create_fb(data->drm_fd,
> -				 mode->hdisplay,
> -				 mode->vdisplay,
> -				 DRM_FORMAT_XRGB8888,
> -				 DRM_FORMAT_MOD_LINEAR,
> -				 &fbref);
> -	igt_assert(fbref_id);
> -
>  	igt_plane_set_fb(primary, &fb_modeset);
> 
>  	set_degamma(data, primary->pipe, degamma_linear);
>  	set_gamma(data, primary->pipe, gamma_linear);
>  	set_ctm(primary->pipe, ctm);
> 
> +	/* Set the output into full range. */
>  	igt_output_set_prop_value(output,
>  				  IGT_CONNECTOR_BROADCAST_RGB,
>  				  BROADCAST_RGB_FULL);
> @@ -402,11 +395,28 @@ static bool test_pipe_limited_range_ctm(data_t
> *data,
>  	igt_plane_set_fb(primary, &fb);
>  	igt_display_commit(&data->display);
> 
> +	chamelium_capture(data->chamelium, port, 0, 0, 0, 0, 1);
> +	frame_full =
> +		chamelium_read_captured_frame(data->chamelium, 0);
> +
> +	/* Chamelium calculates the CRC for the most recent
> +	 * captured frame; that's why CRC of the reference frame
> +	 * is captured here.
> +	 */
> +	reference_crc = chamelium_get_crc_for_area(data->chamelium, port,
> 0, 0, 0, 0);
> +	igt_assert(reference_crc);
> +
>  	/* Set the output into limited range. */
>  	igt_output_set_prop_value(output,
>  				  IGT_CONNECTOR_BROADCAST_RGB,
>  				  BROADCAST_RGB_16_235);
>  	paint_rectangles(data, mode, red_green_blue_full, &fb);
> +	igt_plane_set_fb(primary, &fb);
> +	igt_display_commit(&data->display);
> +
> +	chamelium_capture(data->chamelium, port, 0, 0, 0, 0, 1);
> +	frame_limited =
> +		chamelium_read_captured_frame(data->chamelium, 0);

I hope chamelium takes care that it doesn't retrieve the frame captured using the earlier chamelium_capture()

Regards

Chaitanya


> 
>  	/* And reset.. */
>  	igt_output_set_prop_value(output,
> @@ -414,18 +424,12 @@ static bool test_pipe_limited_range_ctm(data_t
> *data,
>  				  BROADCAST_RGB_FULL);
>  	igt_plane_set_fb(primary, NULL);
>  	igt_output_set_pipe(output, PIPE_NONE);
> -	chamelium_capture(data->chamelium, port, 0, 0, 0, 0, 1);
> -	frame_limited =
> -		chamelium_read_captured_frame(data->chamelium, 0);
> -
> 
> -	/* Verify that the framebuffer reference of the software
> -	 * computed output is equal to the frame dump of the CTM
> -	 * matrix transformation output.
> -	 */
> -	ret = chamelium_frame_match_or_dump(data->chamelium, port,
> -					    frame_limited, &fbref,
> -					    CHAMELIUM_CHECK_ANALOG);
> +	/* Verify frame dumps are equal. */
> +	ret = chamelium_frame_match_or_dump_frame_pair(data-
> >chamelium, port,
> +						       frame_full, frame_limited,
> +						       reference_crc,
> +
> CHAMELIUM_CHECK_ANALOG);
> 
>  	free_lut(gamma_linear);
>  	free_lut(degamma_linear);
> --
> 2.25.1



More information about the igt-dev mailing list