* [igt-dev] [PATCH i-g-t] tests/kms_render: Rewrite test to take advantage of igt_display.
@ 2018-01-24 10:25 Maarten Lankhorst
2018-01-24 11:01 ` [igt-dev] ✓ Fi.CI.BAT: success for " Patchwork
` (3 more replies)
0 siblings, 4 replies; 9+ messages in thread
From: Maarten Lankhorst @ 2018-01-24 10:25 UTC (permalink / raw)
To: igt-dev
This test was taking ~100s for each subtest, and both tests were the same,
but required the user to pay attention. I've changed it to automated
checking with CRC, and removed the subtests.
This reduces the runtime for the test from about 200s to 10s
(with NV12 enabled), and checks whether pixel formats are supported
without special casing them.
Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
---
tests/kms_render.c | 191 ++++++++++++++++++-----------------------------------
1 file changed, 64 insertions(+), 127 deletions(-)
diff --git a/tests/kms_render.c b/tests/kms_render.c
index 255cf3de39cf..0b31d351dd90 100644
--- a/tests/kms_render.c
+++ b/tests/kms_render.c
@@ -31,16 +31,7 @@
#include "intel_bufmgr.h"
-drmModeRes *resources;
-int drm_fd;
-
-enum test_flags {
- TEST_DIRECT_RENDER = 0x01,
- TEST_GPU_BLIT = 0x02,
-};
-
-static int paint_fb(struct igt_fb *fb, const char *test_name,
- const char *mode_format_str, const char *cconf_str)
+static int paint_fb(int drm_fd, struct igt_fb *fb, const char *mode_format_str, const char *cconf_str)
{
cairo_t *cr;
@@ -51,7 +42,7 @@ static int paint_fb(struct igt_fb *fb, const char *test_name,
cairo_move_to(cr, fb->width / 2, fb->height / 2);
cairo_set_font_size(cr, 36);
- igt_cairo_printf_line(cr, align_hcenter, 10, "%s", test_name);
+ igt_cairo_printf_line(cr, align_hcenter, 10, "kms_render");
igt_cairo_printf_line(cr, align_hcenter, 10, "%s", mode_format_str);
igt_cairo_printf_line(cr, align_hcenter, 10, "%s", cconf_str);
@@ -60,7 +51,7 @@ static int paint_fb(struct igt_fb *fb, const char *test_name,
return 0;
}
-static void gpu_blit(struct igt_fb *dst_fb, struct igt_fb *src_fb)
+static void gpu_blit(int drm_fd, struct igt_fb *dst_fb, struct igt_fb *src_fb)
{
drm_intel_bo *dst_bo;
drm_intel_bo *src_bo;
@@ -101,156 +92,102 @@ static void gpu_blit(struct igt_fb *dst_fb, struct igt_fb *src_fb)
drm_intel_bo_unreference(dst_bo);
}
-static int test_format(const char *test_name,
- struct kmstest_connector_config *cconf,
- drmModeModeInfo *mode, uint32_t format,
- enum test_flags flags)
+static void test_format(igt_display_t *display,
+ enum pipe pipe,
+ igt_output_t *output,
+ igt_plane_t *primary,
+ uint32_t format)
{
- int width;
- int height;
+ drmModeModeInfo *mode = igt_output_get_mode(output);
+ int width = mode->hdisplay, height = mode->vdisplay, ret, drm_fd = display->drm_fd;
struct igt_fb fb[2];
char *mode_format_str;
char *cconf_str;
- int ret;
+ igt_pipe_crc_t *pipe_crc;
+ igt_crc_t direct, blit;
ret = asprintf(&mode_format_str, "%s @ %dHz / %s",
- mode->name, mode->vrefresh, igt_format_str(format));
+ mode->name, mode->vrefresh, igt_format_str(format));
igt_assert_lt(0, ret);
+
ret = asprintf(&cconf_str, "pipe %s, encoder %s, connector %s",
- kmstest_pipe_name(cconf->pipe),
- kmstest_encoder_type_str(cconf->encoder->encoder_type),
- kmstest_connector_type_str(cconf->connector->connector_type));
+ kmstest_pipe_name(pipe),
+ kmstest_encoder_type_str(output->config.encoder->encoder_type),
+ output->name);
igt_assert_lt(0, ret);
- igt_info("Beginning test %s with %s on %s\n",
- test_name, mode_format_str, cconf_str);
-
- width = mode->hdisplay;
- height = mode->vdisplay;
-
- if (!igt_create_fb(drm_fd, width, height, format,
- LOCAL_DRM_FORMAT_MOD_NONE, &fb[0]))
- goto err1;
-
- if (!igt_create_fb(drm_fd, width, height, format,
- LOCAL_DRM_FORMAT_MOD_NONE, &fb[1]))
- goto err2;
-
- if (drmModeSetCrtc(drm_fd, cconf->crtc->crtc_id, fb[0].fb_id,
- 0, 0, &cconf->connector->connector_id, 1,
- mode))
- goto err2;
- do_or_die(drmModePageFlip(drm_fd, cconf->crtc->crtc_id, fb[0].fb_id,
- 0, NULL));
- sleep(2);
-
- if (flags & TEST_DIRECT_RENDER) {
- paint_fb(&fb[0], test_name, mode_format_str, cconf_str);
- } else if (flags & TEST_GPU_BLIT) {
- paint_fb(&fb[1], test_name, mode_format_str, cconf_str);
- gpu_blit(&fb[0], &fb[1]);
- }
- sleep(5);
+ igt_create_fb(drm_fd, width, height, format,
+ LOCAL_DRM_FORMAT_MOD_NONE, &fb[0]);
- igt_info("Test %s with %s on %s: PASSED\n",
- test_name, mode_format_str, cconf_str);
- free(mode_format_str);
- free(cconf_str);
+ igt_create_fb(drm_fd, width, height, format,
+ LOCAL_DRM_FORMAT_MOD_NONE, &fb[1]);
- igt_remove_fb(drm_fd, &fb[1]);
- igt_remove_fb(drm_fd, &fb[0]);
+ paint_fb(drm_fd, &fb[0], mode_format_str, cconf_str);
+ gpu_blit(drm_fd, &fb[1], &fb[0]);
- return 0;
+ igt_plane_set_fb(primary, &fb[0]);
+ igt_display_commit2(display, display->is_atomic ? COMMIT_ATOMIC : COMMIT_LEGACY);
+
+ pipe_crc = igt_pipe_crc_new(drm_fd, pipe, INTEL_PIPE_CRC_SOURCE_AUTO);
+ igt_pipe_crc_collect_crc(pipe_crc, &direct);
+
+ igt_plane_set_fb(primary, &fb[1]);
+ igt_display_commit2(display, display->is_atomic ? COMMIT_ATOMIC : COMMIT_LEGACY);
+ igt_pipe_crc_collect_crc(pipe_crc, &blit);
+
+ igt_assert_crc_equal(&direct, &blit);
+
+ igt_pipe_crc_free(pipe_crc);
-err2:
- igt_remove_fb(drm_fd, &fb[0]);
-err1:
- igt_info("Test %s with %s on %s: SKIPPED\n",
- test_name, mode_format_str, cconf_str);
free(mode_format_str);
free(cconf_str);
- return -1;
+ igt_remove_fb(drm_fd, &fb[1]);
+ igt_remove_fb(drm_fd, &fb[0]);
}
-static void test_connector(const char *test_name,
- struct kmstest_connector_config *cconf,
- enum test_flags flags)
+static void test_connector(igt_display_t *display, enum pipe pipe,
+ igt_output_t *output)
{
const uint32_t *formats;
- int format_count;
- int i;
+ igt_plane_t *primary = &display->pipes[pipe].planes[0];
+ int format_count, i, j, tested = 0;
+
+ igt_display_reset(display);
+ igt_output_set_pipe(output, pipe);
igt_get_all_cairo_formats(&formats, &format_count);
for (i = 0; i < format_count; i++) {
- if (is_i915_device(drm_fd)
- && intel_gen(intel_get_drm_devid(drm_fd)) < 4
- && formats[i] == DRM_FORMAT_XRGB2101010) {
- igt_info("gen2/3 don't support 10bpc, skipping\n");
- continue;
- }
-
- test_format(test_name,
- cconf, &cconf->connector->modes[0],
- formats[i], flags);
- }
-}
-
-static int run_test(const char *test_name, enum test_flags flags)
-{
- int i;
-
- resources = drmModeGetResources(drm_fd);
- igt_assert(resources);
-
- /* Find any connected displays */
- for (i = 0; i < resources->count_connectors; i++) {
- uint32_t connector_id;
- int j;
-
- connector_id = resources->connectors[i];
- for (j = 0; j < resources->count_crtcs; j++) {
- struct kmstest_connector_config cconf;
-
- if (!kmstest_get_connector_config(drm_fd, connector_id,
- 1 << j, &cconf))
+ for (j = 0; j < primary->drm_plane->count_formats; j++) {
+ if (primary->drm_plane->formats[j] != formats[i])
continue;
- test_connector(test_name, &cconf, flags);
-
- kmstest_free_connector_config(&cconf);
+ test_format(display, pipe, output,
+ primary, formats[i]);
+ tested = 1;
+ break;
}
}
-
- drmModeFreeResources(resources);
-
- return 1;
+ igt_require_f(tested > 0, "No valid formats could be tested\n");
}
-igt_main
+igt_simple_main
{
- struct {
- enum test_flags flags;
- const char *name;
- } tests[] = {
- { TEST_DIRECT_RENDER, "direct-render" },
- { TEST_GPU_BLIT, "gpu-blit" },
- };
- int i;
+ igt_display_t display;
+ igt_output_t *output;
+ enum pipe pipe;
igt_skip_on_simulation();
- igt_fixture {
- drm_fd = drm_open_driver_master(DRIVER_ANY);
+ display.drm_fd = drm_open_driver_master(DRIVER_ANY);
- kmstest_set_vt_graphics_mode();
- }
+ kmstest_set_vt_graphics_mode();
+ igt_display_init(&display, display.drm_fd);
+ igt_display_require_output(&display);
- for (i = 0; i < ARRAY_SIZE(tests); i++) {
- igt_subtest(tests[i].name)
- run_test(tests[i].name, tests[i].flags);
- }
+ for_each_pipe_with_valid_output(&display, pipe, output)
+ test_connector(&display, pipe, output);
- igt_fixture
- close(drm_fd);
+ igt_display_fini(&display);
+ close(display.drm_fd);
}
--
2.15.1
_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev
^ permalink raw reply related [flat|nested] 9+ messages in thread
* [igt-dev] ✓ Fi.CI.BAT: success for tests/kms_render: Rewrite test to take advantage of igt_display.
2018-01-24 10:25 [igt-dev] [PATCH i-g-t] tests/kms_render: Rewrite test to take advantage of igt_display Maarten Lankhorst
@ 2018-01-24 11:01 ` Patchwork
2018-01-24 11:08 ` [igt-dev] [PATCH i-g-t] " Chris Wilson
` (2 subsequent siblings)
3 siblings, 0 replies; 9+ messages in thread
From: Patchwork @ 2018-01-24 11:01 UTC (permalink / raw)
To: Maarten Lankhorst; +Cc: igt-dev
== Series Details ==
Series: tests/kms_render: Rewrite test to take advantage of igt_display.
URL : https://patchwork.freedesktop.org/series/37024/
State : success
== Summary ==
IGT patchset tested on top of latest successful build
37bd27f28a868c287faf361864a16e77b8d9246f tools/intel_vbt_decode: add --describe option
with latest DRM-Tip kernel build CI_DRM_3680
ef2011c63806 drm-tip: 2018y-01m-24d-09h-45m-08s UTC integration manifest
Testlist changes:
+igt@kms_render
-igt@kms_render@direct-render
-igt@kms_render@gpu-blit
Test debugfs_test:
Subgroup read_all_entries:
dmesg-fail -> DMESG-WARN (fi-elk-e7500) fdo#103989
Test kms_pipe_crc_basic:
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#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:419s
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:494s
fi-bwr-2160 total:288 pass:183 dwarn:0 dfail:0 fail:0 skip:105 time:285s
fi-bxt-dsi total:288 pass:258 dwarn:0 dfail:0 fail:0 skip:30 time:488s
fi-bxt-j4205 total:288 pass:259 dwarn:0 dfail:0 fail:0 skip:29 time:491s
fi-byt-j1900 total:288 pass:253 dwarn:0 dfail:0 fail:0 skip:35 time:472s
fi-byt-n2820 total:288 pass:249 dwarn:0 dfail:0 fail:0 skip:39 time:456s
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:513s
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:403s
fi-ilk-650 total:288 pass:228 dwarn:0 dfail:0 fail:0 skip:60 time:418s
fi-ivb-3520m total:288 pass:259 dwarn:0 dfail:0 fail:0 skip:29 time:457s
fi-ivb-3770 total:288 pass:255 dwarn:0 dfail:0 fail:0 skip:33 time:417s
fi-kbl-7500u total:288 pass:263 dwarn:1 dfail:0 fail:0 skip:24 time:466s
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:456s
fi-kbl-r total:288 pass:261 dwarn:0 dfail:0 fail:0 skip:27 time:502s
fi-pnv-d510 total:288 pass:222 dwarn:1 dfail:0 fail:0 skip:65 time:580s
fi-skl-6260u total:288 pass:268 dwarn:0 dfail:0 fail:0 skip:20 time:437s
fi-skl-6600u total:288 pass:261 dwarn:0 dfail:0 fail:0 skip:27 time:518s
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:488s
fi-skl-6770hq total:288 pass:268 dwarn:0 dfail:0 fail:0 skip:20 time:497s
fi-skl-guc total:288 pass:260 dwarn:0 dfail:0 fail:0 skip:28 time:424s
fi-skl-gvtdvm total:288 pass:265 dwarn:0 dfail:0 fail:0 skip:23 time:436s
fi-snb-2520m total:288 pass:248 dwarn:0 dfail:0 fail:0 skip:40 time:529s
fi-snb-2600 total:288 pass:248 dwarn:0 dfail:0 fail:0 skip:40 time:396s
Blacklisted hosts:
fi-cfl-s2 total:288 pass:262 dwarn:0 dfail:0 fail:0 skip:26 time:576s
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_818/issues.html
_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [igt-dev] [PATCH i-g-t] tests/kms_render: Rewrite test to take advantage of igt_display.
2018-01-24 10:25 [igt-dev] [PATCH i-g-t] tests/kms_render: Rewrite test to take advantage of igt_display Maarten Lankhorst
2018-01-24 11:01 ` [igt-dev] ✓ Fi.CI.BAT: success for " Patchwork
@ 2018-01-24 11:08 ` Chris Wilson
2018-01-24 11:22 ` Maarten Lankhorst
2018-01-24 11:55 ` Mika Kahola
2018-01-24 13:24 ` [igt-dev] ✗ Fi.CI.IGT: failure for " Patchwork
3 siblings, 1 reply; 9+ messages in thread
From: Chris Wilson @ 2018-01-24 11:08 UTC (permalink / raw)
To: Maarten Lankhorst, igt-dev
Quoting Maarten Lankhorst (2018-01-24 10:25:00)
> This test was taking ~100s for each subtest, and both tests were the same,
> but required the user to pay attention. I've changed it to automated
> checking with CRC, and removed the subtests.
What do we do here that isn't covered by kms_frontbuffer*? My guess
would be do simple testing of more configurations (as opposed to
kms_frontbuffer that does lots of different drawing to the same
configuration).
-Chris
_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [igt-dev] [PATCH i-g-t] tests/kms_render: Rewrite test to take advantage of igt_display.
2018-01-24 11:08 ` [igt-dev] [PATCH i-g-t] " Chris Wilson
@ 2018-01-24 11:22 ` Maarten Lankhorst
2018-01-30 8:01 ` Daniel Vetter
0 siblings, 1 reply; 9+ messages in thread
From: Maarten Lankhorst @ 2018-01-24 11:22 UTC (permalink / raw)
To: Chris Wilson, igt-dev
Op 24-01-18 om 12:08 schreef Chris Wilson:
> Quoting Maarten Lankhorst (2018-01-24 10:25:00)
>> This test was taking ~100s for each subtest, and both tests were the same,
>> but required the user to pay attention. I've changed it to automated
>> checking with CRC, and removed the subtests.
> What do we do here that isn't covered by kms_frontbuffer*? My guess
> would be do simple testing of more configurations (as opposed to
> kms_frontbuffer that does lots of different drawing to the same
> configuration).
Hm probably right. I wouldn't mind removing it too, to be honest..
_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [igt-dev] [PATCH i-g-t] tests/kms_render: Rewrite test to take advantage of igt_display.
2018-01-24 10:25 [igt-dev] [PATCH i-g-t] tests/kms_render: Rewrite test to take advantage of igt_display Maarten Lankhorst
2018-01-24 11:01 ` [igt-dev] ✓ Fi.CI.BAT: success for " Patchwork
2018-01-24 11:08 ` [igt-dev] [PATCH i-g-t] " Chris Wilson
@ 2018-01-24 11:55 ` Mika Kahola
2018-01-24 13:24 ` [igt-dev] ✗ Fi.CI.IGT: failure for " Patchwork
3 siblings, 0 replies; 9+ messages in thread
From: Mika Kahola @ 2018-01-24 11:55 UTC (permalink / raw)
To: Maarten Lankhorst, igt-dev
On Wed, 2018-01-24 at 11:25 +0100, Maarten Lankhorst wrote:
> This test was taking ~100s for each subtest, and both tests were the
> same,
> but required the user to pay attention. I've changed it to automated
> checking with CRC, and removed the subtests.
>
> This reduces the runtime for the test from about 200s to 10s
> (with NV12 enabled), and checks whether pixel formats are supported
> without special casing them.
I welcome this idea to reduce test execution time. At the moment our
IGT tests takes quite much time to complete.
>
> Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
> ---
> tests/kms_render.c | 191 ++++++++++++++++++-------------------------
> ----------
> 1 file changed, 64 insertions(+), 127 deletions(-)
>
> diff --git a/tests/kms_render.c b/tests/kms_render.c
> index 255cf3de39cf..0b31d351dd90 100644
> --- a/tests/kms_render.c
> +++ b/tests/kms_render.c
> @@ -31,16 +31,7 @@
>
> #include "intel_bufmgr.h"
>
> -drmModeRes *resources;
> -int drm_fd;
> -
> -enum test_flags {
> - TEST_DIRECT_RENDER = 0x01,
> - TEST_GPU_BLIT = 0x02,
> -};
> -
> -static int paint_fb(struct igt_fb *fb, const char *test_name,
> - const char *mode_format_str, const char
> *cconf_str)
> +static int paint_fb(int drm_fd, struct igt_fb *fb, const char
> *mode_format_str, const char *cconf_str)
> {
> cairo_t *cr;
>
> @@ -51,7 +42,7 @@ static int paint_fb(struct igt_fb *fb, const char
> *test_name,
>
> cairo_move_to(cr, fb->width / 2, fb->height / 2);
> cairo_set_font_size(cr, 36);
> - igt_cairo_printf_line(cr, align_hcenter, 10, "%s",
> test_name);
> + igt_cairo_printf_line(cr, align_hcenter, 10, "kms_render");
> igt_cairo_printf_line(cr, align_hcenter, 10, "%s",
> mode_format_str);
> igt_cairo_printf_line(cr, align_hcenter, 10, "%s",
> cconf_str);
>
> @@ -60,7 +51,7 @@ static int paint_fb(struct igt_fb *fb, const char
> *test_name,
> return 0;
> }
>
> -static void gpu_blit(struct igt_fb *dst_fb, struct igt_fb *src_fb)
> +static void gpu_blit(int drm_fd, struct igt_fb *dst_fb, struct
> igt_fb *src_fb)
> {
> drm_intel_bo *dst_bo;
> drm_intel_bo *src_bo;
> @@ -101,156 +92,102 @@ static void gpu_blit(struct igt_fb *dst_fb,
> struct igt_fb *src_fb)
> drm_intel_bo_unreference(dst_bo);
> }
>
> -static int test_format(const char *test_name,
> - struct kmstest_connector_config *cconf,
> - drmModeModeInfo *mode, uint32_t format,
> - enum test_flags flags)
> +static void test_format(igt_display_t *display,
> + enum pipe pipe,
> + igt_output_t *output,
> + igt_plane_t *primary,
> + uint32_t format)
> {
> - int width;
> - int height;
> + drmModeModeInfo *mode = igt_output_get_mode(output);
> + int width = mode->hdisplay, height = mode->vdisplay, ret,
> drm_fd = display->drm_fd;
This could be split into separate lines. It would be easier to read
that way.
Otherwise the patch looks ok.
> struct igt_fb fb[2];
> char *mode_format_str;
> char *cconf_str;
> - int ret;
> + igt_pipe_crc_t *pipe_crc;
> + igt_crc_t direct, blit;
>
> ret = asprintf(&mode_format_str, "%s @ %dHz / %s",
> - mode->name, mode->vrefresh,
> igt_format_str(format));
> + mode->name, mode->vrefresh,
> igt_format_str(format));
> igt_assert_lt(0, ret);
> +
> ret = asprintf(&cconf_str, "pipe %s, encoder %s, connector
> %s",
> - kmstest_pipe_name(cconf->pipe),
> - kmstest_encoder_type_str(cconf->encoder-
> >encoder_type),
> - kmstest_connector_type_str(cconf->connector-
> >connector_type));
> + kmstest_pipe_name(pipe),
> + kmstest_encoder_type_str(output-
> >config.encoder->encoder_type),
> + output->name);
> igt_assert_lt(0, ret);
>
> - igt_info("Beginning test %s with %s on %s\n",
> - test_name, mode_format_str, cconf_str);
> -
> - width = mode->hdisplay;
> - height = mode->vdisplay;
> -
> - if (!igt_create_fb(drm_fd, width, height, format,
> - LOCAL_DRM_FORMAT_MOD_NONE, &fb[0]))
> - goto err1;
> -
> - if (!igt_create_fb(drm_fd, width, height, format,
> - LOCAL_DRM_FORMAT_MOD_NONE, &fb[1])
> )
> - goto err2;
> -
> - if (drmModeSetCrtc(drm_fd, cconf->crtc->crtc_id,
> fb[0].fb_id,
> - 0, 0, &cconf->connector-
> >connector_id, 1,
> - mode))
> - goto err2;
> - do_or_die(drmModePageFlip(drm_fd, cconf->crtc->crtc_id,
> fb[0].fb_id,
> - 0, NULL));
> - sleep(2);
> -
> - if (flags & TEST_DIRECT_RENDER) {
> - paint_fb(&fb[0], test_name, mode_format_str,
> cconf_str);
> - } else if (flags & TEST_GPU_BLIT) {
> - paint_fb(&fb[1], test_name, mode_format_str,
> cconf_str);
> - gpu_blit(&fb[0], &fb[1]);
> - }
> - sleep(5);
> + igt_create_fb(drm_fd, width, height, format,
> + LOCAL_DRM_FORMAT_MOD_NONE, &fb[0]);
>
> - igt_info("Test %s with %s on %s: PASSED\n",
> - test_name, mode_format_str, cconf_str);
> - free(mode_format_str);
> - free(cconf_str);
> + igt_create_fb(drm_fd, width, height, format,
> + LOCAL_DRM_FORMAT_MOD_NONE, &fb[1]);
>
> - igt_remove_fb(drm_fd, &fb[1]);
> - igt_remove_fb(drm_fd, &fb[0]);
> + paint_fb(drm_fd, &fb[0], mode_format_str, cconf_str);
> + gpu_blit(drm_fd, &fb[1], &fb[0]);
>
> - return 0;
> + igt_plane_set_fb(primary, &fb[0]);
> + igt_display_commit2(display, display->is_atomic ?
> COMMIT_ATOMIC : COMMIT_LEGACY);
> +
> + pipe_crc = igt_pipe_crc_new(drm_fd, pipe,
> INTEL_PIPE_CRC_SOURCE_AUTO);
> + igt_pipe_crc_collect_crc(pipe_crc, &direct);
> +
> + igt_plane_set_fb(primary, &fb[1]);
> + igt_display_commit2(display, display->is_atomic ?
> COMMIT_ATOMIC : COMMIT_LEGACY);
> + igt_pipe_crc_collect_crc(pipe_crc, &blit);
> +
> + igt_assert_crc_equal(&direct, &blit);
> +
> + igt_pipe_crc_free(pipe_crc);
>
> -err2:
> - igt_remove_fb(drm_fd, &fb[0]);
> -err1:
> - igt_info("Test %s with %s on %s: SKIPPED\n",
> - test_name, mode_format_str, cconf_str);
> free(mode_format_str);
> free(cconf_str);
>
> - return -1;
> + igt_remove_fb(drm_fd, &fb[1]);
> + igt_remove_fb(drm_fd, &fb[0]);
> }
>
> -static void test_connector(const char *test_name,
> - struct kmstest_connector_config *cconf,
> - enum test_flags flags)
> +static void test_connector(igt_display_t *display, enum pipe pipe,
> + igt_output_t *output)
> {
> const uint32_t *formats;
> - int format_count;
> - int i;
> + igt_plane_t *primary = &display->pipes[pipe].planes[0];
> + int format_count, i, j, tested = 0;
> +
> + igt_display_reset(display);
> + igt_output_set_pipe(output, pipe);
>
> igt_get_all_cairo_formats(&formats, &format_count);
> for (i = 0; i < format_count; i++) {
> - if (is_i915_device(drm_fd)
> - && intel_gen(intel_get_drm_devid(drm_fd)) < 4
> - && formats[i] == DRM_FORMAT_XRGB2101010) {
> - igt_info("gen2/3 don't support 10bpc,
> skipping\n");
> - continue;
> - }
> -
> - test_format(test_name,
> - cconf, &cconf->connector->modes[0],
> - formats[i], flags);
> - }
> -}
> -
> -static int run_test(const char *test_name, enum test_flags flags)
> -{
> - int i;
> -
> - resources = drmModeGetResources(drm_fd);
> - igt_assert(resources);
> -
> - /* Find any connected displays */
> - for (i = 0; i < resources->count_connectors; i++) {
> - uint32_t connector_id;
> - int j;
> -
> - connector_id = resources->connectors[i];
> - for (j = 0; j < resources->count_crtcs; j++) {
> - struct kmstest_connector_config cconf;
> -
> - if (!kmstest_get_connector_config(drm_fd,
> connector_id,
> - 1 << j,
> &cconf))
> + for (j = 0; j < primary->drm_plane->count_formats;
> j++) {
> + if (primary->drm_plane->formats[j] !=
> formats[i])
> continue;
>
> - test_connector(test_name, &cconf, flags);
> -
> - kmstest_free_connector_config(&cconf);
> + test_format(display, pipe, output,
> + primary, formats[i]);
> + tested = 1;
> + break;
> }
> }
> -
> - drmModeFreeResources(resources);
> -
> - return 1;
> + igt_require_f(tested > 0, "No valid formats could be
> tested\n");
> }
>
> -igt_main
> +igt_simple_main
> {
> - struct {
> - enum test_flags flags;
> - const char *name;
> - } tests[] = {
> - { TEST_DIRECT_RENDER, "direct-render" },
> - { TEST_GPU_BLIT, "gpu-blit" },
> - };
> - int i;
> + igt_display_t display;
> + igt_output_t *output;
> + enum pipe pipe;
>
> igt_skip_on_simulation();
>
> - igt_fixture {
> - drm_fd = drm_open_driver_master(DRIVER_ANY);
> + display.drm_fd = drm_open_driver_master(DRIVER_ANY);
>
> - kmstest_set_vt_graphics_mode();
> - }
> + kmstest_set_vt_graphics_mode();
> + igt_display_init(&display, display.drm_fd);
> + igt_display_require_output(&display);
>
> - for (i = 0; i < ARRAY_SIZE(tests); i++) {
> - igt_subtest(tests[i].name)
> - run_test(tests[i].name, tests[i].flags);
> - }
> + for_each_pipe_with_valid_output(&display, pipe, output)
> + test_connector(&display, pipe, output);
>
> - igt_fixture
> - close(drm_fd);
> + igt_display_fini(&display);
> + close(display.drm_fd);
> }
--
Mika Kahola - Intel OTC
_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev
^ permalink raw reply [flat|nested] 9+ messages in thread
* [igt-dev] ✗ Fi.CI.IGT: failure for tests/kms_render: Rewrite test to take advantage of igt_display.
2018-01-24 10:25 [igt-dev] [PATCH i-g-t] tests/kms_render: Rewrite test to take advantage of igt_display Maarten Lankhorst
` (2 preceding siblings ...)
2018-01-24 11:55 ` Mika Kahola
@ 2018-01-24 13:24 ` Patchwork
3 siblings, 0 replies; 9+ messages in thread
From: Patchwork @ 2018-01-24 13:24 UTC (permalink / raw)
To: Maarten Lankhorst; +Cc: igt-dev
== Series Details ==
Series: tests/kms_render: Rewrite test to take advantage of igt_display.
URL : https://patchwork.freedesktop.org/series/37024/
State : failure
== Summary ==
Test kms_chv_cursor_fail:
Subgroup pipe-a-256x256-bottom-edge:
pass -> FAIL (shard-apl)
Test perf:
Subgroup buffer-fill:
fail -> PASS (shard-apl) fdo#103755
Subgroup blocking:
pass -> FAIL (shard-hsw) fdo#102252
Test kms_frontbuffer_tracking:
Subgroup fbc-rgb565-draw-blt:
pass -> FAIL (shard-snb) fdo#101623 +1
Test kms_flip:
Subgroup flip-vs-absolute-wf_vblank:
pass -> FAIL (shard-apl) fdo#100368
Subgroup 2x-flip-vs-wf_vblank-interruptible:
pass -> FAIL (shard-hsw)
Test perf_pmu:
Subgroup semaphore-wait-vecs0:
pass -> FAIL (shard-apl)
Test kms_cursor_legacy:
Subgroup flip-vs-cursor-toggle:
pass -> FAIL (shard-hsw) fdo#102670
Test gem_eio:
Subgroup in-flight-suspend:
pass -> FAIL (shard-hsw) fdo#104676 +1
Test gem_exec_suspend:
Subgroup basic-s3:
skip -> PASS (shard-snb) fdo#103880
Test kms_plane:
Subgroup pixel-format-pipe-b-planes:
pass -> INCOMPLETE (shard-hsw)
fdo#103755 https://bugs.freedesktop.org/show_bug.cgi?id=103755
fdo#102252 https://bugs.freedesktop.org/show_bug.cgi?id=102252
fdo#101623 https://bugs.freedesktop.org/show_bug.cgi?id=101623
fdo#100368 https://bugs.freedesktop.org/show_bug.cgi?id=100368
fdo#102670 https://bugs.freedesktop.org/show_bug.cgi?id=102670
fdo#104676 https://bugs.freedesktop.org/show_bug.cgi?id=104676
fdo#103880 https://bugs.freedesktop.org/show_bug.cgi?id=103880
shard-apl total:2752 pass:1713 dwarn:1 dfail:0 fail:25 skip:1013 time:13864s
shard-hsw total:2737 pass:1714 dwarn:1 dfail:0 fail:15 skip:1005 time:14462s
shard-snb total:2752 pass:1316 dwarn:1 dfail:0 fail:12 skip:1423 time:7895s
Blacklisted hosts:
shard-kbl total:2752 pass:1839 dwarn:1 dfail:0 fail:24 skip:888 time:10878s
== Logs ==
For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_818/shards.html
_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [igt-dev] [PATCH i-g-t] tests/kms_render: Rewrite test to take advantage of igt_display.
2018-01-24 11:22 ` Maarten Lankhorst
@ 2018-01-30 8:01 ` Daniel Vetter
2018-01-30 9:54 ` Maarten Lankhorst
2018-01-31 14:25 ` Imre Deak
0 siblings, 2 replies; 9+ messages in thread
From: Daniel Vetter @ 2018-01-30 8:01 UTC (permalink / raw)
To: Maarten Lankhorst; +Cc: igt-dev
On Wed, Jan 24, 2018 at 12:22:07PM +0100, Maarten Lankhorst wrote:
> Op 24-01-18 om 12:08 schreef Chris Wilson:
> > Quoting Maarten Lankhorst (2018-01-24 10:25:00)
> >> This test was taking ~100s for each subtest, and both tests were the same,
> >> but required the user to pay attention. I've changed it to automated
> >> checking with CRC, and removed the subtests.
> > What do we do here that isn't covered by kms_frontbuffer*? My guess
> > would be do simple testing of more configurations (as opposed to
> > kms_frontbuffer that does lots of different drawing to the same
> > configuration).
> Hm probably right. I wouldn't mind removing it too, to be honest..
Originally added by Imre and reviewed by Rodrigo, but no mention why we
need this testcase:
commit 528b1f381c4e67c2e63e23b5597070fffe8033d6
Author: Imre Deak <imre.deak@intel.com>
Date: Thu May 30 22:59:59 2013 +0300
tests: add kms_render
Add a test going through all connectors/crtcs/modes/formats painting to
a front FB with CPU or painting to a back FB with CPU and blitting it
to the front FB.
Only formats understood by cairo are supported for now.
Signed-off-by: Imre Deak <imre.deak@intel.com>
Reviewed-by: Rodrigo Vivi <rodrigo.vivi@gmail.com>
I'm voting for removal too, assuming Imre doesn't come up with a very good
reason for why we need it.
-Daniel
--
Daniel Vetter
Software Engineer, Intel Corporation
http://blog.ffwll.ch
_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [igt-dev] [PATCH i-g-t] tests/kms_render: Rewrite test to take advantage of igt_display.
2018-01-30 8:01 ` Daniel Vetter
@ 2018-01-30 9:54 ` Maarten Lankhorst
2018-01-31 14:25 ` Imre Deak
1 sibling, 0 replies; 9+ messages in thread
From: Maarten Lankhorst @ 2018-01-30 9:54 UTC (permalink / raw)
To: Daniel Vetter; +Cc: igt-dev
Hey,
Op 30-01-18 om 09:01 schreef Daniel Vetter:
> On Wed, Jan 24, 2018 at 12:22:07PM +0100, Maarten Lankhorst wrote:
>> Op 24-01-18 om 12:08 schreef Chris Wilson:
>>> Quoting Maarten Lankhorst (2018-01-24 10:25:00)
>>>> This test was taking ~100s for each subtest, and both tests were the same,
>>>> but required the user to pay attention. I've changed it to automated
>>>> checking with CRC, and removed the subtests.
>>> What do we do here that isn't covered by kms_frontbuffer*? My guess
>>> would be do simple testing of more configurations (as opposed to
>>> kms_frontbuffer that does lots of different drawing to the same
>>> configuration).
>> Hm probably right. I wouldn't mind removing it too, to be honest..
> Originally added by Imre and reviewed by Rodrigo, but no mention why we
> need this testcase:
>
> commit 528b1f381c4e67c2e63e23b5597070fffe8033d6
> Author: Imre Deak <imre.deak@intel.com>
> Date: Thu May 30 22:59:59 2013 +0300
>
> tests: add kms_render
>
> Add a test going through all connectors/crtcs/modes/formats painting to
> a front FB with CPU or painting to a back FB with CPU and blitting it
> to the front FB.
>
> Only formats understood by cairo are supported for now.
>
> Signed-off-by: Imre Deak <imre.deak@intel.com>
> Reviewed-by: Rodrigo Vivi <rodrigo.vivi@gmail.com>
>
> I'm voting for removal too, assuming Imre doesn't come up with a very good
> reason for why we need it.
> -Daniel
Ok I'll wait a few days longer then remove this test. kms_frontbuffer_tracking probably superceeds it.
~Maarten
_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [igt-dev] [PATCH i-g-t] tests/kms_render: Rewrite test to take advantage of igt_display.
2018-01-30 8:01 ` Daniel Vetter
2018-01-30 9:54 ` Maarten Lankhorst
@ 2018-01-31 14:25 ` Imre Deak
1 sibling, 0 replies; 9+ messages in thread
From: Imre Deak @ 2018-01-31 14:25 UTC (permalink / raw)
To: Daniel Vetter; +Cc: igt-dev
On Tue, Jan 30, 2018 at 09:01:14AM +0100, Daniel Vetter wrote:
> On Wed, Jan 24, 2018 at 12:22:07PM +0100, Maarten Lankhorst wrote:
> > Op 24-01-18 om 12:08 schreef Chris Wilson:
> > > Quoting Maarten Lankhorst (2018-01-24 10:25:00)
> > >> This test was taking ~100s for each subtest, and both tests were the same,
> > >> but required the user to pay attention. I've changed it to automated
> > >> checking with CRC, and removed the subtests.
> > > What do we do here that isn't covered by kms_frontbuffer*? My guess
> > > would be do simple testing of more configurations (as opposed to
> > > kms_frontbuffer that does lots of different drawing to the same
> > > configuration).
> > Hm probably right. I wouldn't mind removing it too, to be honest..
>
> Originally added by Imre and reviewed by Rodrigo, but no mention why we
> need this testcase:
>
> commit 528b1f381c4e67c2e63e23b5597070fffe8033d6
> Author: Imre Deak <imre.deak@intel.com>
> Date: Thu May 30 22:59:59 2013 +0300
>
> tests: add kms_render
>
> Add a test going through all connectors/crtcs/modes/formats painting to
> a front FB with CPU or painting to a back FB with CPU and blitting it
> to the front FB.
>
> Only formats understood by cairo are supported for now.
>
> Signed-off-by: Imre Deak <imre.deak@intel.com>
> Reviewed-by: Rodrigo Vivi <rodrigo.vivi@gmail.com>
>
> I'm voting for removal too, assuming Imre doesn't come up with a very good
> reason for why we need it.
Looking at IRC logs, it was added to test FBC with different
formats/outputs as FBC has different requirements based on these. But
yes it was all manual. No objection to remove it if there is an other
test doing front buffer rendering.
--Imre
_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev
^ permalink raw reply [flat|nested] 9+ messages in thread
end of thread, other threads:[~2018-01-31 14:25 UTC | newest]
Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2018-01-24 10:25 [igt-dev] [PATCH i-g-t] tests/kms_render: Rewrite test to take advantage of igt_display Maarten Lankhorst
2018-01-24 11:01 ` [igt-dev] ✓ Fi.CI.BAT: success for " Patchwork
2018-01-24 11:08 ` [igt-dev] [PATCH i-g-t] " Chris Wilson
2018-01-24 11:22 ` Maarten Lankhorst
2018-01-30 8:01 ` Daniel Vetter
2018-01-30 9:54 ` Maarten Lankhorst
2018-01-31 14:25 ` Imre Deak
2018-01-24 11:55 ` Mika Kahola
2018-01-24 13:24 ` [igt-dev] ✗ Fi.CI.IGT: failure for " Patchwork
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox