[igt-dev] [PATCH] tests/kms_color: Reduce skips on some ctm-* tests

Alex Hung alex.hung at amd.com
Tue Dec 20 18:20:02 UTC 2022



On 2022-12-20 04:55, Melissa Wen wrote:
> On 12/19, Alex Hung wrote:
>> 64d0ff72 introduced a workaround for ctm-max but the condition caused
>> other ctm tests to skip unintentionally on some platforms.
> 
> Hi Alex,
> 
> Can't we just drop this gamma/degamma setup for CTM tests?
> 
> I remember thinking about removing this setup before... From DRM docs,
> "Each of the properties are optional." so I don't see an explicity
> reason for degamma/gamma dependencies. I think we should only test the
> CTM property here, or change the name of the subtest to describe a full
> color mgmt testing.
> 
> I took a look at previous discussions on having or not degamma/gamma
> here and if it's an intel limitation, than I prefer to explicitly
> restrict it for i915 HW. What do you think?

Hi Melissa,

I may not understand you 100%.

Could you please share what you'd like to change, or create a patch for 
more discussion?

Cheers,
Alex

> 
> Best regards,
> 
> Melissa
> 
>>
>> The patch improves the condition by keeping the original condition
>> for i915 and checking degamma and gamma props for others. The
>> following subtests will be executed instead of skipped.
>>
>>    kms_color at ctm-0-25@*
>>    kms_color at ctm-0-50@*
>>    kms_color at ctm-0-75@*
>>    kms_color at ctm-red-to-blue@*
>>    kms_color at ctm-negative@*
>>
>> Signed-off-by: Alex Hung <alex.hung at amd.com>
>> ---
>>   tests/kms_color.c | 30 +++++++++++++++++++++---------
>>   1 file changed, 21 insertions(+), 9 deletions(-)
>>
>> diff --git a/tests/kms_color.c b/tests/kms_color.c
>> index d016cefb..450bf7ca 100644
>> --- a/tests/kms_color.c
>> +++ b/tests/kms_color.c
>> @@ -446,6 +446,26 @@ end:
>>   	return ret;
>>   }
>>   
>> +static bool is_gamma_degamma_supported(data_t *data,
>> +				       igt_plane_t *primary,
>> +				       color_t *before,
>> +				       color_t *after)
>> +{
>> +	/*
>> +	 * Don't program LUT's for max CTM cases, as limitation of
>> +	 * representing intermediate values between 0 and 1.0 causes
>> +	 * rounding issues and inaccuracies leading to crc mismatch.
>> +	 */
>> +	if (is_i915_device(data->drm_fd) && memcmp(before, after, sizeof(color_t)))
>> +		return true;
>> +
>> +	if (igt_pipe_obj_has_prop(primary->pipe, IGT_CRTC_DEGAMMA_LUT) &&
>> +	    igt_pipe_obj_has_prop(primary->pipe, IGT_CRTC_GAMMA_LUT))
>> +		return true;
>> +
>> +	return false;
>> +}
>> +
>>   /*
>>    * Draw 3 rectangles using before colors with the ctm matrix apply and verify
>>    * the CRC is equal to using after colors with an identify ctm matrix.
>> @@ -493,14 +513,7 @@ static bool test_pipe_ctm(data_t *data,
>>   	igt_assert(fb_modeset_id);
>>   	igt_plane_set_fb(primary, &fb_modeset);
>>   
>> -	/*
>> -	 * Don't program LUT's for max CTM cases, as limitation of
>> -	 * representing intermediate values between 0 and 1.0 causes
>> -	 * rounding issues and inaccuracies leading to crc mismatch.
>> -	 */
>> -	if (memcmp(before, after, sizeof(color_t))) {
>> -		igt_require(igt_pipe_obj_has_prop(primary->pipe, IGT_CRTC_DEGAMMA_LUT));
>> -		igt_require(igt_pipe_obj_has_prop(primary->pipe, IGT_CRTC_GAMMA_LUT));
>> +	if (is_gamma_degamma_supported(data, primary, before, after)) {
>>   
>>   		degamma_linear = generate_table(data->degamma_lut_size, 1.0);
>>   		gamma_linear = generate_table(data->gamma_lut_size, 1.0);
>> @@ -508,7 +521,6 @@ static bool test_pipe_ctm(data_t *data,
>>   		set_degamma(data, primary->pipe, degamma_linear);
>>   		set_gamma(data, primary->pipe, gamma_linear);
>>   	} else {
>> -		/* Disable Degamma and Gamma for ctm max test */
>>   		disable_degamma(primary->pipe);
>>   		disable_gamma(primary->pipe);
>>   	}
>> -- 
>> 2.25.1
>>


More information about the igt-dev mailing list