[i-g-t,3/4] tests/kms_plane_lowres: Don't fail tests when missing format/mod support

Submitted by Kazlauskas, Nicholas on Nov. 28, 2018, 2:56 p.m.

Details

Message ID 20181128145620.11850-3-nicholas.kazlauskas@amd.com
State New
Series "Series without cover letter"
Headers show

Commit Message

Kazlauskas, Nicholas Nov. 28, 2018, 2:56 p.m.
The kms_plane_lowres subtests will fail on non-i915 hardware because
of the devid lookups and tiling format requirements.

This patch makes use of the igt_display_has_format_mod() helper to
check for support before failing fb creation.

The tests still won't fully run yet on i915 hardware because they'll
skip during calls to igt_assert_plane_visible - those require an i915
extension to get the CRTC/plane set for a given pipe.

v2: Use igt_display_has_format_mod helper (Ville)

Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
Signed-off-by: Nicholas Kazlauskas <nicholas.kazlauskas@amd.com>
---
 tests/kms_plane_lowres.c | 24 +++++++++++++++++-------
 1 file changed, 17 insertions(+), 7 deletions(-)

Patch hide | download patch | download mbox

diff --git a/tests/kms_plane_lowres.c b/tests/kms_plane_lowres.c
index 0824ef8f..63a4e5b8 100644
--- a/tests/kms_plane_lowres.c
+++ b/tests/kms_plane_lowres.c
@@ -141,6 +141,12 @@  test_setup(data_t *data, enum pipe pipe, uint64_t modifier,
 	int size;
 	int i = 1, x, y;
 	igt_plane_t *plane;
+	uint64_t plane_modifier;
+	uint32_t plane_format;
+
+	igt_skip_on(!igt_display_has_format_mod(&data->display,
+						DRM_FORMAT_XRGB8888,
+						modifier));
 
 	igt_output_set_pipe(output, pipe);
 
@@ -171,10 +177,19 @@  test_setup(data_t *data, enum pipe pipe, uint64_t modifier,
 		x = 0;
 		y = mode->vdisplay - size;
 
+		plane_format = plane->type == DRM_PLANE_TYPE_CURSOR ?
+			DRM_FORMAT_ARGB8888 : DRM_FORMAT_XRGB8888;
+
+		plane_modifier = plane->type == DRM_PLANE_TYPE_CURSOR ?
+			LOCAL_DRM_FORMAT_MOD_NONE : modifier;
+
+		igt_skip_on(!igt_plane_has_format_mod(plane, plane_format,
+						      plane_modifier));
+
 		igt_create_color_fb(data->drm_fd,
 				    size, size,
-				    plane->type == DRM_PLANE_TYPE_CURSOR ? DRM_FORMAT_ARGB8888 : DRM_FORMAT_XRGB8888,
-				    plane->type == DRM_PLANE_TYPE_CURSOR ? LOCAL_DRM_FORMAT_MOD_NONE : modifier,
+				    plane_format,
+				    plane_modifier,
 				    1.0, 1.0, 0.0,
 				    &data->fb[i]);
 
@@ -251,11 +266,6 @@  static void
 test_plane_position(data_t *data, enum pipe pipe, uint64_t modifier)
 {
 	igt_output_t *output;
-	const int gen = intel_gen(intel_get_drm_devid(data->drm_fd));
-
-	if (modifier == LOCAL_I915_FORMAT_MOD_Y_TILED ||
-	    modifier == LOCAL_I915_FORMAT_MOD_Yf_TILED)
-		igt_skip_on(gen < 9);
 
 	for_each_valid_output_on_pipe(&data->display, pipe, output)
 		test_plane_position_with_output(data, pipe, output, modifier);

Comments

Wentland, Harry Nov. 29, 2018, 9:53 p.m.
On 2018-11-28 9:56 a.m., Nicholas Kazlauskas wrote:
> The kms_plane_lowres subtests will fail on non-i915 hardware because

> of the devid lookups and tiling format requirements.

> 

> This patch makes use of the igt_display_has_format_mod() helper to

> check for support before failing fb creation.

> 

> The tests still won't fully run yet on i915 hardware because they'll

> skip during calls to igt_assert_plane_visible - those require an i915

> extension to get the CRTC/plane set for a given pipe.

> 

> v2: Use igt_display_has_format_mod helper (Ville)

> 

> Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>

> Signed-off-by: Nicholas Kazlauskas <nicholas.kazlauskas@amd.com>

> ---

>  tests/kms_plane_lowres.c | 24 +++++++++++++++++-------

>  1 file changed, 17 insertions(+), 7 deletions(-)

> 

> diff --git a/tests/kms_plane_lowres.c b/tests/kms_plane_lowres.c

> index 0824ef8f..63a4e5b8 100644

> --- a/tests/kms_plane_lowres.c

> +++ b/tests/kms_plane_lowres.c

> @@ -141,6 +141,12 @@ test_setup(data_t *data, enum pipe pipe, uint64_t modifier,

>  	int size;

>  	int i = 1, x, y;

>  	igt_plane_t *plane;

> +	uint64_t plane_modifier;

> +	uint32_t plane_format;

> +

> +	igt_skip_on(!igt_display_has_format_mod(&data->display,

> +						DRM_FORMAT_XRGB8888,

> +						modifier));

>  

>  	igt_output_set_pipe(output, pipe);

>  

> @@ -171,10 +177,19 @@ test_setup(data_t *data, enum pipe pipe, uint64_t modifier,

>  		x = 0;

>  		y = mode->vdisplay - size;

>  

> +		plane_format = plane->type == DRM_PLANE_TYPE_CURSOR ?

> +			DRM_FORMAT_ARGB8888 : DRM_FORMAT_XRGB8888;

> +

> +		plane_modifier = plane->type == DRM_PLANE_TYPE_CURSOR ?

> +			LOCAL_DRM_FORMAT_MOD_NONE : modifier;

> +

> +		igt_skip_on(!igt_plane_has_format_mod(plane, plane_format,

> +						      plane_modifier));

> +

>  		igt_create_color_fb(data->drm_fd,

>  				    size, size,

> -				    plane->type == DRM_PLANE_TYPE_CURSOR ? DRM_FORMAT_ARGB8888 : DRM_FORMAT_XRGB8888,

> -				    plane->type == DRM_PLANE_TYPE_CURSOR ? LOCAL_DRM_FORMAT_MOD_NONE : modifier,

> +				    plane_format,

> +				    plane_modifier,

>  				    1.0, 1.0, 0.0,

>  				    &data->fb[i]);

>  

> @@ -251,11 +266,6 @@ static void

>  test_plane_position(data_t *data, enum pipe pipe, uint64_t modifier)

>  {

>  	igt_output_t *output;

> -	const int gen = intel_gen(intel_get_drm_devid(data->drm_fd));

> -

> -	if (modifier == LOCAL_I915_FORMAT_MOD_Y_TILED ||

> -	    modifier == LOCAL_I915_FORMAT_MOD_Yf_TILED)

> -		igt_skip_on(gen < 9);


Same comment as on patch 2: does this even have an impact on non-i915 drivers?

Harry

>  

>  	for_each_valid_output_on_pipe(&data->display, pipe, output)

>  		test_plane_position_with_output(data, pipe, output, modifier);

>
Ville Syrjälä Nov. 30, 2018, 1:56 p.m.
On Wed, Nov 28, 2018 at 09:56:19AM -0500, Nicholas Kazlauskas wrote:
> The kms_plane_lowres subtests will fail on non-i915 hardware because
> of the devid lookups and tiling format requirements.
> 
> This patch makes use of the igt_display_has_format_mod() helper to
> check for support before failing fb creation.
> 
> The tests still won't fully run yet on i915 hardware because they'll
> skip during calls to igt_assert_plane_visible - those require an i915
> extension to get the CRTC/plane set for a given pipe.
> 
> v2: Use igt_display_has_format_mod helper (Ville)
> 
> Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
> Signed-off-by: Nicholas Kazlauskas <nicholas.kazlauskas@amd.com>
> ---
>  tests/kms_plane_lowres.c | 24 +++++++++++++++++-------
>  1 file changed, 17 insertions(+), 7 deletions(-)
> 
> diff --git a/tests/kms_plane_lowres.c b/tests/kms_plane_lowres.c
> index 0824ef8f..63a4e5b8 100644
> --- a/tests/kms_plane_lowres.c
> +++ b/tests/kms_plane_lowres.c
> @@ -141,6 +141,12 @@ test_setup(data_t *data, enum pipe pipe, uint64_t modifier,
>  	int size;
>  	int i = 1, x, y;
>  	igt_plane_t *plane;
> +	uint64_t plane_modifier;
> +	uint32_t plane_format;

These could be moved into tighter scope.

Apart from that lgtm
Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com>

> +
> +	igt_skip_on(!igt_display_has_format_mod(&data->display,
> +						DRM_FORMAT_XRGB8888,
> +						modifier));
>  
>  	igt_output_set_pipe(output, pipe);
>  
> @@ -171,10 +177,19 @@ test_setup(data_t *data, enum pipe pipe, uint64_t modifier,
>  		x = 0;
>  		y = mode->vdisplay - size;
>  
> +		plane_format = plane->type == DRM_PLANE_TYPE_CURSOR ?
> +			DRM_FORMAT_ARGB8888 : DRM_FORMAT_XRGB8888;
> +
> +		plane_modifier = plane->type == DRM_PLANE_TYPE_CURSOR ?
> +			LOCAL_DRM_FORMAT_MOD_NONE : modifier;
> +
> +		igt_skip_on(!igt_plane_has_format_mod(plane, plane_format,
> +						      plane_modifier));
> +
>  		igt_create_color_fb(data->drm_fd,
>  				    size, size,
> -				    plane->type == DRM_PLANE_TYPE_CURSOR ? DRM_FORMAT_ARGB8888 : DRM_FORMAT_XRGB8888,
> -				    plane->type == DRM_PLANE_TYPE_CURSOR ? LOCAL_DRM_FORMAT_MOD_NONE : modifier,
> +				    plane_format,
> +				    plane_modifier,
>  				    1.0, 1.0, 0.0,
>  				    &data->fb[i]);
>  
> @@ -251,11 +266,6 @@ static void
>  test_plane_position(data_t *data, enum pipe pipe, uint64_t modifier)
>  {
>  	igt_output_t *output;
> -	const int gen = intel_gen(intel_get_drm_devid(data->drm_fd));
> -
> -	if (modifier == LOCAL_I915_FORMAT_MOD_Y_TILED ||
> -	    modifier == LOCAL_I915_FORMAT_MOD_Yf_TILED)
> -		igt_skip_on(gen < 9);
>  
>  	for_each_valid_output_on_pipe(&data->display, pipe, output)
>  		test_plane_position_with_output(data, pipe, output, modifier);
> -- 
> 2.17.1
Kazlauskas, Nicholas Nov. 30, 2018, 1:59 p.m.
On 11/30/18 8:56 AM, Ville Syrjälä wrote:
> On Wed, Nov 28, 2018 at 09:56:19AM -0500, Nicholas Kazlauskas wrote:

>> The kms_plane_lowres subtests will fail on non-i915 hardware because

>> of the devid lookups and tiling format requirements.

>>

>> This patch makes use of the igt_display_has_format_mod() helper to

>> check for support before failing fb creation.

>>

>> The tests still won't fully run yet on i915 hardware because they'll

>> skip during calls to igt_assert_plane_visible - those require an i915

>> extension to get the CRTC/plane set for a given pipe.

>>

>> v2: Use igt_display_has_format_mod helper (Ville)

>>

>> Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>

>> Signed-off-by: Nicholas Kazlauskas <nicholas.kazlauskas@amd.com>

>> ---

>>   tests/kms_plane_lowres.c | 24 +++++++++++++++++-------

>>   1 file changed, 17 insertions(+), 7 deletions(-)

>>

>> diff --git a/tests/kms_plane_lowres.c b/tests/kms_plane_lowres.c

>> index 0824ef8f..63a4e5b8 100644

>> --- a/tests/kms_plane_lowres.c

>> +++ b/tests/kms_plane_lowres.c

>> @@ -141,6 +141,12 @@ test_setup(data_t *data, enum pipe pipe, uint64_t modifier,

>>   	int size;

>>   	int i = 1, x, y;

>>   	igt_plane_t *plane;

>> +	uint64_t plane_modifier;

>> +	uint32_t plane_format;

> 

> These could be moved into tighter scope.

> 

> Apart from that lgtm

> Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com>

I'll fix that up then send the v3. Thanks.

Nicholas Kazlauskas

> 

>> +

>> +	igt_skip_on(!igt_display_has_format_mod(&data->display,

>> +						DRM_FORMAT_XRGB8888,

>> +						modifier));

>>   

>>   	igt_output_set_pipe(output, pipe);

>>   

>> @@ -171,10 +177,19 @@ test_setup(data_t *data, enum pipe pipe, uint64_t modifier,

>>   		x = 0;

>>   		y = mode->vdisplay - size;

>>   

>> +		plane_format = plane->type == DRM_PLANE_TYPE_CURSOR ?

>> +			DRM_FORMAT_ARGB8888 : DRM_FORMAT_XRGB8888;

>> +

>> +		plane_modifier = plane->type == DRM_PLANE_TYPE_CURSOR ?

>> +			LOCAL_DRM_FORMAT_MOD_NONE : modifier;

>> +

>> +		igt_skip_on(!igt_plane_has_format_mod(plane, plane_format,

>> +						      plane_modifier));

>> +

>>   		igt_create_color_fb(data->drm_fd,

>>   				    size, size,

>> -				    plane->type == DRM_PLANE_TYPE_CURSOR ? DRM_FORMAT_ARGB8888 : DRM_FORMAT_XRGB8888,

>> -				    plane->type == DRM_PLANE_TYPE_CURSOR ? LOCAL_DRM_FORMAT_MOD_NONE : modifier,

>> +				    plane_format,

>> +				    plane_modifier,

>>   				    1.0, 1.0, 0.0,

>>   				    &data->fb[i]);

>>   

>> @@ -251,11 +266,6 @@ static void

>>   test_plane_position(data_t *data, enum pipe pipe, uint64_t modifier)

>>   {

>>   	igt_output_t *output;

>> -	const int gen = intel_gen(intel_get_drm_devid(data->drm_fd));

>> -

>> -	if (modifier == LOCAL_I915_FORMAT_MOD_Y_TILED ||

>> -	    modifier == LOCAL_I915_FORMAT_MOD_Yf_TILED)

>> -		igt_skip_on(gen < 9);

>>   

>>   	for_each_valid_output_on_pipe(&data->display, pipe, output)

>>   		test_plane_position_with_output(data, pipe, output, modifier);

>> -- 

>> 2.17.1

>