* [PATCH i-g-t v3 0/8] kms_plane_scaling tests.
@ 2018-01-15 14:28 Maarten Lankhorst
2018-01-15 14:28 ` [PATCH i-g-t v3 1/8] tests/kms_plane_scaling: Move the actual test to its own function Maarten Lankhorst
` (15 more replies)
0 siblings, 16 replies; 30+ messages in thread
From: Maarten Lankhorst @ 2018-01-15 14:28 UTC (permalink / raw)
To: intel-gfx
This series fixes the current scaler igt test failures and enhances
kms_plane_scaling and kms_plane for covering subtests below:
- verify all the supported pixel formats in planes
- combination of rotation and scaling
- combination of tiling and scaling
- multi-plane/multi-pipe scaling
I've cleaned up the previous series sent out by Vidya Srinivas,
and split out some patches for clarity.
Changes since previous version:
- Fix test failures on APL.
- Fix test failures on platforms the tests should skip on.
Jyoti Yadav (3):
tests/kms_plane_scaling: test scaling with tiling rotation and pixel
formats, v2.
tests/kms_plane_scaling: test scaler with clipping clamping, v3.
tests/kms_plane_scaling: test for multi pipe with scaling, v3.
Maarten Lankhorst (4):
tests/kms_plane_scaling: Move the actual test to its own function.
tests/kms_plane_scaling: Convert from simple test to full test
tests/kms_plane_scaling: Move get_num_scalers to a function.
tests/kms_plane_scaling: Clean up tests to work better with igt_kms,
v2.
Mahesh Kumar (1):
tests/kms_plane_scaling: Fix basic scaling test, v3.
tests/kms_plane_scaling.c | 661 ++++++++++++++++++++++++++++++++--------------
1 file changed, 468 insertions(+), 193 deletions(-)
--
2.15.1
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply [flat|nested] 30+ messages in thread
* [PATCH i-g-t v3 1/8] tests/kms_plane_scaling: Move the actual test to its own function.
2018-01-15 14:28 [PATCH i-g-t v3 0/8] kms_plane_scaling tests Maarten Lankhorst
@ 2018-01-15 14:28 ` Maarten Lankhorst
2018-01-15 14:28 ` [PATCH i-g-t v3 2/8] tests/kms_plane_scaling: Fix basic scaling test, v3 Maarten Lankhorst
` (14 subsequent siblings)
15 siblings, 0 replies; 30+ messages in thread
From: Maarten Lankhorst @ 2018-01-15 14:28 UTC (permalink / raw)
To: intel-gfx
We will add more subtests in the future, it's more clear if we split
out the actual test to its own function first.
Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
Reviewed-by: Mika Kahola <mika.kahola@intel.com>
---
tests/kms_plane_scaling.c | 226 ++++++++++++++++++++++++----------------------
1 file changed, 117 insertions(+), 109 deletions(-)
diff --git a/tests/kms_plane_scaling.c b/tests/kms_plane_scaling.c
index 403df47e2d3b..37e05158b968 100644
--- a/tests/kms_plane_scaling.c
+++ b/tests/kms_plane_scaling.c
@@ -163,144 +163,151 @@ static void iterate_plane_scaling(data_t *d, drmModeModeInfo *mode)
}
}
-static void test_plane_scaling(data_t *d)
+static void
+test_plane_scaling_on_pipe(data_t *d, enum pipe pipe, igt_output_t *output)
{
igt_display_t *display = &d->display;
- igt_output_t *output;
- enum pipe pipe;
- int valid_tests = 0;
+ drmModeModeInfo *mode;
int primary_plane_scaling = 0; /* For now */
- igt_require(d->num_scalers);
+ igt_output_set_pipe(output, pipe);
+ mode = igt_output_get_mode(output);
+
+ /* allocate fb2 with image size */
+ d->fb_id2 = igt_create_image_fb(d->drm_fd, 0, 0,
+ DRM_FORMAT_XRGB8888,
+ LOCAL_I915_FORMAT_MOD_X_TILED, /* tiled */
+ FILE_NAME, &d->fb2);
+ igt_assert(d->fb_id2);
+
+ d->fb_id3 = igt_create_pattern_fb(d->drm_fd,
+ mode->hdisplay, mode->vdisplay,
+ DRM_FORMAT_XRGB8888,
+ LOCAL_I915_FORMAT_MOD_X_TILED, /* tiled */
+ &d->fb3);
+ igt_assert(d->fb_id3);
+
+ /* Set up display with plane 1 */
+ d->plane1 = igt_output_get_plane(output, 0);
+ prepare_crtc(d, output, pipe, d->plane1, mode, COMMIT_UNIVERSAL);
+
+ if (primary_plane_scaling) {
+ /* Primary plane upscaling */
+ igt_fb_set_position(&d->fb1, d->plane1, 100, 100);
+ igt_fb_set_size(&d->fb1, d->plane1, 500, 500);
+ igt_plane_set_position(d->plane1, 0, 0);
+ igt_plane_set_size(d->plane1, mode->hdisplay, mode->vdisplay);
+ igt_display_commit2(display, COMMIT_UNIVERSAL);
- for_each_pipe_with_valid_output(display, pipe, output) {
- drmModeModeInfo *mode;
-
- igt_output_set_pipe(output, pipe);
-
- mode = igt_output_get_mode(output);
-
- /* allocate fb2 with image size */
- d->fb_id2 = igt_create_image_fb(d->drm_fd, 0, 0,
- DRM_FORMAT_XRGB8888,
- LOCAL_I915_FORMAT_MOD_X_TILED, /* tiled */
- FILE_NAME, &d->fb2);
- igt_assert(d->fb_id2);
-
- d->fb_id3 = igt_create_pattern_fb(d->drm_fd,
- mode->hdisplay, mode->vdisplay,
- DRM_FORMAT_XRGB8888,
- LOCAL_I915_FORMAT_MOD_X_TILED, /* tiled */
- &d->fb3);
- igt_assert(d->fb_id3);
-
- /* Set up display with plane 1 */
- d->plane1 = igt_output_get_plane(output, 0);
- prepare_crtc(d, output, pipe, d->plane1, mode, COMMIT_UNIVERSAL);
-
- if (primary_plane_scaling) {
- /* Primary plane upscaling */
- igt_fb_set_position(&d->fb1, d->plane1, 100, 100);
- igt_fb_set_size(&d->fb1, d->plane1, 500, 500);
- igt_plane_set_position(d->plane1, 0, 0);
- igt_plane_set_size(d->plane1, mode->hdisplay, mode->vdisplay);
- igt_display_commit2(display, COMMIT_UNIVERSAL);
+ /* Primary plane 1:1 no scaling */
+ igt_fb_set_position(&d->fb1, d->plane1, 0, 0);
+ igt_fb_set_size(&d->fb1, d->plane1, d->fb1.width, d->fb1.height);
+ igt_plane_set_position(d->plane1, 0, 0);
+ igt_plane_set_size(d->plane1, mode->hdisplay, mode->vdisplay);
+ igt_display_commit2(display, COMMIT_UNIVERSAL);
+ }
- /* Primary plane 1:1 no scaling */
- igt_fb_set_position(&d->fb1, d->plane1, 0, 0);
- igt_fb_set_size(&d->fb1, d->plane1, d->fb1.width, d->fb1.height);
- igt_plane_set_position(d->plane1, 0, 0);
- igt_plane_set_size(d->plane1, mode->hdisplay, mode->vdisplay);
- igt_display_commit2(display, COMMIT_UNIVERSAL);
- }
+ /* Set up fb2->plane2 mapping. */
+ d->plane2 = igt_output_get_plane(output, 1);
+ igt_plane_set_fb(d->plane2, &d->fb2);
- /* Set up fb2->plane2 mapping. */
- d->plane2 = igt_output_get_plane(output, 1);
- igt_plane_set_fb(d->plane2, &d->fb2);
+ /* 2nd plane windowed */
+ igt_fb_set_position(&d->fb2, d->plane2, 100, 100);
+ igt_fb_set_size(&d->fb2, d->plane2, d->fb2.width-200, d->fb2.height-200);
+ igt_plane_set_position(d->plane2, 100, 100);
+ igt_plane_set_size(d->plane2, mode->hdisplay-200, mode->vdisplay-200);
+ igt_display_commit2(display, COMMIT_UNIVERSAL);
- /* 2nd plane windowed */
- igt_fb_set_position(&d->fb2, d->plane2, 100, 100);
- igt_fb_set_size(&d->fb2, d->plane2, d->fb2.width-200, d->fb2.height-200);
- igt_plane_set_position(d->plane2, 100, 100);
- igt_plane_set_size(d->plane2, mode->hdisplay-200, mode->vdisplay-200);
- igt_display_commit2(display, COMMIT_UNIVERSAL);
+ iterate_plane_scaling(d, mode);
- iterate_plane_scaling(d, mode);
+ /* 2nd plane up scaling */
+ igt_fb_set_position(&d->fb2, d->plane2, 100, 100);
+ igt_fb_set_size(&d->fb2, d->plane2, 500, 500);
+ igt_plane_set_position(d->plane2, 10, 10);
+ igt_plane_set_size(d->plane2, mode->hdisplay-20, mode->vdisplay-20);
+ igt_display_commit2(display, COMMIT_UNIVERSAL);
- /* 2nd plane up scaling */
- igt_fb_set_position(&d->fb2, d->plane2, 100, 100);
- igt_fb_set_size(&d->fb2, d->plane2, 500, 500);
- igt_plane_set_position(d->plane2, 10, 10);
- igt_plane_set_size(d->plane2, mode->hdisplay-20, mode->vdisplay-20);
- igt_display_commit2(display, COMMIT_UNIVERSAL);
+ /* 2nd plane downscaling */
+ igt_fb_set_position(&d->fb2, d->plane2, 0, 0);
+ igt_fb_set_size(&d->fb2, d->plane2, d->fb2.width, d->fb2.height);
+ igt_plane_set_position(d->plane2, 10, 10);
+ igt_plane_set_size(d->plane2, 500, 500 * d->fb2.height/d->fb2.width);
+ igt_display_commit2(display, COMMIT_UNIVERSAL);
- /* 2nd plane downscaling */
- igt_fb_set_position(&d->fb2, d->plane2, 0, 0);
- igt_fb_set_size(&d->fb2, d->plane2, d->fb2.width, d->fb2.height);
- igt_plane_set_position(d->plane2, 10, 10);
- igt_plane_set_size(d->plane2, 500, 500 * d->fb2.height/d->fb2.width);
+ if (primary_plane_scaling) {
+ /* Primary plane up scaling */
+ igt_fb_set_position(&d->fb1, d->plane1, 100, 100);
+ igt_fb_set_size(&d->fb1, d->plane1, 500, 500);
+ igt_plane_set_position(d->plane1, 0, 0);
+ igt_plane_set_size(d->plane1, mode->hdisplay, mode->vdisplay);
igt_display_commit2(display, COMMIT_UNIVERSAL);
+ }
- if (primary_plane_scaling) {
- /* Primary plane up scaling */
- igt_fb_set_position(&d->fb1, d->plane1, 100, 100);
- igt_fb_set_size(&d->fb1, d->plane1, 500, 500);
- igt_plane_set_position(d->plane1, 0, 0);
- igt_plane_set_size(d->plane1, mode->hdisplay, mode->vdisplay);
- igt_display_commit2(display, COMMIT_UNIVERSAL);
- }
+ /* Set up fb3->plane3 mapping. */
+ d->plane3 = igt_output_get_plane(output, 2);
+ igt_plane_set_fb(d->plane3, &d->fb3);
+
+ /* 3rd plane windowed - no scaling */
+ igt_fb_set_position(&d->fb3, d->plane3, 100, 100);
+ igt_fb_set_size(&d->fb3, d->plane3, d->fb3.width-300, d->fb3.height-300);
+ igt_plane_set_position(d->plane3, 100, 100);
+ igt_plane_set_size(d->plane3, mode->hdisplay-300, mode->vdisplay-300);
+ igt_display_commit2(display, COMMIT_UNIVERSAL);
- /* Set up fb3->plane3 mapping. */
- d->plane3 = igt_output_get_plane(output, 2);
- igt_plane_set_fb(d->plane3, &d->fb3);
+ /* Switch scaler from plane 2 to plane 3 */
+ igt_fb_set_position(&d->fb2, d->plane2, 100, 100);
+ igt_fb_set_size(&d->fb2, d->plane2, d->fb2.width-200, d->fb2.height-200);
+ igt_plane_set_position(d->plane2, 100, 100);
+ igt_plane_set_size(d->plane2, d->fb2.width-200, d->fb2.height-200);
- /* 3rd plane windowed - no scaling */
- igt_fb_set_position(&d->fb3, d->plane3, 100, 100);
- igt_fb_set_size(&d->fb3, d->plane3, d->fb3.width-300, d->fb3.height-300);
- igt_plane_set_position(d->plane3, 100, 100);
- igt_plane_set_size(d->plane3, mode->hdisplay-300, mode->vdisplay-300);
- igt_display_commit2(display, COMMIT_UNIVERSAL);
+ igt_fb_set_position(&d->fb3, d->plane3, 100, 100);
+ igt_fb_set_size(&d->fb3, d->plane3, d->fb3.width-400, d->fb3.height-400);
+ igt_plane_set_position(d->plane3, 10, 10);
+ igt_plane_set_size(d->plane3, mode->hdisplay-300, mode->vdisplay-300);
+ igt_display_commit2(display, COMMIT_UNIVERSAL);
+
+ if (primary_plane_scaling) {
+ /* Switch scaler from plane 1 to plane 2 */
+ igt_fb_set_position(&d->fb1, d->plane1, 0, 0);
+ igt_fb_set_size(&d->fb1, d->plane1, d->fb1.width, d->fb1.height);
+ igt_plane_set_position(d->plane1, 0, 0);
+ igt_plane_set_size(d->plane1, mode->hdisplay, mode->vdisplay);
- /* Switch scaler from plane 2 to plane 3 */
igt_fb_set_position(&d->fb2, d->plane2, 100, 100);
- igt_fb_set_size(&d->fb2, d->plane2, d->fb2.width-200, d->fb2.height-200);
+ igt_fb_set_size(&d->fb2, d->plane2, d->fb2.width-500,d->fb2.height-500);
igt_plane_set_position(d->plane2, 100, 100);
- igt_plane_set_size(d->plane2, d->fb2.width-200, d->fb2.height-200);
-
- igt_fb_set_position(&d->fb3, d->plane3, 100, 100);
- igt_fb_set_size(&d->fb3, d->plane3, d->fb3.width-400, d->fb3.height-400);
- igt_plane_set_position(d->plane3, 10, 10);
- igt_plane_set_size(d->plane3, mode->hdisplay-300, mode->vdisplay-300);
+ igt_plane_set_size(d->plane2, mode->hdisplay-200, mode->vdisplay-200);
igt_display_commit2(display, COMMIT_UNIVERSAL);
+ }
- if (primary_plane_scaling) {
- /* Switch scaler from plane 1 to plane 2 */
- igt_fb_set_position(&d->fb1, d->plane1, 0, 0);
- igt_fb_set_size(&d->fb1, d->plane1, d->fb1.width, d->fb1.height);
- igt_plane_set_position(d->plane1, 0, 0);
- igt_plane_set_size(d->plane1, mode->hdisplay, mode->vdisplay);
-
- igt_fb_set_position(&d->fb2, d->plane2, 100, 100);
- igt_fb_set_size(&d->fb2, d->plane2, d->fb2.width-500,d->fb2.height-500);
- igt_plane_set_position(d->plane2, 100, 100);
- igt_plane_set_size(d->plane2, mode->hdisplay-200, mode->vdisplay-200);
- igt_display_commit2(display, COMMIT_UNIVERSAL);
- }
+ /* back to single plane mode */
+ igt_plane_set_fb(d->plane2, NULL);
+ igt_plane_set_fb(d->plane3, NULL);
+ igt_display_commit2(display, COMMIT_UNIVERSAL);
- /* back to single plane mode */
- igt_plane_set_fb(d->plane2, NULL);
- igt_plane_set_fb(d->plane3, NULL);
- igt_display_commit2(display, COMMIT_UNIVERSAL);
+ cleanup_crtc(d, output, d->plane1);
+}
+static void test_plane_scaling(data_t *d, enum pipe pipe)
+{
+ igt_output_t *output;
+ int valid_tests = 0;
+
+ igt_require(d->num_scalers);
+
+ for_each_valid_output_on_pipe(&d->display, pipe, output) {
+ test_plane_scaling_on_pipe(d, pipe, output);
+ igt_output_set_pipe(output, PIPE_ANY);
valid_tests++;
- cleanup_crtc(d, output, d->plane1);
}
+
igt_require_f(valid_tests, "no valid crtc/connector combinations found\n");
}
igt_simple_main
{
data_t data = {};
+ enum pipe pipe;
igt_skip_on_simulation();
@@ -312,7 +319,8 @@ igt_simple_main
data.num_scalers = intel_gen(data.devid) >= 9 ? 2 : 0;
- test_plane_scaling(&data);
+ for_each_pipe_static(pipe)
+ test_plane_scaling(&data, pipe);
igt_display_fini(&data.display);
}
--
2.15.1
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply related [flat|nested] 30+ messages in thread
* [PATCH i-g-t v3 2/8] tests/kms_plane_scaling: Fix basic scaling test, v3.
2018-01-15 14:28 [PATCH i-g-t v3 0/8] kms_plane_scaling tests Maarten Lankhorst
2018-01-15 14:28 ` [PATCH i-g-t v3 1/8] tests/kms_plane_scaling: Move the actual test to its own function Maarten Lankhorst
@ 2018-01-15 14:28 ` Maarten Lankhorst
2018-01-15 14:28 ` [PATCH i-g-t v3 3/8] tests/kms_plane_scaling: Convert from simple test to full test Maarten Lankhorst
` (13 subsequent siblings)
15 siblings, 0 replies; 30+ messages in thread
From: Maarten Lankhorst @ 2018-01-15 14:28 UTC (permalink / raw)
To: intel-gfx; +Cc: Vidya Srinivas
From: Mahesh Kumar <mahesh1.kumar@intel.com>
PIPEC doesnt have 3rd plane in GEN9. So, we skip the
3rd plane related scaling test where 2nd OVERLAY
plane is not available.
Restricting downscaling to (9/10)x original size of the
image to avoid "Max pixel rate limitation" of the hardware.
When testing with a resolution of 1024x768, the test fails
in iterate_plane_scaling because height becomes out of bounds.
Lastly, instead of a fixed test image, generate a test pattern
at runtime to not run into bxt's hardware limits for scaling.
Later patches in this series will cover corner cases of
scaling.
Changes since v1:
- Move out the code reshuffle to a separate commit. (Maarten)
This makes it more clear what's fixed.
Changes since v2:
- Fix iterate_plane_scaling on 1024x768. (Maarten)
- Instead of upscaling a test image, use the test pattern with a color. (Maarten)
Using a 600x600 test pattern doesn't run into BXT's
hardware limits for scaling.
Signed-off-by: Mahesh Kumar <mahesh1.kumar@intel.com>
Signed-off-by: Jyoti Yadav <jyoti.r.yadav@intel.com>
Signed-off-by: Vidya Srinivas <vidya.srinivas@intel.com>
Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
Reviewed-by: Mika Kahola <mika.kahola@intel.com> #v2
---
tests/kms_plane_scaling.c | 25 ++++++++++++++++---------
1 file changed, 16 insertions(+), 9 deletions(-)
diff --git a/tests/kms_plane_scaling.c b/tests/kms_plane_scaling.c
index 37e05158b968..cf4a8a116c8b 100644
--- a/tests/kms_plane_scaling.c
+++ b/tests/kms_plane_scaling.c
@@ -53,8 +53,6 @@ typedef struct {
igt_plane_t *plane4;
} data_t;
-#define FILE_NAME "1080p-left.png"
-
static void prepare_crtc(data_t *data, igt_output_t *output, enum pipe pipe,
igt_plane_t *plane, drmModeModeInfo *mode, enum igt_commit_style s)
{
@@ -156,7 +154,9 @@ static void iterate_plane_scaling(data_t *d, drmModeModeInfo *mode)
/* adjust fb size */
for (w = mode->hdisplay; w <= d->fb2.width; w+=10) {
- h = w * mode->hdisplay / mode->vdisplay;
+ /* Source coordinates must not be clipped. */
+ h = min(w * mode->hdisplay / mode->vdisplay, d->fb2.height);
+
igt_fb_set_size(&d->fb2, d->plane2, w, h);
igt_display_commit2(display, COMMIT_UNIVERSAL);
}
@@ -173,11 +173,10 @@ test_plane_scaling_on_pipe(data_t *d, enum pipe pipe, igt_output_t *output)
igt_output_set_pipe(output, pipe);
mode = igt_output_get_mode(output);
- /* allocate fb2 with image size */
- d->fb_id2 = igt_create_image_fb(d->drm_fd, 0, 0,
- DRM_FORMAT_XRGB8888,
- LOCAL_I915_FORMAT_MOD_X_TILED, /* tiled */
- FILE_NAME, &d->fb2);
+ d->fb_id2 = igt_create_color_pattern_fb(display->drm_fd, 600, 600,
+ DRM_FORMAT_XRGB8888,
+ LOCAL_I915_FORMAT_MOD_X_TILED, /* tiled */
+ .5, .5, .5, &d->fb2);
igt_assert(d->fb_id2);
d->fb_id3 = igt_create_pattern_fb(d->drm_fd,
@@ -231,7 +230,9 @@ test_plane_scaling_on_pipe(data_t *d, enum pipe pipe, igt_output_t *output)
igt_fb_set_position(&d->fb2, d->plane2, 0, 0);
igt_fb_set_size(&d->fb2, d->plane2, d->fb2.width, d->fb2.height);
igt_plane_set_position(d->plane2, 10, 10);
- igt_plane_set_size(d->plane2, 500, 500 * d->fb2.height/d->fb2.width);
+
+ /* Downscale (10/9)x of original image */
+ igt_plane_set_size(d->plane2, (d->fb2.width * 10)/9, (d->fb2.height * 10)/9);
igt_display_commit2(display, COMMIT_UNIVERSAL);
if (primary_plane_scaling) {
@@ -247,6 +248,11 @@ test_plane_scaling_on_pipe(data_t *d, enum pipe pipe, igt_output_t *output)
d->plane3 = igt_output_get_plane(output, 2);
igt_plane_set_fb(d->plane3, &d->fb3);
+ if(d->plane3->type == DRM_PLANE_TYPE_CURSOR) {
+ igt_debug("Plane-3 doesnt exist on pipe %s\n", kmstest_pipe_name(pipe));
+ goto cleanup;
+ }
+
/* 3rd plane windowed - no scaling */
igt_fb_set_position(&d->fb3, d->plane3, 100, 100);
igt_fb_set_size(&d->fb3, d->plane3, d->fb3.width-300, d->fb3.height-300);
@@ -280,6 +286,7 @@ test_plane_scaling_on_pipe(data_t *d, enum pipe pipe, igt_output_t *output)
igt_display_commit2(display, COMMIT_UNIVERSAL);
}
+cleanup:
/* back to single plane mode */
igt_plane_set_fb(d->plane2, NULL);
igt_plane_set_fb(d->plane3, NULL);
--
2.15.1
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply related [flat|nested] 30+ messages in thread
* [PATCH i-g-t v3 3/8] tests/kms_plane_scaling: Convert from simple test to full test
2018-01-15 14:28 [PATCH i-g-t v3 0/8] kms_plane_scaling tests Maarten Lankhorst
2018-01-15 14:28 ` [PATCH i-g-t v3 1/8] tests/kms_plane_scaling: Move the actual test to its own function Maarten Lankhorst
2018-01-15 14:28 ` [PATCH i-g-t v3 2/8] tests/kms_plane_scaling: Fix basic scaling test, v3 Maarten Lankhorst
@ 2018-01-15 14:28 ` Maarten Lankhorst
2018-01-15 14:28 ` [PATCH i-g-t v3 4/8] tests/kms_plane_scaling: Move get_num_scalers to a function Maarten Lankhorst
` (12 subsequent siblings)
15 siblings, 0 replies; 30+ messages in thread
From: Maarten Lankhorst @ 2018-01-15 14:28 UTC (permalink / raw)
To: intel-gfx
Convert the test to run subtests per pipe, before we start adding
more subtests.
Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
Reviewed-by: Mika Kahola <mika.kahola@intel.com>
---
tests/kms_plane_scaling.c | 46 +++++++++++++++++++++-------------------------
1 file changed, 21 insertions(+), 25 deletions(-)
diff --git a/tests/kms_plane_scaling.c b/tests/kms_plane_scaling.c
index cf4a8a116c8b..7e9a948a6b33 100644
--- a/tests/kms_plane_scaling.c
+++ b/tests/kms_plane_scaling.c
@@ -170,6 +170,9 @@ test_plane_scaling_on_pipe(data_t *d, enum pipe pipe, igt_output_t *output)
drmModeModeInfo *mode;
int primary_plane_scaling = 0; /* For now */
+ igt_require(d->num_scalers > 0);
+
+ igt_display_reset(display);
igt_output_set_pipe(output, pipe);
mode = igt_output_get_mode(output);
@@ -295,39 +298,32 @@ cleanup:
cleanup_crtc(d, output, d->plane1);
}
-static void test_plane_scaling(data_t *d, enum pipe pipe)
-{
- igt_output_t *output;
- int valid_tests = 0;
-
- igt_require(d->num_scalers);
-
- for_each_valid_output_on_pipe(&d->display, pipe, output) {
- test_plane_scaling_on_pipe(d, pipe, output);
- igt_output_set_pipe(output, PIPE_ANY);
- valid_tests++;
- }
-
- igt_require_f(valid_tests, "no valid crtc/connector combinations found\n");
-}
-
-igt_simple_main
+igt_main
{
data_t data = {};
enum pipe pipe;
igt_skip_on_simulation();
+ igt_fixture {
+ data.drm_fd = drm_open_driver(DRIVER_INTEL);
+ igt_require_pipe_crc(data.drm_fd);
+ igt_display_init(&data.display, data.drm_fd);
+ data.devid = intel_get_drm_devid(data.drm_fd);
+ data.num_scalers = intel_gen(data.devid) >= 9 ? 2 : 0;
+ }
- data.drm_fd = drm_open_driver(DRIVER_INTEL);
- igt_require_pipe_crc(data.drm_fd);
- igt_display_init(&data.display, data.drm_fd);
- data.devid = intel_get_drm_devid(data.drm_fd);
+ for_each_pipe_static(pipe) igt_subtest_group {
+ igt_output_t *output;
- data.num_scalers = intel_gen(data.devid) >= 9 ? 2 : 0;
+ igt_fixture
+ igt_display_require_output_on_pipe(&data.display, pipe);
- for_each_pipe_static(pipe)
- test_plane_scaling(&data, pipe);
+ igt_subtest_f("pipe-%s-plane-scaling", kmstest_pipe_name(pipe))
+ for_each_valid_output_on_pipe(&data.display, pipe, output)
+ test_plane_scaling_on_pipe(&data, pipe, output);
+ }
- igt_display_fini(&data.display);
+ igt_fixture
+ igt_display_fini(&data.display);
}
--
2.15.1
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply related [flat|nested] 30+ messages in thread
* [PATCH i-g-t v3 4/8] tests/kms_plane_scaling: Move get_num_scalers to a function.
2018-01-15 14:28 [PATCH i-g-t v3 0/8] kms_plane_scaling tests Maarten Lankhorst
` (2 preceding siblings ...)
2018-01-15 14:28 ` [PATCH i-g-t v3 3/8] tests/kms_plane_scaling: Convert from simple test to full test Maarten Lankhorst
@ 2018-01-15 14:28 ` Maarten Lankhorst
2018-01-16 8:22 ` Mika Kahola
2018-01-16 10:03 ` [PATCH i-g-t] tests/kms_plane_scaling: Move get_num_scalers to a function, v2 Maarten Lankhorst
2018-01-15 14:28 ` [PATCH i-g-t v3 5/8] tests/kms_plane_scaling: Clean up tests to work better with igt_kms, v2 Maarten Lankhorst
` (11 subsequent siblings)
15 siblings, 2 replies; 30+ messages in thread
From: Maarten Lankhorst @ 2018-01-15 14:28 UTC (permalink / raw)
To: intel-gfx
The number of scalers can depend on the pipe, so require at least 1
scaler before running any subtests.
Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
---
tests/kms_plane_scaling.c | 20 ++++++++++++++------
1 file changed, 14 insertions(+), 6 deletions(-)
diff --git a/tests/kms_plane_scaling.c b/tests/kms_plane_scaling.c
index 7e9a948a6b33..d1afcc819d0a 100644
--- a/tests/kms_plane_scaling.c
+++ b/tests/kms_plane_scaling.c
@@ -38,8 +38,6 @@ typedef struct {
int image_w;
int image_h;
- int num_scalers;
-
struct igt_fb fb1;
struct igt_fb fb2;
struct igt_fb fb3;
@@ -53,6 +51,16 @@ typedef struct {
igt_plane_t *plane4;
} data_t;
+static int get_num_scalers(uint32_t devid, enum pipe pipe)
+{
+ igt_require(intel_gen(devid) >= 9);
+
+ if (intel_gen(devid) > 9 || pipe != PIPE_C)
+ return 2;
+ else
+ return 1;
+}
+
static void prepare_crtc(data_t *data, igt_output_t *output, enum pipe pipe,
igt_plane_t *plane, drmModeModeInfo *mode, enum igt_commit_style s)
{
@@ -170,8 +178,6 @@ test_plane_scaling_on_pipe(data_t *d, enum pipe pipe, igt_output_t *output)
drmModeModeInfo *mode;
int primary_plane_scaling = 0; /* For now */
- igt_require(d->num_scalers > 0);
-
igt_display_reset(display);
igt_output_set_pipe(output, pipe);
mode = igt_output_get_mode(output);
@@ -310,15 +316,17 @@ igt_main
igt_require_pipe_crc(data.drm_fd);
igt_display_init(&data.display, data.drm_fd);
data.devid = intel_get_drm_devid(data.drm_fd);
- data.num_scalers = intel_gen(data.devid) >= 9 ? 2 : 0;
}
for_each_pipe_static(pipe) igt_subtest_group {
igt_output_t *output;
- igt_fixture
+ igt_fixture {
igt_display_require_output_on_pipe(&data.display, pipe);
+ igt_require(get_num_scalers(data.devid, pipe) > 0);
+ }
+
igt_subtest_f("pipe-%s-plane-scaling", kmstest_pipe_name(pipe))
for_each_valid_output_on_pipe(&data.display, pipe, output)
test_plane_scaling_on_pipe(&data, pipe, output);
--
2.15.1
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply related [flat|nested] 30+ messages in thread
* [PATCH i-g-t v3 5/8] tests/kms_plane_scaling: Clean up tests to work better with igt_kms, v2.
2018-01-15 14:28 [PATCH i-g-t v3 0/8] kms_plane_scaling tests Maarten Lankhorst
` (3 preceding siblings ...)
2018-01-15 14:28 ` [PATCH i-g-t v3 4/8] tests/kms_plane_scaling: Move get_num_scalers to a function Maarten Lankhorst
@ 2018-01-15 14:28 ` Maarten Lankhorst
2018-01-16 9:32 ` Mika Kahola
2018-01-15 14:28 ` [PATCH i-g-t v3 6/8] tests/kms_plane_scaling: test scaling with tiling rotation and pixel formats, v2 Maarten Lankhorst
` (10 subsequent siblings)
15 siblings, 1 reply; 30+ messages in thread
From: Maarten Lankhorst @ 2018-01-15 14:28 UTC (permalink / raw)
To: intel-gfx
The test only runs on gen9+, so we can safely replace all calls with
COMMIT_ATOMIC.
Also perform some cleanups by making fb an array, and cleaning up in
prepare_crtc. This way failed subtests won't cause failures in other
subtests.
Changes since v1:
- Rebase on top of num_scalers changes.
Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
---
tests/kms_plane_scaling.c | 235 +++++++++++++++++++---------------------------
1 file changed, 99 insertions(+), 136 deletions(-)
diff --git a/tests/kms_plane_scaling.c b/tests/kms_plane_scaling.c
index d1afcc819d0a..0ba209a3116b 100644
--- a/tests/kms_plane_scaling.c
+++ b/tests/kms_plane_scaling.c
@@ -38,17 +38,10 @@ typedef struct {
int image_w;
int image_h;
- struct igt_fb fb1;
- struct igt_fb fb2;
- struct igt_fb fb3;
- int fb_id1;
- int fb_id2;
- int fb_id3;
-
+ struct igt_fb fb[3];
igt_plane_t *plane1;
igt_plane_t *plane2;
igt_plane_t *plane3;
- igt_plane_t *plane4;
} data_t;
static int get_num_scalers(uint32_t devid, enum pipe pipe)
@@ -61,78 +54,60 @@ static int get_num_scalers(uint32_t devid, enum pipe pipe)
return 1;
}
-static void prepare_crtc(data_t *data, igt_output_t *output, enum pipe pipe,
- igt_plane_t *plane, drmModeModeInfo *mode, enum igt_commit_style s)
+static void cleanup_crtc(data_t *data)
{
- igt_display_t *display = &data->display;
-
- igt_output_set_pipe(output, pipe);
+ int i;
- /* create the pipe_crc object for this pipe */
igt_pipe_crc_free(data->pipe_crc);
- data->pipe_crc = igt_pipe_crc_new(data->drm_fd, pipe, INTEL_PIPE_CRC_SOURCE_AUTO);
-
- /* before allocating, free if any older fb */
- if (data->fb_id1) {
- igt_remove_fb(data->drm_fd, &data->fb1);
- data->fb_id1 = 0;
- }
+ data->pipe_crc = NULL;
- /* allocate fb for plane 1 */
- data->fb_id1 = igt_create_pattern_fb(data->drm_fd,
- mode->hdisplay, mode->vdisplay,
- DRM_FORMAT_XRGB8888,
- LOCAL_I915_FORMAT_MOD_X_TILED, /* tiled */
- &data->fb1);
- igt_assert(data->fb_id1);
-
- /*
- * We always set the primary plane to actually enable the pipe as
- * there's no way (that works) to light up a pipe with only a sprite
- * plane enabled at the moment.
- */
- if (plane->type != DRM_PLANE_TYPE_PRIMARY) {
- igt_plane_t *primary;
+ for (i = 0; i < ARRAY_SIZE(data->fb); i++) {
+ if (!data->fb[i].fb_id)
+ continue;
- primary = igt_output_get_plane_type(output, DRM_PLANE_TYPE_PRIMARY);
- igt_plane_set_fb(primary, &data->fb1);
+ igt_remove_fb(data->drm_fd, &data->fb[i]);
+ data->fb[i].fb_id = 0;
}
-
- igt_plane_set_fb(plane, &data->fb1);
- igt_display_commit2(display, s);
}
-static void cleanup_crtc(data_t *data, igt_output_t *output, igt_plane_t *plane)
+static void prepare_crtc(data_t *data, igt_output_t *output, enum pipe pipe,
+ igt_plane_t *plane, drmModeModeInfo *mode)
{
igt_display_t *display = &data->display;
- igt_pipe_crc_free(data->pipe_crc);
- data->pipe_crc = NULL;
+ cleanup_crtc(data);
- if (data->fb_id1) {
- igt_remove_fb(data->drm_fd, &data->fb1);
- data->fb_id1 = 0;
- }
- if (data->fb_id2) {
- igt_remove_fb(data->drm_fd, &data->fb2);
- data->fb_id2 = 0;
- }
- if (data->fb_id3) {
- igt_remove_fb(data->drm_fd, &data->fb3);
- data->fb_id3 = 0;
- }
+ igt_display_reset(display);
+ igt_output_set_pipe(output, pipe);
+
+ /* create the pipe_crc object for this pipe */
+ data->pipe_crc = igt_pipe_crc_new(data->drm_fd, pipe, INTEL_PIPE_CRC_SOURCE_AUTO);
+
+ /* allocate fb for plane 1 */
+ igt_create_pattern_fb(data->drm_fd, mode->hdisplay, mode->vdisplay,
+ DRM_FORMAT_XRGB8888,
+ LOCAL_I915_FORMAT_MOD_X_TILED, /* tiled */
+ &data->fb[0]);
+
+ igt_plane_set_fb(plane, &data->fb[0]);
if (plane->type != DRM_PLANE_TYPE_PRIMARY) {
igt_plane_t *primary;
+ int ret;
+
+ /* Do we succeed without enabling the primary plane? */
+ ret = igt_display_try_commit2(display, COMMIT_ATOMIC);
+ if (!ret)
+ return;
+ /*
+ * Fallback: set the primary plane to actually enable the pipe.
+ * Some drivers always require the primary plane to be enabled.
+ */
primary = igt_output_get_plane_type(output, DRM_PLANE_TYPE_PRIMARY);
- igt_plane_set_fb(primary, NULL);
+ igt_plane_set_fb(primary, &data->fb[0]);
}
-
- igt_plane_set_fb(plane, NULL);
- igt_output_set_pipe(output, PIPE_ANY);
-
- igt_display_commit2(display, COMMIT_UNIVERSAL);
+ igt_display_commit2(display, COMMIT_ATOMIC);
}
/* does iterative scaling on plane2 */
@@ -140,33 +115,32 @@ static void iterate_plane_scaling(data_t *d, drmModeModeInfo *mode)
{
igt_display_t *display = &d->display;
- if (mode->hdisplay >= d->fb2.width) {
+ if (mode->hdisplay >= d->fb[1].width) {
int w, h;
/* fixed fb */
- igt_fb_set_position(&d->fb2, d->plane2, 0, 0);
- igt_fb_set_size(&d->fb2, d->plane2, d->fb2.width, d->fb2.height);
+ igt_fb_set_position(&d->fb[1], d->plane2, 0, 0);
+ igt_fb_set_size(&d->fb[1], d->plane2, d->fb[1].width, d->fb[1].height);
igt_plane_set_position(d->plane2, 0, 0);
/* adjust plane size */
- for (w = d->fb2.width; w <= mode->hdisplay; w+=10) {
- h = w * d->fb2.height / d->fb2.width;
+ for (w = d->fb[1].width; w <= mode->hdisplay; w+=10) {
+ h = w * d->fb[1].height / d->fb[1].width;
igt_plane_set_size(d->plane2, w, h);
- igt_display_commit2(display, COMMIT_UNIVERSAL);
+ igt_display_commit2(display, COMMIT_ATOMIC);
}
} else {
int w, h;
/* fixed plane */
igt_plane_set_position(d->plane2, 0, 0);
igt_plane_set_size(d->plane2, mode->hdisplay, mode->vdisplay);
- igt_fb_set_position(&d->fb2, d->plane2, 0, 0);
+ igt_fb_set_position(&d->fb[1], d->plane2, 0, 0);
/* adjust fb size */
- for (w = mode->hdisplay; w <= d->fb2.width; w+=10) {
+ for (w = mode->hdisplay; w <= d->fb[1].width; w+=10) {
/* Source coordinates must not be clipped. */
- h = min(w * mode->hdisplay / mode->vdisplay, d->fb2.height);
-
- igt_fb_set_size(&d->fb2, d->plane2, w, h);
- igt_display_commit2(display, COMMIT_UNIVERSAL);
+ h = min(w * mode->hdisplay / mode->vdisplay, d->fb[1].height);
+ igt_fb_set_size(&d->fb[1], d->plane2, w, h);
+ igt_display_commit2(display, COMMIT_ATOMIC);
}
}
}
@@ -178,130 +152,118 @@ test_plane_scaling_on_pipe(data_t *d, enum pipe pipe, igt_output_t *output)
drmModeModeInfo *mode;
int primary_plane_scaling = 0; /* For now */
- igt_display_reset(display);
- igt_output_set_pipe(output, pipe);
mode = igt_output_get_mode(output);
- d->fb_id2 = igt_create_color_pattern_fb(display->drm_fd, 600, 600,
- DRM_FORMAT_XRGB8888,
- LOCAL_I915_FORMAT_MOD_X_TILED, /* tiled */
- .5, .5, .5, &d->fb2);
- igt_assert(d->fb_id2);
+ /* Set up display with plane 1 */
+ d->plane1 = &display->pipes[pipe].planes[0];
+ prepare_crtc(d, output, pipe, d->plane1, mode);
- d->fb_id3 = igt_create_pattern_fb(d->drm_fd,
- mode->hdisplay, mode->vdisplay,
- DRM_FORMAT_XRGB8888,
- LOCAL_I915_FORMAT_MOD_X_TILED, /* tiled */
- &d->fb3);
- igt_assert(d->fb_id3);
+ igt_create_color_pattern_fb(display->drm_fd, 600, 600,
+ DRM_FORMAT_XRGB8888,
+ LOCAL_I915_FORMAT_MOD_X_TILED, /* tiled */
+ .5, .5, .5, &d->fb[1]);
- /* Set up display with plane 1 */
- d->plane1 = igt_output_get_plane(output, 0);
- prepare_crtc(d, output, pipe, d->plane1, mode, COMMIT_UNIVERSAL);
+ igt_create_pattern_fb(d->drm_fd,
+ mode->hdisplay, mode->vdisplay,
+ DRM_FORMAT_XRGB8888,
+ LOCAL_I915_FORMAT_MOD_X_TILED, /* tiled */
+ &d->fb[2]);
if (primary_plane_scaling) {
/* Primary plane upscaling */
- igt_fb_set_position(&d->fb1, d->plane1, 100, 100);
- igt_fb_set_size(&d->fb1, d->plane1, 500, 500);
+ igt_fb_set_position(&d->fb[0], d->plane1, 100, 100);
+ igt_fb_set_size(&d->fb[0], d->plane1, 500, 500);
igt_plane_set_position(d->plane1, 0, 0);
igt_plane_set_size(d->plane1, mode->hdisplay, mode->vdisplay);
- igt_display_commit2(display, COMMIT_UNIVERSAL);
+ igt_display_commit2(display, COMMIT_ATOMIC);
/* Primary plane 1:1 no scaling */
- igt_fb_set_position(&d->fb1, d->plane1, 0, 0);
- igt_fb_set_size(&d->fb1, d->plane1, d->fb1.width, d->fb1.height);
+ igt_fb_set_position(&d->fb[0], d->plane1, 0, 0);
+ igt_fb_set_size(&d->fb[0], d->plane1, d->fb[0].width, d->fb[0].height);
igt_plane_set_position(d->plane1, 0, 0);
igt_plane_set_size(d->plane1, mode->hdisplay, mode->vdisplay);
- igt_display_commit2(display, COMMIT_UNIVERSAL);
+ igt_display_commit2(display, COMMIT_ATOMIC);
}
- /* Set up fb2->plane2 mapping. */
+ /* Set up fb[1]->plane2 mapping. */
d->plane2 = igt_output_get_plane(output, 1);
- igt_plane_set_fb(d->plane2, &d->fb2);
+ igt_plane_set_fb(d->plane2, &d->fb[1]);
/* 2nd plane windowed */
- igt_fb_set_position(&d->fb2, d->plane2, 100, 100);
- igt_fb_set_size(&d->fb2, d->plane2, d->fb2.width-200, d->fb2.height-200);
+ igt_fb_set_position(&d->fb[1], d->plane2, 100, 100);
+ igt_fb_set_size(&d->fb[1], d->plane2, d->fb[1].width-200, d->fb[1].height-200);
igt_plane_set_position(d->plane2, 100, 100);
igt_plane_set_size(d->plane2, mode->hdisplay-200, mode->vdisplay-200);
- igt_display_commit2(display, COMMIT_UNIVERSAL);
+ igt_display_commit2(display, COMMIT_ATOMIC);
iterate_plane_scaling(d, mode);
/* 2nd plane up scaling */
- igt_fb_set_position(&d->fb2, d->plane2, 100, 100);
- igt_fb_set_size(&d->fb2, d->plane2, 500, 500);
+ igt_fb_set_position(&d->fb[1], d->plane2, 100, 100);
+ igt_fb_set_size(&d->fb[1], d->plane2, 500, 500);
igt_plane_set_position(d->plane2, 10, 10);
igt_plane_set_size(d->plane2, mode->hdisplay-20, mode->vdisplay-20);
- igt_display_commit2(display, COMMIT_UNIVERSAL);
+ igt_display_commit2(display, COMMIT_ATOMIC);
/* 2nd plane downscaling */
- igt_fb_set_position(&d->fb2, d->plane2, 0, 0);
- igt_fb_set_size(&d->fb2, d->plane2, d->fb2.width, d->fb2.height);
+ igt_fb_set_position(&d->fb[1], d->plane2, 0, 0);
+ igt_fb_set_size(&d->fb[1], d->plane2, d->fb[1].width, d->fb[1].height);
igt_plane_set_position(d->plane2, 10, 10);
/* Downscale (10/9)x of original image */
- igt_plane_set_size(d->plane2, (d->fb2.width * 10)/9, (d->fb2.height * 10)/9);
- igt_display_commit2(display, COMMIT_UNIVERSAL);
+ igt_plane_set_size(d->plane2, (d->fb[1].width * 10)/9, (d->fb[1].height * 10)/9);
+ igt_display_commit2(display, COMMIT_ATOMIC);
if (primary_plane_scaling) {
/* Primary plane up scaling */
- igt_fb_set_position(&d->fb1, d->plane1, 100, 100);
- igt_fb_set_size(&d->fb1, d->plane1, 500, 500);
+ igt_fb_set_position(&d->fb[0], d->plane1, 100, 100);
+ igt_fb_set_size(&d->fb[0], d->plane1, 500, 500);
igt_plane_set_position(d->plane1, 0, 0);
igt_plane_set_size(d->plane1, mode->hdisplay, mode->vdisplay);
- igt_display_commit2(display, COMMIT_UNIVERSAL);
+ igt_display_commit2(display, COMMIT_ATOMIC);
}
- /* Set up fb3->plane3 mapping. */
+ /* Set up fb[2]->plane3 mapping. */
d->plane3 = igt_output_get_plane(output, 2);
- igt_plane_set_fb(d->plane3, &d->fb3);
+ igt_plane_set_fb(d->plane3, &d->fb[2]);
if(d->plane3->type == DRM_PLANE_TYPE_CURSOR) {
igt_debug("Plane-3 doesnt exist on pipe %s\n", kmstest_pipe_name(pipe));
- goto cleanup;
+ return;
}
/* 3rd plane windowed - no scaling */
- igt_fb_set_position(&d->fb3, d->plane3, 100, 100);
- igt_fb_set_size(&d->fb3, d->plane3, d->fb3.width-300, d->fb3.height-300);
+ igt_fb_set_position(&d->fb[2], d->plane3, 100, 100);
+ igt_fb_set_size(&d->fb[2], d->plane3, d->fb[2].width-300, d->fb[2].height-300);
igt_plane_set_position(d->plane3, 100, 100);
igt_plane_set_size(d->plane3, mode->hdisplay-300, mode->vdisplay-300);
- igt_display_commit2(display, COMMIT_UNIVERSAL);
+ igt_display_commit2(display, COMMIT_ATOMIC);
/* Switch scaler from plane 2 to plane 3 */
- igt_fb_set_position(&d->fb2, d->plane2, 100, 100);
- igt_fb_set_size(&d->fb2, d->plane2, d->fb2.width-200, d->fb2.height-200);
+ igt_fb_set_position(&d->fb[1], d->plane2, 100, 100);
+ igt_fb_set_size(&d->fb[1], d->plane2, d->fb[1].width-200, d->fb[1].height-200);
igt_plane_set_position(d->plane2, 100, 100);
- igt_plane_set_size(d->plane2, d->fb2.width-200, d->fb2.height-200);
+ igt_plane_set_size(d->plane2, d->fb[1].width-200, d->fb[1].height-200);
- igt_fb_set_position(&d->fb3, d->plane3, 100, 100);
- igt_fb_set_size(&d->fb3, d->plane3, d->fb3.width-400, d->fb3.height-400);
+ igt_fb_set_position(&d->fb[2], d->plane3, 100, 100);
+ igt_fb_set_size(&d->fb[2], d->plane3, d->fb[2].width-400, d->fb[2].height-400);
igt_plane_set_position(d->plane3, 10, 10);
igt_plane_set_size(d->plane3, mode->hdisplay-300, mode->vdisplay-300);
- igt_display_commit2(display, COMMIT_UNIVERSAL);
+ igt_display_commit2(display, COMMIT_ATOMIC);
if (primary_plane_scaling) {
/* Switch scaler from plane 1 to plane 2 */
- igt_fb_set_position(&d->fb1, d->plane1, 0, 0);
- igt_fb_set_size(&d->fb1, d->plane1, d->fb1.width, d->fb1.height);
+ igt_fb_set_position(&d->fb[0], d->plane1, 0, 0);
+ igt_fb_set_size(&d->fb[0], d->plane1, d->fb[0].width, d->fb[0].height);
igt_plane_set_position(d->plane1, 0, 0);
igt_plane_set_size(d->plane1, mode->hdisplay, mode->vdisplay);
- igt_fb_set_position(&d->fb2, d->plane2, 100, 100);
- igt_fb_set_size(&d->fb2, d->plane2, d->fb2.width-500,d->fb2.height-500);
+ igt_fb_set_position(&d->fb[1], d->plane2, 100, 100);
+ igt_fb_set_size(&d->fb[1], d->plane2, d->fb[1].width-500,d->fb[1].height-500);
igt_plane_set_position(d->plane2, 100, 100);
igt_plane_set_size(d->plane2, mode->hdisplay-200, mode->vdisplay-200);
- igt_display_commit2(display, COMMIT_UNIVERSAL);
+ igt_display_commit2(display, COMMIT_ATOMIC);
}
-
-cleanup:
- /* back to single plane mode */
- igt_plane_set_fb(d->plane2, NULL);
- igt_plane_set_fb(d->plane3, NULL);
- igt_display_commit2(display, COMMIT_UNIVERSAL);
-
- cleanup_crtc(d, output, d->plane1);
}
igt_main
@@ -316,6 +278,7 @@ igt_main
igt_require_pipe_crc(data.drm_fd);
igt_display_init(&data.display, data.drm_fd);
data.devid = intel_get_drm_devid(data.drm_fd);
+ igt_require(data.display.is_atomic);
}
for_each_pipe_static(pipe) igt_subtest_group {
--
2.15.1
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply related [flat|nested] 30+ messages in thread
* [PATCH i-g-t v3 6/8] tests/kms_plane_scaling: test scaling with tiling rotation and pixel formats, v2.
2018-01-15 14:28 [PATCH i-g-t v3 0/8] kms_plane_scaling tests Maarten Lankhorst
` (4 preceding siblings ...)
2018-01-15 14:28 ` [PATCH i-g-t v3 5/8] tests/kms_plane_scaling: Clean up tests to work better with igt_kms, v2 Maarten Lankhorst
@ 2018-01-15 14:28 ` Maarten Lankhorst
2018-01-16 12:43 ` Mika Kahola
2018-01-16 14:00 ` [PATCH i-g-t] tests/kms_plane_scaling: test scaling with tiling rotation and pixel formats, v3 Maarten Lankhorst
2018-01-15 14:28 ` [PATCH i-g-t v3 7/8] tests/kms_plane_scaling: test scaler with clipping clamping, v3 Maarten Lankhorst
` (9 subsequent siblings)
15 siblings, 2 replies; 30+ messages in thread
From: Maarten Lankhorst @ 2018-01-15 14:28 UTC (permalink / raw)
To: intel-gfx; +Cc: Vidya Srinivas
From: Jyoti Yadav <jyoti.r.yadav@intel.com>
This patch adds subtest for testing scaling in combination with rotation
and pixel formats.
Changes since v1:
- Rework test to work with the other changes to kms_plane_scaling. (Maarten)
- Remove hardcodes for MIN/MAX_SRC_WIDTH, and use the value directly. (Maarten)
Signed-off-by: Jyoti Yadav <jyoti.r.yadav@intel.com>
Signed-off-by: Mahesh Kumar <mahesh1.kumar@intel.com>
Signed-off-by: Vidya Srinivas <vidya.srinivas@intel.com>
Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
---
tests/kms_plane_scaling.c | 161 +++++++++++++++++++++++++++++++++++++++++++++-
1 file changed, 160 insertions(+), 1 deletion(-)
diff --git a/tests/kms_plane_scaling.c b/tests/kms_plane_scaling.c
index 0ba209a3116b..f514459584d1 100644
--- a/tests/kms_plane_scaling.c
+++ b/tests/kms_plane_scaling.c
@@ -54,10 +54,55 @@ static int get_num_scalers(uint32_t devid, enum pipe pipe)
return 1;
}
+#define MAX_ROTATION 4
+static igt_rotation_t get_rotation_angle(int rot)
+{
+ switch (rot) {
+ case 0:
+ return IGT_ROTATION_0;
+ break;
+ case 1:
+ return IGT_ROTATION_90;
+ break;
+ case 2:
+ return IGT_ROTATION_180;
+ break;
+ case 3:
+ return IGT_ROTATION_270;
+ break;
+ default:
+ igt_info("Unknown/Unsupported Rotation %d\n", rot);
+ return IGT_ROTATION_0;
+ }
+}
+
+#define MAX_TILING 4
+static uint64_t get_tiling(int tiling)
+{
+ switch (tiling) {
+ case 0:
+ return LOCAL_DRM_FORMAT_MOD_NONE;
+ break;
+ case 1:
+ return LOCAL_I915_FORMAT_MOD_X_TILED;
+ break;
+ case 2:
+ return LOCAL_I915_FORMAT_MOD_Y_TILED;
+ break;
+ case 3:
+ return LOCAL_I915_FORMAT_MOD_Yf_TILED;
+ break;
+ default:
+ igt_info("Unknown/Unsupported Tiling %d\n", tiling);
+ return LOCAL_DRM_FORMAT_MOD_NONE;
+ }
+}
+
static void cleanup_crtc(data_t *data)
{
int i;
+ igt_display_reset(&data->display);
igt_pipe_crc_free(data->pipe_crc);
data->pipe_crc = NULL;
@@ -77,7 +122,6 @@ static void prepare_crtc(data_t *data, igt_output_t *output, enum pipe pipe,
cleanup_crtc(data);
- igt_display_reset(display);
igt_output_set_pipe(output, pipe);
/* create the pipe_crc object for this pipe */
@@ -110,6 +154,112 @@ static void prepare_crtc(data_t *data, igt_output_t *output, enum pipe pipe,
igt_display_commit2(display, COMMIT_ATOMIC);
}
+static void paint_fb(data_t *d, struct igt_fb *fb)
+{
+ cairo_t *cr;
+
+ cr = igt_get_cairo_ctx(d->drm_fd, fb);
+ igt_paint_color(cr, 0, 0, fb->width, fb->height, 0.0, 1.0, 0.0);
+ igt_assert(cairo_status(cr) == 0);
+ cairo_destroy(cr);
+}
+
+static void check_scaling_pipe_plane_rot(data_t *d, igt_plane_t *plane,
+ uint32_t pixel_format,
+ uint64_t tiling, enum pipe pipe,
+ igt_output_t *output,
+ igt_rotation_t rot)
+{
+ igt_display_t *display = &d->display;
+ int width, height;
+ drmModeModeInfo *mode;
+
+ cleanup_crtc(d);
+
+ igt_output_set_pipe(output, pipe);
+ mode = igt_output_get_mode(output);
+
+ /* create buffer in the range of min and max source side limit.*/
+ width = height = 9;
+ igt_create_fb(display->drm_fd, width, height,
+ pixel_format, tiling, &d->fb[0]);
+ paint_fb(d, &d->fb[0]);
+ igt_plane_set_fb(plane, &d->fb[0]);
+
+ /* Check min to full resolution upscaling */
+ igt_fb_set_position(&d->fb[0], plane, 0, 0);
+ igt_fb_set_size(&d->fb[0], plane, width, height);
+ igt_plane_set_position(plane, 0, 0);
+ igt_plane_set_size(plane, mode->hdisplay, mode->vdisplay);
+ igt_plane_set_rotation(plane, rot);
+ igt_display_commit2(display, COMMIT_ATOMIC);
+
+ igt_plane_set_fb(plane, NULL);
+ igt_plane_set_position(plane, 0, 0);
+}
+
+static void test_scaler_with_rotation_pipe(data_t *d, enum pipe pipe,
+ igt_output_t *output)
+{
+ igt_display_t *display = &d->display;
+ igt_plane_t *plane;
+
+ igt_output_set_pipe(output, pipe);
+ for_each_plane_on_pipe(display, pipe, plane) {
+
+ if (plane->type == DRM_PLANE_TYPE_CURSOR)
+ continue;
+
+ for (int i = 0; i < MAX_ROTATION; i++) {
+ igt_rotation_t rot = get_rotation_angle(i);
+ check_scaling_pipe_plane_rot(d, plane, DRM_FORMAT_XRGB8888,
+ LOCAL_I915_FORMAT_MOD_Y_TILED,
+ pipe, output, rot);
+ }
+ }
+}
+
+static bool can_draw(uint32_t drm_format)
+{
+ const uint32_t *drm_formats;
+ int format_count, i;
+
+ igt_get_all_cairo_formats(&drm_formats, &format_count);
+
+ for (i = 0; i < format_count; i++)
+ if (drm_formats[i] == drm_format)
+ return true;
+
+ return false;
+}
+
+static void test_scaler_with_pixel_format_pipe(data_t *d, enum pipe pipe, igt_output_t *output)
+{
+ igt_display_t *display = &d->display;
+ igt_plane_t *plane;
+
+ igt_output_set_pipe(output, pipe);
+
+ for_each_plane_on_pipe(display, pipe, plane) {
+ if (plane->type == DRM_PLANE_TYPE_CURSOR)
+ continue;
+
+ for (int i = 0; i < MAX_TILING; i++) {
+ uint64_t tiling = get_tiling(i);
+ int j;
+
+ for (j = 0; j < plane->drm_plane->count_formats; j++) {
+ uint32_t format = plane->drm_plane->formats[j];
+
+ if (can_draw(format))
+ check_scaling_pipe_plane_rot(d, plane,
+ format, tiling,
+ pipe, output, IGT_ROTATION_0);
+ }
+ }
+ }
+}
+
/* does iterative scaling on plane2 */
static void iterate_plane_scaling(data_t *d, drmModeModeInfo *mode)
{
@@ -293,6 +443,15 @@ igt_main
igt_subtest_f("pipe-%s-plane-scaling", kmstest_pipe_name(pipe))
for_each_valid_output_on_pipe(&data.display, pipe, output)
test_plane_scaling_on_pipe(&data, pipe, output);
+
+ igt_subtest_f("pipe-%s-scaler-with-pixel-format", kmstest_pipe_name(pipe))
+ for_each_valid_output_on_pipe(&data.display, pipe, output)
+ test_scaler_with_pixel_format_pipe(&data, pipe, output);
+
+ igt_subtest_f("pipe-%s-scaler-with-rotation", kmstest_pipe_name(pipe))
+ for_each_valid_output_on_pipe(&data.display, pipe, output)
+ test_scaler_with_rotation_pipe(&data, pipe, output);
+
}
igt_fixture
--
2.15.1
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply related [flat|nested] 30+ messages in thread
* [PATCH i-g-t v3 7/8] tests/kms_plane_scaling: test scaler with clipping clamping, v3.
2018-01-15 14:28 [PATCH i-g-t v3 0/8] kms_plane_scaling tests Maarten Lankhorst
` (5 preceding siblings ...)
2018-01-15 14:28 ` [PATCH i-g-t v3 6/8] tests/kms_plane_scaling: test scaling with tiling rotation and pixel formats, v2 Maarten Lankhorst
@ 2018-01-15 14:28 ` Maarten Lankhorst
2018-01-16 11:14 ` Mika Kahola
2018-01-15 14:28 ` [PATCH i-g-t v3 8/8] tests/kms_plane_scaling: test for multi pipe with scaling, v3 Maarten Lankhorst
` (8 subsequent siblings)
15 siblings, 1 reply; 30+ messages in thread
From: Maarten Lankhorst @ 2018-01-15 14:28 UTC (permalink / raw)
To: intel-gfx; +Cc: Vidya Srinivas
From: Jyoti Yadav <jyoti.r.yadav@intel.com>
This patch adds subtest to test scaler clipping and clamping
scenario.
Changes since v1:
- Modify test to work with the changes to kms_plane_scaling. (Maarten)
Changes since v2:
- Use get_num_scalers() to skip when needed.
Signed-off-by: Jyoti Yadav <jyoti.r.yadav@intel.com>
Signed-off-by: Mahesh Kumar <mahesh1.kumar@intel.com>
Signed-off-by: Vidya Srinivas <vidya.srinivas@intel.com>
Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
---
tests/kms_plane_scaling.c | 43 +++++++++++++++++++++++++++++++++++++++++++
1 file changed, 43 insertions(+)
diff --git a/tests/kms_plane_scaling.c b/tests/kms_plane_scaling.c
index f514459584d1..36a6a8ef042b 100644
--- a/tests/kms_plane_scaling.c
+++ b/tests/kms_plane_scaling.c
@@ -416,6 +416,46 @@ test_plane_scaling_on_pipe(data_t *d, enum pipe pipe, igt_output_t *output)
}
}
+static void
+test_scaler_with_clipping_clamping_scenario(data_t *d, enum pipe pipe, igt_output_t *output)
+{
+ drmModeModeInfo *mode;
+
+ igt_require(get_num_scalers(d->devid, pipe) >= 2);
+
+ mode = igt_output_get_mode(output);
+ d->plane1 = &d->display.pipes[pipe].planes[0];
+ prepare_crtc(d, output, pipe, d->plane1, mode);
+
+ igt_create_pattern_fb(d->drm_fd,
+ mode->hdisplay, mode->vdisplay,
+ DRM_FORMAT_XRGB8888,
+ LOCAL_I915_FORMAT_MOD_X_TILED, &d->fb[1]);
+
+ igt_create_pattern_fb(d->drm_fd,
+ mode->hdisplay, mode->vdisplay,
+ DRM_FORMAT_XRGB8888,
+ LOCAL_I915_FORMAT_MOD_Y_TILED, &d->fb[2]);
+
+ igt_plane_set_fb(d->plane1, &d->fb[1]);
+ d->plane2 = igt_output_get_plane(output, 1);
+ igt_plane_set_fb(d->plane2, &d->fb[2]);
+
+ igt_fb_set_position(&d->fb[1], d->plane1, 0, 0);
+ igt_fb_set_size(&d->fb[1], d->plane1, 300, 300);
+ igt_plane_set_position(d->plane1, 100, 400);
+ igt_fb_set_position(&d->fb[2], d->plane2, 0, 0);
+ igt_fb_set_size(&d->fb[2], d->plane2, 400, 400);
+ igt_plane_set_position(d->plane2, 100, 100);
+
+ /* scaled window size is outside the modeset area.*/
+ igt_plane_set_size(d->plane1, mode->hdisplay + 200,
+ mode->vdisplay + 200);
+ igt_plane_set_size(d->plane2, mode->hdisplay + 100,
+ mode->vdisplay + 100);
+ igt_display_commit2(&d->display, COMMIT_ATOMIC);
+}
+
igt_main
{
data_t data = {};
@@ -452,6 +492,9 @@ igt_main
for_each_valid_output_on_pipe(&data.display, pipe, output)
test_scaler_with_rotation_pipe(&data, pipe, output);
+ igt_subtest_f("pipe-%s-scaler-with-clipping-clamping", kmstest_pipe_name(pipe))
+ for_each_valid_output_on_pipe(&data.display, pipe, output)
+ test_scaler_with_clipping_clamping_scenario(&data, pipe, output);
}
igt_fixture
--
2.15.1
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply related [flat|nested] 30+ messages in thread
* [PATCH i-g-t v3 8/8] tests/kms_plane_scaling: test for multi pipe with scaling, v3.
2018-01-15 14:28 [PATCH i-g-t v3 0/8] kms_plane_scaling tests Maarten Lankhorst
` (6 preceding siblings ...)
2018-01-15 14:28 ` [PATCH i-g-t v3 7/8] tests/kms_plane_scaling: test scaler with clipping clamping, v3 Maarten Lankhorst
@ 2018-01-15 14:28 ` Maarten Lankhorst
2018-01-16 13:46 ` Mika Kahola
2018-01-15 16:05 ` ✓ Fi.CI.BAT: success for kms_plane_scaling tests Patchwork
` (7 subsequent siblings)
15 siblings, 1 reply; 30+ messages in thread
From: Maarten Lankhorst @ 2018-01-15 14:28 UTC (permalink / raw)
To: intel-gfx; +Cc: Vidya Srinivas
From: Jyoti Yadav <jyoti.r.yadav@intel.com>
Add a subtest to display primary and overlay planes on two
connected pipes and runs scaling test on both pipes
Changes since v1:
- Commit first before trying any scaling. (Maarten)
- Use the same logic as kms_cursor_legacy to find a pipe and output. (Maarten)
- Rework test to work with how cleanup is handled. (Maarten)
Changes since v2:
- Use get_num_scalers() to only use 2 scalers if available. (Maarten)
Signed-off-by: Jyoti Yadav <jyoti.r.yadav@intel.com>
Signed-off-by: Mahesh Kumar <mahesh1.kumar@intel.com>
Signed-off-by: Vidya Srinivas <vidya.srinivas@intel.com>
Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
---
tests/kms_plane_scaling.c | 93 ++++++++++++++++++++++++++++++++++++++++++++++-
1 file changed, 92 insertions(+), 1 deletion(-)
diff --git a/tests/kms_plane_scaling.c b/tests/kms_plane_scaling.c
index 36a6a8ef042b..8dbacf67b0a0 100644
--- a/tests/kms_plane_scaling.c
+++ b/tests/kms_plane_scaling.c
@@ -38,10 +38,12 @@ typedef struct {
int image_w;
int image_h;
- struct igt_fb fb[3];
+ struct igt_fb fb[4];
+
igt_plane_t *plane1;
igt_plane_t *plane2;
igt_plane_t *plane3;
+ igt_plane_t *plane4;
} data_t;
static int get_num_scalers(uint32_t devid, enum pipe pipe)
@@ -456,6 +458,92 @@ test_scaler_with_clipping_clamping_scenario(data_t *d, enum pipe pipe, igt_outpu
igt_display_commit2(&d->display, COMMIT_ATOMIC);
}
+static void find_connected_pipe(igt_display_t *display, bool second, enum pipe *pipe, igt_output_t **output)
+{
+ enum pipe first = PIPE_NONE;
+ igt_output_t *first_output = NULL;
+ bool found = false;
+
+ for_each_pipe_with_valid_output(display, *pipe, *output) {
+ if (first == *pipe || *output == first_output)
+ continue;
+
+ if (second) {
+ first = *pipe;
+ first_output = *output;
+ second = false;
+ continue;
+ }
+
+ return;
+ }
+
+ if (first_output)
+ igt_require_f(found, "No second valid output found\n");
+ else
+ igt_require_f(found, "No valid outputs found\n");
+}
+
+static void test_scaler_with_multi_pipe_plane(data_t *d)
+{
+ igt_display_t *display = &d->display;
+ igt_output_t *output1, *output2;
+ drmModeModeInfo *mode1, *mode2;
+ enum pipe pipe1, pipe2;
+
+ cleanup_crtc(d);
+
+ find_connected_pipe(display, false, &pipe1, &output1);
+ find_connected_pipe(display, true, &pipe2, &output2);
+
+ igt_skip_on(!output1 || !output2);
+
+ igt_output_set_pipe(output1, pipe1);
+ igt_output_set_pipe(output2, pipe2);
+
+ d->plane1 = igt_output_get_plane(output1, 0);
+ d->plane2 = get_num_scalers(d->devid, pipe1) >= 2 ? igt_output_get_plane(output1, 1) : NULL;
+ d->plane3 = igt_output_get_plane(output2, 0);
+ d->plane4 = get_num_scalers(d->devid, pipe2) >= 2 ? igt_output_get_plane(output2, 1) : NULL;
+
+ mode1 = igt_output_get_mode(output1);
+ mode2 = igt_output_get_mode(output2);
+
+ igt_create_pattern_fb(d->drm_fd, 600, 600,
+ DRM_FORMAT_XRGB8888,
+ LOCAL_I915_FORMAT_MOD_Y_TILED, &d->fb[0]);
+
+ igt_create_pattern_fb(d->drm_fd, 500, 500,
+ DRM_FORMAT_XRGB8888,
+ LOCAL_I915_FORMAT_MOD_Y_TILED, &d->fb[1]);
+
+ igt_create_pattern_fb(d->drm_fd, 700, 700,
+ DRM_FORMAT_XRGB8888,
+ LOCAL_I915_FORMAT_MOD_Y_TILED, &d->fb[2]);
+
+ igt_create_pattern_fb(d->drm_fd, 400, 400,
+ DRM_FORMAT_XRGB8888,
+ LOCAL_I915_FORMAT_MOD_Y_TILED, &d->fb[3]);
+
+ igt_plane_set_fb(d->plane1, &d->fb[0]);
+ if (d->plane2)
+ igt_plane_set_fb(d->plane2, &d->fb[1]);
+ igt_plane_set_fb(d->plane3, &d->fb[2]);
+ if (d->plane4)
+ igt_plane_set_fb(d->plane4, &d->fb[3]);
+ igt_display_commit2(display, COMMIT_ATOMIC);
+
+ /* Upscaling Primary */
+ igt_plane_set_size(d->plane1, mode1->hdisplay, mode1->vdisplay);
+ igt_plane_set_size(d->plane3, mode2->hdisplay, mode2->vdisplay);
+ igt_display_commit2(display, COMMIT_ATOMIC);
+
+ /* Upscaling Sprites */
+ igt_plane_set_size(d->plane2 ?: d->plane1, mode1->hdisplay, mode1->vdisplay);
+ igt_plane_set_size(d->plane4 ?: d->plane3, mode2->hdisplay, mode2->vdisplay);
+ igt_display_commit2(display, COMMIT_ATOMIC);
+}
+
igt_main
{
data_t data = {};
@@ -497,6 +585,9 @@ igt_main
test_scaler_with_clipping_clamping_scenario(&data, pipe, output);
}
+ igt_subtest_f("2x-scaler-multi-pipe")
+ test_scaler_with_multi_pipe_plane(&data);
+
igt_fixture
igt_display_fini(&data.display);
}
--
2.15.1
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply related [flat|nested] 30+ messages in thread
* ✓ Fi.CI.BAT: success for kms_plane_scaling tests.
2018-01-15 14:28 [PATCH i-g-t v3 0/8] kms_plane_scaling tests Maarten Lankhorst
` (7 preceding siblings ...)
2018-01-15 14:28 ` [PATCH i-g-t v3 8/8] tests/kms_plane_scaling: test for multi pipe with scaling, v3 Maarten Lankhorst
@ 2018-01-15 16:05 ` Patchwork
2018-01-15 19:25 ` ✗ Fi.CI.IGT: failure " Patchwork
` (6 subsequent siblings)
15 siblings, 0 replies; 30+ messages in thread
From: Patchwork @ 2018-01-15 16:05 UTC (permalink / raw)
To: Maarten Lankhorst; +Cc: intel-gfx
== Series Details ==
Series: kms_plane_scaling tests.
URL : https://patchwork.freedesktop.org/series/36485/
State : success
== Summary ==
IGT patchset tested on top of latest successful build
84a308022028a55903a1916fcee516aab768ed48 tests/kms_plane: Run test for all supported pixel formats, v2.
with latest DRM-Tip kernel build CI_DRM_3633
37eb04c6fe0c drm-tip: 2018y-01m-15d-14h-18m-36s UTC integration manifest
Testlist changes:
+igt@kms_plane_scaling@2x-scaler-multi-pipe
+igt@kms_plane_scaling@pipe-a-plane-scaling
+igt@kms_plane_scaling@pipe-a-scaler-with-clipping-clamping
+igt@kms_plane_scaling@pipe-a-scaler-with-pixel-format
+igt@kms_plane_scaling@pipe-a-scaler-with-rotation
+igt@kms_plane_scaling@pipe-b-plane-scaling
+igt@kms_plane_scaling@pipe-b-scaler-with-clipping-clamping
+igt@kms_plane_scaling@pipe-b-scaler-with-pixel-format
+igt@kms_plane_scaling@pipe-b-scaler-with-rotation
+igt@kms_plane_scaling@pipe-c-plane-scaling
+igt@kms_plane_scaling@pipe-c-scaler-with-clipping-clamping
+igt@kms_plane_scaling@pipe-c-scaler-with-pixel-format
+igt@kms_plane_scaling@pipe-c-scaler-with-rotation
+igt@kms_plane_scaling@pipe-d-plane-scaling
+igt@kms_plane_scaling@pipe-d-scaler-with-clipping-clamping
+igt@kms_plane_scaling@pipe-d-scaler-with-pixel-format
+igt@kms_plane_scaling@pipe-d-scaler-with-rotation
+igt@kms_plane_scaling@pipe-e-plane-scaling
+igt@kms_plane_scaling@pipe-e-scaler-with-clipping-clamping
+igt@kms_plane_scaling@pipe-e-scaler-with-pixel-format
+igt@kms_plane_scaling@pipe-e-scaler-with-rotation
+igt@kms_plane_scaling@pipe-f-plane-scaling
+igt@kms_plane_scaling@pipe-f-scaler-with-clipping-clamping
+igt@kms_plane_scaling@pipe-f-scaler-with-pixel-format
+igt@kms_plane_scaling@pipe-f-scaler-with-rotation
-igt@kms_plane_scaling
Test debugfs_test:
Subgroup read_all_entries:
dmesg-fail -> DMESG-WARN (fi-elk-e7500) fdo#103989 +2
fdo#103989 https://bugs.freedesktop.org/show_bug.cgi?id=103989
fi-bdw-5557u total:288 pass:267 dwarn:0 dfail:0 fail:0 skip:21 time:421s
fi-bdw-gvtdvm total:288 pass:264 dwarn:0 dfail:0 fail:0 skip:24 time:428s
fi-blb-e6850 total:288 pass:223 dwarn:1 dfail:0 fail:0 skip:64 time:373s
fi-bsw-n3050 total:288 pass:242 dwarn:0 dfail:0 fail:0 skip:46 time:490s
fi-bwr-2160 total:288 pass:183 dwarn:0 dfail:0 fail:0 skip:105 time:282s
fi-bxt-dsi total:288 pass:258 dwarn:0 dfail:0 fail:0 skip:30 time:486s
fi-bxt-j4205 total:288 pass:259 dwarn:0 dfail:0 fail:0 skip:29 time:493s
fi-byt-j1900 total:288 pass:253 dwarn:0 dfail:0 fail:0 skip:35 time:482s
fi-byt-n2820 total:288 pass:249 dwarn:0 dfail:0 fail:0 skip:39 time:467s
fi-elk-e7500 total:229 pass:172 dwarn:10 dfail:0 fail:0 skip:46
fi-gdg-551 total:288 pass:179 dwarn:0 dfail:0 fail:1 skip:108 time:279s
fi-glk-1 total:288 pass:260 dwarn:0 dfail:0 fail:0 skip:28 time:514s
fi-hsw-4770 total:288 pass:261 dwarn:0 dfail:0 fail:0 skip:27 time:394s
fi-hsw-4770r total:288 pass:261 dwarn:0 dfail:0 fail:0 skip:27 time:404s
fi-ivb-3520m total:288 pass:259 dwarn:0 dfail:0 fail:0 skip:29 time:447s
fi-ivb-3770 total:288 pass:255 dwarn:0 dfail:0 fail:0 skip:33 time:414s
fi-kbl-7500u total:288 pass:263 dwarn:1 dfail:0 fail:0 skip:24 time:464s
fi-kbl-7560u total:288 pass:269 dwarn:0 dfail:0 fail:0 skip:19 time:498s
fi-kbl-7567u total:288 pass:268 dwarn:0 dfail:0 fail:0 skip:20 time:452s
fi-kbl-r total:288 pass:260 dwarn:1 dfail:0 fail:0 skip:27 time:505s
fi-pnv-d510 total:288 pass:222 dwarn:1 dfail:0 fail:0 skip:65 time:582s
fi-skl-6260u total:288 pass:268 dwarn:0 dfail:0 fail:0 skip:20 time:448s
fi-skl-6600u total:288 pass:261 dwarn:0 dfail:0 fail:0 skip:27 time:511s
fi-skl-6700hq total:288 pass:262 dwarn:0 dfail:0 fail:0 skip:26 time:527s
fi-skl-6700k2 total:288 pass:264 dwarn:0 dfail:0 fail:0 skip:24 time:498s
fi-skl-6770hq total:288 pass:268 dwarn:0 dfail:0 fail:0 skip:20 time:498s
fi-snb-2520m total:288 pass:248 dwarn:0 dfail:0 fail:0 skip:40 time:534s
fi-snb-2600 total:288 pass:248 dwarn:0 dfail:0 fail:0 skip:40 time:410s
Blacklisted hosts:
fi-cfl-s2 total:288 pass:262 dwarn:0 dfail:0 fail:0 skip:26 time:573s
fi-glk-dsi total:288 pass:258 dwarn:0 dfail:0 fail:0 skip:30 time:473s
== Logs ==
For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_777/issues.html
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply [flat|nested] 30+ messages in thread
* ✗ Fi.CI.IGT: failure for kms_plane_scaling tests.
2018-01-15 14:28 [PATCH i-g-t v3 0/8] kms_plane_scaling tests Maarten Lankhorst
` (8 preceding siblings ...)
2018-01-15 16:05 ` ✓ Fi.CI.BAT: success for kms_plane_scaling tests Patchwork
@ 2018-01-15 19:25 ` Patchwork
2018-01-16 9:14 ` ✓ Fi.CI.BAT: success " Patchwork
` (5 subsequent siblings)
15 siblings, 0 replies; 30+ messages in thread
From: Patchwork @ 2018-01-15 19:25 UTC (permalink / raw)
To: Maarten Lankhorst; +Cc: intel-gfx
== Series Details ==
Series: kms_plane_scaling tests.
URL : https://patchwork.freedesktop.org/series/36485/
State : failure
== Summary ==
Test gem_cpu_reloc:
Subgroup full:
pass -> DMESG-FAIL (shard-hsw)
shard-hsw total:2753 pass:1548 dwarn:1 dfail:1 fail:10 skip:1193 time:9048s
shard-snb total:2753 pass:1319 dwarn:1 dfail:0 fail:10 skip:1423 time:7891s
Blacklisted hosts:
shard-apl total:2753 pass:1709 dwarn:3 dfail:0 fail:21 skip:1020 time:13610s
shard-kbl total:2702 pass:1789 dwarn:3 dfail:0 fail:23 skip:885 time:10236s
== Logs ==
For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_777/shards.html
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply [flat|nested] 30+ messages in thread
* Re: [PATCH i-g-t v3 4/8] tests/kms_plane_scaling: Move get_num_scalers to a function.
2018-01-15 14:28 ` [PATCH i-g-t v3 4/8] tests/kms_plane_scaling: Move get_num_scalers to a function Maarten Lankhorst
@ 2018-01-16 8:22 ` Mika Kahola
2018-01-16 10:03 ` [PATCH i-g-t] tests/kms_plane_scaling: Move get_num_scalers to a function, v2 Maarten Lankhorst
1 sibling, 0 replies; 30+ messages in thread
From: Mika Kahola @ 2018-01-16 8:22 UTC (permalink / raw)
To: Maarten Lankhorst, intel-gfx
On Mon, 2018-01-15 at 15:28 +0100, Maarten Lankhorst wrote:
> The number of scalers can depend on the pipe, so require at least 1
> scaler before running any subtests.
>
> Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
> ---
> tests/kms_plane_scaling.c | 20 ++++++++++++++------
> 1 file changed, 14 insertions(+), 6 deletions(-)
>
> diff --git a/tests/kms_plane_scaling.c b/tests/kms_plane_scaling.c
> index 7e9a948a6b33..d1afcc819d0a 100644
> --- a/tests/kms_plane_scaling.c
> +++ b/tests/kms_plane_scaling.c
> @@ -38,8 +38,6 @@ typedef struct {
> int image_w;
> int image_h;
>
> - int num_scalers;
> -
> struct igt_fb fb1;
> struct igt_fb fb2;
> struct igt_fb fb3;
> @@ -53,6 +51,16 @@ typedef struct {
> igt_plane_t *plane4;
> } data_t;
>
> +static int get_num_scalers(uint32_t devid, enum pipe pipe)
> +{
> + igt_require(intel_gen(devid) >= 9);
> +
> + if (intel_gen(devid) > 9 || pipe != PIPE_C)
> + return 2;
> + else
> + return 1;
> +}
From GEN10 onwards, we have symmetric pipes and therefore the number of
scalers is the same for all pipes. I suggest that we update this to
match with the kernel implementation from
intel_device_info_runtime_init() such as.
if (intel_gen(devid) >= 10)
return 2;
else if (intel_gen(devid) == 9 && pipe != PIPE_C)
return 2;
else
return 1;
> +
> static void prepare_crtc(data_t *data, igt_output_t *output, enum
> pipe pipe,
> igt_plane_t *plane, drmModeModeInfo *mode,
> enum igt_commit_style s)
> {
> @@ -170,8 +178,6 @@ test_plane_scaling_on_pipe(data_t *d, enum pipe
> pipe, igt_output_t *output)
> drmModeModeInfo *mode;
> int primary_plane_scaling = 0; /* For now */
>
> - igt_require(d->num_scalers > 0);
> -
> igt_display_reset(display);
> igt_output_set_pipe(output, pipe);
> mode = igt_output_get_mode(output);
> @@ -310,15 +316,17 @@ igt_main
> igt_require_pipe_crc(data.drm_fd);
> igt_display_init(&data.display, data.drm_fd);
> data.devid = intel_get_drm_devid(data.drm_fd);
> - data.num_scalers = intel_gen(data.devid) >= 9 ? 2 :
> 0;
> }
>
> for_each_pipe_static(pipe) igt_subtest_group {
> igt_output_t *output;
>
> - igt_fixture
> + igt_fixture {
> igt_display_require_output_on_pipe(&data.dis
> play, pipe);
>
> + igt_require(get_num_scalers(data.devid,
> pipe) > 0);
> + }
> +
> igt_subtest_f("pipe-%s-plane-scaling",
> kmstest_pipe_name(pipe))
> for_each_valid_output_on_pipe(&data.display,
> pipe, output)
> test_plane_scaling_on_pipe(&data,
> pipe, output);
--
Mika Kahola - Intel OTC
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply [flat|nested] 30+ messages in thread
* ✓ Fi.CI.BAT: success for kms_plane_scaling tests.
2018-01-15 14:28 [PATCH i-g-t v3 0/8] kms_plane_scaling tests Maarten Lankhorst
` (9 preceding siblings ...)
2018-01-15 19:25 ` ✗ Fi.CI.IGT: failure " Patchwork
@ 2018-01-16 9:14 ` Patchwork
2018-01-16 10:24 ` ✓ Fi.CI.BAT: success for kms_plane_scaling tests. (rev2) Patchwork
` (4 subsequent siblings)
15 siblings, 0 replies; 30+ messages in thread
From: Patchwork @ 2018-01-16 9:14 UTC (permalink / raw)
To: Maarten Lankhorst; +Cc: intel-gfx
== Series Details ==
Series: kms_plane_scaling tests.
URL : https://patchwork.freedesktop.org/series/36485/
State : success
== Summary ==
IGT patchset tested on top of latest successful build
84a308022028a55903a1916fcee516aab768ed48 tests/kms_plane: Run test for all supported pixel formats, v2.
with latest DRM-Tip kernel build CI_DRM_3635
e5e5649796da drm-tip: 2018y-01m-16d-06h-56m-12s UTC integration manifest
Testlist changes:
+igt@kms_plane_scaling@2x-scaler-multi-pipe
+igt@kms_plane_scaling@pipe-a-plane-scaling
+igt@kms_plane_scaling@pipe-a-scaler-with-clipping-clamping
+igt@kms_plane_scaling@pipe-a-scaler-with-pixel-format
+igt@kms_plane_scaling@pipe-a-scaler-with-rotation
+igt@kms_plane_scaling@pipe-b-plane-scaling
+igt@kms_plane_scaling@pipe-b-scaler-with-clipping-clamping
+igt@kms_plane_scaling@pipe-b-scaler-with-pixel-format
+igt@kms_plane_scaling@pipe-b-scaler-with-rotation
+igt@kms_plane_scaling@pipe-c-plane-scaling
+igt@kms_plane_scaling@pipe-c-scaler-with-clipping-clamping
+igt@kms_plane_scaling@pipe-c-scaler-with-pixel-format
+igt@kms_plane_scaling@pipe-c-scaler-with-rotation
+igt@kms_plane_scaling@pipe-d-plane-scaling
+igt@kms_plane_scaling@pipe-d-scaler-with-clipping-clamping
+igt@kms_plane_scaling@pipe-d-scaler-with-pixel-format
+igt@kms_plane_scaling@pipe-d-scaler-with-rotation
+igt@kms_plane_scaling@pipe-e-plane-scaling
+igt@kms_plane_scaling@pipe-e-scaler-with-clipping-clamping
+igt@kms_plane_scaling@pipe-e-scaler-with-pixel-format
+igt@kms_plane_scaling@pipe-e-scaler-with-rotation
+igt@kms_plane_scaling@pipe-f-plane-scaling
+igt@kms_plane_scaling@pipe-f-scaler-with-clipping-clamping
+igt@kms_plane_scaling@pipe-f-scaler-with-pixel-format
+igt@kms_plane_scaling@pipe-f-scaler-with-rotation
-igt@kms_plane_scaling
Test debugfs_test:
Subgroup read_all_entries:
dmesg-warn -> DMESG-FAIL (fi-elk-e7500) fdo#103989 +1
Test kms_flip:
Subgroup basic-flip-vs-wf_vblank:
pass -> FAIL (fi-hsw-4770r) fdo#100368
Test kms_pipe_crc_basic:
Subgroup suspend-read-crc-pipe-a:
dmesg-warn -> PASS (fi-kbl-r) fdo#104172
Subgroup suspend-read-crc-pipe-b:
incomplete -> PASS (fi-snb-2520m) fdo#103713
fdo#103989 https://bugs.freedesktop.org/show_bug.cgi?id=103989
fdo#100368 https://bugs.freedesktop.org/show_bug.cgi?id=100368
fdo#104172 https://bugs.freedesktop.org/show_bug.cgi?id=104172
fdo#103713 https://bugs.freedesktop.org/show_bug.cgi?id=103713
fi-bdw-5557u total:288 pass:267 dwarn:0 dfail:0 fail:0 skip:21 time:426s
fi-bdw-gvtdvm total:288 pass:264 dwarn:0 dfail:0 fail:0 skip:24 time:429s
fi-blb-e6850 total:288 pass:223 dwarn:1 dfail:0 fail:0 skip:64 time:374s
fi-bsw-n3050 total:288 pass:242 dwarn:0 dfail:0 fail:0 skip:46 time:489s
fi-bwr-2160 total:288 pass:183 dwarn:0 dfail:0 fail:0 skip:105 time:282s
fi-bxt-dsi total:288 pass:258 dwarn:0 dfail:0 fail:0 skip:30 time:481s
fi-bxt-j4205 total:288 pass:259 dwarn:0 dfail:0 fail:0 skip:29 time:486s
fi-byt-j1900 total:288 pass:253 dwarn:0 dfail:0 fail:0 skip:35 time:471s
fi-byt-n2820 total:288 pass:249 dwarn:0 dfail:0 fail:0 skip:39 time:459s
fi-elk-e7500 total:224 pass:169 dwarn:8 dfail:1 fail:0 skip:45
fi-gdg-551 total:288 pass:179 dwarn:0 dfail:0 fail:1 skip:108 time:277s
fi-glk-1 total:288 pass:260 dwarn:0 dfail:0 fail:0 skip:28 time:513s
fi-hsw-4770 total:288 pass:261 dwarn:0 dfail:0 fail:0 skip:27 time:393s
fi-hsw-4770r total:288 pass:260 dwarn:0 dfail:0 fail:1 skip:27 time:393s
fi-ivb-3520m total:288 pass:259 dwarn:0 dfail:0 fail:0 skip:29 time:451s
fi-ivb-3770 total:288 pass:255 dwarn:0 dfail:0 fail:0 skip:33 time:414s
fi-kbl-7500u total:288 pass:263 dwarn:1 dfail:0 fail:0 skip:24 time:462s
fi-kbl-7560u total:288 pass:269 dwarn:0 dfail:0 fail:0 skip:19 time:501s
fi-kbl-7567u total:288 pass:268 dwarn:0 dfail:0 fail:0 skip:20 time:455s
fi-kbl-r total:288 pass:261 dwarn:0 dfail:0 fail:0 skip:27 time:505s
fi-pnv-d510 total:288 pass:222 dwarn:1 dfail:0 fail:0 skip:65 time:583s
fi-skl-6260u total:288 pass:268 dwarn:0 dfail:0 fail:0 skip:20 time:429s
fi-skl-6600u total:288 pass:261 dwarn:0 dfail:0 fail:0 skip:27 time:512s
fi-skl-6700hq total:288 pass:262 dwarn:0 dfail:0 fail:0 skip:26 time:530s
fi-skl-6700k2 total:288 pass:264 dwarn:0 dfail:0 fail:0 skip:24 time:486s
fi-skl-6770hq total:288 pass:268 dwarn:0 dfail:0 fail:0 skip:20 time:476s
fi-skl-gvtdvm total:288 pass:265 dwarn:0 dfail:0 fail:0 skip:23 time:442s
fi-snb-2520m total:288 pass:248 dwarn:0 dfail:0 fail:0 skip:40 time:524s
fi-snb-2600 total:288 pass:248 dwarn:0 dfail:0 fail:0 skip:40 time:404s
Blacklisted hosts:
fi-cfl-s2 total:288 pass:262 dwarn:0 dfail:0 fail:0 skip:26 time:570s
== Logs ==
For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_778/issues.html
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply [flat|nested] 30+ messages in thread
* Re: [PATCH i-g-t v3 5/8] tests/kms_plane_scaling: Clean up tests to work better with igt_kms, v2.
2018-01-15 14:28 ` [PATCH i-g-t v3 5/8] tests/kms_plane_scaling: Clean up tests to work better with igt_kms, v2 Maarten Lankhorst
@ 2018-01-16 9:32 ` Mika Kahola
0 siblings, 0 replies; 30+ messages in thread
From: Mika Kahola @ 2018-01-16 9:32 UTC (permalink / raw)
To: Maarten Lankhorst, intel-gfx
On Mon, 2018-01-15 at 15:28 +0100, Maarten Lankhorst wrote:
> The test only runs on gen9+, so we can safely replace all calls with
> COMMIT_ATOMIC.
>
> Also perform some cleanups by making fb an array, and cleaning up in
> prepare_crtc. This way failed subtests won't cause failures in other
> subtests.
>
> Changes since v1:
> - Rebase on top of num_scalers changes.
>
Reviewed-by: Mika Kahola <mika.kahola@intel.com>
> Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
> ---
> tests/kms_plane_scaling.c | 235 +++++++++++++++++++-----------------
> ----------
> 1 file changed, 99 insertions(+), 136 deletions(-)
>
> diff --git a/tests/kms_plane_scaling.c b/tests/kms_plane_scaling.c
> index d1afcc819d0a..0ba209a3116b 100644
> --- a/tests/kms_plane_scaling.c
> +++ b/tests/kms_plane_scaling.c
> @@ -38,17 +38,10 @@ typedef struct {
> int image_w;
> int image_h;
>
> - struct igt_fb fb1;
> - struct igt_fb fb2;
> - struct igt_fb fb3;
> - int fb_id1;
> - int fb_id2;
> - int fb_id3;
> -
> + struct igt_fb fb[3];
> igt_plane_t *plane1;
> igt_plane_t *plane2;
> igt_plane_t *plane3;
> - igt_plane_t *plane4;
> } data_t;
>
> static int get_num_scalers(uint32_t devid, enum pipe pipe)
> @@ -61,78 +54,60 @@ static int get_num_scalers(uint32_t devid, enum
> pipe pipe)
> return 1;
> }
>
> -static void prepare_crtc(data_t *data, igt_output_t *output, enum
> pipe pipe,
> - igt_plane_t *plane, drmModeModeInfo *mode,
> enum igt_commit_style s)
> +static void cleanup_crtc(data_t *data)
> {
> - igt_display_t *display = &data->display;
> -
> - igt_output_set_pipe(output, pipe);
> + int i;
>
> - /* create the pipe_crc object for this pipe */
> igt_pipe_crc_free(data->pipe_crc);
> - data->pipe_crc = igt_pipe_crc_new(data->drm_fd, pipe,
> INTEL_PIPE_CRC_SOURCE_AUTO);
> -
> - /* before allocating, free if any older fb */
> - if (data->fb_id1) {
> - igt_remove_fb(data->drm_fd, &data->fb1);
> - data->fb_id1 = 0;
> - }
> + data->pipe_crc = NULL;
>
> - /* allocate fb for plane 1 */
> - data->fb_id1 = igt_create_pattern_fb(data->drm_fd,
> - mode->hdisplay, mode-
> >vdisplay,
> - DRM_FORMAT_XRGB8888,
> - LOCAL_I915_FORMAT_MOD_X
> _TILED, /* tiled */
> - &data->fb1);
> - igt_assert(data->fb_id1);
> -
> - /*
> - * We always set the primary plane to actually enable the
> pipe as
> - * there's no way (that works) to light up a pipe with only
> a sprite
> - * plane enabled at the moment.
> - */
> - if (plane->type != DRM_PLANE_TYPE_PRIMARY) {
> - igt_plane_t *primary;
> + for (i = 0; i < ARRAY_SIZE(data->fb); i++) {
> + if (!data->fb[i].fb_id)
> + continue;
>
> - primary = igt_output_get_plane_type(output,
> DRM_PLANE_TYPE_PRIMARY);
> - igt_plane_set_fb(primary, &data->fb1);
> + igt_remove_fb(data->drm_fd, &data->fb[i]);
> + data->fb[i].fb_id = 0;
> }
> -
> - igt_plane_set_fb(plane, &data->fb1);
> - igt_display_commit2(display, s);
> }
>
> -static void cleanup_crtc(data_t *data, igt_output_t *output,
> igt_plane_t *plane)
> +static void prepare_crtc(data_t *data, igt_output_t *output, enum
> pipe pipe,
> + igt_plane_t *plane, drmModeModeInfo *mode)
> {
> igt_display_t *display = &data->display;
>
> - igt_pipe_crc_free(data->pipe_crc);
> - data->pipe_crc = NULL;
> + cleanup_crtc(data);
>
> - if (data->fb_id1) {
> - igt_remove_fb(data->drm_fd, &data->fb1);
> - data->fb_id1 = 0;
> - }
> - if (data->fb_id2) {
> - igt_remove_fb(data->drm_fd, &data->fb2);
> - data->fb_id2 = 0;
> - }
> - if (data->fb_id3) {
> - igt_remove_fb(data->drm_fd, &data->fb3);
> - data->fb_id3 = 0;
> - }
> + igt_display_reset(display);
> + igt_output_set_pipe(output, pipe);
> +
> + /* create the pipe_crc object for this pipe */
> + data->pipe_crc = igt_pipe_crc_new(data->drm_fd, pipe,
> INTEL_PIPE_CRC_SOURCE_AUTO);
> +
> + /* allocate fb for plane 1 */
> + igt_create_pattern_fb(data->drm_fd, mode->hdisplay, mode-
> >vdisplay,
> + DRM_FORMAT_XRGB8888,
> + LOCAL_I915_FORMAT_MOD_X_TILED, /*
> tiled */
> + &data->fb[0]);
> +
> + igt_plane_set_fb(plane, &data->fb[0]);
>
> if (plane->type != DRM_PLANE_TYPE_PRIMARY) {
> igt_plane_t *primary;
> + int ret;
> +
> + /* Do we succeed without enabling the primary plane?
> */
> + ret = igt_display_try_commit2(display,
> COMMIT_ATOMIC);
> + if (!ret)
> + return;
>
> + /*
> + * Fallback: set the primary plane to actually
> enable the pipe.
> + * Some drivers always require the primary plane to
> be enabled.
> + */
> primary = igt_output_get_plane_type(output,
> DRM_PLANE_TYPE_PRIMARY);
> - igt_plane_set_fb(primary, NULL);
> + igt_plane_set_fb(primary, &data->fb[0]);
> }
> -
> - igt_plane_set_fb(plane, NULL);
> - igt_output_set_pipe(output, PIPE_ANY);
> -
> - igt_display_commit2(display, COMMIT_UNIVERSAL);
> + igt_display_commit2(display, COMMIT_ATOMIC);
> }
>
> /* does iterative scaling on plane2 */
> @@ -140,33 +115,32 @@ static void iterate_plane_scaling(data_t *d,
> drmModeModeInfo *mode)
> {
> igt_display_t *display = &d->display;
>
> - if (mode->hdisplay >= d->fb2.width) {
> + if (mode->hdisplay >= d->fb[1].width) {
> int w, h;
> /* fixed fb */
> - igt_fb_set_position(&d->fb2, d->plane2, 0, 0);
> - igt_fb_set_size(&d->fb2, d->plane2, d->fb2.width, d-
> >fb2.height);
> + igt_fb_set_position(&d->fb[1], d->plane2, 0, 0);
> + igt_fb_set_size(&d->fb[1], d->plane2, d-
> >fb[1].width, d->fb[1].height);
> igt_plane_set_position(d->plane2, 0, 0);
>
> /* adjust plane size */
> - for (w = d->fb2.width; w <= mode->hdisplay; w+=10) {
> - h = w * d->fb2.height / d->fb2.width;
> + for (w = d->fb[1].width; w <= mode->hdisplay; w+=10)
> {
> + h = w * d->fb[1].height / d->fb[1].width;
> igt_plane_set_size(d->plane2, w, h);
> - igt_display_commit2(display,
> COMMIT_UNIVERSAL);
> + igt_display_commit2(display, COMMIT_ATOMIC);
> }
> } else {
> int w, h;
> /* fixed plane */
> igt_plane_set_position(d->plane2, 0, 0);
> igt_plane_set_size(d->plane2, mode->hdisplay, mode-
> >vdisplay);
> - igt_fb_set_position(&d->fb2, d->plane2, 0, 0);
> + igt_fb_set_position(&d->fb[1], d->plane2, 0, 0);
>
> /* adjust fb size */
> - for (w = mode->hdisplay; w <= d->fb2.width; w+=10) {
> + for (w = mode->hdisplay; w <= d->fb[1].width; w+=10)
> {
> /* Source coordinates must not be clipped.
> */
> - h = min(w * mode->hdisplay / mode->vdisplay,
> d->fb2.height);
> -
> - igt_fb_set_size(&d->fb2, d->plane2, w, h);
> - igt_display_commit2(display,
> COMMIT_UNIVERSAL);
> + h = min(w * mode->hdisplay / mode->vdisplay,
> d->fb[1].height);
> + igt_fb_set_size(&d->fb[1], d->plane2, w, h);
> + igt_display_commit2(display, COMMIT_ATOMIC);
> }
> }
> }
> @@ -178,130 +152,118 @@ test_plane_scaling_on_pipe(data_t *d, enum
> pipe pipe, igt_output_t *output)
> drmModeModeInfo *mode;
> int primary_plane_scaling = 0; /* For now */
>
> - igt_display_reset(display);
> - igt_output_set_pipe(output, pipe);
> mode = igt_output_get_mode(output);
>
> - d->fb_id2 = igt_create_color_pattern_fb(display->drm_fd,
> 600, 600,
> - DRM_FORMAT_XRGB8888,
> - LOCAL_I915_FORMAT_MO
> D_X_TILED, /* tiled */
> - .5, .5, .5, &d-
> >fb2);
> - igt_assert(d->fb_id2);
> + /* Set up display with plane 1 */
> + d->plane1 = &display->pipes[pipe].planes[0];
> + prepare_crtc(d, output, pipe, d->plane1, mode);
>
> - d->fb_id3 = igt_create_pattern_fb(d->drm_fd,
> - mode->hdisplay, mode-
> >vdisplay,
> - DRM_FORMAT_XRGB8888,
> - LOCAL_I915_FORMAT_MOD_X_TI
> LED, /* tiled */
> - &d->fb3);
> - igt_assert(d->fb_id3);
> + igt_create_color_pattern_fb(display->drm_fd, 600, 600,
> + DRM_FORMAT_XRGB8888,
> + LOCAL_I915_FORMAT_MOD_X_TILED,
> /* tiled */
> + .5, .5, .5, &d->fb[1]);
>
> - /* Set up display with plane 1 */
> - d->plane1 = igt_output_get_plane(output, 0);
> - prepare_crtc(d, output, pipe, d->plane1, mode,
> COMMIT_UNIVERSAL);
> + igt_create_pattern_fb(d->drm_fd,
> + mode->hdisplay, mode->vdisplay,
> + DRM_FORMAT_XRGB8888,
> + LOCAL_I915_FORMAT_MOD_X_TILED, /*
> tiled */
> + &d->fb[2]);
>
> if (primary_plane_scaling) {
> /* Primary plane upscaling */
> - igt_fb_set_position(&d->fb1, d->plane1, 100, 100);
> - igt_fb_set_size(&d->fb1, d->plane1, 500, 500);
> + igt_fb_set_position(&d->fb[0], d->plane1, 100, 100);
> + igt_fb_set_size(&d->fb[0], d->plane1, 500, 500);
> igt_plane_set_position(d->plane1, 0, 0);
> igt_plane_set_size(d->plane1, mode->hdisplay, mode-
> >vdisplay);
> - igt_display_commit2(display, COMMIT_UNIVERSAL);
> + igt_display_commit2(display, COMMIT_ATOMIC);
>
> /* Primary plane 1:1 no scaling */
> - igt_fb_set_position(&d->fb1, d->plane1, 0, 0);
> - igt_fb_set_size(&d->fb1, d->plane1, d->fb1.width, d-
> >fb1.height);
> + igt_fb_set_position(&d->fb[0], d->plane1, 0, 0);
> + igt_fb_set_size(&d->fb[0], d->plane1, d-
> >fb[0].width, d->fb[0].height);
> igt_plane_set_position(d->plane1, 0, 0);
> igt_plane_set_size(d->plane1, mode->hdisplay, mode-
> >vdisplay);
> - igt_display_commit2(display, COMMIT_UNIVERSAL);
> + igt_display_commit2(display, COMMIT_ATOMIC);
> }
>
> - /* Set up fb2->plane2 mapping. */
> + /* Set up fb[1]->plane2 mapping. */
> d->plane2 = igt_output_get_plane(output, 1);
> - igt_plane_set_fb(d->plane2, &d->fb2);
> + igt_plane_set_fb(d->plane2, &d->fb[1]);
>
> /* 2nd plane windowed */
> - igt_fb_set_position(&d->fb2, d->plane2, 100, 100);
> - igt_fb_set_size(&d->fb2, d->plane2, d->fb2.width-200, d-
> >fb2.height-200);
> + igt_fb_set_position(&d->fb[1], d->plane2, 100, 100);
> + igt_fb_set_size(&d->fb[1], d->plane2, d->fb[1].width-200, d-
> >fb[1].height-200);
> igt_plane_set_position(d->plane2, 100, 100);
> igt_plane_set_size(d->plane2, mode->hdisplay-200, mode-
> >vdisplay-200);
> - igt_display_commit2(display, COMMIT_UNIVERSAL);
> + igt_display_commit2(display, COMMIT_ATOMIC);
>
> iterate_plane_scaling(d, mode);
>
> /* 2nd plane up scaling */
> - igt_fb_set_position(&d->fb2, d->plane2, 100, 100);
> - igt_fb_set_size(&d->fb2, d->plane2, 500, 500);
> + igt_fb_set_position(&d->fb[1], d->plane2, 100, 100);
> + igt_fb_set_size(&d->fb[1], d->plane2, 500, 500);
> igt_plane_set_position(d->plane2, 10, 10);
> igt_plane_set_size(d->plane2, mode->hdisplay-20, mode-
> >vdisplay-20);
> - igt_display_commit2(display, COMMIT_UNIVERSAL);
> + igt_display_commit2(display, COMMIT_ATOMIC);
>
> /* 2nd plane downscaling */
> - igt_fb_set_position(&d->fb2, d->plane2, 0, 0);
> - igt_fb_set_size(&d->fb2, d->plane2, d->fb2.width, d-
> >fb2.height);
> + igt_fb_set_position(&d->fb[1], d->plane2, 0, 0);
> + igt_fb_set_size(&d->fb[1], d->plane2, d->fb[1].width, d-
> >fb[1].height);
> igt_plane_set_position(d->plane2, 10, 10);
>
> /* Downscale (10/9)x of original image */
> - igt_plane_set_size(d->plane2, (d->fb2.width * 10)/9, (d-
> >fb2.height * 10)/9);
> - igt_display_commit2(display, COMMIT_UNIVERSAL);
> + igt_plane_set_size(d->plane2, (d->fb[1].width * 10)/9, (d-
> >fb[1].height * 10)/9);
> + igt_display_commit2(display, COMMIT_ATOMIC);
>
> if (primary_plane_scaling) {
> /* Primary plane up scaling */
> - igt_fb_set_position(&d->fb1, d->plane1, 100, 100);
> - igt_fb_set_size(&d->fb1, d->plane1, 500, 500);
> + igt_fb_set_position(&d->fb[0], d->plane1, 100, 100);
> + igt_fb_set_size(&d->fb[0], d->plane1, 500, 500);
> igt_plane_set_position(d->plane1, 0, 0);
> igt_plane_set_size(d->plane1, mode->hdisplay, mode-
> >vdisplay);
> - igt_display_commit2(display, COMMIT_UNIVERSAL);
> + igt_display_commit2(display, COMMIT_ATOMIC);
> }
>
> - /* Set up fb3->plane3 mapping. */
> + /* Set up fb[2]->plane3 mapping. */
> d->plane3 = igt_output_get_plane(output, 2);
> - igt_plane_set_fb(d->plane3, &d->fb3);
> + igt_plane_set_fb(d->plane3, &d->fb[2]);
>
> if(d->plane3->type == DRM_PLANE_TYPE_CURSOR) {
> igt_debug("Plane-3 doesnt exist on pipe %s\n",
> kmstest_pipe_name(pipe));
> - goto cleanup;
> + return;
> }
>
> /* 3rd plane windowed - no scaling */
> - igt_fb_set_position(&d->fb3, d->plane3, 100, 100);
> - igt_fb_set_size(&d->fb3, d->plane3, d->fb3.width-300, d-
> >fb3.height-300);
> + igt_fb_set_position(&d->fb[2], d->plane3, 100, 100);
> + igt_fb_set_size(&d->fb[2], d->plane3, d->fb[2].width-300, d-
> >fb[2].height-300);
> igt_plane_set_position(d->plane3, 100, 100);
> igt_plane_set_size(d->plane3, mode->hdisplay-300, mode-
> >vdisplay-300);
> - igt_display_commit2(display, COMMIT_UNIVERSAL);
> + igt_display_commit2(display, COMMIT_ATOMIC);
>
> /* Switch scaler from plane 2 to plane 3 */
> - igt_fb_set_position(&d->fb2, d->plane2, 100, 100);
> - igt_fb_set_size(&d->fb2, d->plane2, d->fb2.width-200, d-
> >fb2.height-200);
> + igt_fb_set_position(&d->fb[1], d->plane2, 100, 100);
> + igt_fb_set_size(&d->fb[1], d->plane2, d->fb[1].width-200, d-
> >fb[1].height-200);
> igt_plane_set_position(d->plane2, 100, 100);
> - igt_plane_set_size(d->plane2, d->fb2.width-200, d-
> >fb2.height-200);
> + igt_plane_set_size(d->plane2, d->fb[1].width-200, d-
> >fb[1].height-200);
>
> - igt_fb_set_position(&d->fb3, d->plane3, 100, 100);
> - igt_fb_set_size(&d->fb3, d->plane3, d->fb3.width-400, d-
> >fb3.height-400);
> + igt_fb_set_position(&d->fb[2], d->plane3, 100, 100);
> + igt_fb_set_size(&d->fb[2], d->plane3, d->fb[2].width-400, d-
> >fb[2].height-400);
> igt_plane_set_position(d->plane3, 10, 10);
> igt_plane_set_size(d->plane3, mode->hdisplay-300, mode-
> >vdisplay-300);
> - igt_display_commit2(display, COMMIT_UNIVERSAL);
> + igt_display_commit2(display, COMMIT_ATOMIC);
>
> if (primary_plane_scaling) {
> /* Switch scaler from plane 1 to plane 2 */
> - igt_fb_set_position(&d->fb1, d->plane1, 0, 0);
> - igt_fb_set_size(&d->fb1, d->plane1, d->fb1.width, d-
> >fb1.height);
> + igt_fb_set_position(&d->fb[0], d->plane1, 0, 0);
> + igt_fb_set_size(&d->fb[0], d->plane1, d-
> >fb[0].width, d->fb[0].height);
> igt_plane_set_position(d->plane1, 0, 0);
> igt_plane_set_size(d->plane1, mode->hdisplay, mode-
> >vdisplay);
>
> - igt_fb_set_position(&d->fb2, d->plane2, 100, 100);
> - igt_fb_set_size(&d->fb2, d->plane2, d->fb2.width-
> 500,d->fb2.height-500);
> + igt_fb_set_position(&d->fb[1], d->plane2, 100, 100);
> + igt_fb_set_size(&d->fb[1], d->plane2, d-
> >fb[1].width-500,d->fb[1].height-500);
> igt_plane_set_position(d->plane2, 100, 100);
> igt_plane_set_size(d->plane2, mode->hdisplay-200,
> mode->vdisplay-200);
> - igt_display_commit2(display, COMMIT_UNIVERSAL);
> + igt_display_commit2(display, COMMIT_ATOMIC);
> }
> -
> -cleanup:
> - /* back to single plane mode */
> - igt_plane_set_fb(d->plane2, NULL);
> - igt_plane_set_fb(d->plane3, NULL);
> - igt_display_commit2(display, COMMIT_UNIVERSAL);
> -
> - cleanup_crtc(d, output, d->plane1);
> }
>
> igt_main
> @@ -316,6 +278,7 @@ igt_main
> igt_require_pipe_crc(data.drm_fd);
> igt_display_init(&data.display, data.drm_fd);
> data.devid = intel_get_drm_devid(data.drm_fd);
> + igt_require(data.display.is_atomic);
> }
>
> for_each_pipe_static(pipe) igt_subtest_group {
--
Mika Kahola - Intel OTC
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply [flat|nested] 30+ messages in thread
* [PATCH i-g-t] tests/kms_plane_scaling: Move get_num_scalers to a function, v2.
2018-01-15 14:28 ` [PATCH i-g-t v3 4/8] tests/kms_plane_scaling: Move get_num_scalers to a function Maarten Lankhorst
2018-01-16 8:22 ` Mika Kahola
@ 2018-01-16 10:03 ` Maarten Lankhorst
2018-01-16 11:55 ` Mika Kahola
1 sibling, 1 reply; 30+ messages in thread
From: Maarten Lankhorst @ 2018-01-16 10:03 UTC (permalink / raw)
To: intel-gfx
The number of scalers can depend on the pipe, so require at least 1
scaler before running any subtests.
Changes since v1:
- More closely match kernel implementation. (Mika)
Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
---
tests/kms_plane_scaling.c | 22 ++++++++++++++++------
1 file changed, 16 insertions(+), 6 deletions(-)
diff --git a/tests/kms_plane_scaling.c b/tests/kms_plane_scaling.c
index 7e9a948a6b33..dd87bd090705 100644
--- a/tests/kms_plane_scaling.c
+++ b/tests/kms_plane_scaling.c
@@ -38,8 +38,6 @@ typedef struct {
int image_w;
int image_h;
- int num_scalers;
-
struct igt_fb fb1;
struct igt_fb fb2;
struct igt_fb fb3;
@@ -53,6 +51,18 @@ typedef struct {
igt_plane_t *plane4;
} data_t;
+static int get_num_scalers(uint32_t devid, enum pipe pipe)
+{
+ igt_require(intel_gen(devid) >= 9);
+
+ if (intel_gen(devid) >= 10)
+ return 2;
+ else if (pipe != PIPE_C)
+ return 2;
+ else
+ return 1;
+}
+
static void prepare_crtc(data_t *data, igt_output_t *output, enum pipe pipe,
igt_plane_t *plane, drmModeModeInfo *mode, enum igt_commit_style s)
{
@@ -170,8 +180,6 @@ test_plane_scaling_on_pipe(data_t *d, enum pipe pipe, igt_output_t *output)
drmModeModeInfo *mode;
int primary_plane_scaling = 0; /* For now */
- igt_require(d->num_scalers > 0);
-
igt_display_reset(display);
igt_output_set_pipe(output, pipe);
mode = igt_output_get_mode(output);
@@ -310,15 +318,17 @@ igt_main
igt_require_pipe_crc(data.drm_fd);
igt_display_init(&data.display, data.drm_fd);
data.devid = intel_get_drm_devid(data.drm_fd);
- data.num_scalers = intel_gen(data.devid) >= 9 ? 2 : 0;
}
for_each_pipe_static(pipe) igt_subtest_group {
igt_output_t *output;
- igt_fixture
+ igt_fixture {
igt_display_require_output_on_pipe(&data.display, pipe);
+ igt_require(get_num_scalers(data.devid, pipe) > 0);
+ }
+
igt_subtest_f("pipe-%s-plane-scaling", kmstest_pipe_name(pipe))
for_each_valid_output_on_pipe(&data.display, pipe, output)
test_plane_scaling_on_pipe(&data, pipe, output);
--
2.15.1
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply related [flat|nested] 30+ messages in thread
* ✓ Fi.CI.BAT: success for kms_plane_scaling tests. (rev2)
2018-01-15 14:28 [PATCH i-g-t v3 0/8] kms_plane_scaling tests Maarten Lankhorst
` (10 preceding siblings ...)
2018-01-16 9:14 ` ✓ Fi.CI.BAT: success " Patchwork
@ 2018-01-16 10:24 ` Patchwork
2018-01-16 11:14 ` ✗ Fi.CI.IGT: failure " Patchwork
` (3 subsequent siblings)
15 siblings, 0 replies; 30+ messages in thread
From: Patchwork @ 2018-01-16 10:24 UTC (permalink / raw)
To: Maarten Lankhorst; +Cc: intel-gfx
== Series Details ==
Series: kms_plane_scaling tests. (rev2)
URL : https://patchwork.freedesktop.org/series/36485/
State : success
== Summary ==
IGT patchset tested on top of latest successful build
84a308022028a55903a1916fcee516aab768ed48 tests/kms_plane: Run test for all supported pixel formats, v2.
with latest DRM-Tip kernel build CI_DRM_3635
e5e5649796da drm-tip: 2018y-01m-16d-06h-56m-12s UTC integration manifest
Testlist changes:
+igt@kms_plane_scaling@2x-scaler-multi-pipe
+igt@kms_plane_scaling@pipe-a-plane-scaling
+igt@kms_plane_scaling@pipe-a-scaler-with-clipping-clamping
+igt@kms_plane_scaling@pipe-a-scaler-with-pixel-format
+igt@kms_plane_scaling@pipe-a-scaler-with-rotation
+igt@kms_plane_scaling@pipe-b-plane-scaling
+igt@kms_plane_scaling@pipe-b-scaler-with-clipping-clamping
+igt@kms_plane_scaling@pipe-b-scaler-with-pixel-format
+igt@kms_plane_scaling@pipe-b-scaler-with-rotation
+igt@kms_plane_scaling@pipe-c-plane-scaling
+igt@kms_plane_scaling@pipe-c-scaler-with-clipping-clamping
+igt@kms_plane_scaling@pipe-c-scaler-with-pixel-format
+igt@kms_plane_scaling@pipe-c-scaler-with-rotation
+igt@kms_plane_scaling@pipe-d-plane-scaling
+igt@kms_plane_scaling@pipe-d-scaler-with-clipping-clamping
+igt@kms_plane_scaling@pipe-d-scaler-with-pixel-format
+igt@kms_plane_scaling@pipe-d-scaler-with-rotation
+igt@kms_plane_scaling@pipe-e-plane-scaling
+igt@kms_plane_scaling@pipe-e-scaler-with-clipping-clamping
+igt@kms_plane_scaling@pipe-e-scaler-with-pixel-format
+igt@kms_plane_scaling@pipe-e-scaler-with-rotation
+igt@kms_plane_scaling@pipe-f-plane-scaling
+igt@kms_plane_scaling@pipe-f-scaler-with-clipping-clamping
+igt@kms_plane_scaling@pipe-f-scaler-with-pixel-format
+igt@kms_plane_scaling@pipe-f-scaler-with-rotation
-igt@kms_plane_scaling
Test kms_pipe_crc_basic:
Subgroup suspend-read-crc-pipe-b:
incomplete -> PASS (fi-snb-2520m) fdo#103713
fdo#103713 https://bugs.freedesktop.org/show_bug.cgi?id=103713
fi-bdw-5557u total:288 pass:267 dwarn:0 dfail:0 fail:0 skip:21 time:421s
fi-bdw-gvtdvm total:288 pass:264 dwarn:0 dfail:0 fail:0 skip:24 time:427s
fi-blb-e6850 total:288 pass:223 dwarn:1 dfail:0 fail:0 skip:64 time:374s
fi-bsw-n3050 total:288 pass:242 dwarn:0 dfail:0 fail:0 skip:46 time:491s
fi-bwr-2160 total:288 pass:183 dwarn:0 dfail:0 fail:0 skip:105 time:282s
fi-bxt-dsi total:288 pass:258 dwarn:0 dfail:0 fail:0 skip:30 time:485s
fi-bxt-j4205 total:288 pass:259 dwarn:0 dfail:0 fail:0 skip:29 time:487s
fi-byt-j1900 total:288 pass:253 dwarn:0 dfail:0 fail:0 skip:35 time:470s
fi-byt-n2820 total:288 pass:249 dwarn:0 dfail:0 fail:0 skip:39 time:460s
fi-elk-e7500 total:224 pass:168 dwarn:10 dfail:0 fail:0 skip:45
fi-gdg-551 total:288 pass:179 dwarn:0 dfail:0 fail:1 skip:108 time:278s
fi-glk-1 total:288 pass:260 dwarn:0 dfail:0 fail:0 skip:28 time:514s
fi-hsw-4770 total:288 pass:261 dwarn:0 dfail:0 fail:0 skip:27 time:394s
fi-hsw-4770r total:288 pass:261 dwarn:0 dfail:0 fail:0 skip:27 time:399s
fi-ivb-3520m total:288 pass:259 dwarn:0 dfail:0 fail:0 skip:29 time:458s
fi-ivb-3770 total:288 pass:255 dwarn:0 dfail:0 fail:0 skip:33 time:418s
fi-kbl-7500u total:288 pass:263 dwarn:1 dfail:0 fail:0 skip:24 time:465s
fi-kbl-7560u total:288 pass:269 dwarn:0 dfail:0 fail:0 skip:19 time:498s
fi-kbl-7567u total:288 pass:268 dwarn:0 dfail:0 fail:0 skip:20 time:455s
fi-kbl-r total:288 pass:260 dwarn:1 dfail:0 fail:0 skip:27 time:501s
fi-pnv-d510 total:288 pass:222 dwarn:1 dfail:0 fail:0 skip:65 time:581s
fi-skl-6260u total:288 pass:268 dwarn:0 dfail:0 fail:0 skip:20 time:435s
fi-skl-6600u total:288 pass:261 dwarn:0 dfail:0 fail:0 skip:27 time:512s
fi-skl-6700hq total:288 pass:262 dwarn:0 dfail:0 fail:0 skip:26 time:532s
fi-skl-6700k2 total:288 pass:264 dwarn:0 dfail:0 fail:0 skip:24 time:497s
fi-skl-6770hq total:288 pass:268 dwarn:0 dfail:0 fail:0 skip:20 time:496s
fi-skl-gvtdvm total:288 pass:265 dwarn:0 dfail:0 fail:0 skip:23 time:434s
fi-snb-2520m total:288 pass:248 dwarn:0 dfail:0 fail:0 skip:40 time:527s
fi-snb-2600 total:288 pass:248 dwarn:0 dfail:0 fail:0 skip:40 time:401s
Blacklisted hosts:
fi-cfl-s2 total:288 pass:262 dwarn:0 dfail:0 fail:0 skip:26 time:565s
fi-glk-dsi total:288 pass:258 dwarn:0 dfail:0 fail:0 skip:30 time:475s
== Logs ==
For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_779/issues.html
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply [flat|nested] 30+ messages in thread
* ✗ Fi.CI.IGT: failure for kms_plane_scaling tests. (rev2)
2018-01-15 14:28 [PATCH i-g-t v3 0/8] kms_plane_scaling tests Maarten Lankhorst
` (11 preceding siblings ...)
2018-01-16 10:24 ` ✓ Fi.CI.BAT: success for kms_plane_scaling tests. (rev2) Patchwork
@ 2018-01-16 11:14 ` Patchwork
2018-01-16 14:59 ` ✓ Fi.CI.BAT: success for kms_plane_scaling tests. (rev3) Patchwork
` (2 subsequent siblings)
15 siblings, 0 replies; 30+ messages in thread
From: Patchwork @ 2018-01-16 11:14 UTC (permalink / raw)
To: Maarten Lankhorst; +Cc: intel-gfx
== Series Details ==
Series: kms_plane_scaling tests. (rev2)
URL : https://patchwork.freedesktop.org/series/36485/
State : failure
== Summary ==
Test kms_cursor_crc:
Subgroup cursor-128x128-suspend:
skip -> PASS (shard-snb) fdo#103880
Test gem_softpin:
Subgroup noreloc-s3:
pass -> DMESG-WARN (shard-snb) fdo#103375
Test kms_frontbuffer_tracking:
Subgroup fbc-1p-primscrn-spr-indfb-fullscreen:
fail -> PASS (shard-hsw) fdo#101623
Test gem_tiled_swapping:
Subgroup non-threaded:
incomplete -> PASS (shard-snb) fdo#104218
Test kms_busy:
Subgroup basic-modeset-a:
pass -> INCOMPLETE (shard-snb)
Test kms_flip:
Subgroup vblank-vs-modeset-suspend:
pass -> INCOMPLETE (shard-hsw)
Test pm_rc6_residency:
Subgroup rc6-accuracy:
skip -> PASS (shard-snb)
Test gem_eio:
Subgroup in-flight-contexts:
pass -> DMESG-WARN (shard-snb) fdo#104058
fdo#103880 https://bugs.freedesktop.org/show_bug.cgi?id=103880
fdo#103375 https://bugs.freedesktop.org/show_bug.cgi?id=103375
fdo#101623 https://bugs.freedesktop.org/show_bug.cgi?id=101623
fdo#104218 https://bugs.freedesktop.org/show_bug.cgi?id=104218
fdo#104058 https://bugs.freedesktop.org/show_bug.cgi?id=104058
shard-hsw total:2746 pass:1544 dwarn:1 dfail:0 fail:10 skip:1190 time:8667s
shard-snb total:2732 pass:1308 dwarn:3 dfail:0 fail:11 skip:1409 time:7633s
Blacklisted hosts:
shard-apl total:2675 pass:1660 dwarn:4 dfail:0 fail:20 skip:990 time:13254s
shard-kbl total:2753 pass:1819 dwarn:15 dfail:1 fail:23 skip:895 time:10570s
== Logs ==
For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_779/shards.html
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply [flat|nested] 30+ messages in thread
* Re: [PATCH i-g-t v3 7/8] tests/kms_plane_scaling: test scaler with clipping clamping, v3.
2018-01-15 14:28 ` [PATCH i-g-t v3 7/8] tests/kms_plane_scaling: test scaler with clipping clamping, v3 Maarten Lankhorst
@ 2018-01-16 11:14 ` Mika Kahola
0 siblings, 0 replies; 30+ messages in thread
From: Mika Kahola @ 2018-01-16 11:14 UTC (permalink / raw)
To: Maarten Lankhorst, intel-gfx; +Cc: Vidya Srinivas
On Mon, 2018-01-15 at 15:28 +0100, Maarten Lankhorst wrote:
> From: Jyoti Yadav <jyoti.r.yadav@intel.com>
>
> This patch adds subtest to test scaler clipping and clamping
> scenario.
>
> Changes since v1:
> - Modify test to work with the changes to kms_plane_scaling.
> (Maarten)
> Changes since v2:
> - Use get_num_scalers() to skip when needed.
>
Reviewed-by: Mika Kahola <mika.kahola@intel.com>
> Signed-off-by: Jyoti Yadav <jyoti.r.yadav@intel.com>
> Signed-off-by: Mahesh Kumar <mahesh1.kumar@intel.com>
> Signed-off-by: Vidya Srinivas <vidya.srinivas@intel.com>
> Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
> ---
> tests/kms_plane_scaling.c | 43
> +++++++++++++++++++++++++++++++++++++++++++
> 1 file changed, 43 insertions(+)
>
> diff --git a/tests/kms_plane_scaling.c b/tests/kms_plane_scaling.c
> index f514459584d1..36a6a8ef042b 100644
> --- a/tests/kms_plane_scaling.c
> +++ b/tests/kms_plane_scaling.c
> @@ -416,6 +416,46 @@ test_plane_scaling_on_pipe(data_t *d, enum pipe
> pipe, igt_output_t *output)
> }
> }
>
> +static void
> +test_scaler_with_clipping_clamping_scenario(data_t *d, enum pipe
> pipe, igt_output_t *output)
> +{
> + drmModeModeInfo *mode;
> +
> + igt_require(get_num_scalers(d->devid, pipe) >= 2);
> +
> + mode = igt_output_get_mode(output);
> + d->plane1 = &d->display.pipes[pipe].planes[0];
> + prepare_crtc(d, output, pipe, d->plane1, mode);
> +
> + igt_create_pattern_fb(d->drm_fd,
> + mode->hdisplay, mode->vdisplay,
> + DRM_FORMAT_XRGB8888,
> + LOCAL_I915_FORMAT_MOD_X_TILED, &d-
> >fb[1]);
> +
> + igt_create_pattern_fb(d->drm_fd,
> + mode->hdisplay, mode->vdisplay,
> + DRM_FORMAT_XRGB8888,
> + LOCAL_I915_FORMAT_MOD_Y_TILED, &d-
> >fb[2]);
> +
> + igt_plane_set_fb(d->plane1, &d->fb[1]);
> + d->plane2 = igt_output_get_plane(output, 1);
> + igt_plane_set_fb(d->plane2, &d->fb[2]);
> +
> + igt_fb_set_position(&d->fb[1], d->plane1, 0, 0);
> + igt_fb_set_size(&d->fb[1], d->plane1, 300, 300);
> + igt_plane_set_position(d->plane1, 100, 400);
> + igt_fb_set_position(&d->fb[2], d->plane2, 0, 0);
> + igt_fb_set_size(&d->fb[2], d->plane2, 400, 400);
> + igt_plane_set_position(d->plane2, 100, 100);
> +
> + /* scaled window size is outside the modeset area.*/
> + igt_plane_set_size(d->plane1, mode->hdisplay + 200,
> + mode->vdisplay + 200);
> + igt_plane_set_size(d->plane2, mode->hdisplay + 100,
> + mode->vdisplay + 100);
> + igt_display_commit2(&d->display, COMMIT_ATOMIC);
> +}
> +
> igt_main
> {
> data_t data = {};
> @@ -452,6 +492,9 @@ igt_main
> for_each_valid_output_on_pipe(&data.display,
> pipe, output)
> test_scaler_with_rotation_pipe(&data
> , pipe, output);
>
> + igt_subtest_f("pipe-%s-scaler-with-clipping-
> clamping", kmstest_pipe_name(pipe))
> + for_each_valid_output_on_pipe(&data.display,
> pipe, output)
> + test_scaler_with_clipping_clamping_s
> cenario(&data, pipe, output);
> }
>
> igt_fixture
--
Mika Kahola - Intel OTC
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply [flat|nested] 30+ messages in thread
* Re: [PATCH i-g-t] tests/kms_plane_scaling: Move get_num_scalers to a function, v2.
2018-01-16 10:03 ` [PATCH i-g-t] tests/kms_plane_scaling: Move get_num_scalers to a function, v2 Maarten Lankhorst
@ 2018-01-16 11:55 ` Mika Kahola
0 siblings, 0 replies; 30+ messages in thread
From: Mika Kahola @ 2018-01-16 11:55 UTC (permalink / raw)
To: Maarten Lankhorst, intel-gfx
On Tue, 2018-01-16 at 11:03 +0100, Maarten Lankhorst wrote:
> The number of scalers can depend on the pipe, so require at least 1
> scaler before running any subtests.
>
> Changes since v1:
> - More closely match kernel implementation. (Mika)
>
Reviewed-by: Mika Kahola <mika.kahola@intel.com>
> Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
> ---
> tests/kms_plane_scaling.c | 22 ++++++++++++++++------
> 1 file changed, 16 insertions(+), 6 deletions(-)
>
> diff --git a/tests/kms_plane_scaling.c b/tests/kms_plane_scaling.c
> index 7e9a948a6b33..dd87bd090705 100644
> --- a/tests/kms_plane_scaling.c
> +++ b/tests/kms_plane_scaling.c
> @@ -38,8 +38,6 @@ typedef struct {
> int image_w;
> int image_h;
>
> - int num_scalers;
> -
> struct igt_fb fb1;
> struct igt_fb fb2;
> struct igt_fb fb3;
> @@ -53,6 +51,18 @@ typedef struct {
> igt_plane_t *plane4;
> } data_t;
>
> +static int get_num_scalers(uint32_t devid, enum pipe pipe)
> +{
> + igt_require(intel_gen(devid) >= 9);
> +
> + if (intel_gen(devid) >= 10)
> + return 2;
> + else if (pipe != PIPE_C)
> + return 2;
> + else
> + return 1;
> +}
> +
> static void prepare_crtc(data_t *data, igt_output_t *output, enum
> pipe pipe,
> igt_plane_t *plane, drmModeModeInfo *mode,
> enum igt_commit_style s)
> {
> @@ -170,8 +180,6 @@ test_plane_scaling_on_pipe(data_t *d, enum pipe
> pipe, igt_output_t *output)
> drmModeModeInfo *mode;
> int primary_plane_scaling = 0; /* For now */
>
> - igt_require(d->num_scalers > 0);
> -
> igt_display_reset(display);
> igt_output_set_pipe(output, pipe);
> mode = igt_output_get_mode(output);
> @@ -310,15 +318,17 @@ igt_main
> igt_require_pipe_crc(data.drm_fd);
> igt_display_init(&data.display, data.drm_fd);
> data.devid = intel_get_drm_devid(data.drm_fd);
> - data.num_scalers = intel_gen(data.devid) >= 9 ? 2 :
> 0;
> }
>
> for_each_pipe_static(pipe) igt_subtest_group {
> igt_output_t *output;
>
> - igt_fixture
> + igt_fixture {
> igt_display_require_output_on_pipe(&data.dis
> play, pipe);
>
> + igt_require(get_num_scalers(data.devid,
> pipe) > 0);
> + }
> +
> igt_subtest_f("pipe-%s-plane-scaling",
> kmstest_pipe_name(pipe))
> for_each_valid_output_on_pipe(&data.display,
> pipe, output)
> test_plane_scaling_on_pipe(&data,
> pipe, output);
--
Mika Kahola - Intel OTC
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply [flat|nested] 30+ messages in thread
* Re: [PATCH i-g-t v3 6/8] tests/kms_plane_scaling: test scaling with tiling rotation and pixel formats, v2.
2018-01-15 14:28 ` [PATCH i-g-t v3 6/8] tests/kms_plane_scaling: test scaling with tiling rotation and pixel formats, v2 Maarten Lankhorst
@ 2018-01-16 12:43 ` Mika Kahola
2018-01-16 14:00 ` [PATCH i-g-t] tests/kms_plane_scaling: test scaling with tiling rotation and pixel formats, v3 Maarten Lankhorst
1 sibling, 0 replies; 30+ messages in thread
From: Mika Kahola @ 2018-01-16 12:43 UTC (permalink / raw)
To: Maarten Lankhorst, intel-gfx; +Cc: Vidya Srinivas
On Mon, 2018-01-15 at 15:28 +0100, Maarten Lankhorst wrote:
> From: Jyoti Yadav <jyoti.r.yadav@intel.com>
>
> This patch adds subtest for testing scaling in combination with
> rotation
> and pixel formats.
>
> Changes since v1:
> - Rework test to work with the other changes to kms_plane_scaling.
> (Maarten)
> - Remove hardcodes for MIN/MAX_SRC_WIDTH, and use the value directly.
> (Maarten)
>
> Signed-off-by: Jyoti Yadav <jyoti.r.yadav@intel.com>
> Signed-off-by: Mahesh Kumar <mahesh1.kumar@intel.com>
> Signed-off-by: Vidya Srinivas <vidya.srinivas@intel.com>
> Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
> ---
> tests/kms_plane_scaling.c | 161
> +++++++++++++++++++++++++++++++++++++++++++++-
> 1 file changed, 160 insertions(+), 1 deletion(-)
>
> diff --git a/tests/kms_plane_scaling.c b/tests/kms_plane_scaling.c
> index 0ba209a3116b..f514459584d1 100644
> --- a/tests/kms_plane_scaling.c
> +++ b/tests/kms_plane_scaling.c
> @@ -54,10 +54,55 @@ static int get_num_scalers(uint32_t devid, enum
> pipe pipe)
> return 1;
> }
>
> +#define MAX_ROTATION 4
> +static igt_rotation_t get_rotation_angle(int rot)
To follow the same naming convention as with tiling, this function
could be renamed as 'get_rotation()'
> +{
> + switch (rot) {
> + case 0:
> + return IGT_ROTATION_0;
> + break;
> + case 1:
> + return IGT_ROTATION_90;
> + break;
> + case 2:
> + return IGT_ROTATION_180;
> + break;
> + case 3:
> + return IGT_ROTATION_270;
> + break;
> + default:
> + igt_info("Unknown/Unsupported Rotation %d\n", rot);
> + return IGT_ROTATION_0;
Maybe throw an error, igt_assert(0), here instead of return with
IGT_ROTATION_0.
> + }
> +}
> +
> +#define MAX_TILING 4
> +static uint64_t get_tiling(int tiling)
> +{
> + switch (tiling) {
> + case 0:
> + return LOCAL_DRM_FORMAT_MOD_NONE;
> + break;
> + case 1:
> + return LOCAL_I915_FORMAT_MOD_X_TILED;
> + break;
> + case 2:
> + return LOCAL_I915_FORMAT_MOD_Y_TILED;
> + break;
> + case 3:
> + return LOCAL_I915_FORMAT_MOD_Yf_TILED;
> + break;
> + default:
> + igt_info("Unknown/Unsupported Tiling %d\n", tiling);
> + return LOCAL_DRM_FORMAT_MOD_NONE;
Same comment as previous one.
> + }
> +}
> +
> static void cleanup_crtc(data_t *data)
> {
> int i;
>
> + igt_display_reset(&data->display);
> igt_pipe_crc_free(data->pipe_crc);
> data->pipe_crc = NULL;
>
> @@ -77,7 +122,6 @@ static void prepare_crtc(data_t *data,
> igt_output_t *output, enum pipe pipe,
>
> cleanup_crtc(data);
>
> - igt_display_reset(display);
> igt_output_set_pipe(output, pipe);
>
> /* create the pipe_crc object for this pipe */
> @@ -110,6 +154,112 @@ static void prepare_crtc(data_t *data,
> igt_output_t *output, enum pipe pipe,
> igt_display_commit2(display, COMMIT_ATOMIC);
> }
>
> +static void paint_fb(data_t *d, struct igt_fb *fb)
> +{
> + cairo_t *cr;
> +
> + cr = igt_get_cairo_ctx(d->drm_fd, fb);
> + igt_paint_color(cr, 0, 0, fb->width, fb->height, 0.0, 1.0,
> 0.0);
> + igt_assert(cairo_status(cr) == 0);
> + cairo_destroy(cr);
> +}
> +
> +static void check_scaling_pipe_plane_rot(data_t *d, igt_plane_t
> *plane,
> + uint32_t pixel_format,
> + uint64_t tiling, enum pipe
> pipe,
> + igt_output_t *output,
> + igt_rotation_t rot)
> +{
> + igt_display_t *display = &d->display;
> + int width, height;
> + drmModeModeInfo *mode;
> +
> + cleanup_crtc(d);
> +
> + igt_output_set_pipe(output, pipe);
> + mode = igt_output_get_mode(output);
> +
> + /* create buffer in the range of min and max source side
> limit.*/
> + width = height = 9;
> + igt_create_fb(display->drm_fd, width, height,
> + pixel_format, tiling, &d->fb[0]);
> + paint_fb(d, &d->fb[0]);
> + igt_plane_set_fb(plane, &d->fb[0]);
> +
> + /* Check min to full resolution upscaling */
> + igt_fb_set_position(&d->fb[0], plane, 0, 0);
> + igt_fb_set_size(&d->fb[0], plane, width, height);
> + igt_plane_set_position(plane, 0, 0);
> + igt_plane_set_size(plane, mode->hdisplay, mode->vdisplay);
> + igt_plane_set_rotation(plane, rot);
> + igt_display_commit2(display, COMMIT_ATOMIC);
> +
> + igt_plane_set_fb(plane, NULL);
> + igt_plane_set_position(plane, 0, 0);
> +}
> +
> +static void test_scaler_with_rotation_pipe(data_t *d, enum pipe
> pipe,
> + igt_output_t *output)
> +{
> + igt_display_t *display = &d->display;
> + igt_plane_t *plane;
> +
> + igt_output_set_pipe(output, pipe);
> + for_each_plane_on_pipe(display, pipe, plane) {
> +
> + if (plane->type == DRM_PLANE_TYPE_CURSOR)
> + continue;
> +
> + for (int i = 0; i < MAX_ROTATION; i++) {
> + igt_rotation_t rot = get_rotation_angle(i);
> + check_scaling_pipe_plane_rot(d, plane,
> DRM_FORMAT_XRGB8888,
> + LOCAL_I915_FORM
> AT_MOD_Y_TILED,
> + pipe, output,
> rot);
> + }
> + }
> +}
> +
> +static bool can_draw(uint32_t drm_format)
> +{
> + const uint32_t *drm_formats;
> + int format_count, i;
> +
> + igt_get_all_cairo_formats(&drm_formats, &format_count);
> +
> + for (i = 0; i < format_count; i++)
> + if (drm_formats[i] == drm_format)
> + return true;
> +
> + return false;
> +}
> +
> +static void test_scaler_with_pixel_format_pipe(data_t *d, enum pipe
> pipe, igt_output_t *output)
> +{
> + igt_display_t *display = &d->display;
> + igt_plane_t *plane;
> +
> + igt_output_set_pipe(output, pipe);
> +
> + for_each_plane_on_pipe(display, pipe, plane) {
> + if (plane->type == DRM_PLANE_TYPE_CURSOR)
> + continue;
> +
> + for (int i = 0; i < MAX_TILING; i++) {
> + uint64_t tiling = get_tiling(i);
> + int j;
> +
> + for (j = 0; j < plane->drm_plane-
> >count_formats; j++) {
We could follow the same style for 'j' as for 'i' in the for loops.
> + uint32_t format = plane->drm_plane-
> >formats[j];
> +
> + if (can_draw(format))
> + check_scaling_pipe_plane_rot
> (d, plane,
> +
> format, tiling,
> +
> pipe, output, IGT_ROTATION_0);
> + }
> + }
> + }
> +}
> +
> /* does iterative scaling on plane2 */
> static void iterate_plane_scaling(data_t *d, drmModeModeInfo *mode)
> {
> @@ -293,6 +443,15 @@ igt_main
> igt_subtest_f("pipe-%s-plane-scaling",
> kmstest_pipe_name(pipe))
> for_each_valid_output_on_pipe(&data.display,
> pipe, output)
> test_plane_scaling_on_pipe(&data,
> pipe, output);
> +
> + igt_subtest_f("pipe-%s-scaler-with-pixel-format",
> kmstest_pipe_name(pipe))
> + for_each_valid_output_on_pipe(&data.display,
> pipe, output)
> + test_scaler_with_pixel_format_pipe(&
> data, pipe, output);
> +
> + igt_subtest_f("pipe-%s-scaler-with-rotation",
> kmstest_pipe_name(pipe))
> + for_each_valid_output_on_pipe(&data.display,
> pipe, output)
> + test_scaler_with_rotation_pipe(&data
> , pipe, output);
> +
> }
>
> igt_fixture
--
Mika Kahola - Intel OTC
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply [flat|nested] 30+ messages in thread
* Re: [PATCH i-g-t v3 8/8] tests/kms_plane_scaling: test for multi pipe with scaling, v3.
2018-01-15 14:28 ` [PATCH i-g-t v3 8/8] tests/kms_plane_scaling: test for multi pipe with scaling, v3 Maarten Lankhorst
@ 2018-01-16 13:46 ` Mika Kahola
2018-01-16 13:47 ` Maarten Lankhorst
0 siblings, 1 reply; 30+ messages in thread
From: Mika Kahola @ 2018-01-16 13:46 UTC (permalink / raw)
To: Maarten Lankhorst, intel-gfx; +Cc: Vidya Srinivas
On Mon, 2018-01-15 at 15:28 +0100, Maarten Lankhorst wrote:
> From: Jyoti Yadav <jyoti.r.yadav@intel.com>
>
> Add a subtest to display primary and overlay planes on two
> connected pipes and runs scaling test on both pipes
>
> Changes since v1:
> - Commit first before trying any scaling. (Maarten)
> - Use the same logic as kms_cursor_legacy to find a pipe and output.
> (Maarten)
> - Rework test to work with how cleanup is handled. (Maarten)
> Changes since v2:
> - Use get_num_scalers() to only use 2 scalers if available. (Maarten)
>
> Signed-off-by: Jyoti Yadav <jyoti.r.yadav@intel.com>
> Signed-off-by: Mahesh Kumar <mahesh1.kumar@intel.com>
> Signed-off-by: Vidya Srinivas <vidya.srinivas@intel.com>
> Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
> ---
> tests/kms_plane_scaling.c | 93
> ++++++++++++++++++++++++++++++++++++++++++++++-
> 1 file changed, 92 insertions(+), 1 deletion(-)
>
> diff --git a/tests/kms_plane_scaling.c b/tests/kms_plane_scaling.c
> index 36a6a8ef042b..8dbacf67b0a0 100644
> --- a/tests/kms_plane_scaling.c
> +++ b/tests/kms_plane_scaling.c
> @@ -38,10 +38,12 @@ typedef struct {
> int image_w;
> int image_h;
>
> - struct igt_fb fb[3];
> + struct igt_fb fb[4];
> +
> igt_plane_t *plane1;
> igt_plane_t *plane2;
> igt_plane_t *plane3;
> + igt_plane_t *plane4;
> } data_t;
>
> static int get_num_scalers(uint32_t devid, enum pipe pipe)
> @@ -456,6 +458,92 @@
> test_scaler_with_clipping_clamping_scenario(data_t *d, enum pipe
> pipe, igt_outpu
> igt_display_commit2(&d->display, COMMIT_ATOMIC);
> }
>
> +static void find_connected_pipe(igt_display_t *display, bool second,
> enum pipe *pipe, igt_output_t **output)
> +{
> + enum pipe first = PIPE_NONE;
> + igt_output_t *first_output = NULL;
> + bool found = false;
> +
> + for_each_pipe_with_valid_output(display, *pipe, *output) {
> + if (first == *pipe || *output == first_output)
> + continue;
> +
> + if (second) {
> + first = *pipe;
> + first_output = *output;
> + second = false;
> + continue;
> + }
> +
> + return;
> + }
> +
> + if (first_output)
> + igt_require_f(found, "No second valid output
> found\n");
> + else
> + igt_require_f(found, "No valid outputs found\n");
> +}
> +
> +static void test_scaler_with_multi_pipe_plane(data_t *d)
> +{
> + igt_display_t *display = &d->display;
> + igt_output_t *output1, *output2;
> + drmModeModeInfo *mode1, *mode2;
> + enum pipe pipe1, pipe2;
> +
> + cleanup_crtc(d);
> +
> + find_connected_pipe(display, false, &pipe1, &output1);
> + find_connected_pipe(display, true, &pipe2, &output2);
> +
> + igt_skip_on(!output1 || !output2);
> +
> + igt_output_set_pipe(output1, pipe1);
> + igt_output_set_pipe(output2, pipe2);
> +
> + d->plane1 = igt_output_get_plane(output1, 0);
> + d->plane2 = get_num_scalers(d->devid, pipe1) >= 2 ?
> igt_output_get_plane(output1, 1) : NULL;
> + d->plane3 = igt_output_get_plane(output2, 0);
> + d->plane4 = get_num_scalers(d->devid, pipe2) >= 2 ?
> igt_output_get_plane(output2, 1) : NULL;
Maybe use DRM plane type definitions DRM_PLANE_TYPE_OVERLAY and
DRM_PLANE_TYPE_PRIMARY instead of 0 and 1 to better indicate what plane
we are referring to.
> +
> + mode1 = igt_output_get_mode(output1);
> + mode2 = igt_output_get_mode(output2);
> +
> + igt_create_pattern_fb(d->drm_fd, 600, 600,
> + DRM_FORMAT_XRGB8888,
> + LOCAL_I915_FORMAT_MOD_Y_TILED, &d-
> >fb[0]);
> +
> + igt_create_pattern_fb(d->drm_fd, 500, 500,
> + DRM_FORMAT_XRGB8888,
> + LOCAL_I915_FORMAT_MOD_Y_TILED, &d-
> >fb[1]);
> +
> + igt_create_pattern_fb(d->drm_fd, 700, 700,
> + DRM_FORMAT_XRGB8888,
> + LOCAL_I915_FORMAT_MOD_Y_TILED, &d-
> >fb[2]);
> +
> + igt_create_pattern_fb(d->drm_fd, 400, 400,
> + DRM_FORMAT_XRGB8888,
> + LOCAL_I915_FORMAT_MOD_Y_TILED, &d-
> >fb[3]);
> +
> + igt_plane_set_fb(d->plane1, &d->fb[0]);
> + if (d->plane2)
> + igt_plane_set_fb(d->plane2, &d->fb[1]);
> + igt_plane_set_fb(d->plane3, &d->fb[2]);
> + if (d->plane4)
> + igt_plane_set_fb(d->plane4, &d->fb[3]);
> + igt_display_commit2(display, COMMIT_ATOMIC);
> +
> + /* Upscaling Primary */
> + igt_plane_set_size(d->plane1, mode1->hdisplay, mode1-
> >vdisplay);
> + igt_plane_set_size(d->plane3, mode2->hdisplay, mode2-
> >vdisplay);
> + igt_display_commit2(display, COMMIT_ATOMIC);
> +
> + /* Upscaling Sprites */
> + igt_plane_set_size(d->plane2 ?: d->plane1, mode1->hdisplay,
> mode1->vdisplay);
> + igt_plane_set_size(d->plane4 ?: d->plane3, mode2->hdisplay,
> mode2->vdisplay);
> + igt_display_commit2(display, COMMIT_ATOMIC);
> +}
> +
> igt_main
> {
> data_t data = {};
> @@ -497,6 +585,9 @@ igt_main
> test_scaler_with_clipping_clamping_s
> cenario(&data, pipe, output);
> }
>
> + igt_subtest_f("2x-scaler-multi-pipe")
> + test_scaler_with_multi_pipe_plane(&data);
> +
> igt_fixture
> igt_display_fini(&data.display);
> }
--
Mika Kahola - Intel OTC
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply [flat|nested] 30+ messages in thread
* Re: [PATCH i-g-t v3 8/8] tests/kms_plane_scaling: test for multi pipe with scaling, v3.
2018-01-16 13:46 ` Mika Kahola
@ 2018-01-16 13:47 ` Maarten Lankhorst
2018-01-16 13:56 ` Mika Kahola
0 siblings, 1 reply; 30+ messages in thread
From: Maarten Lankhorst @ 2018-01-16 13:47 UTC (permalink / raw)
To: mika.kahola, intel-gfx; +Cc: Vidya Srinivas
Op 16-01-18 om 14:46 schreef Mika Kahola:
> On Mon, 2018-01-15 at 15:28 +0100, Maarten Lankhorst wrote:
>> From: Jyoti Yadav <jyoti.r.yadav@intel.com>
>>
>> Add a subtest to display primary and overlay planes on two
>> connected pipes and runs scaling test on both pipes
>>
>> Changes since v1:
>> - Commit first before trying any scaling. (Maarten)
>> - Use the same logic as kms_cursor_legacy to find a pipe and output.
>> (Maarten)
>> - Rework test to work with how cleanup is handled. (Maarten)
>> Changes since v2:
>> - Use get_num_scalers() to only use 2 scalers if available. (Maarten)
>>
>> Signed-off-by: Jyoti Yadav <jyoti.r.yadav@intel.com>
>> Signed-off-by: Mahesh Kumar <mahesh1.kumar@intel.com>
>> Signed-off-by: Vidya Srinivas <vidya.srinivas@intel.com>
>> Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
>> ---
>> tests/kms_plane_scaling.c | 93
>> ++++++++++++++++++++++++++++++++++++++++++++++-
>> 1 file changed, 92 insertions(+), 1 deletion(-)
>>
>> diff --git a/tests/kms_plane_scaling.c b/tests/kms_plane_scaling.c
>> index 36a6a8ef042b..8dbacf67b0a0 100644
>> --- a/tests/kms_plane_scaling.c
>> +++ b/tests/kms_plane_scaling.c
>> @@ -38,10 +38,12 @@ typedef struct {
>> int image_w;
>> int image_h;
>>
>> - struct igt_fb fb[3];
>> + struct igt_fb fb[4];
>> +
>> igt_plane_t *plane1;
>> igt_plane_t *plane2;
>> igt_plane_t *plane3;
>> + igt_plane_t *plane4;
>> } data_t;
>>
>> static int get_num_scalers(uint32_t devid, enum pipe pipe)
>> @@ -456,6 +458,92 @@
>> test_scaler_with_clipping_clamping_scenario(data_t *d, enum pipe
>> pipe, igt_outpu
>> igt_display_commit2(&d->display, COMMIT_ATOMIC);
>> }
>>
>> +static void find_connected_pipe(igt_display_t *display, bool second,
>> enum pipe *pipe, igt_output_t **output)
>> +{
>> + enum pipe first = PIPE_NONE;
>> + igt_output_t *first_output = NULL;
>> + bool found = false;
>> +
>> + for_each_pipe_with_valid_output(display, *pipe, *output) {
>> + if (first == *pipe || *output == first_output)
>> + continue;
>> +
>> + if (second) {
>> + first = *pipe;
>> + first_output = *output;
>> + second = false;
>> + continue;
>> + }
>> +
>> + return;
>> + }
>> +
>> + if (first_output)
>> + igt_require_f(found, "No second valid output
>> found\n");
>> + else
>> + igt_require_f(found, "No valid outputs found\n");
>> +}
>> +
>> +static void test_scaler_with_multi_pipe_plane(data_t *d)
>> +{
>> + igt_display_t *display = &d->display;
>> + igt_output_t *output1, *output2;
>> + drmModeModeInfo *mode1, *mode2;
>> + enum pipe pipe1, pipe2;
>> +
>> + cleanup_crtc(d);
>> +
>> + find_connected_pipe(display, false, &pipe1, &output1);
>> + find_connected_pipe(display, true, &pipe2, &output2);
>> +
>> + igt_skip_on(!output1 || !output2);
>> +
>> + igt_output_set_pipe(output1, pipe1);
>> + igt_output_set_pipe(output2, pipe2);
>> +
>> + d->plane1 = igt_output_get_plane(output1, 0);
>> + d->plane2 = get_num_scalers(d->devid, pipe1) >= 2 ?
>> igt_output_get_plane(output1, 1) : NULL;
>> + d->plane3 = igt_output_get_plane(output2, 0);
>> + d->plane4 = get_num_scalers(d->devid, pipe2) >= 2 ?
>> igt_output_get_plane(output2, 1) : NULL;
> Maybe use DRM plane type definitions DRM_PLANE_TYPE_OVERLAY and
> DRM_PLANE_TYPE_PRIMARY instead of 0 and 1 to better indicate what plane
> we are referring to.
igt_output_get_plane takes an index, igt_output_get_plane_type takes those definitions.
I've been bit a few times by that as well. :)
~Maarten
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply [flat|nested] 30+ messages in thread
* Re: [PATCH i-g-t v3 8/8] tests/kms_plane_scaling: test for multi pipe with scaling, v3.
2018-01-16 13:47 ` Maarten Lankhorst
@ 2018-01-16 13:56 ` Mika Kahola
2018-01-17 9:23 ` Maarten Lankhorst
0 siblings, 1 reply; 30+ messages in thread
From: Mika Kahola @ 2018-01-16 13:56 UTC (permalink / raw)
To: Maarten Lankhorst, intel-gfx; +Cc: Vidya Srinivas
On Tue, 2018-01-16 at 14:47 +0100, Maarten Lankhorst wrote:
> Op 16-01-18 om 14:46 schreef Mika Kahola:
> >
> > On Mon, 2018-01-15 at 15:28 +0100, Maarten Lankhorst wrote:
> > >
> > > From: Jyoti Yadav <jyoti.r.yadav@intel.com>
> > >
> > > Add a subtest to display primary and overlay planes on two
> > > connected pipes and runs scaling test on both pipes
> > >
> > > Changes since v1:
> > > - Commit first before trying any scaling. (Maarten)
> > > - Use the same logic as kms_cursor_legacy to find a pipe and
> > > output.
> > > (Maarten)
> > > - Rework test to work with how cleanup is handled. (Maarten)
> > > Changes since v2:
> > > - Use get_num_scalers() to only use 2 scalers if available.
> > > (Maarten)
> > >
> > > Signed-off-by: Jyoti Yadav <jyoti.r.yadav@intel.com>
> > > Signed-off-by: Mahesh Kumar <mahesh1.kumar@intel.com>
> > > Signed-off-by: Vidya Srinivas <vidya.srinivas@intel.com>
> > > Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.c
> > > om>
> > > ---
> > > tests/kms_plane_scaling.c | 93
> > > ++++++++++++++++++++++++++++++++++++++++++++++-
> > > 1 file changed, 92 insertions(+), 1 deletion(-)
> > >
> > > diff --git a/tests/kms_plane_scaling.c
> > > b/tests/kms_plane_scaling.c
> > > index 36a6a8ef042b..8dbacf67b0a0 100644
> > > --- a/tests/kms_plane_scaling.c
> > > +++ b/tests/kms_plane_scaling.c
> > > @@ -38,10 +38,12 @@ typedef struct {
> > > int image_w;
> > > int image_h;
> > >
> > > - struct igt_fb fb[3];
> > > + struct igt_fb fb[4];
> > > +
> > > igt_plane_t *plane1;
> > > igt_plane_t *plane2;
> > > igt_plane_t *plane3;
> > > + igt_plane_t *plane4;
> > > } data_t;
> > >
> > > static int get_num_scalers(uint32_t devid, enum pipe pipe)
> > > @@ -456,6 +458,92 @@
> > > test_scaler_with_clipping_clamping_scenario(data_t *d, enum pipe
> > > pipe, igt_outpu
> > > igt_display_commit2(&d->display, COMMIT_ATOMIC);
> > > }
> > >
> > > +static void find_connected_pipe(igt_display_t *display, bool
> > > second,
> > > enum pipe *pipe, igt_output_t **output)
> > > +{
> > > + enum pipe first = PIPE_NONE;
> > > + igt_output_t *first_output = NULL;
> > > + bool found = false;
> > > +
> > > + for_each_pipe_with_valid_output(display, *pipe, *output)
> > > {
> > > + if (first == *pipe || *output == first_output)
> > > + continue;
> > > +
> > > + if (second) {
> > > + first = *pipe;
> > > + first_output = *output;
> > > + second = false;
> > > + continue;
> > > + }
> > > +
> > > + return;
> > > + }
> > > +
> > > + if (first_output)
> > > + igt_require_f(found, "No second valid output
> > > found\n");
> > > + else
> > > + igt_require_f(found, "No valid outputs
> > > found\n");
> > > +}
> > > +
> > > +static void test_scaler_with_multi_pipe_plane(data_t *d)
> > > +{
> > > + igt_display_t *display = &d->display;
> > > + igt_output_t *output1, *output2;
> > > + drmModeModeInfo *mode1, *mode2;
> > > + enum pipe pipe1, pipe2;
> > > +
> > > + cleanup_crtc(d);
> > > +
> > > + find_connected_pipe(display, false, &pipe1, &output1);
> > > + find_connected_pipe(display, true, &pipe2, &output2);
> > > +
> > > + igt_skip_on(!output1 || !output2);
> > > +
> > > + igt_output_set_pipe(output1, pipe1);
> > > + igt_output_set_pipe(output2, pipe2);
> > > +
> > > + d->plane1 = igt_output_get_plane(output1, 0);
> > > + d->plane2 = get_num_scalers(d->devid, pipe1) >= 2 ?
> > > igt_output_get_plane(output1, 1) : NULL;
> > > + d->plane3 = igt_output_get_plane(output2, 0);
> > > + d->plane4 = get_num_scalers(d->devid, pipe2) >= 2 ?
> > > igt_output_get_plane(output2, 1) : NULL;
> > Maybe use DRM plane type definitions DRM_PLANE_TYPE_OVERLAY and
> > DRM_PLANE_TYPE_PRIMARY instead of 0 and 1 to better indicate what
> > plane
> > we are referring to.
> igt_output_get_plane takes an index, igt_output_get_plane_type takes
> those definitions.
> I've been bit a few times by that as well. :)
yeah, you're absolutely right. Should have read more carefully :)
You can bash my r-b.
Reviewed-by: Mika Kahola <mika.kahola@intel.com>
>
> ~Maarten
--
Mika Kahola - Intel OTC
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply [flat|nested] 30+ messages in thread
* [PATCH i-g-t] tests/kms_plane_scaling: test scaling with tiling rotation and pixel formats, v3.
2018-01-15 14:28 ` [PATCH i-g-t v3 6/8] tests/kms_plane_scaling: test scaling with tiling rotation and pixel formats, v2 Maarten Lankhorst
2018-01-16 12:43 ` Mika Kahola
@ 2018-01-16 14:00 ` Maarten Lankhorst
2018-01-16 14:22 ` Mika Kahola
1 sibling, 1 reply; 30+ messages in thread
From: Maarten Lankhorst @ 2018-01-16 14:00 UTC (permalink / raw)
To: intel-gfx; +Cc: Vidya Srinivas
From: Jyoti Yadav <jyoti.r.yadav@intel.com>
This patch adds subtest for testing scaling in combination with rotation
and pixel formats.
Changes since v1:
- Rework test to work with the other changes to kms_plane_scaling. (Maarten)
- Remove hardcodes for MIN/MAX_SRC_WIDTH, and use the value directly. (Maarten)
Changes since v2:
- Put rotation and tiling in an array. (Maarten)
Signed-off-by: Jyoti Yadav <jyoti.r.yadav@intel.com>
Signed-off-by: Mahesh Kumar <mahesh1.kumar@intel.com>
Signed-off-by: Vidya Srinivas <vidya.srinivas@intel.com>
Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
---
tests/kms_plane_scaling.c | 130 +++++++++++++++++++++++++++++++++++++++++++++-
1 file changed, 129 insertions(+), 1 deletion(-)
diff --git a/tests/kms_plane_scaling.c b/tests/kms_plane_scaling.c
index a361a00face4..b5d31bbeb0f4 100644
--- a/tests/kms_plane_scaling.c
+++ b/tests/kms_plane_scaling.c
@@ -60,6 +60,7 @@ static void cleanup_crtc(data_t *data)
{
int i;
+ igt_display_reset(&data->display);
igt_pipe_crc_free(data->pipe_crc);
data->pipe_crc = NULL;
@@ -79,7 +80,6 @@ static void prepare_crtc(data_t *data, igt_output_t *output, enum pipe pipe,
cleanup_crtc(data);
- igt_display_reset(display);
igt_output_set_pipe(output, pipe);
/* create the pipe_crc object for this pipe */
@@ -112,6 +112,125 @@ static void prepare_crtc(data_t *data, igt_output_t *output, enum pipe pipe,
igt_display_commit2(display, COMMIT_ATOMIC);
}
+static void paint_fb(data_t *d, struct igt_fb *fb)
+{
+ cairo_t *cr;
+
+ cr = igt_get_cairo_ctx(d->drm_fd, fb);
+ igt_paint_color(cr, 0, 0, fb->width, fb->height, 0.0, 1.0, 0.0);
+ igt_assert(cairo_status(cr) == 0);
+ cairo_destroy(cr);
+}
+
+static void check_scaling_pipe_plane_rot(data_t *d, igt_plane_t *plane,
+ uint32_t pixel_format,
+ uint64_t tiling, enum pipe pipe,
+ igt_output_t *output,
+ igt_rotation_t rot)
+{
+ igt_display_t *display = &d->display;
+ int width, height;
+ drmModeModeInfo *mode;
+
+ cleanup_crtc(d);
+
+ igt_output_set_pipe(output, pipe);
+ mode = igt_output_get_mode(output);
+
+ /* create buffer in the range of min and max source side limit.*/
+ width = height = 9;
+ igt_create_fb(display->drm_fd, width, height,
+ pixel_format, tiling, &d->fb[0]);
+ paint_fb(d, &d->fb[0]);
+ igt_plane_set_fb(plane, &d->fb[0]);
+
+ /* Check min to full resolution upscaling */
+ igt_fb_set_position(&d->fb[0], plane, 0, 0);
+ igt_fb_set_size(&d->fb[0], plane, width, height);
+ igt_plane_set_position(plane, 0, 0);
+ igt_plane_set_size(plane, mode->hdisplay, mode->vdisplay);
+ igt_plane_set_rotation(plane, rot);
+ igt_display_commit2(display, COMMIT_ATOMIC);
+
+ igt_plane_set_fb(plane, NULL);
+ igt_plane_set_position(plane, 0, 0);
+}
+
+static const igt_rotation_t rotations[] = {
+ IGT_ROTATION_0,
+ IGT_ROTATION_90,
+ IGT_ROTATION_180,
+ IGT_ROTATION_270,
+};
+
+static void test_scaler_with_rotation_pipe(data_t *d, enum pipe pipe,
+ igt_output_t *output)
+{
+ igt_display_t *display = &d->display;
+ igt_plane_t *plane;
+
+ igt_output_set_pipe(output, pipe);
+ for_each_plane_on_pipe(display, pipe, plane) {
+ if (plane->type == DRM_PLANE_TYPE_CURSOR)
+ continue;
+
+ for (int i = 0; i < ARRAY_SIZE(rotations); i++) {
+ igt_rotation_t rot = rotations[i];
+
+ check_scaling_pipe_plane_rot(d, plane, DRM_FORMAT_XRGB8888,
+ LOCAL_I915_FORMAT_MOD_Y_TILED,
+ pipe, output, rot);
+ }
+ }
+}
+
+static bool can_draw(uint32_t drm_format)
+{
+ const uint32_t *drm_formats;
+ int format_count, i;
+
+ igt_get_all_cairo_formats(&drm_formats, &format_count);
+
+ for (i = 0; i < format_count; i++)
+ if (drm_formats[i] == drm_format)
+ return true;
+
+ return false;
+}
+
+static const uint64_t tilings[] = {
+ LOCAL_DRM_FORMAT_MOD_NONE,
+ LOCAL_I915_FORMAT_MOD_X_TILED,
+ LOCAL_I915_FORMAT_MOD_Y_TILED,
+ LOCAL_I915_FORMAT_MOD_Yf_TILED
+};
+
+static void test_scaler_with_pixel_format_pipe(data_t *d, enum pipe pipe, igt_output_t *output)
+{
+ igt_display_t *display = &d->display;
+ igt_plane_t *plane;
+
+ igt_output_set_pipe(output, pipe);
+
+ for_each_plane_on_pipe(display, pipe, plane) {
+ if (plane->type == DRM_PLANE_TYPE_CURSOR)
+ continue;
+
+ for (int i = 0; i < ARRAY_SIZE(tilings); i++) {
+ uint64_t tiling = tilings[i];
+
+ for (int j = 0; j < plane->drm_plane->count_formats; j++) {
+ uint32_t format = plane->drm_plane->formats[j];
+
+ if (can_draw(format))
+ check_scaling_pipe_plane_rot(d, plane,
+ format, tiling,
+ pipe, output, IGT_ROTATION_0);
+ }
+ }
+ }
+}
+
/* does iterative scaling on plane2 */
static void iterate_plane_scaling(data_t *d, drmModeModeInfo *mode)
{
@@ -295,6 +414,15 @@ igt_main
igt_subtest_f("pipe-%s-plane-scaling", kmstest_pipe_name(pipe))
for_each_valid_output_on_pipe(&data.display, pipe, output)
test_plane_scaling_on_pipe(&data, pipe, output);
+
+ igt_subtest_f("pipe-%s-scaler-with-pixel-format", kmstest_pipe_name(pipe))
+ for_each_valid_output_on_pipe(&data.display, pipe, output)
+ test_scaler_with_pixel_format_pipe(&data, pipe, output);
+
+ igt_subtest_f("pipe-%s-scaler-with-rotation", kmstest_pipe_name(pipe))
+ for_each_valid_output_on_pipe(&data.display, pipe, output)
+ test_scaler_with_rotation_pipe(&data, pipe, output);
+
}
igt_fixture
--
2.15.1
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply related [flat|nested] 30+ messages in thread
* Re: [PATCH i-g-t] tests/kms_plane_scaling: test scaling with tiling rotation and pixel formats, v3.
2018-01-16 14:00 ` [PATCH i-g-t] tests/kms_plane_scaling: test scaling with tiling rotation and pixel formats, v3 Maarten Lankhorst
@ 2018-01-16 14:22 ` Mika Kahola
0 siblings, 0 replies; 30+ messages in thread
From: Mika Kahola @ 2018-01-16 14:22 UTC (permalink / raw)
To: Maarten Lankhorst, intel-gfx; +Cc: Vidya Srinivas
On Tue, 2018-01-16 at 15:00 +0100, Maarten Lankhorst wrote:
> From: Jyoti Yadav <jyoti.r.yadav@intel.com>
>
> This patch adds subtest for testing scaling in combination with
> rotation
> and pixel formats.
>
> Changes since v1:
> - Rework test to work with the other changes to kms_plane_scaling.
> (Maarten)
> - Remove hardcodes for MIN/MAX_SRC_WIDTH, and use the value directly.
> (Maarten)
> Changes since v2:
> - Put rotation and tiling in an array. (Maarten)
>
> Signed-off-by: Jyoti Yadav <jyoti.r.yadav@intel.com>
> Signed-off-by: Mahesh Kumar <mahesh1.kumar@intel.com>
> Signed-off-by: Vidya Srinivas <vidya.srinivas@intel.com>
> Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
> ---
> tests/kms_plane_scaling.c | 130
> +++++++++++++++++++++++++++++++++++++++++++++-
> 1 file changed, 129 insertions(+), 1 deletion(-)
>
> diff --git a/tests/kms_plane_scaling.c b/tests/kms_plane_scaling.c
> index a361a00face4..b5d31bbeb0f4 100644
> --- a/tests/kms_plane_scaling.c
> +++ b/tests/kms_plane_scaling.c
> @@ -60,6 +60,7 @@ static void cleanup_crtc(data_t *data)
> {
> int i;
>
> + igt_display_reset(&data->display);
> igt_pipe_crc_free(data->pipe_crc);
> data->pipe_crc = NULL;
>
> @@ -79,7 +80,6 @@ static void prepare_crtc(data_t *data, igt_output_t
> *output, enum pipe pipe,
>
> cleanup_crtc(data);
>
> - igt_display_reset(display);
> igt_output_set_pipe(output, pipe);
>
> /* create the pipe_crc object for this pipe */
> @@ -112,6 +112,125 @@ static void prepare_crtc(data_t *data,
> igt_output_t *output, enum pipe pipe,
> igt_display_commit2(display, COMMIT_ATOMIC);
> }
>
> +static void paint_fb(data_t *d, struct igt_fb *fb)
> +{
> + cairo_t *cr;
> +
> + cr = igt_get_cairo_ctx(d->drm_fd, fb);
> + igt_paint_color(cr, 0, 0, fb->width, fb->height, 0.0, 1.0,
> 0.0);
> + igt_assert(cairo_status(cr) == 0);
> + cairo_destroy(cr);
> +}
> +
> +static void check_scaling_pipe_plane_rot(data_t *d, igt_plane_t
> *plane,
> + uint32_t pixel_format,
> + uint64_t tiling, enum pipe
> pipe,
> + igt_output_t *output,
> + igt_rotation_t rot)
> +{
> + igt_display_t *display = &d->display;
> + int width, height;
> + drmModeModeInfo *mode;
> +
> + cleanup_crtc(d);
> +
> + igt_output_set_pipe(output, pipe);
> + mode = igt_output_get_mode(output);
> +
> + /* create buffer in the range of min and max source side
> limit.*/
> + width = height = 9;
> + igt_create_fb(display->drm_fd, width, height,
> + pixel_format, tiling, &d->fb[0]);
> + paint_fb(d, &d->fb[0]);
> + igt_plane_set_fb(plane, &d->fb[0]);
> +
> + /* Check min to full resolution upscaling */
> + igt_fb_set_position(&d->fb[0], plane, 0, 0);
> + igt_fb_set_size(&d->fb[0], plane, width, height);
> + igt_plane_set_position(plane, 0, 0);
> + igt_plane_set_size(plane, mode->hdisplay, mode->vdisplay);
> + igt_plane_set_rotation(plane, rot);
> + igt_display_commit2(display, COMMIT_ATOMIC);
> +
> + igt_plane_set_fb(plane, NULL);
> + igt_plane_set_position(plane, 0, 0);
> +}
> +
> +static const igt_rotation_t rotations[] = {
> + IGT_ROTATION_0,
> + IGT_ROTATION_90,
> + IGT_ROTATION_180,
> + IGT_ROTATION_270,
> +};
It's better this way so that we don't have to keep in sync
MAX_ROTATIONS and the actual rotation options.
Reviewed-by: Mika Kahola <mika.kahola@intel.com>
> +
> +static void test_scaler_with_rotation_pipe(data_t *d, enum pipe
> pipe,
> + igt_output_t *output)
> +{
> + igt_display_t *display = &d->display;
> + igt_plane_t *plane;
> +
> + igt_output_set_pipe(output, pipe);
> + for_each_plane_on_pipe(display, pipe, plane) {
> + if (plane->type == DRM_PLANE_TYPE_CURSOR)
> + continue;
> +
> + for (int i = 0; i < ARRAY_SIZE(rotations); i++) {
> + igt_rotation_t rot = rotations[i];
> +
> + check_scaling_pipe_plane_rot(d, plane,
> DRM_FORMAT_XRGB8888,
> + LOCAL_I915_FORM
> AT_MOD_Y_TILED,
> + pipe, output,
> rot);
> + }
> + }
> +}
> +
> +static bool can_draw(uint32_t drm_format)
> +{
> + const uint32_t *drm_formats;
> + int format_count, i;
> +
> + igt_get_all_cairo_formats(&drm_formats, &format_count);
> +
> + for (i = 0; i < format_count; i++)
> + if (drm_formats[i] == drm_format)
> + return true;
> +
> + return false;
> +}
> +
> +static const uint64_t tilings[] = {
> + LOCAL_DRM_FORMAT_MOD_NONE,
> + LOCAL_I915_FORMAT_MOD_X_TILED,
> + LOCAL_I915_FORMAT_MOD_Y_TILED,
> + LOCAL_I915_FORMAT_MOD_Yf_TILED
> +};
> +
> +static void test_scaler_with_pixel_format_pipe(data_t *d, enum pipe
> pipe, igt_output_t *output)
> +{
> + igt_display_t *display = &d->display;
> + igt_plane_t *plane;
> +
> + igt_output_set_pipe(output, pipe);
> +
> + for_each_plane_on_pipe(display, pipe, plane) {
> + if (plane->type == DRM_PLANE_TYPE_CURSOR)
> + continue;
> +
> + for (int i = 0; i < ARRAY_SIZE(tilings); i++) {
> + uint64_t tiling = tilings[i];
> +
> + for (int j = 0; j < plane->drm_plane-
> >count_formats; j++) {
> + uint32_t format = plane->drm_plane-
> >formats[j];
> +
> + if (can_draw(format))
> + check_scaling_pipe_plane_rot
> (d, plane,
> +
> format, tiling,
> +
> pipe, output, IGT_ROTATION_0);
> + }
> + }
> + }
> +}
> +
> /* does iterative scaling on plane2 */
> static void iterate_plane_scaling(data_t *d, drmModeModeInfo *mode)
> {
> @@ -295,6 +414,15 @@ igt_main
> igt_subtest_f("pipe-%s-plane-scaling",
> kmstest_pipe_name(pipe))
> for_each_valid_output_on_pipe(&data.display,
> pipe, output)
> test_plane_scaling_on_pipe(&data,
> pipe, output);
> +
> + igt_subtest_f("pipe-%s-scaler-with-pixel-format",
> kmstest_pipe_name(pipe))
> + for_each_valid_output_on_pipe(&data.display,
> pipe, output)
> + test_scaler_with_pixel_format_pipe(&
> data, pipe, output);
> +
> + igt_subtest_f("pipe-%s-scaler-with-rotation",
> kmstest_pipe_name(pipe))
> + for_each_valid_output_on_pipe(&data.display,
> pipe, output)
> + test_scaler_with_rotation_pipe(&data
> , pipe, output);
> +
> }
>
> igt_fixture
--
Mika Kahola - Intel OTC
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply [flat|nested] 30+ messages in thread
* ✓ Fi.CI.BAT: success for kms_plane_scaling tests. (rev3)
2018-01-15 14:28 [PATCH i-g-t v3 0/8] kms_plane_scaling tests Maarten Lankhorst
` (12 preceding siblings ...)
2018-01-16 11:14 ` ✗ Fi.CI.IGT: failure " Patchwork
@ 2018-01-16 14:59 ` Patchwork
2018-01-16 16:43 ` ✗ Fi.CI.IGT: warning " Patchwork
2018-01-17 10:05 ` [Intel-gfx] " Daniel Vetter
15 siblings, 0 replies; 30+ messages in thread
From: Patchwork @ 2018-01-16 14:59 UTC (permalink / raw)
To: Maarten Lankhorst; +Cc: intel-gfx
== Series Details ==
Series: kms_plane_scaling tests. (rev3)
URL : https://patchwork.freedesktop.org/series/36485/
State : success
== Summary ==
IGT patchset tested on top of latest successful build
7b685d5790c1770eeac43c17d6b207a6df602985 Update NEWS, bump version to 1.21.
with latest DRM-Tip kernel build CI_DRM_3636
a0ca279440c8 drm-tip: 2018y-01m-16d-10h-49m-51s UTC integration manifest
Testlist changes:
+igt@kms_plane_scaling@2x-scaler-multi-pipe
+igt@kms_plane_scaling@pipe-a-plane-scaling
+igt@kms_plane_scaling@pipe-a-scaler-with-clipping-clamping
+igt@kms_plane_scaling@pipe-a-scaler-with-pixel-format
+igt@kms_plane_scaling@pipe-a-scaler-with-rotation
+igt@kms_plane_scaling@pipe-b-plane-scaling
+igt@kms_plane_scaling@pipe-b-scaler-with-clipping-clamping
+igt@kms_plane_scaling@pipe-b-scaler-with-pixel-format
+igt@kms_plane_scaling@pipe-b-scaler-with-rotation
+igt@kms_plane_scaling@pipe-c-plane-scaling
+igt@kms_plane_scaling@pipe-c-scaler-with-clipping-clamping
+igt@kms_plane_scaling@pipe-c-scaler-with-pixel-format
+igt@kms_plane_scaling@pipe-c-scaler-with-rotation
+igt@kms_plane_scaling@pipe-d-plane-scaling
+igt@kms_plane_scaling@pipe-d-scaler-with-clipping-clamping
+igt@kms_plane_scaling@pipe-d-scaler-with-pixel-format
+igt@kms_plane_scaling@pipe-d-scaler-with-rotation
+igt@kms_plane_scaling@pipe-e-plane-scaling
+igt@kms_plane_scaling@pipe-e-scaler-with-clipping-clamping
+igt@kms_plane_scaling@pipe-e-scaler-with-pixel-format
+igt@kms_plane_scaling@pipe-e-scaler-with-rotation
+igt@kms_plane_scaling@pipe-f-plane-scaling
+igt@kms_plane_scaling@pipe-f-scaler-with-clipping-clamping
+igt@kms_plane_scaling@pipe-f-scaler-with-pixel-format
+igt@kms_plane_scaling@pipe-f-scaler-with-rotation
-igt@kms_plane_scaling
Test debugfs_test:
Subgroup read_all_entries:
dmesg-warn -> PASS (fi-elk-e7500) fdo#103989 +1
fdo#103989 https://bugs.freedesktop.org/show_bug.cgi?id=103989
fi-bdw-5557u total:288 pass:267 dwarn:0 dfail:0 fail:0 skip:21 time:422s
fi-bdw-gvtdvm total:288 pass:264 dwarn:0 dfail:0 fail:0 skip:24 time:427s
fi-blb-e6850 total:288 pass:223 dwarn:1 dfail:0 fail:0 skip:64 time:379s
fi-bsw-n3050 total:288 pass:242 dwarn:0 dfail:0 fail:0 skip:46 time:490s
fi-bwr-2160 total:288 pass:183 dwarn:0 dfail:0 fail:0 skip:105 time:282s
fi-bxt-dsi total:288 pass:258 dwarn:0 dfail:0 fail:0 skip:30 time:485s
fi-bxt-j4205 total:288 pass:259 dwarn:0 dfail:0 fail:0 skip:29 time:488s
fi-byt-j1900 total:288 pass:253 dwarn:0 dfail:0 fail:0 skip:35 time:471s
fi-byt-n2820 total:288 pass:249 dwarn:0 dfail:0 fail:0 skip:39 time:459s
fi-elk-e7500 total:224 pass:168 dwarn:10 dfail:0 fail:0 skip:45
fi-gdg-551 total:288 pass:179 dwarn:0 dfail:0 fail:1 skip:108 time:280s
fi-glk-1 total:288 pass:260 dwarn:0 dfail:0 fail:0 skip:28 time:518s
fi-hsw-4770 total:288 pass:261 dwarn:0 dfail:0 fail:0 skip:27 time:401s
fi-hsw-4770r total:288 pass:261 dwarn:0 dfail:0 fail:0 skip:27 time:403s
fi-ilk-650 total:288 pass:228 dwarn:0 dfail:0 fail:0 skip:60 time:413s
fi-ivb-3520m total:288 pass:259 dwarn:0 dfail:0 fail:0 skip:29 time:462s
fi-ivb-3770 total:288 pass:255 dwarn:0 dfail:0 fail:0 skip:33 time:414s
fi-kbl-7500u total:288 pass:263 dwarn:1 dfail:0 fail:0 skip:24 time:460s
fi-kbl-7560u total:288 pass:269 dwarn:0 dfail:0 fail:0 skip:19 time:501s
fi-kbl-7567u total:288 pass:268 dwarn:0 dfail:0 fail:0 skip:20 time:453s
fi-kbl-r total:288 pass:260 dwarn:1 dfail:0 fail:0 skip:27 time:502s
fi-pnv-d510 total:288 pass:222 dwarn:1 dfail:0 fail:0 skip:65 time:579s
fi-skl-6260u total:288 pass:268 dwarn:0 dfail:0 fail:0 skip:20 time:434s
fi-skl-6600u total:288 pass:261 dwarn:0 dfail:0 fail:0 skip:27 time:511s
fi-skl-6700hq total:288 pass:262 dwarn:0 dfail:0 fail:0 skip:26 time:529s
fi-skl-6700k2 total:288 pass:264 dwarn:0 dfail:0 fail:0 skip:24 time:494s
fi-skl-6770hq total:288 pass:268 dwarn:0 dfail:0 fail:0 skip:20 time:483s
fi-skl-gvtdvm total:288 pass:265 dwarn:0 dfail:0 fail:0 skip:23 time:433s
fi-snb-2520m total:288 pass:248 dwarn:0 dfail:0 fail:0 skip:40 time:522s
fi-snb-2600 total:288 pass:248 dwarn:0 dfail:0 fail:0 skip:40 time:402s
Blacklisted hosts:
fi-cfl-s2 total:288 pass:262 dwarn:0 dfail:0 fail:0 skip:26 time:569s
fi-glk-dsi total:288 pass:258 dwarn:0 dfail:0 fail:0 skip:30 time:476s
== Logs ==
For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_782/issues.html
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply [flat|nested] 30+ messages in thread
* ✗ Fi.CI.IGT: warning for kms_plane_scaling tests. (rev3)
2018-01-15 14:28 [PATCH i-g-t v3 0/8] kms_plane_scaling tests Maarten Lankhorst
` (13 preceding siblings ...)
2018-01-16 14:59 ` ✓ Fi.CI.BAT: success for kms_plane_scaling tests. (rev3) Patchwork
@ 2018-01-16 16:43 ` Patchwork
2018-01-17 10:05 ` [Intel-gfx] " Daniel Vetter
15 siblings, 0 replies; 30+ messages in thread
From: Patchwork @ 2018-01-16 16:43 UTC (permalink / raw)
To: Maarten Lankhorst; +Cc: intel-gfx
== Series Details ==
Series: kms_plane_scaling tests. (rev3)
URL : https://patchwork.freedesktop.org/series/36485/
State : warning
== Summary ==
Test kms_flip:
Subgroup flip-vs-fences-interruptible:
dmesg-warn -> PASS (shard-hsw) fdo#102614
Subgroup vblank-vs-dpms-suspend-interruptible:
pass -> SKIP (shard-snb)
Test kms_frontbuffer_tracking:
Subgroup fbc-1p-offscren-pri-shrfb-draw-render:
fail -> PASS (shard-snb) fdo#101623
Test perf:
Subgroup polling:
fail -> PASS (shard-hsw) fdo#102252
Test gem_tiled_swapping:
Subgroup non-threaded:
incomplete -> PASS (shard-snb) fdo#104218
fdo#102614 https://bugs.freedesktop.org/show_bug.cgi?id=102614
fdo#101623 https://bugs.freedesktop.org/show_bug.cgi?id=101623
fdo#102252 https://bugs.freedesktop.org/show_bug.cgi?id=102252
fdo#104218 https://bugs.freedesktop.org/show_bug.cgi?id=104218
shard-hsw total:2753 pass:1549 dwarn:1 dfail:0 fail:10 skip:1193 time:9091s
shard-snb total:2753 pass:1318 dwarn:1 dfail:0 fail:10 skip:1424 time:7835s
Blacklisted hosts:
shard-apl total:2753 pass:1705 dwarn:3 dfail:0 fail:24 skip:1020 time:13567s
== Logs ==
For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_782/shards.html
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply [flat|nested] 30+ messages in thread
* Re: [PATCH i-g-t v3 8/8] tests/kms_plane_scaling: test for multi pipe with scaling, v3.
2018-01-16 13:56 ` Mika Kahola
@ 2018-01-17 9:23 ` Maarten Lankhorst
0 siblings, 0 replies; 30+ messages in thread
From: Maarten Lankhorst @ 2018-01-17 9:23 UTC (permalink / raw)
To: mika.kahola, intel-gfx; +Cc: Vidya Srinivas
Op 16-01-18 om 14:56 schreef Mika Kahola:
> On Tue, 2018-01-16 at 14:47 +0100, Maarten Lankhorst wrote:
>> Op 16-01-18 om 14:46 schreef Mika Kahola:
>>> On Mon, 2018-01-15 at 15:28 +0100, Maarten Lankhorst wrote:
>>>> From: Jyoti Yadav <jyoti.r.yadav@intel.com>
>>>>
>>>> Add a subtest to display primary and overlay planes on two
>>>> connected pipes and runs scaling test on both pipes
>>>>
>>>> Changes since v1:
>>>> - Commit first before trying any scaling. (Maarten)
>>>> - Use the same logic as kms_cursor_legacy to find a pipe and
>>>> output.
>>>> (Maarten)
>>>> - Rework test to work with how cleanup is handled. (Maarten)
>>>> Changes since v2:
>>>> - Use get_num_scalers() to only use 2 scalers if available.
>>>> (Maarten)
>>>>
>>>> Signed-off-by: Jyoti Yadav <jyoti.r.yadav@intel.com>
>>>> Signed-off-by: Mahesh Kumar <mahesh1.kumar@intel.com>
>>>> Signed-off-by: Vidya Srinivas <vidya.srinivas@intel.com>
>>>> Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.c
>>>> om>
>>>> ---
>>>> tests/kms_plane_scaling.c | 93
>>>> ++++++++++++++++++++++++++++++++++++++++++++++-
>>>> 1 file changed, 92 insertions(+), 1 deletion(-)
>>>>
>>>> diff --git a/tests/kms_plane_scaling.c
>>>> b/tests/kms_plane_scaling.c
>>>> index 36a6a8ef042b..8dbacf67b0a0 100644
>>>> --- a/tests/kms_plane_scaling.c
>>>> +++ b/tests/kms_plane_scaling.c
>>>> @@ -38,10 +38,12 @@ typedef struct {
>>>> int image_w;
>>>> int image_h;
>>>>
>>>> - struct igt_fb fb[3];
>>>> + struct igt_fb fb[4];
>>>> +
>>>> igt_plane_t *plane1;
>>>> igt_plane_t *plane2;
>>>> igt_plane_t *plane3;
>>>> + igt_plane_t *plane4;
>>>> } data_t;
>>>>
>>>> static int get_num_scalers(uint32_t devid, enum pipe pipe)
>>>> @@ -456,6 +458,92 @@
>>>> test_scaler_with_clipping_clamping_scenario(data_t *d, enum pipe
>>>> pipe, igt_outpu
>>>> igt_display_commit2(&d->display, COMMIT_ATOMIC);
>>>> }
>>>>
>>>> +static void find_connected_pipe(igt_display_t *display, bool
>>>> second,
>>>> enum pipe *pipe, igt_output_t **output)
>>>> +{
>>>> + enum pipe first = PIPE_NONE;
>>>> + igt_output_t *first_output = NULL;
>>>> + bool found = false;
>>>> +
>>>> + for_each_pipe_with_valid_output(display, *pipe, *output)
>>>> {
>>>> + if (first == *pipe || *output == first_output)
>>>> + continue;
>>>> +
>>>> + if (second) {
>>>> + first = *pipe;
>>>> + first_output = *output;
>>>> + second = false;
>>>> + continue;
>>>> + }
>>>> +
>>>> + return;
>>>> + }
>>>> +
>>>> + if (first_output)
>>>> + igt_require_f(found, "No second valid output
>>>> found\n");
>>>> + else
>>>> + igt_require_f(found, "No valid outputs
>>>> found\n");
>>>> +}
>>>> +
>>>> +static void test_scaler_with_multi_pipe_plane(data_t *d)
>>>> +{
>>>> + igt_display_t *display = &d->display;
>>>> + igt_output_t *output1, *output2;
>>>> + drmModeModeInfo *mode1, *mode2;
>>>> + enum pipe pipe1, pipe2;
>>>> +
>>>> + cleanup_crtc(d);
>>>> +
>>>> + find_connected_pipe(display, false, &pipe1, &output1);
>>>> + find_connected_pipe(display, true, &pipe2, &output2);
>>>> +
>>>> + igt_skip_on(!output1 || !output2);
>>>> +
>>>> + igt_output_set_pipe(output1, pipe1);
>>>> + igt_output_set_pipe(output2, pipe2);
>>>> +
>>>> + d->plane1 = igt_output_get_plane(output1, 0);
>>>> + d->plane2 = get_num_scalers(d->devid, pipe1) >= 2 ?
>>>> igt_output_get_plane(output1, 1) : NULL;
>>>> + d->plane3 = igt_output_get_plane(output2, 0);
>>>> + d->plane4 = get_num_scalers(d->devid, pipe2) >= 2 ?
>>>> igt_output_get_plane(output2, 1) : NULL;
>>> Maybe use DRM plane type definitions DRM_PLANE_TYPE_OVERLAY and
>>> DRM_PLANE_TYPE_PRIMARY instead of 0 and 1 to better indicate what
>>> plane
>>> we are referring to.
>> igt_output_get_plane takes an index, igt_output_get_plane_type takes
>> those definitions.
>> I've been bit a few times by that as well. :)
> yeah, you're absolutely right. Should have read more carefully :)
>
> You can bash my r-b.
>
> Reviewed-by: Mika Kahola <mika.kahola@intel.com>
Thanks for review, pushed.
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply [flat|nested] 30+ messages in thread
* Re: [PATCH i-g-t v3 0/8] kms_plane_scaling tests.
2018-01-15 14:28 [PATCH i-g-t v3 0/8] kms_plane_scaling tests Maarten Lankhorst
@ 2018-01-17 10:05 ` Daniel Vetter
2018-01-15 14:28 ` [PATCH i-g-t v3 2/8] tests/kms_plane_scaling: Fix basic scaling test, v3 Maarten Lankhorst
` (14 subsequent siblings)
15 siblings, 0 replies; 30+ messages in thread
From: Daniel Vetter @ 2018-01-17 10:05 UTC (permalink / raw)
To: Maarten Lankhorst; +Cc: IGT development, intel-gfx
On Mon, Jan 15, 2018 at 03:28:26PM +0100, Maarten Lankhorst wrote:
> This series fixes the current scaler igt test failures and enhances
> kms_plane_scaling and kms_plane for covering subtests below:
> - verify all the supported pixel formats in planes
> - combination of rotation and scaling
> - combination of tiling and scaling
> - multi-plane/multi-pipe scaling
>
> I've cleaned up the previous series sent out by Vidya Srinivas,
> and split out some patches for clarity.
>
> Changes since previous version:
> - Fix test failures on APL.
> - Fix test failures on platforms the tests should skip on.
>
> Jyoti Yadav (3):
> tests/kms_plane_scaling: test scaling with tiling rotation and pixel
> formats, v2.
> tests/kms_plane_scaling: test scaler with clipping clamping, v3.
> tests/kms_plane_scaling: test for multi pipe with scaling, v3.
>
> Maarten Lankhorst (4):
> tests/kms_plane_scaling: Move the actual test to its own function.
> tests/kms_plane_scaling: Convert from simple test to full test
> tests/kms_plane_scaling: Move get_num_scalers to a function.
> tests/kms_plane_scaling: Clean up tests to work better with igt_kms,
> v2.
>
> Mahesh Kumar (1):
> tests/kms_plane_scaling: Fix basic scaling test, v3.
Please remember to send igt patches to the new mailing list in the future.
Adding it.
-Daniel
--
Daniel Vetter
Software Engineer, Intel Corporation
http://blog.ffwll.ch
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply [flat|nested] 30+ messages in thread
* Re: [Intel-gfx] [PATCH i-g-t v3 0/8] kms_plane_scaling tests.
@ 2018-01-17 10:05 ` Daniel Vetter
0 siblings, 0 replies; 30+ messages in thread
From: Daniel Vetter @ 2018-01-17 10:05 UTC (permalink / raw)
To: Maarten Lankhorst; +Cc: IGT development, intel-gfx
On Mon, Jan 15, 2018 at 03:28:26PM +0100, Maarten Lankhorst wrote:
> This series fixes the current scaler igt test failures and enhances
> kms_plane_scaling and kms_plane for covering subtests below:
> - verify all the supported pixel formats in planes
> - combination of rotation and scaling
> - combination of tiling and scaling
> - multi-plane/multi-pipe scaling
>
> I've cleaned up the previous series sent out by Vidya Srinivas,
> and split out some patches for clarity.
>
> Changes since previous version:
> - Fix test failures on APL.
> - Fix test failures on platforms the tests should skip on.
>
> Jyoti Yadav (3):
> tests/kms_plane_scaling: test scaling with tiling rotation and pixel
> formats, v2.
> tests/kms_plane_scaling: test scaler with clipping clamping, v3.
> tests/kms_plane_scaling: test for multi pipe with scaling, v3.
>
> Maarten Lankhorst (4):
> tests/kms_plane_scaling: Move the actual test to its own function.
> tests/kms_plane_scaling: Convert from simple test to full test
> tests/kms_plane_scaling: Move get_num_scalers to a function.
> tests/kms_plane_scaling: Clean up tests to work better with igt_kms,
> v2.
>
> Mahesh Kumar (1):
> tests/kms_plane_scaling: Fix basic scaling test, v3.
Please remember to send igt patches to the new mailing list in the future.
Adding it.
-Daniel
--
Daniel Vetter
Software Engineer, Intel Corporation
http://blog.ffwll.ch
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply [flat|nested] 30+ messages in thread
end of thread, other threads:[~2018-01-17 10:05 UTC | newest]
Thread overview: 30+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-01-15 14:28 [PATCH i-g-t v3 0/8] kms_plane_scaling tests Maarten Lankhorst
2018-01-15 14:28 ` [PATCH i-g-t v3 1/8] tests/kms_plane_scaling: Move the actual test to its own function Maarten Lankhorst
2018-01-15 14:28 ` [PATCH i-g-t v3 2/8] tests/kms_plane_scaling: Fix basic scaling test, v3 Maarten Lankhorst
2018-01-15 14:28 ` [PATCH i-g-t v3 3/8] tests/kms_plane_scaling: Convert from simple test to full test Maarten Lankhorst
2018-01-15 14:28 ` [PATCH i-g-t v3 4/8] tests/kms_plane_scaling: Move get_num_scalers to a function Maarten Lankhorst
2018-01-16 8:22 ` Mika Kahola
2018-01-16 10:03 ` [PATCH i-g-t] tests/kms_plane_scaling: Move get_num_scalers to a function, v2 Maarten Lankhorst
2018-01-16 11:55 ` Mika Kahola
2018-01-15 14:28 ` [PATCH i-g-t v3 5/8] tests/kms_plane_scaling: Clean up tests to work better with igt_kms, v2 Maarten Lankhorst
2018-01-16 9:32 ` Mika Kahola
2018-01-15 14:28 ` [PATCH i-g-t v3 6/8] tests/kms_plane_scaling: test scaling with tiling rotation and pixel formats, v2 Maarten Lankhorst
2018-01-16 12:43 ` Mika Kahola
2018-01-16 14:00 ` [PATCH i-g-t] tests/kms_plane_scaling: test scaling with tiling rotation and pixel formats, v3 Maarten Lankhorst
2018-01-16 14:22 ` Mika Kahola
2018-01-15 14:28 ` [PATCH i-g-t v3 7/8] tests/kms_plane_scaling: test scaler with clipping clamping, v3 Maarten Lankhorst
2018-01-16 11:14 ` Mika Kahola
2018-01-15 14:28 ` [PATCH i-g-t v3 8/8] tests/kms_plane_scaling: test for multi pipe with scaling, v3 Maarten Lankhorst
2018-01-16 13:46 ` Mika Kahola
2018-01-16 13:47 ` Maarten Lankhorst
2018-01-16 13:56 ` Mika Kahola
2018-01-17 9:23 ` Maarten Lankhorst
2018-01-15 16:05 ` ✓ Fi.CI.BAT: success for kms_plane_scaling tests Patchwork
2018-01-15 19:25 ` ✗ Fi.CI.IGT: failure " Patchwork
2018-01-16 9:14 ` ✓ Fi.CI.BAT: success " Patchwork
2018-01-16 10:24 ` ✓ Fi.CI.BAT: success for kms_plane_scaling tests. (rev2) Patchwork
2018-01-16 11:14 ` ✗ Fi.CI.IGT: failure " Patchwork
2018-01-16 14:59 ` ✓ Fi.CI.BAT: success for kms_plane_scaling tests. (rev3) Patchwork
2018-01-16 16:43 ` ✗ Fi.CI.IGT: warning " Patchwork
2018-01-17 10:05 ` [PATCH i-g-t v3 0/8] kms_plane_scaling tests Daniel Vetter
2018-01-17 10:05 ` [Intel-gfx] " Daniel Vetter
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.