[PATCH][V2] lib/igt_kms: Move get_writeback_formats_blob to lib

Alex Hung alex.hung at amd.com
Tue Jun 24 22:19:39 UTC 2025



On 6/24/25 07:31, Kamil Konieczny wrote:
> Hi Alex,
> On 2025-06-23 at 12:14:40 -0600, Alex Hung wrote:
>> From: Harry Wentland <harry.wentland at amd.com>
>>
>> This function can be used by other tests that need writeback. A prefix
>> "igt_" is also added to the function name.
>>
>> Signed-off-by: Alex Hung <alex.hung at amd.com>
>> Signed-off-by: Harry Wentland <harry.wentland at amd.com>
>> ---
>>   lib/igt_kms.c         | 25 +++++++++++++++++++++++++
>>   lib/igt_kms.h         |  2 ++
>>   tests/kms_writeback.c | 21 +--------------------
>>   3 files changed, 28 insertions(+), 20 deletions(-)
>>
>> diff --git a/lib/igt_kms.c b/lib/igt_kms.c
>> index 9ee03e870..085c3f430 100644
>> --- a/lib/igt_kms.c
>> +++ b/lib/igt_kms.c
>> @@ -7472,3 +7472,28 @@ int igt_backlight_write(int value, const char *fname, igt_backlight_context_t *c
>>   
>>   	return 0;
>>   }
>> +
>> +/**
>> + * igt_get_writeback_formats_blob:
>> + * @output: Target output
>> + *
>> + * get supported formats from the writeback connector
> 
> Document here when this could assert (or not)
> also document when return value could be NULL

Updated in V3

> 
>> + */
>> +drmModePropertyBlobRes *igt_get_writeback_formats_blob(igt_output_t *output)
>> +{
>> +	drmModePropertyBlobRes *blob = NULL;
>> +	uint64_t blob_id;
>> +	int ret;
>> +
>> +	ret = kmstest_get_property(output->display->drm_fd,
>> +				   output->config.connector->connector_id,
>> +				   DRM_MODE_OBJECT_CONNECTOR,
>> +				   igt_connector_prop_names[IGT_CONNECTOR_WRITEBACK_PIXEL_FORMATS],
>> +				   NULL, &blob_id, NULL);
>> +	if (ret)
>> +		blob = drmModeGetPropertyBlob(output->display->drm_fd, blob_id);
>> +
>> +	igt_assert(blob);
> 
> Please remove assert from here, or at least move it iside 'if':
> 
> 	if (ret) {
> 		blob = drmModeGetPropertyBlob(output->display->drm_fd, blob_id);
> 		igt_assert(blob);
> 	}
> 
> Or provide second function __igt_get_writeback_formats_blob
> without any asserts, see note about writing library functions
> in CONTRIBUTING.md

igt_assert is removed in V3. Thanks.

> 
> Or it could be merged as is now and improved later on?
> +cc Karthik
> 
> Cc: Karthik B S <karthik.b.s at intel.com>>
> Regards,
> Kamil
> 
>> +
>> +	return blob;
>> +}
>> diff --git a/lib/igt_kms.h b/lib/igt_kms.h
>> index a85fee515..09d7d4414 100644
>> --- a/lib/igt_kms.h
>> +++ b/lib/igt_kms.h
>> @@ -1281,4 +1281,6 @@ void igt_set_link_params(int drm_fd, igt_output_t *output,
>>   int igt_backlight_read(int *result, const char *fname, igt_backlight_context_t *context);
>>   int igt_backlight_write(int value, const char *fname, igt_backlight_context_t *context);
>>   
>> +drmModePropertyBlobRes *igt_get_writeback_formats_blob(igt_output_t *output);
>> +
>>   #endif /* __IGT_KMS_H__ */
>> diff --git a/tests/kms_writeback.c b/tests/kms_writeback.c
>> index 8765fda34..86afed509 100644
>> --- a/tests/kms_writeback.c
>> +++ b/tests/kms_writeback.c
>> @@ -92,25 +92,6 @@ enum {
>>   	XRGB2101010 = 1 << 1,
>>   };
>>   
>> -static drmModePropertyBlobRes *get_writeback_formats_blob(igt_output_t *output)
>> -{
>> -	drmModePropertyBlobRes *blob = NULL;
>> -	uint64_t blob_id;
>> -	int ret;
>> -
>> -	ret = kmstest_get_property(output->display->drm_fd,
>> -				   output->config.connector->connector_id,
>> -				   DRM_MODE_OBJECT_CONNECTOR,
>> -				   igt_connector_prop_names[IGT_CONNECTOR_WRITEBACK_PIXEL_FORMATS],
>> -				   NULL, &blob_id, NULL);
>> -	if (ret)
>> -		blob = drmModeGetPropertyBlob(output->display->drm_fd, blob_id);
>> -
>> -	igt_assert(blob);
>> -
>> -	return blob;
>> -}
>> -
>>   static bool check_writeback_config(igt_display_t *display, igt_output_t *output,
>>   				    drmModeModeInfo override_mode)
>>   {
>> @@ -621,7 +602,7 @@ igt_main_args("b:c:f:dl", long_options, help_str, opt_handler, NULL)
>>   		const char *valid_chars;
>>   
>>   		igt_skip_on(data.dump_check || data.list_modes);
>> -		formats_blob = get_writeback_formats_blob(output);
>> +		formats_blob = igt_get_writeback_formats_blob(output);
>>   		valid_chars = "01234568 ABCGNRUVXY";
>>   
>>   		/*
>> -- 
>> 2.43.0
>>



More information about the igt-dev mailing list