diff mbox

[i-g-t] igt/kms_rotation_crc: Add RGB565 90 degree test for gen>9

Message ID 1509719190-32346-1-git-send-email-juhapekka.heikkila@gmail.com (mailing list archive)
State New, archived
Headers show

Commit Message

Juha-Pekka Heikkila Nov. 3, 2017, 2:26 p.m. UTC
Gen10 onwards 90 and 270 degree rotations are supported for RGB565 format.

Signed-off-by: Juha-Pekka Heikkila <juhapekka.heikkila@gmail.com>
---
 tests/kms_rotation_crc.c | 30 +++++++++++++++++++++++++++---
 1 file changed, 27 insertions(+), 3 deletions(-)

Comments

Ville Syrjala Nov. 3, 2017, 4:25 p.m. UTC | #1
On Fri, Nov 03, 2017 at 04:26:30PM +0200, Juha-Pekka Heikkila wrote:
> Gen10 onwards 90 and 270 degree rotations are supported for RGB565 format.
> 
> Signed-off-by: Juha-Pekka Heikkila <juhapekka.heikkila@gmail.com>
> ---
>  tests/kms_rotation_crc.c | 30 +++++++++++++++++++++++++++---
>  1 file changed, 27 insertions(+), 3 deletions(-)
> 
> diff --git a/tests/kms_rotation_crc.c b/tests/kms_rotation_crc.c
> index 27d1f80..f22bcb5 100644
> --- a/tests/kms_rotation_crc.c
> +++ b/tests/kms_rotation_crc.c
> @@ -423,11 +423,10 @@ static void test_plane_rotation(data_t *data, int plane_type)
>  
>  static void test_plane_rotation_ytiled_obj(data_t *data,
>  					   igt_output_t *output,
> -					   int plane_type)
> +					   int plane_type, uint32_t format)
>  {
>  	igt_display_t *display = &data->display;
>  	uint64_t tiling = LOCAL_I915_FORMAT_MOD_Y_TILED;
> -	uint32_t format = DRM_FORMAT_XRGB8888;
>  	int bpp = igt_drm_format_to_bpp(format);
>  	enum igt_commit_style commit = COMMIT_LEGACY;
>  	int fd = data->gfx_fd;
> @@ -709,6 +708,29 @@ igt_main
>  		test_plane_rotation(&data, DRM_PLANE_TYPE_PRIMARY);
>  	}
>  
> +	igt_subtest_f("primary-rotation-90-Y-tiled-16bpp") {
> +		enum pipe pipe;
> +		igt_output_t *output;
> +		int valid_tests = 0;
> +
> +		igt_require(gen > 9);
> +		data.rotation = IGT_ROTATION_90;
> +
> +		for_each_pipe_with_valid_output(&data.display, pipe, output) {
> +			igt_output_set_pipe(output, pipe);
> +
> +			test_plane_rotation_ytiled_obj(&data, output,
> +						       DRM_PLANE_TYPE_PRIMARY,
> +						       DRM_FORMAT_RGB565);

This will fail on pre-gen10, so you'll need to adjust something else as
well. Also you'll want to change the bad-format test to use maybe C8.

Looks like kms_rotation_crc as a whole could use some refactoring.
I don't understand why we have test_plane_rotation() and
test_plane_rotation_ytiled_obj(). One function really should be
enough.

> +
> +			valid_tests++;
> +			break;
> +		}
> +
> +		igt_require_f(valid_tests,
> +			      "no valid crtc/connector combinations found\n");
> +	}
> +
>  	igt_subtest_f("primary-rotation-90-Y-tiled") {
>  		enum pipe pipe;
>  		igt_output_t *output;
> @@ -720,7 +742,9 @@ igt_main
>  		for_each_pipe_with_valid_output(&data.display, pipe, output) {
>  			igt_output_set_pipe(output, pipe);
>  
> -			test_plane_rotation_ytiled_obj(&data, output, DRM_PLANE_TYPE_PRIMARY);
> +			test_plane_rotation_ytiled_obj(&data, output,
> +						       DRM_PLANE_TYPE_PRIMARY,
> +						       DRM_FORMAT_XRGB8888);
>  
>  			valid_tests++;
>  			break;
> -- 
> 2.7.4
> 
> _______________________________________________
> Intel-gfx mailing list
> Intel-gfx@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/intel-gfx
diff mbox

Patch

diff --git a/tests/kms_rotation_crc.c b/tests/kms_rotation_crc.c
index 27d1f80..f22bcb5 100644
--- a/tests/kms_rotation_crc.c
+++ b/tests/kms_rotation_crc.c
@@ -423,11 +423,10 @@  static void test_plane_rotation(data_t *data, int plane_type)
 
 static void test_plane_rotation_ytiled_obj(data_t *data,
 					   igt_output_t *output,
-					   int plane_type)
+					   int plane_type, uint32_t format)
 {
 	igt_display_t *display = &data->display;
 	uint64_t tiling = LOCAL_I915_FORMAT_MOD_Y_TILED;
-	uint32_t format = DRM_FORMAT_XRGB8888;
 	int bpp = igt_drm_format_to_bpp(format);
 	enum igt_commit_style commit = COMMIT_LEGACY;
 	int fd = data->gfx_fd;
@@ -709,6 +708,29 @@  igt_main
 		test_plane_rotation(&data, DRM_PLANE_TYPE_PRIMARY);
 	}
 
+	igt_subtest_f("primary-rotation-90-Y-tiled-16bpp") {
+		enum pipe pipe;
+		igt_output_t *output;
+		int valid_tests = 0;
+
+		igt_require(gen > 9);
+		data.rotation = IGT_ROTATION_90;
+
+		for_each_pipe_with_valid_output(&data.display, pipe, output) {
+			igt_output_set_pipe(output, pipe);
+
+			test_plane_rotation_ytiled_obj(&data, output,
+						       DRM_PLANE_TYPE_PRIMARY,
+						       DRM_FORMAT_RGB565);
+
+			valid_tests++;
+			break;
+		}
+
+		igt_require_f(valid_tests,
+			      "no valid crtc/connector combinations found\n");
+	}
+
 	igt_subtest_f("primary-rotation-90-Y-tiled") {
 		enum pipe pipe;
 		igt_output_t *output;
@@ -720,7 +742,9 @@  igt_main
 		for_each_pipe_with_valid_output(&data.display, pipe, output) {
 			igt_output_set_pipe(output, pipe);
 
-			test_plane_rotation_ytiled_obj(&data, output, DRM_PLANE_TYPE_PRIMARY);
+			test_plane_rotation_ytiled_obj(&data, output,
+						       DRM_PLANE_TYPE_PRIMARY,
+						       DRM_FORMAT_XRGB8888);
 
 			valid_tests++;
 			break;