All of lore.kernel.org
 help / color / mirror / Atom feed
* [igt-dev] [PATCH i-g-t] tests/kms_flip_scaled_crc: add flip to downscaled subtests
@ 2020-08-31 13:34 Juha-Pekka Heikkila
  2020-08-31 14:21 ` [igt-dev] ✗ Fi.CI.BAT: failure for tests/kms_flip_scaled_crc: add flip to downscaled subtests (rev5) Patchwork
                   ` (5 more replies)
  0 siblings, 6 replies; 15+ messages in thread
From: Juha-Pekka Heikkila @ 2020-08-31 13:34 UTC (permalink / raw)
  To: igt-dev

attempt to cause cdclk changes and stress scalers with flipping
to different size fb with different modifiers. Verify results
with crc.

Signed-off-by: Juha-Pekka Heikkila <juhapekka.heikkila@gmail.com>
---
 tests/Makefile.sources      |   1 +
 tests/kms_flip_scaled_crc.c | 259 ++++++++++++++++++++++++++++++++++++
 tests/meson.build           |   1 +
 3 files changed, 261 insertions(+)
 create mode 100644 tests/kms_flip_scaled_crc.c

diff --git a/tests/Makefile.sources b/tests/Makefile.sources
index 269b506d..fe9fb7ed 100644
--- a/tests/Makefile.sources
+++ b/tests/Makefile.sources
@@ -53,6 +53,7 @@ TESTS_progs = \
 	kms_fence_pin_leak \
 	kms_flip \
 	kms_flip_event_leak \
+	kms_flip_scaled_crc \
 	kms_flip_tiling \
 	kms_force_connector_basic \
 	kms_frontbuffer_tracking \
diff --git a/tests/kms_flip_scaled_crc.c b/tests/kms_flip_scaled_crc.c
new file mode 100644
index 00000000..b6094a5d
--- /dev/null
+++ b/tests/kms_flip_scaled_crc.c
@@ -0,0 +1,259 @@
+/*
+ * Copyright © 2020 Intel Corporation
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice (including the next
+ * paragraph) shall be included in all copies or substantial portions of the
+ * Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
+ * IN THE SOFTWARE.
+ *
+ */
+
+#include "igt.h"
+
+IGT_TEST_DESCRIPTION("Test flipping between scaled/nonscaled framebuffers");
+
+typedef struct {
+	int drm_fd;
+	igt_display_t display;
+	igt_output_t *output;
+	enum pipe pipe;
+	uint32_t gen;
+	struct igt_fb small_fb;
+	struct igt_fb big_fb;
+	igt_pipe_crc_t *pipe_crc;
+} data_t;
+
+const struct {
+	const char * const name;
+	const char * const describe;
+	const uint64_t firstmodifier;
+	const uint32_t firstformat;
+	const uint64_t secondmodifier;
+	const uint32_t secondformat;
+} flip_scenario_test[] = {
+	{
+		"flip-32bpp-ytile-to-64bpp-ytile",
+		"Try to flip from 32bpp non scaled fb to 64bpp downscaled fb in attempt to stress cdclk reprogramming.",
+		LOCAL_I915_FORMAT_MOD_Y_TILED, DRM_FORMAT_XRGB8888,
+		LOCAL_I915_FORMAT_MOD_Y_TILED, DRM_FORMAT_XRGB16161616F
+	},
+	{
+		"flip-64bpp-ytile-to-32bpp-ytile",
+		"Try to flip from 64bpp non scaled fb to 32bpp downscaled fb.",
+		LOCAL_I915_FORMAT_MOD_Y_TILED, DRM_FORMAT_XRGB16161616F,
+		LOCAL_I915_FORMAT_MOD_Y_TILED, DRM_FORMAT_XRGB8888
+	},
+	{
+		"flip-64bpp-ytile-to-16bpp-ytile",
+		"Try to flip from 64bpp non scaled fb to 16bpp downscaled fb.",
+		LOCAL_I915_FORMAT_MOD_Y_TILED, DRM_FORMAT_XRGB16161616F,
+		LOCAL_I915_FORMAT_MOD_Y_TILED, DRM_FORMAT_RGB565
+	},
+	{
+		"flip-32bpp-ytileccs-to-64bpp-ytile",
+		"Try to flip from 32bpp ccs non scaled fb to 64bpp downscaled fb ytile.",
+		LOCAL_I915_FORMAT_MOD_Y_TILED_CCS, DRM_FORMAT_XRGB8888,
+		LOCAL_I915_FORMAT_MOD_Y_TILED, DRM_FORMAT_XRGB16161616F
+	},
+	{
+		"flip-32bpp-ytile-to-32bpp-ytilegen12rcccs",
+		"Try to flip from 32bpp non scaled fb to 32bpp downscaled gen12 rc ccs fb in attempt to stress cdclk reprogramming.",
+		LOCAL_I915_FORMAT_MOD_Y_TILED, DRM_FORMAT_XRGB8888,
+		LOCAL_I915_FORMAT_MOD_Y_TILED_GEN12_RC_CCS, DRM_FORMAT_XRGB8888
+	},
+	{
+		"flip-32bpp-ytile-to-32bpp-ytileccs",
+		"Try to flip from 32bpp non scaled ytiled fb to 32bpp downscaled ytiled ccs fb.",
+		LOCAL_I915_FORMAT_MOD_Y_TILED, DRM_FORMAT_XRGB8888,
+		LOCAL_I915_FORMAT_MOD_Y_TILED_CCS, DRM_FORMAT_XRGB8888
+	},
+	{
+		"flip-64bpp-ytile-to-32bpp-ytilercccs",
+		"Try to flip from 64bpp non scaled ytiled fb to 32bpp downscaled gen12 rc ccs fb.",
+		LOCAL_I915_FORMAT_MOD_Y_TILED, DRM_FORMAT_XRGB16161616F,
+		LOCAL_I915_FORMAT_MOD_Y_TILED_GEN12_RC_CCS, DRM_FORMAT_XRGB8888
+	},
+};
+
+static void setup_fb(data_t *data, struct igt_fb *newfb, uint32_t width,
+		     uint32_t height, uint64_t format, uint64_t modifier)
+{
+	struct drm_mode_fb_cmd2 f = {0};
+	cairo_t *cr;
+
+	igt_require(igt_display_has_format_mod(&data->display, format,
+					       modifier));
+
+	igt_create_bo_for_fb(data->drm_fd, width, height, format, modifier,
+			     newfb);
+	igt_assert(newfb->gem_handle > 0);
+
+	f.width = newfb->width;
+	f.height = newfb->height;
+	f.pixel_format = newfb->drm_format;
+	f.flags = LOCAL_DRM_MODE_FB_MODIFIERS;
+
+	for (int n = 0; n < newfb->num_planes; n++) {
+		f.handles[n] = newfb->gem_handle;
+		f.modifier[n] = newfb->modifier;
+		f.pitches[n] = newfb->strides[n];
+		f.offsets[n] = newfb->offsets[n];
+	}
+
+	cr = igt_get_cairo_ctx(data->drm_fd, newfb);
+	igt_paint_color(cr, 0, 0, newfb->width, newfb->height, 0, 1, 0);
+	igt_put_cairo_ctx(cr);
+
+	igt_assert(drmIoctl(data->drm_fd, LOCAL_DRM_IOCTL_MODE_ADDFB2, &f) == 0);
+	newfb->fb_id = f.fb_id;
+}
+
+static void free_fbs(data_t *data)
+{
+	igt_remove_fb(data->drm_fd, &data->small_fb);
+	igt_remove_fb(data->drm_fd, &data->big_fb);
+}
+
+static void test_flip_to_scaled(data_t *data, uint32_t index, enum pipe pipe,
+				igt_output_t *output)
+{
+	igt_plane_t *primary;
+	igt_crc_t small_crc, big_crc;
+
+	drmModeModeInfo *mode;
+	struct drm_event_vblank ev;
+	int ret;
+
+	igt_debug("running on output %s pipe %s\n", output->name,
+		  kmstest_pipe_name(pipe));
+	if (data->big_fb.fb_id == 0) {
+		mode = igt_output_get_mode(output);
+
+		// big fb will be 4k unless running on older than ICL
+		if (data->gen < 11) {
+			setup_fb(data, &data->small_fb,
+				 min(mode->hdisplay, 640),
+				 min(mode->vdisplay, 480),
+				 flip_scenario_test[index].firstformat,
+				 flip_scenario_test[index].firstmodifier);
+
+			setup_fb(data, &data->big_fb,
+				 1280, 960,
+				 flip_scenario_test[index].secondformat,
+				 flip_scenario_test[index].secondmodifier);
+			igt_debug("small fb %dx%d\n", data->small_fb.width,
+			          data->small_fb.height);
+			igt_debug("big fb %dx%d\n", data->big_fb.width,
+			          data->big_fb.height);
+		} else {
+			setup_fb(data, &data->small_fb,
+				 min(mode->hdisplay, 1920),
+				 min(mode->vdisplay, 1080),
+				 flip_scenario_test[index].firstformat,
+				 flip_scenario_test[index].firstmodifier);
+
+			setup_fb(data, &data->big_fb,
+				 3840, 2160,
+				 flip_scenario_test[index].secondformat,
+				 flip_scenario_test[index].secondmodifier);
+			igt_debug("small fb %dx%d\n", data->small_fb.width,
+			          data->small_fb.height);
+			igt_debug("big fb %dx%d\n", data->big_fb.width,
+			          data->big_fb.height);
+		}
+	}
+
+	igt_output_set_pipe(output, pipe);
+
+	primary = igt_output_get_plane_type(output, DRM_PLANE_TYPE_PRIMARY);
+	igt_plane_set_fb(primary, NULL);
+
+	igt_display_commit_atomic(&data->display, DRM_MODE_ATOMIC_ALLOW_MODESET,
+				  NULL);
+	data->pipe_crc = igt_pipe_crc_new(data->drm_fd, pipe,
+					  INTEL_PIPE_CRC_SOURCE_AUTO);
+	igt_pipe_crc_start(data->pipe_crc);
+
+	igt_plane_set_position(primary, 0, 0);
+	igt_plane_set_fb(primary, &data->small_fb);
+
+	igt_display_commit_atomic(&data->display,
+				  DRM_MODE_ATOMIC_ALLOW_MODESET, NULL);
+	igt_pipe_crc_get_current(data->drm_fd, data->pipe_crc, &small_crc);
+
+	igt_plane_set_fb(primary, &data->big_fb);
+	igt_plane_set_size(primary, data->small_fb.width,
+			   data->small_fb.height);
+	ret = igt_display_try_commit_atomic(&data->display,
+					    DRM_MODE_ATOMIC_ALLOW_MODESET  |
+					    DRM_MODE_PAGE_FLIP_EVENT, NULL);
+
+	igt_require_f(ret != -ERANGE,
+		      "Platform scaling limits exceeded, skipping.");
+	igt_assert_eq(ret, 0);
+
+	igt_assert(read(data->drm_fd, &ev, sizeof(ev)) == sizeof(ev));
+
+	igt_pipe_crc_get_current(data->drm_fd, data->pipe_crc, &big_crc);
+	igt_assert(igt_check_crc_equal(&small_crc, &big_crc));
+
+	igt_plane_set_fb(primary, NULL);
+	igt_display_commit_atomic(&data->display, 0, NULL);
+
+	igt_pipe_crc_stop(data->pipe_crc);
+	igt_pipe_crc_free(data->pipe_crc);
+	data->pipe_crc = NULL;
+	igt_output_set_pipe(output, PIPE_NONE);
+}
+
+igt_main
+{
+	enum pipe pipe;
+	data_t data = {};
+	igt_output_t *output;
+
+	igt_fixture {
+		data.drm_fd = drm_open_driver_master(DRIVER_INTEL);
+		data.gen = intel_gen(intel_get_drm_devid(data.drm_fd));
+		igt_require(data.gen >= 9);
+		igt_display_require(&data.display, data.drm_fd);
+		igt_require(data.display.is_atomic);
+		igt_require_pipe_crc(data.drm_fd);
+		kmstest_set_vt_graphics_mode();
+	}
+
+	for (int index = 0; index < ARRAY_SIZE(flip_scenario_test); index++) {
+		igt_describe(flip_scenario_test[index].describe);
+		igt_subtest(flip_scenario_test[index].name) {
+			for_each_pipe_with_single_output(&data.display, pipe,
+							 output)
+				test_flip_to_scaled(&data, index, pipe, output);
+
+			free_fbs(&data);
+		}
+	}
+	igt_fixture {
+		free_fbs(&data);
+		if (data.pipe_crc) {
+			igt_pipe_crc_stop(data.pipe_crc);
+			igt_pipe_crc_free(data.pipe_crc);
+			data.pipe_crc = NULL;
+		}
+		kmstest_set_vt_text_mode();
+		igt_display_fini(&data.display);
+	}
+}
diff --git a/tests/meson.build b/tests/meson.build
index 684de043..8e17a6ae 100644
--- a/tests/meson.build
+++ b/tests/meson.build
@@ -37,6 +37,7 @@ test_progs = [
 	'kms_fence_pin_leak',
 	'kms_flip',
 	'kms_flip_event_leak',
+	'kms_flip_scaled_crc',
 	'kms_flip_tiling',
 	'kms_force_connector_basic',
 	'kms_frontbuffer_tracking',
-- 
2.26.0

_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev

^ permalink raw reply related	[flat|nested] 15+ messages in thread

* [igt-dev] ✗ Fi.CI.BAT: failure for tests/kms_flip_scaled_crc: add flip to downscaled subtests (rev5)
  2020-08-31 13:34 [igt-dev] [PATCH i-g-t] tests/kms_flip_scaled_crc: add flip to downscaled subtests Juha-Pekka Heikkila
@ 2020-08-31 14:21 ` Patchwork
  2020-08-31 15:43 ` [igt-dev] ✓ Fi.CI.BAT: success for tests/kms_flip_scaled_crc: add flip to downscaled subtests (rev6) Patchwork
                   ` (4 subsequent siblings)
  5 siblings, 0 replies; 15+ messages in thread
From: Patchwork @ 2020-08-31 14:21 UTC (permalink / raw)
  To: Juha-Pekka Heikkila; +Cc: igt-dev


[-- Attachment #1.1: Type: text/plain, Size: 5056 bytes --]

== Series Details ==

Series: tests/kms_flip_scaled_crc: add flip to downscaled subtests (rev5)
URL   : https://patchwork.freedesktop.org/series/81109/
State : failure

== Summary ==

CI Bug Log - changes from CI_DRM_8945 -> IGTPW_4926
====================================================

Summary
-------

  **FAILURE**

  Serious unknown changes coming with IGTPW_4926 absolutely need to be
  verified manually.
  
  If you think the reported changes have nothing to do with the changes
  introduced in IGTPW_4926, please notify your bug team to allow them
  to document this new failure mode, which will reduce false positives in CI.

  External URL: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4926/index.html

Possible new issues
-------------------

  Here are the unknown changes that may have been introduced in IGTPW_4926:

### IGT changes ###

#### Possible regressions ####

  * igt@i915_selftest@live@gt_lrc:
    - fi-bsw-n3050:       [PASS][1] -> [DMESG-FAIL][2]
   [1]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8945/fi-bsw-n3050/igt@i915_selftest@live@gt_lrc.html
   [2]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4926/fi-bsw-n3050/igt@i915_selftest@live@gt_lrc.html

  
Known issues
------------

  Here are the changes found in IGTPW_4926 that come from known issues:

### IGT changes ###

#### Issues hit ####

  * igt@gem_exec_parallel@engines@contexts:
    - fi-tgl-u2:          [PASS][3] -> [INCOMPLETE][4] ([CI#80])
   [3]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8945/fi-tgl-u2/igt@gem_exec_parallel@engines@contexts.html
   [4]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4926/fi-tgl-u2/igt@gem_exec_parallel@engines@contexts.html

  * igt@i915_selftest@live@execlists:
    - fi-icl-y:           [PASS][5] -> [INCOMPLETE][6] ([i915#2276])
   [5]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8945/fi-icl-y/igt@i915_selftest@live@execlists.html
   [6]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4926/fi-icl-y/igt@i915_selftest@live@execlists.html

  
#### Possible fixes ####

  * igt@gem_exec_parallel@engines@contexts:
    - fi-skl-6600u:       [INCOMPLETE][7] ([i915#2398]) -> [PASS][8]
   [7]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8945/fi-skl-6600u/igt@gem_exec_parallel@engines@contexts.html
   [8]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4926/fi-skl-6600u/igt@gem_exec_parallel@engines@contexts.html

  * igt@i915_pm_rpm@module-reload:
    - fi-byt-j1900:       [DMESG-WARN][9] ([i915#1982]) -> [PASS][10] +1 similar issue
   [9]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8945/fi-byt-j1900/igt@i915_pm_rpm@module-reload.html
   [10]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4926/fi-byt-j1900/igt@i915_pm_rpm@module-reload.html

  * igt@kms_cursor_legacy@basic-busy-flip-before-cursor-atomic:
    - {fi-kbl-7560u}:     [DMESG-WARN][11] ([i915#1982]) -> [PASS][12]
   [11]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8945/fi-kbl-7560u/igt@kms_cursor_legacy@basic-busy-flip-before-cursor-atomic.html
   [12]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4926/fi-kbl-7560u/igt@kms_cursor_legacy@basic-busy-flip-before-cursor-atomic.html

  * igt@kms_cursor_legacy@basic-flip-before-cursor-atomic:
    - fi-icl-u2:          [DMESG-WARN][13] ([i915#1982]) -> [PASS][14]
   [13]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8945/fi-icl-u2/igt@kms_cursor_legacy@basic-flip-before-cursor-atomic.html
   [14]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4926/fi-icl-u2/igt@kms_cursor_legacy@basic-flip-before-cursor-atomic.html

  
  {name}: This element is suppressed. This means it is ignored when computing
          the status of the difference (SUCCESS, WARNING, or FAILURE).

  [CI#80]: https://gitlab.freedesktop.org/gfx-ci/i915-infra/issues/80
  [i915#1982]: https://gitlab.freedesktop.org/drm/intel/issues/1982
  [i915#2276]: https://gitlab.freedesktop.org/drm/intel/issues/2276
  [i915#2398]: https://gitlab.freedesktop.org/drm/intel/issues/2398


Participating hosts (38 -> 33)
------------------------------

  Missing    (5): fi-ilk-m540 fi-hsw-4200u fi-byt-squawks fi-bsw-cyan fi-byt-clapper 


Build changes
-------------

  * CI: CI-20190529 -> None
  * IGT: IGT_5774 -> IGTPW_4926

  CI-20190529: 20190529
  CI_DRM_8945: f755f288fce1b2c92373e5b419d13b7f842d2865 @ git://anongit.freedesktop.org/gfx-ci/linux
  IGTPW_4926: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4926/index.html
  IGT_5774: 2a5db9f60241383272aeec176e1b97b3f487209f @ git://anongit.freedesktop.org/xorg/app/intel-gpu-tools



== Testlist changes ==

+igt@kms_flip_scaled_crc@flip-32bpp-ytileccs-to-64bpp-ytile
+igt@kms_flip_scaled_crc@flip-32bpp-ytile-to-32bpp-ytileccs
+igt@kms_flip_scaled_crc@flip-32bpp-ytile-to-32bpp-ytilegen12rcccs
+igt@kms_flip_scaled_crc@flip-32bpp-ytile-to-64bpp-ytile
+igt@kms_flip_scaled_crc@flip-64bpp-ytile-to-16bpp-ytile
+igt@kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytile
+igt@kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytilercccs

== Logs ==

For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4926/index.html

[-- Attachment #1.2: Type: text/html, Size: 6027 bytes --]

[-- Attachment #2: Type: text/plain, Size: 154 bytes --]

_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev

^ permalink raw reply	[flat|nested] 15+ messages in thread

* [igt-dev] ✓ Fi.CI.BAT: success for tests/kms_flip_scaled_crc: add flip to downscaled subtests (rev6)
  2020-08-31 13:34 [igt-dev] [PATCH i-g-t] tests/kms_flip_scaled_crc: add flip to downscaled subtests Juha-Pekka Heikkila
  2020-08-31 14:21 ` [igt-dev] ✗ Fi.CI.BAT: failure for tests/kms_flip_scaled_crc: add flip to downscaled subtests (rev5) Patchwork
@ 2020-08-31 15:43 ` Patchwork
  2020-08-31 19:17 ` [igt-dev] ✓ Fi.CI.BAT: success for tests/kms_flip_scaled_crc: add flip to downscaled subtests (rev7) Patchwork
                   ` (3 subsequent siblings)
  5 siblings, 0 replies; 15+ messages in thread
From: Patchwork @ 2020-08-31 15:43 UTC (permalink / raw)
  To: Juha-Pekka Heikkila; +Cc: igt-dev


[-- Attachment #1.1: Type: text/plain, Size: 3810 bytes --]

== Series Details ==

Series: tests/kms_flip_scaled_crc: add flip to downscaled subtests (rev6)
URL   : https://patchwork.freedesktop.org/series/81109/
State : success

== Summary ==

CI Bug Log - changes from CI_DRM_8946 -> IGTPW_4927
====================================================

Summary
-------

  **SUCCESS**

  No regressions found.

  External URL: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4927/index.html

Possible new issues
-------------------

  Here are the unknown changes that may have been introduced in IGTPW_4927:

### IGT changes ###

#### Suppressed ####

  The following results come from untrusted machines, tests, or statuses.
  They do not affect the overall result.

  * igt@gem_exec_parallel@engines@fds:
    - {fi-ehl-1}:         [PASS][1] -> [INCOMPLETE][2]
   [1]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8946/fi-ehl-1/igt@gem_exec_parallel@engines@fds.html
   [2]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4927/fi-ehl-1/igt@gem_exec_parallel@engines@fds.html

  
Known issues
------------

  Here are the changes found in IGTPW_4927 that come from known issues:

### IGT changes ###

#### Issues hit ####

  * igt@kms_flip@basic-flip-vs-wf_vblank@c-edp1:
    - fi-icl-u2:          [PASS][3] -> [DMESG-WARN][4] ([i915#1982]) +1 similar issue
   [3]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8946/fi-icl-u2/igt@kms_flip@basic-flip-vs-wf_vblank@c-edp1.html
   [4]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4927/fi-icl-u2/igt@kms_flip@basic-flip-vs-wf_vblank@c-edp1.html

  * igt@kms_flip@basic-flip-vs-wf_vblank@c-hdmi-a2:
    - fi-skl-guc:         [PASS][5] -> [DMESG-WARN][6] ([i915#2203])
   [5]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8946/fi-skl-guc/igt@kms_flip@basic-flip-vs-wf_vblank@c-hdmi-a2.html
   [6]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4927/fi-skl-guc/igt@kms_flip@basic-flip-vs-wf_vblank@c-hdmi-a2.html

  
#### Possible fixes ####

  * igt@gem_exec_parallel@engines@basic:
    - fi-bxt-dsi:         [INCOMPLETE][7] ([i915#1635] / [i915#2398]) -> [PASS][8]
   [7]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8946/fi-bxt-dsi/igt@gem_exec_parallel@engines@basic.html
   [8]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4927/fi-bxt-dsi/igt@gem_exec_parallel@engines@basic.html

  
  {name}: This element is suppressed. This means it is ignored when computing
          the status of the difference (SUCCESS, WARNING, or FAILURE).

  [i915#1635]: https://gitlab.freedesktop.org/drm/intel/issues/1635
  [i915#1982]: https://gitlab.freedesktop.org/drm/intel/issues/1982
  [i915#2203]: https://gitlab.freedesktop.org/drm/intel/issues/2203
  [i915#2398]: https://gitlab.freedesktop.org/drm/intel/issues/2398


Participating hosts (38 -> 33)
------------------------------

  Missing    (5): fi-ilk-m540 fi-hsw-4200u fi-byt-squawks fi-bsw-cyan fi-byt-clapper 


Build changes
-------------

  * CI: CI-20190529 -> None
  * IGT: IGT_5774 -> IGTPW_4927

  CI-20190529: 20190529
  CI_DRM_8946: e2a5eec44f19c7732c7114c62410914fda06e106 @ git://anongit.freedesktop.org/gfx-ci/linux
  IGTPW_4927: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4927/index.html
  IGT_5774: 2a5db9f60241383272aeec176e1b97b3f487209f @ git://anongit.freedesktop.org/xorg/app/intel-gpu-tools



== Testlist changes ==

+igt@kms_flip_scaled_crc@flip-32bpp-ytileccs-to-64bpp-ytile
+igt@kms_flip_scaled_crc@flip-32bpp-ytile-to-32bpp-ytileccs
+igt@kms_flip_scaled_crc@flip-32bpp-ytile-to-32bpp-ytilegen12rcccs
+igt@kms_flip_scaled_crc@flip-32bpp-ytile-to-64bpp-ytile
+igt@kms_flip_scaled_crc@flip-64bpp-ytile-to-16bpp-ytile
+igt@kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytile
+igt@kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytilercccs

== Logs ==

For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4927/index.html

[-- Attachment #1.2: Type: text/html, Size: 4542 bytes --]

[-- Attachment #2: Type: text/plain, Size: 154 bytes --]

_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev

^ permalink raw reply	[flat|nested] 15+ messages in thread

* [igt-dev] ✓ Fi.CI.BAT: success for tests/kms_flip_scaled_crc: add flip to downscaled subtests (rev7)
  2020-08-31 13:34 [igt-dev] [PATCH i-g-t] tests/kms_flip_scaled_crc: add flip to downscaled subtests Juha-Pekka Heikkila
  2020-08-31 14:21 ` [igt-dev] ✗ Fi.CI.BAT: failure for tests/kms_flip_scaled_crc: add flip to downscaled subtests (rev5) Patchwork
  2020-08-31 15:43 ` [igt-dev] ✓ Fi.CI.BAT: success for tests/kms_flip_scaled_crc: add flip to downscaled subtests (rev6) Patchwork
@ 2020-08-31 19:17 ` Patchwork
  2020-08-31 21:31 ` [igt-dev] ✓ Fi.CI.IGT: success for tests/kms_flip_scaled_crc: add flip to downscaled subtests (rev6) Patchwork
                   ` (2 subsequent siblings)
  5 siblings, 0 replies; 15+ messages in thread
From: Patchwork @ 2020-08-31 19:17 UTC (permalink / raw)
  To: Juha-Pekka Heikkila; +Cc: igt-dev


[-- Attachment #1.1: Type: text/plain, Size: 4275 bytes --]

== Series Details ==

Series: tests/kms_flip_scaled_crc: add flip to downscaled subtests (rev7)
URL   : https://patchwork.freedesktop.org/series/81109/
State : success

== Summary ==

CI Bug Log - changes from CI_DRM_8946 -> IGTPW_4929
====================================================

Summary
-------

  **SUCCESS**

  No regressions found.

  External URL: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4929/index.html

Known issues
------------

  Here are the changes found in IGTPW_4929 that come from known issues:

### IGT changes ###

#### Issues hit ####

  * igt@i915_selftest@live@execlists:
    - fi-apl-guc:         [PASS][1] -> [INCOMPLETE][2] ([i915#1635])
   [1]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8946/fi-apl-guc/igt@i915_selftest@live@execlists.html
   [2]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4929/fi-apl-guc/igt@i915_selftest@live@execlists.html

  * igt@kms_cursor_legacy@basic-flip-before-cursor-atomic:
    - fi-icl-u2:          [PASS][3] -> [DMESG-WARN][4] ([i915#1982])
   [3]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8946/fi-icl-u2/igt@kms_cursor_legacy@basic-flip-before-cursor-atomic.html
   [4]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4929/fi-icl-u2/igt@kms_cursor_legacy@basic-flip-before-cursor-atomic.html

  
#### Possible fixes ####

  * igt@gem_exec_parallel@engines@basic:
    - fi-bxt-dsi:         [INCOMPLETE][5] ([i915#1635] / [i915#2398]) -> [PASS][6]
   [5]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8946/fi-bxt-dsi/igt@gem_exec_parallel@engines@basic.html
   [6]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4929/fi-bxt-dsi/igt@gem_exec_parallel@engines@basic.html

  * igt@i915_pm_rpm@basic-pci-d3-state:
    - fi-bsw-kefka:       [DMESG-WARN][7] ([i915#1982]) -> [PASS][8]
   [7]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8946/fi-bsw-kefka/igt@i915_pm_rpm@basic-pci-d3-state.html
   [8]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4929/fi-bsw-kefka/igt@i915_pm_rpm@basic-pci-d3-state.html

  * igt@i915_selftest@live@execlists:
    - fi-icl-y:           [INCOMPLETE][9] ([i915#2276]) -> [PASS][10]
   [9]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8946/fi-icl-y/igt@i915_selftest@live@execlists.html
   [10]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4929/fi-icl-y/igt@i915_selftest@live@execlists.html

  * igt@kms_cursor_legacy@basic-busy-flip-before-cursor-atomic:
    - {fi-kbl-7560u}:     [DMESG-WARN][11] ([i915#1982]) -> [PASS][12]
   [11]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8946/fi-kbl-7560u/igt@kms_cursor_legacy@basic-busy-flip-before-cursor-atomic.html
   [12]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4929/fi-kbl-7560u/igt@kms_cursor_legacy@basic-busy-flip-before-cursor-atomic.html

  
  {name}: This element is suppressed. This means it is ignored when computing
          the status of the difference (SUCCESS, WARNING, or FAILURE).

  [i915#1635]: https://gitlab.freedesktop.org/drm/intel/issues/1635
  [i915#1982]: https://gitlab.freedesktop.org/drm/intel/issues/1982
  [i915#2276]: https://gitlab.freedesktop.org/drm/intel/issues/2276
  [i915#2398]: https://gitlab.freedesktop.org/drm/intel/issues/2398


Participating hosts (38 -> 32)
------------------------------

  Missing    (6): fi-ilk-m540 fi-hsw-4200u fi-skl-guc fi-byt-squawks fi-bsw-cyan fi-byt-clapper 


Build changes
-------------

  * CI: CI-20190529 -> None
  * IGT: IGT_5774 -> IGTPW_4929

  CI-20190529: 20190529
  CI_DRM_8946: e2a5eec44f19c7732c7114c62410914fda06e106 @ git://anongit.freedesktop.org/gfx-ci/linux
  IGTPW_4929: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4929/index.html
  IGT_5774: 2a5db9f60241383272aeec176e1b97b3f487209f @ git://anongit.freedesktop.org/xorg/app/intel-gpu-tools



== Testlist changes ==

+igt@kms_flip_scaled_crc@flip-32bpp-ytileccs-to-64bpp-ytile
+igt@kms_flip_scaled_crc@flip-32bpp-ytile-to-32bpp-ytileccs
+igt@kms_flip_scaled_crc@flip-32bpp-ytile-to-32bpp-ytilegen12rcccs
+igt@kms_flip_scaled_crc@flip-32bpp-ytile-to-64bpp-ytile
+igt@kms_flip_scaled_crc@flip-64bpp-ytile-to-16bpp-ytile
+igt@kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytile
+igt@kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytilercccs

== Logs ==

For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4929/index.html

[-- Attachment #1.2: Type: text/html, Size: 5270 bytes --]

[-- Attachment #2: Type: text/plain, Size: 154 bytes --]

_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev

^ permalink raw reply	[flat|nested] 15+ messages in thread

* [igt-dev] ✓ Fi.CI.IGT: success for tests/kms_flip_scaled_crc: add flip to downscaled subtests (rev6)
  2020-08-31 13:34 [igt-dev] [PATCH i-g-t] tests/kms_flip_scaled_crc: add flip to downscaled subtests Juha-Pekka Heikkila
                   ` (2 preceding siblings ...)
  2020-08-31 19:17 ` [igt-dev] ✓ Fi.CI.BAT: success for tests/kms_flip_scaled_crc: add flip to downscaled subtests (rev7) Patchwork
@ 2020-08-31 21:31 ` Patchwork
  2020-09-01  2:13 ` [igt-dev] ✗ Fi.CI.IGT: failure for tests/kms_flip_scaled_crc: add flip to downscaled subtests (rev7) Patchwork
  2020-09-01 11:38 ` [igt-dev] [PATCH i-g-t] tests/kms_flip_scaled_crc: add flip to downscaled subtests Maarten Lankhorst
  5 siblings, 0 replies; 15+ messages in thread
From: Patchwork @ 2020-08-31 21:31 UTC (permalink / raw)
  To: Juha-Pekka Heikkila; +Cc: igt-dev


[-- Attachment #1.1: Type: text/plain, Size: 20329 bytes --]

== Series Details ==

Series: tests/kms_flip_scaled_crc: add flip to downscaled subtests (rev6)
URL   : https://patchwork.freedesktop.org/series/81109/
State : success

== Summary ==

CI Bug Log - changes from CI_DRM_8946_full -> IGTPW_4927_full
====================================================

Summary
-------

  **SUCCESS**

  No regressions found.

  External URL: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4927/index.html

Possible new issues
-------------------

  Here are the unknown changes that may have been introduced in IGTPW_4927_full:

### IGT changes ###

#### Possible regressions ####

  * {igt@kms_flip_scaled_crc@flip-32bpp-ytile-to-32bpp-ytileccs} (NEW):
    - shard-kbl:          NOTRUN -> [FAIL][1] +2 similar issues
   [1]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4927/shard-kbl7/igt@kms_flip_scaled_crc@flip-32bpp-ytile-to-32bpp-ytileccs.html
    - shard-glk:          NOTRUN -> [FAIL][2]
   [2]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4927/shard-glk7/igt@kms_flip_scaled_crc@flip-32bpp-ytile-to-32bpp-ytileccs.html

  * {igt@kms_flip_scaled_crc@flip-32bpp-ytileccs-to-64bpp-ytile} (NEW):
    - shard-tglb:         NOTRUN -> [SKIP][3] +1 similar issue
   [3]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4927/shard-tglb2/igt@kms_flip_scaled_crc@flip-32bpp-ytileccs-to-64bpp-ytile.html

  * {igt@kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytilercccs} (NEW):
    - shard-iclb:         NOTRUN -> [SKIP][4] +1 similar issue
   [4]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4927/shard-iclb4/igt@kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytilercccs.html

  
New tests
---------

  New tests have been introduced between CI_DRM_8946_full and IGTPW_4927_full:

### New IGT tests (7) ###

  * igt@kms_flip_scaled_crc@flip-32bpp-ytile-to-32bpp-ytileccs:
    - Statuses : 1 dmesg-fail(s) 3 fail(s) 2 skip(s)
    - Exec time: [0.0, 1.56] s

  * igt@kms_flip_scaled_crc@flip-32bpp-ytile-to-32bpp-ytilegen12rcccs:
    - Statuses : 1 dmesg-fail(s) 6 skip(s)
    - Exec time: [0.0, 1.34] s

  * igt@kms_flip_scaled_crc@flip-32bpp-ytile-to-64bpp-ytile:
    - Statuses : 2 dmesg-fail(s) 5 skip(s)
    - Exec time: [0.0, 1.70] s

  * igt@kms_flip_scaled_crc@flip-32bpp-ytileccs-to-64bpp-ytile:
    - Statuses : 1 dmesg-fail(s) 6 skip(s)
    - Exec time: [0.0, 1.64] s

  * igt@kms_flip_scaled_crc@flip-64bpp-ytile-to-16bpp-ytile:
    - Statuses : 2 dmesg-fail(s) 2 fail(s) 1 pass(s) 2 skip(s)
    - Exec time: [0.0, 1.50] s

  * igt@kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytile:
    - Statuses : 2 dmesg-fail(s) 2 fail(s) 1 pass(s) 2 skip(s)
    - Exec time: [0.0, 1.75] s

  * igt@kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytilercccs:
    - Statuses : 1 dmesg-fail(s) 6 skip(s)
    - Exec time: [0.0, 1.41] s

  

Known issues
------------

  Here are the changes found in IGTPW_4927_full that come from known issues:

### IGT changes ###

#### Issues hit ####

  * igt@gem_exec_reloc@basic-concurrent0:
    - shard-apl:          [PASS][5] -> [TIMEOUT][6] ([i915#1635] / [i915#1958]) +2 similar issues
   [5]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8946/shard-apl6/igt@gem_exec_reloc@basic-concurrent0.html
   [6]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4927/shard-apl7/igt@gem_exec_reloc@basic-concurrent0.html
    - shard-kbl:          [PASS][7] -> [TIMEOUT][8] ([i915#1958]) +1 similar issue
   [7]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8946/shard-kbl4/igt@gem_exec_reloc@basic-concurrent0.html
   [8]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4927/shard-kbl4/igt@gem_exec_reloc@basic-concurrent0.html

  * igt@gem_exec_whisper@basic-fds-priority:
    - shard-glk:          [PASS][9] -> [DMESG-WARN][10] ([i915#118] / [i915#95]) +1 similar issue
   [9]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8946/shard-glk1/igt@gem_exec_whisper@basic-fds-priority.html
   [10]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4927/shard-glk2/igt@gem_exec_whisper@basic-fds-priority.html

  * igt@gem_exec_whisper@basic-normal:
    - shard-tglb:         [PASS][11] -> [TIMEOUT][12] ([i915#1958]) +1 similar issue
   [11]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8946/shard-tglb1/igt@gem_exec_whisper@basic-normal.html
   [12]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4927/shard-tglb8/igt@gem_exec_whisper@basic-normal.html

  * igt@gem_exec_whisper@basic-queues-forked:
    - shard-glk:          [PASS][13] -> [TIMEOUT][14] ([i915#1958]) +2 similar issues
   [13]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8946/shard-glk6/igt@gem_exec_whisper@basic-queues-forked.html
   [14]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4927/shard-glk9/igt@gem_exec_whisper@basic-queues-forked.html

  * igt@gem_exec_whisper@basic-queues-priority:
    - shard-iclb:         [PASS][15] -> [TIMEOUT][16] ([i915#1958])
   [15]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8946/shard-iclb2/igt@gem_exec_whisper@basic-queues-priority.html
   [16]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4927/shard-iclb2/igt@gem_exec_whisper@basic-queues-priority.html

  * igt@gen9_exec_parse@allowed-all:
    - shard-glk:          [PASS][17] -> [DMESG-WARN][18] ([i915#1436] / [i915#716])
   [17]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8946/shard-glk8/igt@gen9_exec_parse@allowed-all.html
   [18]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4927/shard-glk6/igt@gen9_exec_parse@allowed-all.html

  * igt@i915_module_load@reload:
    - shard-kbl:          [PASS][19] -> [TIMEOUT][20] ([i915#1418] / [i915#1958])
   [19]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8946/shard-kbl2/igt@i915_module_load@reload.html
   [20]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4927/shard-kbl7/igt@i915_module_load@reload.html

  * igt@i915_pm_rc6_residency@rc6-idle:
    - shard-hsw:          [PASS][21] -> [WARN][22] ([i915#1519])
   [21]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8946/shard-hsw6/igt@i915_pm_rc6_residency@rc6-idle.html
   [22]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4927/shard-hsw6/igt@i915_pm_rc6_residency@rc6-idle.html

  * igt@i915_selftest@live@gem_contexts:
    - shard-kbl:          [PASS][23] -> [INCOMPLETE][24] ([i915#794])
   [23]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8946/shard-kbl4/igt@i915_selftest@live@gem_contexts.html
   [24]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4927/shard-kbl1/igt@i915_selftest@live@gem_contexts.html

  * igt@kms_big_fb@linear-64bpp-rotate-180:
    - shard-glk:          [PASS][25] -> [DMESG-FAIL][26] ([i915#118] / [i915#95]) +1 similar issue
   [25]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8946/shard-glk6/igt@kms_big_fb@linear-64bpp-rotate-180.html
   [26]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4927/shard-glk8/igt@kms_big_fb@linear-64bpp-rotate-180.html

  * igt@kms_big_fb@linear-8bpp-rotate-180:
    - shard-apl:          [PASS][27] -> [DMESG-WARN][28] ([i915#1635] / [i915#1982])
   [27]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8946/shard-apl4/igt@kms_big_fb@linear-8bpp-rotate-180.html
   [28]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4927/shard-apl6/igt@kms_big_fb@linear-8bpp-rotate-180.html

  * igt@kms_cursor_edge_walk@pipe-b-256x256-top-edge:
    - shard-glk:          [PASS][29] -> [DMESG-WARN][30] ([i915#1982])
   [29]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8946/shard-glk2/igt@kms_cursor_edge_walk@pipe-b-256x256-top-edge.html
   [30]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4927/shard-glk6/igt@kms_cursor_edge_walk@pipe-b-256x256-top-edge.html

  * igt@kms_cursor_legacy@short-flip-before-cursor-atomic-transitions:
    - shard-kbl:          [PASS][31] -> [DMESG-WARN][32] ([i915#1982]) +1 similar issue
   [31]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8946/shard-kbl2/igt@kms_cursor_legacy@short-flip-before-cursor-atomic-transitions.html
   [32]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4927/shard-kbl2/igt@kms_cursor_legacy@short-flip-before-cursor-atomic-transitions.html

  * igt@kms_flip@2x-plain-flip-ts-check@ab-vga1-hdmi-a1:
    - shard-hsw:          [PASS][33] -> [DMESG-WARN][34] ([i915#1982]) +2 similar issues
   [33]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8946/shard-hsw6/igt@kms_flip@2x-plain-flip-ts-check@ab-vga1-hdmi-a1.html
   [34]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4927/shard-hsw6/igt@kms_flip@2x-plain-flip-ts-check@ab-vga1-hdmi-a1.html

  * igt@kms_flip@flip-vs-expired-vblank@c-hdmi-a2:
    - shard-glk:          [PASS][35] -> [FAIL][36] ([i915#79]) +1 similar issue
   [35]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8946/shard-glk2/igt@kms_flip@flip-vs-expired-vblank@c-hdmi-a2.html
   [36]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4927/shard-glk2/igt@kms_flip@flip-vs-expired-vblank@c-hdmi-a2.html

  * igt@kms_flip@flip-vs-suspend-interruptible@a-dp1:
    - shard-kbl:          [PASS][37] -> [DMESG-WARN][38] ([i915#180]) +4 similar issues
   [37]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8946/shard-kbl7/igt@kms_flip@flip-vs-suspend-interruptible@a-dp1.html
   [38]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4927/shard-kbl2/igt@kms_flip@flip-vs-suspend-interruptible@a-dp1.html

  * igt@kms_frontbuffer_tracking@fbc-1p-shrfb-fliptrack:
    - shard-iclb:         [PASS][39] -> [DMESG-WARN][40] ([i915#1982])
   [39]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8946/shard-iclb6/igt@kms_frontbuffer_tracking@fbc-1p-shrfb-fliptrack.html
   [40]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4927/shard-iclb3/igt@kms_frontbuffer_tracking@fbc-1p-shrfb-fliptrack.html

  * igt@kms_frontbuffer_tracking@psr-1p-primscrn-cur-indfb-draw-render:
    - shard-tglb:         [PASS][41] -> [DMESG-WARN][42] ([i915#1982]) +4 similar issues
   [41]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8946/shard-tglb3/igt@kms_frontbuffer_tracking@psr-1p-primscrn-cur-indfb-draw-render.html
   [42]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4927/shard-tglb8/igt@kms_frontbuffer_tracking@psr-1p-primscrn-cur-indfb-draw-render.html

  * igt@kms_psr@psr2_no_drrs:
    - shard-iclb:         [PASS][43] -> [SKIP][44] ([fdo#109441])
   [43]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8946/shard-iclb2/igt@kms_psr@psr2_no_drrs.html
   [44]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4927/shard-iclb5/igt@kms_psr@psr2_no_drrs.html

  * igt@kms_setmode@basic:
    - shard-hsw:          [PASS][45] -> [FAIL][46] ([i915#31])
   [45]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8946/shard-hsw6/igt@kms_setmode@basic.html
   [46]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4927/shard-hsw1/igt@kms_setmode@basic.html
    - shard-kbl:          [PASS][47] -> [FAIL][48] ([i915#31])
   [47]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8946/shard-kbl4/igt@kms_setmode@basic.html
   [48]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4927/shard-kbl4/igt@kms_setmode@basic.html

  * igt@kms_vblank@pipe-b-ts-continuation-dpms-rpm:
    - shard-kbl:          [PASS][49] -> [SKIP][50] ([fdo#109271]) +44 similar issues
   [49]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8946/shard-kbl2/igt@kms_vblank@pipe-b-ts-continuation-dpms-rpm.html
   [50]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4927/shard-kbl1/igt@kms_vblank@pipe-b-ts-continuation-dpms-rpm.html

  
#### Possible fixes ####

  * igt@gem_exec_reloc@basic-many-active@rcs0:
    - shard-apl:          [FAIL][51] ([i915#1635] / [i915#2389]) -> [PASS][52]
   [51]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8946/shard-apl6/igt@gem_exec_reloc@basic-many-active@rcs0.html
   [52]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4927/shard-apl8/igt@gem_exec_reloc@basic-many-active@rcs0.html

  * igt@gem_exec_whisper@basic-fds-forked:
    - shard-glk:          [TIMEOUT][53] ([i915#1958]) -> [PASS][54] +1 similar issue
   [53]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8946/shard-glk3/igt@gem_exec_whisper@basic-fds-forked.html
   [54]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4927/shard-glk3/igt@gem_exec_whisper@basic-fds-forked.html

  * igt@gem_sync@basic-store-all:
    - shard-kbl:          [FAIL][55] ([i915#2356]) -> [PASS][56]
   [55]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8946/shard-kbl7/igt@gem_sync@basic-store-all.html
   [56]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4927/shard-kbl2/igt@gem_sync@basic-store-all.html

  * igt@kms_big_fb@y-tiled-64bpp-rotate-180:
    - shard-glk:          [FAIL][57] ([i915#1119]) -> [PASS][58]
   [57]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8946/shard-glk3/igt@kms_big_fb@y-tiled-64bpp-rotate-180.html
   [58]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4927/shard-glk6/igt@kms_big_fb@y-tiled-64bpp-rotate-180.html

  * igt@kms_cursor_crc@pipe-a-cursor-suspend:
    - shard-kbl:          [DMESG-WARN][59] ([i915#180]) -> [PASS][60] +6 similar issues
   [59]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8946/shard-kbl2/igt@kms_cursor_crc@pipe-a-cursor-suspend.html
   [60]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4927/shard-kbl2/igt@kms_cursor_crc@pipe-a-cursor-suspend.html

  * igt@kms_cursor_crc@pipe-b-cursor-64x21-onscreen:
    - shard-kbl:          [FAIL][61] ([i915#54]) -> [PASS][62]
   [61]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8946/shard-kbl2/igt@kms_cursor_crc@pipe-b-cursor-64x21-onscreen.html
   [62]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4927/shard-kbl2/igt@kms_cursor_crc@pipe-b-cursor-64x21-onscreen.html
    - shard-apl:          [FAIL][63] ([i915#1635] / [i915#54]) -> [PASS][64]
   [63]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8946/shard-apl6/igt@kms_cursor_crc@pipe-b-cursor-64x21-onscreen.html
   [64]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4927/shard-apl1/igt@kms_cursor_crc@pipe-b-cursor-64x21-onscreen.html
    - shard-glk:          [FAIL][65] ([i915#54]) -> [PASS][66]
   [65]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8946/shard-glk2/igt@kms_cursor_crc@pipe-b-cursor-64x21-onscreen.html
   [66]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4927/shard-glk8/igt@kms_cursor_crc@pipe-b-cursor-64x21-onscreen.html

  * igt@kms_cursor_legacy@cursor-vs-flip-toggle:
    - shard-hsw:          [FAIL][67] ([i915#2370]) -> [PASS][68]
   [67]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8946/shard-hsw6/igt@kms_cursor_legacy@cursor-vs-flip-toggle.html
   [68]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4927/shard-hsw1/igt@kms_cursor_legacy@cursor-vs-flip-toggle.html

  * igt@kms_flip@2x-blocking-absolute-wf_vblank-interruptible@ab-vga1-hdmi-a1:
    - shard-hsw:          [DMESG-WARN][69] ([i915#1982]) -> [PASS][70] +1 similar issue
   [69]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8946/shard-hsw6/igt@kms_flip@2x-blocking-absolute-wf_vblank-interruptible@ab-vga1-hdmi-a1.html
   [70]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4927/shard-hsw6/igt@kms_flip@2x-blocking-absolute-wf_vblank-interruptible@ab-vga1-hdmi-a1.html

  * igt@kms_frontbuffer_tracking@fbc-1p-primscrn-shrfb-pgflip-blt:
    - shard-kbl:          [DMESG-WARN][71] ([i915#1982]) -> [PASS][72]
   [71]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8946/shard-kbl7/igt@kms_frontbuffer_tracking@fbc-1p-primscrn-shrfb-pgflip-blt.html
   [72]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4927/shard-kbl7/igt@kms_frontbuffer_tracking@fbc-1p-primscrn-shrfb-pgflip-blt.html

  * igt@kms_frontbuffer_tracking@fbc-1p-primscrn-shrfb-plflip-blt:
    - shard-iclb:         [DMESG-WARN][73] ([i915#1982]) -> [PASS][74] +1 similar issue
   [73]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8946/shard-iclb2/igt@kms_frontbuffer_tracking@fbc-1p-primscrn-shrfb-plflip-blt.html
   [74]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4927/shard-iclb2/igt@kms_frontbuffer_tracking@fbc-1p-primscrn-shrfb-plflip-blt.html

  * igt@kms_frontbuffer_tracking@psr-1p-primscrn-spr-indfb-onoff:
    - shard-tglb:         [DMESG-WARN][75] ([i915#1982]) -> [PASS][76] +1 similar issue
   [75]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8946/shard-tglb8/igt@kms_frontbuffer_tracking@psr-1p-primscrn-spr-indfb-onoff.html
   [76]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4927/shard-tglb3/igt@kms_frontbuffer_tracking@psr-1p-primscrn-spr-indfb-onoff.html

  * igt@kms_plane@plane-panning-bottom-right-pipe-a-planes:
    - shard-glk:          [FAIL][77] ([i915#1036]) -> [PASS][78]
   [77]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8946/shard-glk3/igt@kms_plane@plane-panning-bottom-right-pipe-a-planes.html
   [78]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4927/shard-glk9/igt@kms_plane@plane-panning-bottom-right-pipe-a-planes.html

  * igt@kms_psr@psr2_basic:
    - shard-iclb:         [SKIP][79] ([fdo#109441]) -> [PASS][80] +1 similar issue
   [79]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8946/shard-iclb6/igt@kms_psr@psr2_basic.html
   [80]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4927/shard-iclb2/igt@kms_psr@psr2_basic.html

  * igt@kms_setmode@basic:
    - shard-apl:          [FAIL][81] ([i915#1635] / [i915#31]) -> [PASS][82]
   [81]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8946/shard-apl8/igt@kms_setmode@basic.html
   [82]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4927/shard-apl7/igt@kms_setmode@basic.html

  
#### Warnings ####

  * igt@kms_chamelium@vga-hpd-without-ddc:
    - shard-kbl:          [SKIP][83] ([fdo#109271] / [fdo#111827]) -> [SKIP][84] ([fdo#109271]) +2 similar issues
   [83]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8946/shard-kbl7/igt@kms_chamelium@vga-hpd-without-ddc.html
   [84]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4927/shard-kbl1/igt@kms_chamelium@vga-hpd-without-ddc.html

  * igt@kms_pipe_crc_basic@suspend-read-crc-pipe-a:
    - shard-kbl:          [DMESG-WARN][85] ([i915#180]) -> [SKIP][86] ([fdo#109271]) +1 similar issue
   [85]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8946/shard-kbl1/igt@kms_pipe_crc_basic@suspend-read-crc-pipe-a.html
   [86]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4927/shard-kbl1/igt@kms_pipe_crc_basic@suspend-read-crc-pipe-a.html

  
  {name}: This element is suppressed. This means it is ignored when computing
          the status of the difference (SUCCESS, WARNING, or FAILURE).

  [fdo#109271]: https://bugs.freedesktop.org/show_bug.cgi?id=109271
  [fdo#109441]: https://bugs.freedesktop.org/show_bug.cgi?id=109441
  [fdo#111827]: https://bugs.freedesktop.org/show_bug.cgi?id=111827
  [i915#1036]: https://gitlab.freedesktop.org/drm/intel/issues/1036
  [i915#1119]: https://gitlab.freedesktop.org/drm/intel/issues/1119
  [i915#118]: https://gitlab.freedesktop.org/drm/intel/issues/118
  [i915#1418]: https://gitlab.freedesktop.org/drm/intel/issues/1418
  [i915#1436]: https://gitlab.freedesktop.org/drm/intel/issues/1436
  [i915#1519]: https://gitlab.freedesktop.org/drm/intel/issues/1519
  [i915#1635]: https://gitlab.freedesktop.org/drm/intel/issues/1635
  [i915#180]: https://gitlab.freedesktop.org/drm/intel/issues/180
  [i915#1958]: https://gitlab.freedesktop.org/drm/intel/issues/1958
  [i915#1982]: https://gitlab.freedesktop.org/drm/intel/issues/1982
  [i915#2356]: https://gitlab.freedesktop.org/drm/intel/issues/2356
  [i915#2370]: https://gitlab.freedesktop.org/drm/intel/issues/2370
  [i915#2389]: https://gitlab.freedesktop.org/drm/intel/issues/2389
  [i915#31]: https://gitlab.freedesktop.org/drm/intel/issues/31
  [i915#54]: https://gitlab.freedesktop.org/drm/intel/issues/54
  [i915#716]: https://gitlab.freedesktop.org/drm/intel/issues/716
  [i915#79]: https://gitlab.freedesktop.org/drm/intel/issues/79
  [i915#794]: https://gitlab.freedesktop.org/drm/intel/issues/794
  [i915#95]: https://gitlab.freedesktop.org/drm/intel/issues/95


Participating hosts (10 -> 8)
------------------------------

  Missing    (2): pig-skl-6260u pig-glk-j5005 


Build changes
-------------

  * CI: CI-20190529 -> None
  * IGT: IGT_5774 -> IGTPW_4927
  * Piglit: piglit_4509 -> None

  CI-20190529: 20190529
  CI_DRM_8946: e2a5eec44f19c7732c7114c62410914fda06e106 @ git://anongit.freedesktop.org/gfx-ci/linux
  IGTPW_4927: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4927/index.html
  IGT_5774: 2a5db9f60241383272aeec176e1b97b3f487209f @ git://anongit.freedesktop.org/xorg/app/intel-gpu-tools
  piglit_4509: fdc5a4ca11124ab8413c7988896eec4c97336694 @ git://anongit.freedesktop.org/piglit

== Logs ==

For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4927/index.html

[-- Attachment #1.2: Type: text/html, Size: 24330 bytes --]

[-- Attachment #2: Type: text/plain, Size: 154 bytes --]

_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev

^ permalink raw reply	[flat|nested] 15+ messages in thread

* [igt-dev] ✗ Fi.CI.IGT: failure for tests/kms_flip_scaled_crc: add flip to downscaled subtests (rev7)
  2020-08-31 13:34 [igt-dev] [PATCH i-g-t] tests/kms_flip_scaled_crc: add flip to downscaled subtests Juha-Pekka Heikkila
                   ` (3 preceding siblings ...)
  2020-08-31 21:31 ` [igt-dev] ✓ Fi.CI.IGT: success for tests/kms_flip_scaled_crc: add flip to downscaled subtests (rev6) Patchwork
@ 2020-09-01  2:13 ` Patchwork
  2020-09-01 11:38 ` [igt-dev] [PATCH i-g-t] tests/kms_flip_scaled_crc: add flip to downscaled subtests Maarten Lankhorst
  5 siblings, 0 replies; 15+ messages in thread
From: Patchwork @ 2020-09-01  2:13 UTC (permalink / raw)
  To: Juha-Pekka Heikkila; +Cc: igt-dev


[-- Attachment #1.1: Type: text/plain, Size: 19045 bytes --]

== Series Details ==

Series: tests/kms_flip_scaled_crc: add flip to downscaled subtests (rev7)
URL   : https://patchwork.freedesktop.org/series/81109/
State : failure

== Summary ==

CI Bug Log - changes from CI_DRM_8946_full -> IGTPW_4929_full
====================================================

Summary
-------

  **FAILURE**

  Serious unknown changes coming with IGTPW_4929_full absolutely need to be
  verified manually.
  
  If you think the reported changes have nothing to do with the changes
  introduced in IGTPW_4929_full, please notify your bug team to allow them
  to document this new failure mode, which will reduce false positives in CI.

  External URL: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4929/index.html

Possible new issues
-------------------

  Here are the unknown changes that may have been introduced in IGTPW_4929_full:

### IGT changes ###

#### Possible regressions ####

  * igt@gem_exec_parallel@engines@basic:
    - shard-iclb:         [PASS][1] -> [INCOMPLETE][2]
   [1]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8946/shard-iclb5/igt@gem_exec_parallel@engines@basic.html
   [2]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4929/shard-iclb1/igt@gem_exec_parallel@engines@basic.html

  * {igt@kms_flip_scaled_crc@flip-32bpp-ytile-to-32bpp-ytileccs} (NEW):
    - shard-kbl:          NOTRUN -> [FAIL][3] +2 similar issues
   [3]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4929/shard-kbl4/igt@kms_flip_scaled_crc@flip-32bpp-ytile-to-32bpp-ytileccs.html
    - shard-tglb:         NOTRUN -> [SKIP][4]
   [4]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4929/shard-tglb5/igt@kms_flip_scaled_crc@flip-32bpp-ytile-to-32bpp-ytileccs.html
    - shard-glk:          NOTRUN -> [FAIL][5]
   [5]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4929/shard-glk5/igt@kms_flip_scaled_crc@flip-32bpp-ytile-to-32bpp-ytileccs.html

  * {igt@kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytilercccs} (NEW):
    - shard-iclb:         NOTRUN -> [SKIP][6] +1 similar issue
   [6]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4929/shard-iclb6/igt@kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytilercccs.html

  * igt@runner@aborted:
    - shard-iclb:         NOTRUN -> [FAIL][7]
   [7]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4929/shard-iclb1/igt@runner@aborted.html

  
New tests
---------

  New tests have been introduced between CI_DRM_8946_full and IGTPW_4929_full:

### New IGT tests (7) ###

  * igt@kms_flip_scaled_crc@flip-32bpp-ytile-to-32bpp-ytileccs:
    - Statuses : 1 dmesg-fail(s) 3 fail(s) 3 skip(s)
    - Exec time: [0.0, 1.43] s

  * igt@kms_flip_scaled_crc@flip-32bpp-ytile-to-32bpp-ytilegen12rcccs:
    - Statuses : 1 dmesg-fail(s) 6 skip(s)
    - Exec time: [0.0, 1.40] s

  * igt@kms_flip_scaled_crc@flip-32bpp-ytile-to-64bpp-ytile:
    - Statuses : 2 dmesg-fail(s) 5 skip(s)
    - Exec time: [0.0, 1.81] s

  * igt@kms_flip_scaled_crc@flip-32bpp-ytileccs-to-64bpp-ytile:
    - Statuses : 1 dmesg-fail(s) 5 skip(s)
    - Exec time: [0.0, 1.74] s

  * igt@kms_flip_scaled_crc@flip-64bpp-ytile-to-16bpp-ytile:
    - Statuses : 2 dmesg-fail(s) 2 fail(s) 1 pass(s) 2 skip(s)
    - Exec time: [0.0, 1.49] s

  * igt@kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytile:
    - Statuses : 2 dmesg-fail(s) 2 fail(s) 1 pass(s) 2 skip(s)
    - Exec time: [0.0, 1.61] s

  * igt@kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytilercccs:
    - Statuses : 1 dmesg-fail(s) 6 skip(s)
    - Exec time: [0.0, 1.51] s

  

Known issues
------------

  Here are the changes found in IGTPW_4929_full that come from known issues:

### IGT changes ###

#### Issues hit ####

  * igt@gem_exec_reloc@basic-concurrent0:
    - shard-kbl:          [PASS][8] -> [TIMEOUT][9] ([i915#1958]) +1 similar issue
   [8]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8946/shard-kbl4/igt@gem_exec_reloc@basic-concurrent0.html
   [9]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4929/shard-kbl7/igt@gem_exec_reloc@basic-concurrent0.html

  * igt@gem_exec_whisper@basic-fds-priority:
    - shard-glk:          [PASS][10] -> [TIMEOUT][11] ([i915#1958]) +9 similar issues
   [10]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8946/shard-glk1/igt@gem_exec_whisper@basic-fds-priority.html
   [11]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4929/shard-glk9/igt@gem_exec_whisper@basic-fds-priority.html

  * igt@gem_exec_whisper@basic-forked:
    - shard-iclb:         [PASS][12] -> [TIMEOUT][13] ([i915#1958]) +1 similar issue
   [12]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8946/shard-iclb5/igt@gem_exec_whisper@basic-forked.html
   [13]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4929/shard-iclb1/igt@gem_exec_whisper@basic-forked.html
    - shard-apl:          [PASS][14] -> [TIMEOUT][15] ([i915#1635] / [i915#1958]) +1 similar issue
   [14]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8946/shard-apl2/igt@gem_exec_whisper@basic-forked.html
   [15]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4929/shard-apl3/igt@gem_exec_whisper@basic-forked.html

  * igt@kms_big_fb@x-tiled-64bpp-rotate-0:
    - shard-glk:          [PASS][16] -> [DMESG-FAIL][17] ([i915#118] / [i915#95])
   [16]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8946/shard-glk9/igt@kms_big_fb@x-tiled-64bpp-rotate-0.html
   [17]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4929/shard-glk8/igt@kms_big_fb@x-tiled-64bpp-rotate-0.html

  * igt@kms_cursor_crc@pipe-a-cursor-128x42-offscreen:
    - shard-apl:          [PASS][18] -> [FAIL][19] ([i915#1635] / [i915#54])
   [18]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8946/shard-apl8/igt@kms_cursor_crc@pipe-a-cursor-128x42-offscreen.html
   [19]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4929/shard-apl1/igt@kms_cursor_crc@pipe-a-cursor-128x42-offscreen.html

  * igt@kms_cursor_edge_walk@pipe-c-256x256-top-edge:
    - shard-apl:          [PASS][20] -> [DMESG-WARN][21] ([i915#1635] / [i915#1982])
   [20]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8946/shard-apl3/igt@kms_cursor_edge_walk@pipe-c-256x256-top-edge.html
   [21]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4929/shard-apl2/igt@kms_cursor_edge_walk@pipe-c-256x256-top-edge.html

  * igt@kms_flip@flip-vs-suspend-interruptible@a-dp1:
    - shard-kbl:          [PASS][22] -> [DMESG-WARN][23] ([i915#180]) +4 similar issues
   [22]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8946/shard-kbl7/igt@kms_flip@flip-vs-suspend-interruptible@a-dp1.html
   [23]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4929/shard-kbl2/igt@kms_flip@flip-vs-suspend-interruptible@a-dp1.html

  * igt@kms_flip@flip-vs-suspend@c-hdmi-a1:
    - shard-hsw:          [PASS][24] -> [INCOMPLETE][25] ([i915#2055])
   [24]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8946/shard-hsw1/igt@kms_flip@flip-vs-suspend@c-hdmi-a1.html
   [25]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4929/shard-hsw6/igt@kms_flip@flip-vs-suspend@c-hdmi-a1.html

  * igt@kms_frontbuffer_tracking@fbc-1p-offscren-pri-shrfb-draw-render:
    - shard-tglb:         [PASS][26] -> [DMESG-WARN][27] ([i915#1982]) +2 similar issues
   [26]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8946/shard-tglb7/igt@kms_frontbuffer_tracking@fbc-1p-offscren-pri-shrfb-draw-render.html
   [27]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4929/shard-tglb1/igt@kms_frontbuffer_tracking@fbc-1p-offscren-pri-shrfb-draw-render.html
    - shard-iclb:         [PASS][28] -> [DMESG-WARN][29] ([i915#1982])
   [28]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8946/shard-iclb8/igt@kms_frontbuffer_tracking@fbc-1p-offscren-pri-shrfb-draw-render.html
   [29]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4929/shard-iclb3/igt@kms_frontbuffer_tracking@fbc-1p-offscren-pri-shrfb-draw-render.html

  * igt@kms_psr@psr2_no_drrs:
    - shard-iclb:         [PASS][30] -> [SKIP][31] ([fdo#109441]) +1 similar issue
   [30]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8946/shard-iclb2/igt@kms_psr@psr2_no_drrs.html
   [31]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4929/shard-iclb6/igt@kms_psr@psr2_no_drrs.html

  * igt@kms_setmode@basic:
    - shard-hsw:          [PASS][32] -> [FAIL][33] ([i915#31])
   [32]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8946/shard-hsw6/igt@kms_setmode@basic.html
   [33]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4929/shard-hsw6/igt@kms_setmode@basic.html
    - shard-kbl:          [PASS][34] -> [FAIL][35] ([i915#31])
   [34]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8946/shard-kbl4/igt@kms_setmode@basic.html
   [35]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4929/shard-kbl2/igt@kms_setmode@basic.html

  * igt@kms_vblank@pipe-c-wait-idle:
    - shard-kbl:          [PASS][36] -> [DMESG-WARN][37] ([i915#1982]) +1 similar issue
   [36]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8946/shard-kbl1/igt@kms_vblank@pipe-c-wait-idle.html
   [37]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4929/shard-kbl2/igt@kms_vblank@pipe-c-wait-idle.html

  * igt@perf@missing-sample-flags:
    - shard-apl:          [PASS][38] -> [SKIP][39] ([fdo#109271] / [i915#1635])
   [38]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8946/shard-apl2/igt@perf@missing-sample-flags.html
   [39]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4929/shard-apl1/igt@perf@missing-sample-flags.html
    - shard-glk:          [PASS][40] -> [SKIP][41] ([fdo#109271])
   [40]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8946/shard-glk8/igt@perf@missing-sample-flags.html
   [41]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4929/shard-glk9/igt@perf@missing-sample-flags.html
    - shard-iclb:         [PASS][42] -> [SKIP][43] ([i915#405])
   [42]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8946/shard-iclb5/igt@perf@missing-sample-flags.html
   [43]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4929/shard-iclb4/igt@perf@missing-sample-flags.html
    - shard-hsw:          [PASS][44] -> [SKIP][45] ([fdo#109271])
   [44]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8946/shard-hsw6/igt@perf@missing-sample-flags.html
   [45]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4929/shard-hsw1/igt@perf@missing-sample-flags.html
    - shard-kbl:          [PASS][46] -> [SKIP][47] ([fdo#109271])
   [46]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8946/shard-kbl7/igt@perf@missing-sample-flags.html
   [47]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4929/shard-kbl7/igt@perf@missing-sample-flags.html
    - shard-tglb:         [PASS][48] -> [SKIP][49] ([i915#405])
   [48]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8946/shard-tglb1/igt@perf@missing-sample-flags.html
   [49]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4929/shard-tglb2/igt@perf@missing-sample-flags.html

  
#### Possible fixes ####

  * igt@gem_exec_whisper@basic-fds-forked:
    - shard-glk:          [TIMEOUT][50] ([i915#1958]) -> [PASS][51] +1 similar issue
   [50]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8946/shard-glk3/igt@gem_exec_whisper@basic-fds-forked.html
   [51]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4929/shard-glk4/igt@gem_exec_whisper@basic-fds-forked.html

  * igt@gem_sync@basic-store-all:
    - shard-kbl:          [FAIL][52] ([i915#2356]) -> [PASS][53]
   [52]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8946/shard-kbl7/igt@gem_sync@basic-store-all.html
   [53]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4929/shard-kbl2/igt@gem_sync@basic-store-all.html

  * igt@kms_big_fb@y-tiled-64bpp-rotate-180:
    - shard-glk:          [FAIL][54] ([i915#1119]) -> [PASS][55]
   [54]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8946/shard-glk3/igt@kms_big_fb@y-tiled-64bpp-rotate-180.html
   [55]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4929/shard-glk4/igt@kms_big_fb@y-tiled-64bpp-rotate-180.html

  * igt@kms_cursor_crc@pipe-a-cursor-suspend:
    - shard-kbl:          [DMESG-WARN][56] ([i915#180]) -> [PASS][57] +7 similar issues
   [56]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8946/shard-kbl2/igt@kms_cursor_crc@pipe-a-cursor-suspend.html
   [57]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4929/shard-kbl7/igt@kms_cursor_crc@pipe-a-cursor-suspend.html

  * igt@kms_cursor_crc@pipe-b-cursor-64x21-onscreen:
    - shard-kbl:          [FAIL][58] ([i915#54]) -> [PASS][59]
   [58]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8946/shard-kbl2/igt@kms_cursor_crc@pipe-b-cursor-64x21-onscreen.html
   [59]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4929/shard-kbl7/igt@kms_cursor_crc@pipe-b-cursor-64x21-onscreen.html
    - shard-apl:          [FAIL][60] ([i915#1635] / [i915#54]) -> [PASS][61]
   [60]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8946/shard-apl6/igt@kms_cursor_crc@pipe-b-cursor-64x21-onscreen.html
   [61]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4929/shard-apl1/igt@kms_cursor_crc@pipe-b-cursor-64x21-onscreen.html
    - shard-glk:          [FAIL][62] ([i915#54]) -> [PASS][63]
   [62]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8946/shard-glk2/igt@kms_cursor_crc@pipe-b-cursor-64x21-onscreen.html
   [63]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4929/shard-glk9/igt@kms_cursor_crc@pipe-b-cursor-64x21-onscreen.html

  * igt@kms_cursor_legacy@cursor-vs-flip-toggle:
    - shard-hsw:          [FAIL][64] ([i915#2370]) -> [PASS][65]
   [64]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8946/shard-hsw6/igt@kms_cursor_legacy@cursor-vs-flip-toggle.html
   [65]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4929/shard-hsw6/igt@kms_cursor_legacy@cursor-vs-flip-toggle.html

  * igt@kms_flip@2x-blocking-absolute-wf_vblank-interruptible@ab-vga1-hdmi-a1:
    - shard-hsw:          [DMESG-WARN][66] ([i915#1982]) -> [PASS][67] +1 similar issue
   [66]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8946/shard-hsw6/igt@kms_flip@2x-blocking-absolute-wf_vblank-interruptible@ab-vga1-hdmi-a1.html
   [67]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4929/shard-hsw1/igt@kms_flip@2x-blocking-absolute-wf_vblank-interruptible@ab-vga1-hdmi-a1.html

  * igt@kms_frontbuffer_tracking@fbc-1p-primscrn-shrfb-pgflip-blt:
    - shard-kbl:          [DMESG-WARN][68] ([i915#1982]) -> [PASS][69]
   [68]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8946/shard-kbl7/igt@kms_frontbuffer_tracking@fbc-1p-primscrn-shrfb-pgflip-blt.html
   [69]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4929/shard-kbl4/igt@kms_frontbuffer_tracking@fbc-1p-primscrn-shrfb-pgflip-blt.html

  * igt@kms_frontbuffer_tracking@fbc-1p-primscrn-shrfb-plflip-blt:
    - shard-iclb:         [DMESG-WARN][70] ([i915#1982]) -> [PASS][71] +1 similar issue
   [70]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8946/shard-iclb2/igt@kms_frontbuffer_tracking@fbc-1p-primscrn-shrfb-plflip-blt.html
   [71]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4929/shard-iclb6/igt@kms_frontbuffer_tracking@fbc-1p-primscrn-shrfb-plflip-blt.html

  * igt@kms_frontbuffer_tracking@psr-1p-primscrn-spr-indfb-onoff:
    - shard-tglb:         [DMESG-WARN][72] ([i915#1982]) -> [PASS][73] +1 similar issue
   [72]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8946/shard-tglb8/igt@kms_frontbuffer_tracking@psr-1p-primscrn-spr-indfb-onoff.html
   [73]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4929/shard-tglb5/igt@kms_frontbuffer_tracking@psr-1p-primscrn-spr-indfb-onoff.html

  * igt@kms_plane@plane-panning-bottom-right-pipe-a-planes:
    - shard-glk:          [FAIL][74] ([i915#1036]) -> [PASS][75]
   [74]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8946/shard-glk3/igt@kms_plane@plane-panning-bottom-right-pipe-a-planes.html
   [75]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4929/shard-glk2/igt@kms_plane@plane-panning-bottom-right-pipe-a-planes.html

  * igt@kms_psr2_su@page_flip:
    - shard-iclb:         [SKIP][76] ([fdo#109642] / [fdo#111068]) -> [PASS][77]
   [76]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8946/shard-iclb1/igt@kms_psr2_su@page_flip.html
   [77]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4929/shard-iclb2/igt@kms_psr2_su@page_flip.html

  * igt@kms_psr@psr2_sprite_blt:
    - shard-iclb:         [SKIP][78] ([fdo#109441]) -> [PASS][79] +3 similar issues
   [78]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8946/shard-iclb3/igt@kms_psr@psr2_sprite_blt.html
   [79]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4929/shard-iclb2/igt@kms_psr@psr2_sprite_blt.html

  
#### Warnings ####

  * igt@gem_workarounds@suspend-resume-fd:
    - shard-tglb:         [DMESG-WARN][80] ([i915#2411]) -> [INCOMPLETE][81] ([i915#1602] / [i915#1887] / [i915#456])
   [80]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8946/shard-tglb8/igt@gem_workarounds@suspend-resume-fd.html
   [81]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4929/shard-tglb2/igt@gem_workarounds@suspend-resume-fd.html

  
  {name}: This element is suppressed. This means it is ignored when computing
          the status of the difference (SUCCESS, WARNING, or FAILURE).

  [fdo#109271]: https://bugs.freedesktop.org/show_bug.cgi?id=109271
  [fdo#109441]: https://bugs.freedesktop.org/show_bug.cgi?id=109441
  [fdo#109642]: https://bugs.freedesktop.org/show_bug.cgi?id=109642
  [fdo#111068]: https://bugs.freedesktop.org/show_bug.cgi?id=111068
  [i915#1036]: https://gitlab.freedesktop.org/drm/intel/issues/1036
  [i915#1119]: https://gitlab.freedesktop.org/drm/intel/issues/1119
  [i915#118]: https://gitlab.freedesktop.org/drm/intel/issues/118
  [i915#1602]: https://gitlab.freedesktop.org/drm/intel/issues/1602
  [i915#1635]: https://gitlab.freedesktop.org/drm/intel/issues/1635
  [i915#180]: https://gitlab.freedesktop.org/drm/intel/issues/180
  [i915#1887]: https://gitlab.freedesktop.org/drm/intel/issues/1887
  [i915#1958]: https://gitlab.freedesktop.org/drm/intel/issues/1958
  [i915#1982]: https://gitlab.freedesktop.org/drm/intel/issues/1982
  [i915#2055]: https://gitlab.freedesktop.org/drm/intel/issues/2055
  [i915#2356]: https://gitlab.freedesktop.org/drm/intel/issues/2356
  [i915#2370]: https://gitlab.freedesktop.org/drm/intel/issues/2370
  [i915#2411]: https://gitlab.freedesktop.org/drm/intel/issues/2411
  [i915#31]: https://gitlab.freedesktop.org/drm/intel/issues/31
  [i915#405]: https://gitlab.freedesktop.org/drm/intel/issues/405
  [i915#456]: https://gitlab.freedesktop.org/drm/intel/issues/456
  [i915#54]: https://gitlab.freedesktop.org/drm/intel/issues/54
  [i915#95]: https://gitlab.freedesktop.org/drm/intel/issues/95


Participating hosts (10 -> 8)
------------------------------

  Missing    (2): pig-skl-6260u pig-glk-j5005 


Build changes
-------------

  * CI: CI-20190529 -> None
  * IGT: IGT_5774 -> IGTPW_4929
  * Piglit: piglit_4509 -> None

  CI-20190529: 20190529
  CI_DRM_8946: e2a5eec44f19c7732c7114c62410914fda06e106 @ git://anongit.freedesktop.org/gfx-ci/linux
  IGTPW_4929: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4929/index.html
  IGT_5774: 2a5db9f60241383272aeec176e1b97b3f487209f @ git://anongit.freedesktop.org/xorg/app/intel-gpu-tools
  piglit_4509: fdc5a4ca11124ab8413c7988896eec4c97336694 @ git://anongit.freedesktop.org/piglit

== Logs ==

For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4929/index.html

[-- Attachment #1.2: Type: text/html, Size: 22525 bytes --]

[-- Attachment #2: Type: text/plain, Size: 154 bytes --]

_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [igt-dev] [PATCH i-g-t] tests/kms_flip_scaled_crc: add flip to downscaled subtests
  2020-08-31 13:34 [igt-dev] [PATCH i-g-t] tests/kms_flip_scaled_crc: add flip to downscaled subtests Juha-Pekka Heikkila
                   ` (4 preceding siblings ...)
  2020-09-01  2:13 ` [igt-dev] ✗ Fi.CI.IGT: failure for tests/kms_flip_scaled_crc: add flip to downscaled subtests (rev7) Patchwork
@ 2020-09-01 11:38 ` Maarten Lankhorst
  2020-09-01 12:52   ` Juha-Pekka Heikkila
  5 siblings, 1 reply; 15+ messages in thread
From: Maarten Lankhorst @ 2020-09-01 11:38 UTC (permalink / raw)
  To: Juha-Pekka Heikkila, igt-dev

Op 31-08-2020 om 15:34 schreef Juha-Pekka Heikkila:
> attempt to cause cdclk changes and stress scalers with flipping
> to different size fb with different modifiers. Verify results
> with crc.
>
> Signed-off-by: Juha-Pekka Heikkila <juhapekka.heikkila@gmail.com>
> ---
>  tests/Makefile.sources      |   1 +
>  tests/kms_flip_scaled_crc.c | 259 ++++++++++++++++++++++++++++++++++++
>  tests/meson.build           |   1 +
>  3 files changed, 261 insertions(+)
>  create mode 100644 tests/kms_flip_scaled_crc.c
>
> diff --git a/tests/Makefile.sources b/tests/Makefile.sources
> index 269b506d..fe9fb7ed 100644
> --- a/tests/Makefile.sources
> +++ b/tests/Makefile.sources
> @@ -53,6 +53,7 @@ TESTS_progs = \
>  	kms_fence_pin_leak \
>  	kms_flip \
>  	kms_flip_event_leak \
> +	kms_flip_scaled_crc \
>  	kms_flip_tiling \
>  	kms_force_connector_basic \
>  	kms_frontbuffer_tracking \
> diff --git a/tests/kms_flip_scaled_crc.c b/tests/kms_flip_scaled_crc.c
> new file mode 100644
> index 00000000..b6094a5d
> --- /dev/null
> +++ b/tests/kms_flip_scaled_crc.c
> @@ -0,0 +1,259 @@
> +/*
> + * Copyright © 2020 Intel Corporation
> + *
> + * Permission is hereby granted, free of charge, to any person obtaining a
> + * copy of this software and associated documentation files (the "Software"),
> + * to deal in the Software without restriction, including without limitation
> + * the rights to use, copy, modify, merge, publish, distribute, sublicense,
> + * and/or sell copies of the Software, and to permit persons to whom the
> + * Software is furnished to do so, subject to the following conditions:
> + *
> + * The above copyright notice and this permission notice (including the next
> + * paragraph) shall be included in all copies or substantial portions of the
> + * Software.
> + *
> + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
> + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
> + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
> + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
> + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
> + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
> + * IN THE SOFTWARE.
> + *
> + */
> +
> +#include "igt.h"
> +
> +IGT_TEST_DESCRIPTION("Test flipping between scaled/nonscaled framebuffers");
> +
> +typedef struct {
> +	int drm_fd;
> +	igt_display_t display;
> +	igt_output_t *output;
> +	enum pipe pipe;
> +	uint32_t gen;
> +	struct igt_fb small_fb;
> +	struct igt_fb big_fb;
> +	igt_pipe_crc_t *pipe_crc;
> +} data_t;
> +
> +const struct {
> +	const char * const name;
> +	const char * const describe;
> +	const uint64_t firstmodifier;
> +	const uint32_t firstformat;
> +	const uint64_t secondmodifier;
> +	const uint32_t secondformat;
> +} flip_scenario_test[] = {
> +	{
> +		"flip-32bpp-ytile-to-64bpp-ytile",
> +		"Try to flip from 32bpp non scaled fb to 64bpp downscaled fb in attempt to stress cdclk reprogramming.",
> +		LOCAL_I915_FORMAT_MOD_Y_TILED, DRM_FORMAT_XRGB8888,
> +		LOCAL_I915_FORMAT_MOD_Y_TILED, DRM_FORMAT_XRGB16161616F
> +	},
> +	{
> +		"flip-64bpp-ytile-to-32bpp-ytile",
> +		"Try to flip from 64bpp non scaled fb to 32bpp downscaled fb.",
> +		LOCAL_I915_FORMAT_MOD_Y_TILED, DRM_FORMAT_XRGB16161616F,
> +		LOCAL_I915_FORMAT_MOD_Y_TILED, DRM_FORMAT_XRGB8888
> +	},
> +	{
> +		"flip-64bpp-ytile-to-16bpp-ytile",
> +		"Try to flip from 64bpp non scaled fb to 16bpp downscaled fb.",
> +		LOCAL_I915_FORMAT_MOD_Y_TILED, DRM_FORMAT_XRGB16161616F,
> +		LOCAL_I915_FORMAT_MOD_Y_TILED, DRM_FORMAT_RGB565
> +	},
> +	{
> +		"flip-32bpp-ytileccs-to-64bpp-ytile",
> +		"Try to flip from 32bpp ccs non scaled fb to 64bpp downscaled fb ytile.",
> +		LOCAL_I915_FORMAT_MOD_Y_TILED_CCS, DRM_FORMAT_XRGB8888,
> +		LOCAL_I915_FORMAT_MOD_Y_TILED, DRM_FORMAT_XRGB16161616F
> +	},
> +	{
> +		"flip-32bpp-ytile-to-32bpp-ytilegen12rcccs",
> +		"Try to flip from 32bpp non scaled fb to 32bpp downscaled gen12 rc ccs fb in attempt to stress cdclk reprogramming.",
> +		LOCAL_I915_FORMAT_MOD_Y_TILED, DRM_FORMAT_XRGB8888,
> +		LOCAL_I915_FORMAT_MOD_Y_TILED_GEN12_RC_CCS, DRM_FORMAT_XRGB8888
> +	},
> +	{
> +		"flip-32bpp-ytile-to-32bpp-ytileccs",
> +		"Try to flip from 32bpp non scaled ytiled fb to 32bpp downscaled ytiled ccs fb.",
> +		LOCAL_I915_FORMAT_MOD_Y_TILED, DRM_FORMAT_XRGB8888,
> +		LOCAL_I915_FORMAT_MOD_Y_TILED_CCS, DRM_FORMAT_XRGB8888
> +	},
> +	{
> +		"flip-64bpp-ytile-to-32bpp-ytilercccs",
> +		"Try to flip from 64bpp non scaled ytiled fb to 32bpp downscaled gen12 rc ccs fb.",
> +		LOCAL_I915_FORMAT_MOD_Y_TILED, DRM_FORMAT_XRGB16161616F,
> +		LOCAL_I915_FORMAT_MOD_Y_TILED_GEN12_RC_CCS, DRM_FORMAT_XRGB8888
> +	},
> +};
> +
> +static void setup_fb(data_t *data, struct igt_fb *newfb, uint32_t width,
> +		     uint32_t height, uint64_t format, uint64_t modifier)
> +{
> +	struct drm_mode_fb_cmd2 f = {0};
> +	cairo_t *cr;
> +
> +	igt_require(igt_display_has_format_mod(&data->display, format,
> +					       modifier));
> +
> +	igt_create_bo_for_fb(data->drm_fd, width, height, format, modifier,
> +			     newfb);
> +	igt_assert(newfb->gem_handle > 0);
> +
> +	f.width = newfb->width;
> +	f.height = newfb->height;
> +	f.pixel_format = newfb->drm_format;
> +	f.flags = LOCAL_DRM_MODE_FB_MODIFIERS;
> +
> +	for (int n = 0; n < newfb->num_planes; n++) {
> +		f.handles[n] = newfb->gem_handle;
> +		f.modifier[n] = newfb->modifier;
> +		f.pitches[n] = newfb->strides[n];
> +		f.offsets[n] = newfb->offsets[n];
> +	}
> +
> +	cr = igt_get_cairo_ctx(data->drm_fd, newfb);
> +	igt_paint_color(cr, 0, 0, newfb->width, newfb->height, 0, 1, 0);
> +	igt_put_cairo_ctx(cr);
> +
> +	igt_assert(drmIoctl(data->drm_fd, LOCAL_DRM_IOCTL_MODE_ADDFB2, &f) == 0);
> +	newfb->fb_id = f.fb_id;
> +}
> +
> +static void free_fbs(data_t *data)
> +{
> +	igt_remove_fb(data->drm_fd, &data->small_fb);
> +	igt_remove_fb(data->drm_fd, &data->big_fb);
> +}
> +
> +static void test_flip_to_scaled(data_t *data, uint32_t index, enum pipe pipe,
> +				igt_output_t *output)
> +{
> +	igt_plane_t *primary;
> +	igt_crc_t small_crc, big_crc;
> +
> +	drmModeModeInfo *mode;
> +	struct drm_event_vblank ev;
> +	int ret;
> +
> +	igt_debug("running on output %s pipe %s\n", output->name,
> +		  kmstest_pipe_name(pipe));
> +	if (data->big_fb.fb_id == 0) {
> +		mode = igt_output_get_mode(output);
> +
> +		// big fb will be 4k unless running on older than ICL
> +		if (data->gen < 11) {
> +			setup_fb(data, &data->small_fb,
> +				 min(mode->hdisplay, 640),
> +				 min(mode->vdisplay, 480),
> +				 flip_scenario_test[index].firstformat,
> +				 flip_scenario_test[index].firstmodifier);
> +
> +			setup_fb(data, &data->big_fb,
> +				 1280, 960,
> +				 flip_scenario_test[index].secondformat,
> +				 flip_scenario_test[index].secondmodifier);
> +			igt_debug("small fb %dx%d\n", data->small_fb.width,
> +			          data->small_fb.height);
> +			igt_debug("big fb %dx%d\n", data->big_fb.width,
> +			          data->big_fb.height);
> +		} else {
> +			setup_fb(data, &data->small_fb,
> +				 min(mode->hdisplay, 1920),
> +				 min(mode->vdisplay, 1080),
> +				 flip_scenario_test[index].firstformat,
> +				 flip_scenario_test[index].firstmodifier);
> +
> +			setup_fb(data, &data->big_fb,
> +				 3840, 2160,
> +				 flip_scenario_test[index].secondformat,
> +				 flip_scenario_test[index].secondmodifier);
> +			igt_debug("small fb %dx%d\n", data->small_fb.width,
> +			          data->small_fb.height);
> +			igt_debug("big fb %dx%d\n", data->big_fb.width,
> +			          data->big_fb.height);
> +		}
> +	}
> +
> +	igt_output_set_pipe(output, pipe);
> +
> +	primary = igt_output_get_plane_type(output, DRM_PLANE_TYPE_PRIMARY);
> +	igt_plane_set_fb(primary, NULL);
> +
> +	igt_display_commit_atomic(&data->display, DRM_MODE_ATOMIC_ALLOW_MODESET,
> +				  NULL);
> +	data->pipe_crc = igt_pipe_crc_new(data->drm_fd, pipe,
> +					  INTEL_PIPE_CRC_SOURCE_AUTO);
> +	igt_pipe_crc_start(data->pipe_crc);
> +
> +	igt_plane_set_position(primary, 0, 0);
> +	igt_plane_set_fb(primary, &data->small_fb);
> +
> +	igt_display_commit_atomic(&data->display,
> +				  DRM_MODE_ATOMIC_ALLOW_MODESET, NULL);
> +	igt_pipe_crc_get_current(data->drm_fd, data->pipe_crc, &small_crc);
> +
> +	igt_plane_set_fb(primary, &data->big_fb);
> +	igt_plane_set_size(primary, data->small_fb.width,
> +			   data->small_fb.height);
> +	ret = igt_display_try_commit_atomic(&data->display,
> +					    DRM_MODE_ATOMIC_ALLOW_MODESET  |
> +					    DRM_MODE_PAGE_FLIP_EVENT, NULL);
> +
> +	igt_require_f(ret != -ERANGE,
> +		      "Platform scaling limits exceeded, skipping.");
> +	igt_assert_eq(ret, 0);
> +
> +	igt_assert(read(data->drm_fd, &ev, sizeof(ev)) == sizeof(ev));
> +
> +	igt_pipe_crc_get_current(data->drm_fd, data->pipe_crc, &big_crc);
> +	igt_assert(igt_check_crc_equal(&small_crc, &big_crc));
> +
> +	igt_plane_set_fb(primary, NULL);
> +	igt_display_commit_atomic(&data->display, 0, NULL);
> +
> +	igt_pipe_crc_stop(data->pipe_crc);
> +	igt_pipe_crc_free(data->pipe_crc);
> +	data->pipe_crc = NULL;
> +	igt_output_set_pipe(output, PIPE_NONE);
igt_display_reset() in the beginning instead of clearing the output pipe at the end? Also means we don't need to set NULL fb above.
> +}
> +
> +igt_main
> +{
> +	enum pipe pipe;
> +	data_t data = {};
> +	igt_output_t *output;
> +
> +	igt_fixture {
> +		data.drm_fd = drm_open_driver_master(DRIVER_INTEL);
> +		data.gen = intel_gen(intel_get_drm_devid(data.drm_fd));
> +		igt_require(data.gen >= 9);
> +		igt_display_require(&data.display, data.drm_fd);
> +		igt_require(data.display.is_atomic);
> +		igt_require_pipe_crc(data.drm_fd);
> +		kmstest_set_vt_graphics_mode();
> +	}
> +
> +	for (int index = 0; index < ARRAY_SIZE(flip_scenario_test); index++) {
> +		igt_describe(flip_scenario_test[index].describe);
> +		igt_subtest(flip_scenario_test[index].name) {
> +			for_each_pipe_with_single_output(&data.display, pipe,
> +							 output)
> +				test_flip_to_scaled(&data, index, pipe, output);
> +
> +			free_fbs(&data);
> +		}
> +	}
> +	igt_fixture {
> +		free_fbs(&data);
> +		if (data.pipe_crc) {
> +			igt_pipe_crc_stop(data.pipe_crc);
> +			igt_pipe_crc_free(data.pipe_crc);
> +			data.pipe_crc = NULL;
> +		}
> +		kmstest_set_vt_text_mode();
> +		igt_display_fini(&data.display);
> +	}
> +}
> diff --git a/tests/meson.build b/tests/meson.build
> index 684de043..8e17a6ae 100644
> --- a/tests/meson.build
> +++ b/tests/meson.build
> @@ -37,6 +37,7 @@ test_progs = [
>  	'kms_fence_pin_leak',
>  	'kms_flip',
>  	'kms_flip_event_leak',
> +	'kms_flip_scaled_crc',
>  	'kms_flip_tiling',
>  	'kms_force_connector_basic',
>  	'kms_frontbuffer_tracking',


_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [igt-dev] [PATCH i-g-t] tests/kms_flip_scaled_crc: add flip to downscaled subtests
  2020-09-01 11:38 ` [igt-dev] [PATCH i-g-t] tests/kms_flip_scaled_crc: add flip to downscaled subtests Maarten Lankhorst
@ 2020-09-01 12:52   ` Juha-Pekka Heikkila
  0 siblings, 0 replies; 15+ messages in thread
From: Juha-Pekka Heikkila @ 2020-09-01 12:52 UTC (permalink / raw)
  To: Maarten Lankhorst, igt-dev

On 1.9.2020 14.38, Maarten Lankhorst wrote:
> Op 31-08-2020 om 15:34 schreef Juha-Pekka Heikkila:
>> attempt to cause cdclk changes and stress scalers with flipping
>> to different size fb with different modifiers. Verify results
>> with crc.
>>
>> Signed-off-by: Juha-Pekka Heikkila <juhapekka.heikkila@gmail.com>
>> ---
>>   tests/Makefile.sources      |   1 +
>>   tests/kms_flip_scaled_crc.c | 259 ++++++++++++++++++++++++++++++++++++
>>   tests/meson.build           |   1 +
>>   3 files changed, 261 insertions(+)
>>   create mode 100644 tests/kms_flip_scaled_crc.c
>>
>> diff --git a/tests/Makefile.sources b/tests/Makefile.sources
>> index 269b506d..fe9fb7ed 100644
>> --- a/tests/Makefile.sources
>> +++ b/tests/Makefile.sources
>> @@ -53,6 +53,7 @@ TESTS_progs = \
>>   	kms_fence_pin_leak \
>>   	kms_flip \
>>   	kms_flip_event_leak \
>> +	kms_flip_scaled_crc \
>>   	kms_flip_tiling \
>>   	kms_force_connector_basic \
>>   	kms_frontbuffer_tracking \
>> diff --git a/tests/kms_flip_scaled_crc.c b/tests/kms_flip_scaled_crc.c
>> new file mode 100644
>> index 00000000..b6094a5d
>> --- /dev/null
>> +++ b/tests/kms_flip_scaled_crc.c
>> @@ -0,0 +1,259 @@
>> +/*
>> + * Copyright © 2020 Intel Corporation
>> + *
>> + * Permission is hereby granted, free of charge, to any person obtaining a
>> + * copy of this software and associated documentation files (the "Software"),
>> + * to deal in the Software without restriction, including without limitation
>> + * the rights to use, copy, modify, merge, publish, distribute, sublicense,
>> + * and/or sell copies of the Software, and to permit persons to whom the
>> + * Software is furnished to do so, subject to the following conditions:
>> + *
>> + * The above copyright notice and this permission notice (including the next
>> + * paragraph) shall be included in all copies or substantial portions of the
>> + * Software.
>> + *
>> + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
>> + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
>> + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
>> + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
>> + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
>> + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
>> + * IN THE SOFTWARE.
>> + *
>> + */
>> +
>> +#include "igt.h"
>> +
>> +IGT_TEST_DESCRIPTION("Test flipping between scaled/nonscaled framebuffers");
>> +
>> +typedef struct {
>> +	int drm_fd;
>> +	igt_display_t display;
>> +	igt_output_t *output;
>> +	enum pipe pipe;
>> +	uint32_t gen;
>> +	struct igt_fb small_fb;
>> +	struct igt_fb big_fb;
>> +	igt_pipe_crc_t *pipe_crc;
>> +} data_t;
>> +
>> +const struct {
>> +	const char * const name;
>> +	const char * const describe;
>> +	const uint64_t firstmodifier;
>> +	const uint32_t firstformat;
>> +	const uint64_t secondmodifier;
>> +	const uint32_t secondformat;
>> +} flip_scenario_test[] = {
>> +	{
>> +		"flip-32bpp-ytile-to-64bpp-ytile",
>> +		"Try to flip from 32bpp non scaled fb to 64bpp downscaled fb in attempt to stress cdclk reprogramming.",
>> +		LOCAL_I915_FORMAT_MOD_Y_TILED, DRM_FORMAT_XRGB8888,
>> +		LOCAL_I915_FORMAT_MOD_Y_TILED, DRM_FORMAT_XRGB16161616F
>> +	},
>> +	{
>> +		"flip-64bpp-ytile-to-32bpp-ytile",
>> +		"Try to flip from 64bpp non scaled fb to 32bpp downscaled fb.",
>> +		LOCAL_I915_FORMAT_MOD_Y_TILED, DRM_FORMAT_XRGB16161616F,
>> +		LOCAL_I915_FORMAT_MOD_Y_TILED, DRM_FORMAT_XRGB8888
>> +	},
>> +	{
>> +		"flip-64bpp-ytile-to-16bpp-ytile",
>> +		"Try to flip from 64bpp non scaled fb to 16bpp downscaled fb.",
>> +		LOCAL_I915_FORMAT_MOD_Y_TILED, DRM_FORMAT_XRGB16161616F,
>> +		LOCAL_I915_FORMAT_MOD_Y_TILED, DRM_FORMAT_RGB565
>> +	},
>> +	{
>> +		"flip-32bpp-ytileccs-to-64bpp-ytile",
>> +		"Try to flip from 32bpp ccs non scaled fb to 64bpp downscaled fb ytile.",
>> +		LOCAL_I915_FORMAT_MOD_Y_TILED_CCS, DRM_FORMAT_XRGB8888,
>> +		LOCAL_I915_FORMAT_MOD_Y_TILED, DRM_FORMAT_XRGB16161616F
>> +	},
>> +	{
>> +		"flip-32bpp-ytile-to-32bpp-ytilegen12rcccs",
>> +		"Try to flip from 32bpp non scaled fb to 32bpp downscaled gen12 rc ccs fb in attempt to stress cdclk reprogramming.",
>> +		LOCAL_I915_FORMAT_MOD_Y_TILED, DRM_FORMAT_XRGB8888,
>> +		LOCAL_I915_FORMAT_MOD_Y_TILED_GEN12_RC_CCS, DRM_FORMAT_XRGB8888
>> +	},
>> +	{
>> +		"flip-32bpp-ytile-to-32bpp-ytileccs",
>> +		"Try to flip from 32bpp non scaled ytiled fb to 32bpp downscaled ytiled ccs fb.",
>> +		LOCAL_I915_FORMAT_MOD_Y_TILED, DRM_FORMAT_XRGB8888,
>> +		LOCAL_I915_FORMAT_MOD_Y_TILED_CCS, DRM_FORMAT_XRGB8888
>> +	},
>> +	{
>> +		"flip-64bpp-ytile-to-32bpp-ytilercccs",
>> +		"Try to flip from 64bpp non scaled ytiled fb to 32bpp downscaled gen12 rc ccs fb.",
>> +		LOCAL_I915_FORMAT_MOD_Y_TILED, DRM_FORMAT_XRGB16161616F,
>> +		LOCAL_I915_FORMAT_MOD_Y_TILED_GEN12_RC_CCS, DRM_FORMAT_XRGB8888
>> +	},
>> +};
>> +
>> +static void setup_fb(data_t *data, struct igt_fb *newfb, uint32_t width,
>> +		     uint32_t height, uint64_t format, uint64_t modifier)
>> +{
>> +	struct drm_mode_fb_cmd2 f = {0};
>> +	cairo_t *cr;
>> +
>> +	igt_require(igt_display_has_format_mod(&data->display, format,
>> +					       modifier));
>> +
>> +	igt_create_bo_for_fb(data->drm_fd, width, height, format, modifier,
>> +			     newfb);
>> +	igt_assert(newfb->gem_handle > 0);
>> +
>> +	f.width = newfb->width;
>> +	f.height = newfb->height;
>> +	f.pixel_format = newfb->drm_format;
>> +	f.flags = LOCAL_DRM_MODE_FB_MODIFIERS;
>> +
>> +	for (int n = 0; n < newfb->num_planes; n++) {
>> +		f.handles[n] = newfb->gem_handle;
>> +		f.modifier[n] = newfb->modifier;
>> +		f.pitches[n] = newfb->strides[n];
>> +		f.offsets[n] = newfb->offsets[n];
>> +	}
>> +
>> +	cr = igt_get_cairo_ctx(data->drm_fd, newfb);
>> +	igt_paint_color(cr, 0, 0, newfb->width, newfb->height, 0, 1, 0);
>> +	igt_put_cairo_ctx(cr);
>> +
>> +	igt_assert(drmIoctl(data->drm_fd, LOCAL_DRM_IOCTL_MODE_ADDFB2, &f) == 0);
>> +	newfb->fb_id = f.fb_id;
>> +}
>> +
>> +static void free_fbs(data_t *data)
>> +{
>> +	igt_remove_fb(data->drm_fd, &data->small_fb);
>> +	igt_remove_fb(data->drm_fd, &data->big_fb);
>> +}
>> +
>> +static void test_flip_to_scaled(data_t *data, uint32_t index, enum pipe pipe,
>> +				igt_output_t *output)
>> +{
>> +	igt_plane_t *primary;
>> +	igt_crc_t small_crc, big_crc;
>> +
>> +	drmModeModeInfo *mode;
>> +	struct drm_event_vblank ev;
>> +	int ret;
>> +
>> +	igt_debug("running on output %s pipe %s\n", output->name,
>> +		  kmstest_pipe_name(pipe));
>> +	if (data->big_fb.fb_id == 0) {
>> +		mode = igt_output_get_mode(output);
>> +
>> +		// big fb will be 4k unless running on older than ICL
>> +		if (data->gen < 11) {
>> +			setup_fb(data, &data->small_fb,
>> +				 min(mode->hdisplay, 640),
>> +				 min(mode->vdisplay, 480),
>> +				 flip_scenario_test[index].firstformat,
>> +				 flip_scenario_test[index].firstmodifier);
>> +
>> +			setup_fb(data, &data->big_fb,
>> +				 1280, 960,
>> +				 flip_scenario_test[index].secondformat,
>> +				 flip_scenario_test[index].secondmodifier);
>> +			igt_debug("small fb %dx%d\n", data->small_fb.width,
>> +			          data->small_fb.height);
>> +			igt_debug("big fb %dx%d\n", data->big_fb.width,
>> +			          data->big_fb.height);
>> +		} else {
>> +			setup_fb(data, &data->small_fb,
>> +				 min(mode->hdisplay, 1920),
>> +				 min(mode->vdisplay, 1080),
>> +				 flip_scenario_test[index].firstformat,
>> +				 flip_scenario_test[index].firstmodifier);
>> +
>> +			setup_fb(data, &data->big_fb,
>> +				 3840, 2160,
>> +				 flip_scenario_test[index].secondformat,
>> +				 flip_scenario_test[index].secondmodifier);
>> +			igt_debug("small fb %dx%d\n", data->small_fb.width,
>> +			          data->small_fb.height);
>> +			igt_debug("big fb %dx%d\n", data->big_fb.width,
>> +			          data->big_fb.height);
>> +		}
>> +	}
>> +
>> +	igt_output_set_pipe(output, pipe);
>> +
>> +	primary = igt_output_get_plane_type(output, DRM_PLANE_TYPE_PRIMARY);
>> +	igt_plane_set_fb(primary, NULL);
>> +
>> +	igt_display_commit_atomic(&data->display, DRM_MODE_ATOMIC_ALLOW_MODESET,
>> +				  NULL);
>> +	data->pipe_crc = igt_pipe_crc_new(data->drm_fd, pipe,
>> +					  INTEL_PIPE_CRC_SOURCE_AUTO);
>> +	igt_pipe_crc_start(data->pipe_crc);
>> +
>> +	igt_plane_set_position(primary, 0, 0);
>> +	igt_plane_set_fb(primary, &data->small_fb);
>> +
>> +	igt_display_commit_atomic(&data->display,
>> +				  DRM_MODE_ATOMIC_ALLOW_MODESET, NULL);
>> +	igt_pipe_crc_get_current(data->drm_fd, data->pipe_crc, &small_crc);
>> +
>> +	igt_plane_set_fb(primary, &data->big_fb);
>> +	igt_plane_set_size(primary, data->small_fb.width,
>> +			   data->small_fb.height);
>> +	ret = igt_display_try_commit_atomic(&data->display,
>> +					    DRM_MODE_ATOMIC_ALLOW_MODESET  |
>> +					    DRM_MODE_PAGE_FLIP_EVENT, NULL);
>> +
>> +	igt_require_f(ret != -ERANGE,
>> +		      "Platform scaling limits exceeded, skipping.");
>> +	igt_assert_eq(ret, 0);
>> +
>> +	igt_assert(read(data->drm_fd, &ev, sizeof(ev)) == sizeof(ev));
>> +
>> +	igt_pipe_crc_get_current(data->drm_fd, data->pipe_crc, &big_crc);
>> +	igt_assert(igt_check_crc_equal(&small_crc, &big_crc));
>> +
>> +	igt_plane_set_fb(primary, NULL);
>> +	igt_display_commit_atomic(&data->display, 0, NULL);
>> +
>> +	igt_pipe_crc_stop(data->pipe_crc);
>> +	igt_pipe_crc_free(data->pipe_crc);
>> +	data->pipe_crc = NULL;
>> +	igt_output_set_pipe(output, PIPE_NONE);
> igt_display_reset() in the beginning instead of clearing the output pipe at the end? Also means we don't need to set NULL fb above.

Yea I can change that. I was just looking at really weird behavior on 
GLK which might become different with that change. For some reason GLK 
is all the time talking about pipe B during this test:

https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4929/shard-glk5/igt@kms_flip_scaled_crc@flip-32bpp-ytile-to-32bpp-ytileccs.html

>> +}
>> +
>> +igt_main
>> +{
>> +	enum pipe pipe;
>> +	data_t data = {};
>> +	igt_output_t *output;
>> +
>> +	igt_fixture {
>> +		data.drm_fd = drm_open_driver_master(DRIVER_INTEL);
>> +		data.gen = intel_gen(intel_get_drm_devid(data.drm_fd));
>> +		igt_require(data.gen >= 9);
>> +		igt_display_require(&data.display, data.drm_fd);
>> +		igt_require(data.display.is_atomic);
>> +		igt_require_pipe_crc(data.drm_fd);
>> +		kmstest_set_vt_graphics_mode();
>> +	}
>> +
>> +	for (int index = 0; index < ARRAY_SIZE(flip_scenario_test); index++) {
>> +		igt_describe(flip_scenario_test[index].describe);
>> +		igt_subtest(flip_scenario_test[index].name) {
>> +			for_each_pipe_with_single_output(&data.display, pipe,
>> +							 output)
>> +				test_flip_to_scaled(&data, index, pipe, output);
>> +
>> +			free_fbs(&data);
>> +		}
>> +	}
>> +	igt_fixture {
>> +		free_fbs(&data);
>> +		if (data.pipe_crc) {
>> +			igt_pipe_crc_stop(data.pipe_crc);
>> +			igt_pipe_crc_free(data.pipe_crc);
>> +			data.pipe_crc = NULL;
>> +		}
>> +		kmstest_set_vt_text_mode();
>> +		igt_display_fini(&data.display);
>> +	}
>> +}
>> diff --git a/tests/meson.build b/tests/meson.build
>> index 684de043..8e17a6ae 100644
>> --- a/tests/meson.build
>> +++ b/tests/meson.build
>> @@ -37,6 +37,7 @@ test_progs = [
>>   	'kms_fence_pin_leak',
>>   	'kms_flip',
>>   	'kms_flip_event_leak',
>> +	'kms_flip_scaled_crc',
>>   	'kms_flip_tiling',
>>   	'kms_force_connector_basic',
>>   	'kms_frontbuffer_tracking',
> 
> 

_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [igt-dev] [PATCH i-g-t] tests/kms_flip_scaled_crc: add flip to downscaled subtests
  2020-09-15 12:08     ` Shankar, Uma
@ 2020-09-22 11:25       ` Shankar, Uma
  0 siblings, 0 replies; 15+ messages in thread
From: Shankar, Uma @ 2020-09-22 11:25 UTC (permalink / raw)
  To: Shankar, Uma, juhapekka.heikkila, igt-dev



> -----Original Message-----
> From: igt-dev <igt-dev-bounces@lists.freedesktop.org> On Behalf Of Shankar,
> Uma
> Sent: Tuesday, September 15, 2020 5:39 PM
> To: juhapekka.heikkila@gmail.com; igt-dev@lists.freedesktop.org
> Subject: Re: [igt-dev] [PATCH i-g-t] tests/kms_flip_scaled_crc: add flip to
> downscaled subtests
> 
> 
> 
> > -----Original Message-----
> > From: Juha-Pekka Heikkila <juhapekka.heikkila@gmail.com>
> > Sent: Monday, September 14, 2020 5:29 PM
> > To: Shankar, Uma <uma.shankar@intel.com>;
> > igt-dev@lists.freedesktop.org
> > Subject: Re: [igt-dev] [PATCH i-g-t] tests/kms_flip_scaled_crc: add
> > flip to downscaled subtests
> >
> > On 4.9.2020 17.31, Shankar, Uma wrote:
> > >
> > >
> > >> -----Original Message-----
> > >> From: igt-dev <igt-dev-bounces@lists.freedesktop.org> On Behalf Of
> > >> Juha-Pekka Heikkila
> > >> Sent: Wednesday, September 2, 2020 2:42 PM
> > >> To: igt-dev@lists.freedesktop.org
> > >> Subject: [igt-dev] [PATCH i-g-t] tests/kms_flip_scaled_crc: add
> > >> flip to downscaled subtests
> > >
> > > I think this would sound better "Add Subtests for Flip with fb downscaling"
> > >
> > >>
> > >> attempt to cause cdclk changes and stress scalers with flipping to
> > >> different size fb with different modifiers. Verify results with crc.
> > >
> > > This is failing on some platforms like in GLK:
> > > https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4945/shard-glk9/igt@k
> > > ms _flip_scaled_crc@flip-32bpp-ytile-to-32bpp-ytileccs.html
> > >
> > > Can you check why it could be happening, I can see you have the
> > > modifier
> > check. But still its rejecting the combination in driver.
> > > May be something to fix.
> >
> > This I suspect is something problematic on i915 side, what is returned
> > there is - EINVAL from flip. Those GLK dmesgs generally look somehow
> > really messy, it is for some reason all the time trying to do
> > something with pipe b even when it's supposing to be disabled.
> 
> Ok, we may have to ensure that this doesn't fail else enabling it in CI will crib.
> May be create a separate Bug for this and get that tracked separately.

With this planned to be tracked separately for GLK with a JIRA Bug, this can be
merged. Please raise a JIRA to track that. With that and other minor nit comments
fixed, this is

Reviewed-by: Uma Shankar <uma.shankar@intel.com>

> > >
> > > Overall this is really a good plan to have this combination tested,
> > > something
> > we have lacked.
> >
> > There was regression on drm-tip on these which was just recently fixed
> > hence this test. If for example would have run some videoplayer which
> > uses hw downscaling result would've been just black screen ;)
> > >
> > >> Signed-off-by: Juha-Pekka Heikkila <juhapekka.heikkila@gmail.com>
> > >> ---
> > >>   tests/Makefile.sources      |   1 +
> > >>   tests/kms_flip_scaled_crc.c | 255
> ++++++++++++++++++++++++++++++++++++
> > >>   tests/meson.build           |   1 +
> > >>   3 files changed, 257 insertions(+)
> > >>   create mode 100644 tests/kms_flip_scaled_crc.c
> > >>
> > >> diff --git a/tests/Makefile.sources b/tests/Makefile.sources index
> > >> 269b506d..fe9fb7ed 100644
> > >> --- a/tests/Makefile.sources
> > >> +++ b/tests/Makefile.sources
> > >> @@ -53,6 +53,7 @@ TESTS_progs = \
> > >>   	kms_fence_pin_leak \
> > >>   	kms_flip \
> > >>   	kms_flip_event_leak \
> > >> +	kms_flip_scaled_crc \
> > >>   	kms_flip_tiling \
> > >>   	kms_force_connector_basic \
> > >>   	kms_frontbuffer_tracking \
> > >> diff --git a/tests/kms_flip_scaled_crc.c
> > >> b/tests/kms_flip_scaled_crc.c new file mode 100644 index
> > >> 00000000..9daa2f92
> > >> --- /dev/null
> > >> +++ b/tests/kms_flip_scaled_crc.c
> > >> @@ -0,0 +1,255 @@
> > >> +/*
> > >> + * Copyright © 2020 Intel Corporation
> > >> + *
> > >> + * Permission is hereby granted, free of charge, to any person
> > >> +obtaining a
> > >> + * copy of this software and associated documentation files (the
> > >> +"Software"),
> > >> + * to deal in the Software without restriction, including without
> > >> +limitation
> > >> + * the rights to use, copy, modify, merge, publish, distribute,
> > >> +sublicense,
> > >> + * and/or sell copies of the Software, and to permit persons to
> > >> +whom the
> > >> + * Software is furnished to do so, subject to the following conditions:
> > >> + *
> > >> + * The above copyright notice and this permission notice
> > >> +(including the next
> > >> + * paragraph) shall be included in all copies or substantial
> > >> +portions of the
> > >> + * Software.
> > >> + *
> > >> + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
> > >> +EXPRESS OR
> > >> + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
> > >> +MERCHANTABILITY,
> > >> + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO
> > EVENT
> > >> +SHALL
> > >> + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
> > DAMAGES
> > >> OR
> > >> +OTHER
> > >> + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
> > >> +ARISING
> > >> + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
> > >> OTHER
> > >> +DEALINGS
> > >> + * IN THE SOFTWARE.
> > >> + *
> > >> + */
> > >> +
> > >> +#include "igt.h"
> > >> +
> > >> +IGT_TEST_DESCRIPTION("Test flipping between scaled/nonscaled
> > >> +framebuffers");
> > >> +
> > >> +typedef struct {
> > >> +	int drm_fd;
> > >> +	igt_display_t display;
> > >> +	igt_output_t *output;
> > >> +	enum pipe pipe;
> > >> +	uint32_t gen;
> > >> +	struct igt_fb small_fb;
> > >> +	struct igt_fb big_fb;
> > >> +	igt_pipe_crc_t *pipe_crc;
> > >> +} data_t;
> > >> +
> > >> +const struct {
> > >> +	const char * const name;
> > >> +	const char * const describe;
> > >> +	const uint64_t firstmodifier;
> > >> +	const uint32_t firstformat;
> > >> +	const uint64_t secondmodifier;
> > >> +	const uint32_t secondformat;
> > >> +} flip_scenario_test[] = {
> > >> +	{
> > >> +		"flip-32bpp-ytile-to-64bpp-ytile",
> > >> +		"Try to flip from 32bpp non scaled fb to 64bpp downscaled fb in
> > >> attempt to stress cdclk reprogramming.",
> > >
> > > We can trim this description, Like: "Flip from 32bpp non scaled fb
> > > to 64bpp
> > downscaled fb to stress CD clock programming"
> > > Trim this for all combinations.
> > >
> > >> +		LOCAL_I915_FORMAT_MOD_Y_TILED, DRM_FORMAT_XRGB8888,
> > >> +		LOCAL_I915_FORMAT_MOD_Y_TILED,
> > >> DRM_FORMAT_XRGB16161616F
> > >> +	},
> > >> +	{
> > >> +		"flip-64bpp-ytile-to-32bpp-ytile",
> > >> +		"Try to flip from 64bpp non scaled fb to 32bpp downscaled fb.",
> > >> +		LOCAL_I915_FORMAT_MOD_Y_TILED,
> > >> DRM_FORMAT_XRGB16161616F,
> > >> +		LOCAL_I915_FORMAT_MOD_Y_TILED, DRM_FORMAT_XRGB8888
> > >> +	},
> > >> +	{
> > >> +		"flip-64bpp-ytile-to-16bpp-ytile",
> > >> +		"Try to flip from 64bpp non scaled fb to 16bpp downscaled fb.",
> > >> +		LOCAL_I915_FORMAT_MOD_Y_TILED,
> > >> DRM_FORMAT_XRGB16161616F,
> > >> +		LOCAL_I915_FORMAT_MOD_Y_TILED, DRM_FORMAT_RGB565
> > >> +	},
> > >> +	{
> > >> +		"flip-32bpp-ytileccs-to-64bpp-ytile",
> > >> +		"Try to flip from 32bpp ccs non scaled fb to 64bpp downscaled fb
> > >> ytile.",
> > >> +		LOCAL_I915_FORMAT_MOD_Y_TILED_CCS,
> > >> DRM_FORMAT_XRGB8888,
> > >> +		LOCAL_I915_FORMAT_MOD_Y_TILED,
> > >> DRM_FORMAT_XRGB16161616F
> > >> +	},
> > >> +	{
> > >> +		"flip-32bpp-ytile-to-32bpp-ytilegen12rcccs",
> > >> +		"Try to flip from 32bpp non scaled fb to 32bpp downscaled gen12
> > >> rc ccs fb in attempt to stress cdclk reprogramming.",
> > >> +		LOCAL_I915_FORMAT_MOD_Y_TILED, DRM_FORMAT_XRGB8888,
> > >> +		LOCAL_I915_FORMAT_MOD_Y_TILED_GEN12_RC_CCS,
> > >> DRM_FORMAT_XRGB8888
> > >> +	},
> > >> +	{
> > >> +		"flip-32bpp-ytile-to-32bpp-ytileccs",
> > >> +		"Try to flip from 32bpp non scaled ytiled fb to 32bpp downscaled
> > >> ytiled ccs fb.",
> > >> +		LOCAL_I915_FORMAT_MOD_Y_TILED, DRM_FORMAT_XRGB8888,
> > >> +		LOCAL_I915_FORMAT_MOD_Y_TILED_CCS,
> > >> DRM_FORMAT_XRGB8888
> > >> +	},
> > >> +	{
> > >> +		"flip-64bpp-ytile-to-32bpp-ytilercccs",
> > >> +		"Try to flip from 64bpp non scaled ytiled fb to 32bpp downscaled
> > >> gen12 rc ccs fb.",
> > >> +		LOCAL_I915_FORMAT_MOD_Y_TILED,
> > >> DRM_FORMAT_XRGB16161616F,
> > >> +		LOCAL_I915_FORMAT_MOD_Y_TILED_GEN12_RC_CCS,
> > >> DRM_FORMAT_XRGB8888
> > >> +	},
> > >> +};
> > >> +
> > >> +static void setup_fb(data_t *data, struct igt_fb *newfb, uint32_t width,
> > >> +		     uint32_t height, uint64_t format, uint64_t modifier) {
> > >> +	struct drm_mode_fb_cmd2 f = {0};
> > >> +	cairo_t *cr;
> > >> +
> > >> +	igt_require(igt_display_has_format_mod(&data->display, format,
> > >> +					       modifier));
> > >> +
> > >> +	igt_create_bo_for_fb(data->drm_fd, width, height, format, modifier,
> > >> +			     newfb);
> > >> +	igt_assert(newfb->gem_handle > 0);
> > >> +
> > >> +	f.width = newfb->width;
> > >> +	f.height = newfb->height;
> > >> +	f.pixel_format = newfb->drm_format;
> > >> +	f.flags = LOCAL_DRM_MODE_FB_MODIFIERS;
> > >> +
> > >> +	for (int n = 0; n < newfb->num_planes; n++) {
> > >> +		f.handles[n] = newfb->gem_handle;
> > >> +		f.modifier[n] = newfb->modifier;
> > >> +		f.pitches[n] = newfb->strides[n];
> > >> +		f.offsets[n] = newfb->offsets[n];
> > >> +	}
> > >> +
> > >> +	cr = igt_get_cairo_ctx(data->drm_fd, newfb);
> > >> +	igt_paint_color(cr, 0, 0, newfb->width, newfb->height, 0, 1, 0);
> > >> +	igt_put_cairo_ctx(cr);
> > >> +
> > >> +	igt_assert(drmIoctl(data->drm_fd, LOCAL_DRM_IOCTL_MODE_ADDFB2,
> > >> &f) == 0);
> > >> +	newfb->fb_id = f.fb_id;
> > >> +}
> > >> +
> > >> +static void free_fbs(data_t *data) {
> > >> +	igt_remove_fb(data->drm_fd, &data->small_fb);
> > >> +	igt_remove_fb(data->drm_fd, &data->big_fb); }
> > >> +
> > >> +static void test_flip_to_scaled(data_t *data, uint32_t index, enum pipe
> pipe,
> > >> +				igt_output_t *output)
> > >> +{
> > >> +	igt_plane_t *primary;
> > >> +	igt_crc_t small_crc, big_crc;
> > >> +
> > >> +	drmModeModeInfo *mode;
> > >> +	struct drm_event_vblank ev;
> > >> +	int ret;
> > >> +
> > >> +	igt_display_reset(&data->display);
> > >> +
> > >> +	igt_debug("running on output %s pipe %s\n", output->name,
> > >> +		  kmstest_pipe_name(pipe));
> > >> +	if (data->big_fb.fb_id == 0) {
> > >> +		mode = igt_output_get_mode(output);
> > >> +
> > >> +		// big fb will be 4k unless running on older than ICL
> > >> +		if (data->gen < 11) {
> > >> +			setup_fb(data, &data->small_fb,
> > >> +				 min(mode->hdisplay, 640),
> > >> +				 min(mode->vdisplay, 480),
> > >> +				 flip_scenario_test[index].firstformat,
> > >> +				 flip_scenario_test[index].firstmodifier);
> > >> +
> > >> +			setup_fb(data, &data->big_fb,
> > >> +				 1280, 960,
> > >
> > > Not sure, but just something to check. Whether this downscaling will
> > > trigger a
> > cd clock change for all platforms.
> > > We should somehow check that as well if cd clock change really
> > > happened.  CD
> > clock steps are not uniform across platforms.
> > > Also if driver hardcodes a higher cd clock this test may pass
> > > without its
> > intended objective.
> >
> > I cannot enforce cdclk changes but what happen here with downscaling
> > is it always go 4:1 I figure there's minimum four times more samples
> > needed with filtering. As much as I verified those dmesgs from CI
> > there was always display clock reprogrammed on all platforms but it is
> > just what happen on today's drm-tip. If would run this on i915 from
> > year ago there would be no such change thus on description it just
> > says 'attempt to stress cdclk'.
> >
> > As a flipping test I think final intended objective is flipping
> > between framebuffers succeeded and it is verified with crc below.
> 
> Yeah agree, as long as this combination works we should be fine.
> 
> >
> > >
> > >> +				 flip_scenario_test[index].secondformat,
> > >> +				 flip_scenario_test[index].secondmodifier);
> > >> +			igt_debug("small fb %dx%d\n", data->small_fb.width,
> > >> +			          data->small_fb.height);
> > >> +			igt_debug("big fb %dx%d\n", data->big_fb.width,
> > >> +			          data->big_fb.height);
> > >> +		} else {
> > >> +			setup_fb(data, &data->small_fb,
> > >> +				 min(mode->hdisplay, 1920),
> > >> +				 min(mode->vdisplay, 1080),
> > >> +				 flip_scenario_test[index].firstformat,
> > >> +				 flip_scenario_test[index].firstmodifier);
> > >> +
> > >> +			setup_fb(data, &data->big_fb,
> > >> +				 3840, 2160,
> > >> +				 flip_scenario_test[index].secondformat,
> > >> +				 flip_scenario_test[index].secondmodifier);
> > >> +			igt_debug("small fb %dx%d\n", data->small_fb.width,
> > >> +			          data->small_fb.height);
> > >> +			igt_debug("big fb %dx%d\n", data->big_fb.width,
> > >> +			          data->big_fb.height);
> > >> +		}
> > >> +	}
> > >> +
> > >> +	igt_output_set_pipe(output, pipe);
> > >> +
> > >> +	primary = igt_output_get_plane_type(output,
> > >> DRM_PLANE_TYPE_PRIMARY);
> > >> +	igt_display_commit_atomic(&data->display,
> > >> DRM_MODE_ATOMIC_ALLOW_MODESET,
> > >> +				  NULL);
> > >> +	data->pipe_crc = igt_pipe_crc_new(data->drm_fd, pipe,
> > >> +					  INTEL_PIPE_CRC_SOURCE_AUTO);
> > >> +	igt_pipe_crc_start(data->pipe_crc);
> > >> +
> > >> +	igt_plane_set_position(primary, 0, 0);
> > >> +	igt_plane_set_fb(primary, &data->small_fb);
> > >> +
> > >> +	igt_display_commit_atomic(&data->display,
> > >> +				  DRM_MODE_ATOMIC_ALLOW_MODESET, NULL);
> > >> +	igt_pipe_crc_get_current(data->drm_fd, data->pipe_crc,
> > >> +&small_crc);
> > >> +
> > >> +	igt_plane_set_fb(primary, &data->big_fb);
> > >> +	igt_plane_set_size(primary, data->small_fb.width,
> > >> +			   data->small_fb.height);
> > >> +	ret = igt_display_try_commit_atomic(&data->display,
> > >> +
> > >> DRM_MODE_ATOMIC_ALLOW_MODESET  |
> > >> +					    DRM_MODE_PAGE_FLIP_EVENT, NULL);
> > >> +
> > >> +	igt_require_f(ret != -ERANGE,
> > >> +		      "Platform scaling limits exceeded, skipping.");
> > >> +	igt_assert_eq(ret, 0);
> > >> +
> > >> +	igt_assert(read(data->drm_fd, &ev, sizeof(ev)) == sizeof(ev));
> > >> +
> > >> +	igt_pipe_crc_get_current(data->drm_fd, data->pipe_crc, &big_crc);
> > >> +	igt_assert(igt_check_crc_equal(&small_crc, &big_crc));
> > >
> > > With this downscaling, are we able to match crc. Scalar may do some
> > > rounding,
> > so not sure if this will
> > > match in all cases. Good to check this.
> >
> > We cannot really do crc checking with scalers but I have idea here
> > maximum solid green would stay maximum solid green regardless of the
> > scaler, all components for scaler are maximum solid green. With these
> > starting values if scaler couldn't produce maximum solid green I'd
> > call scaler broken.
> 
> Idea looks good, should be fine.
> 
> > >
> > >> +
> > >> +	igt_pipe_crc_stop(data->pipe_crc);
> > >> +	igt_pipe_crc_free(data->pipe_crc);
> > >> +	data->pipe_crc = NULL;
> > >> +}
> > >> +
> > >> +igt_main
> > >> +{
> > >> +	enum pipe pipe;
> > >> +	data_t data = {};
> > >> +	igt_output_t *output;
> > >> +
> > >> +	igt_fixture {
> > >> +		data.drm_fd = drm_open_driver_master(DRIVER_INTEL);
> > >> +		data.gen = intel_gen(intel_get_drm_devid(data.drm_fd));
> > >> +		igt_require(data.gen >= 9);
> > >> +		igt_display_require(&data.display, data.drm_fd);
> > >> +		igt_require(data.display.is_atomic);
> > >> +		igt_require_pipe_crc(data.drm_fd);
> > >> +		kmstest_set_vt_graphics_mode();
> > >> +	}
> > >> +
> > >> +	for (int index = 0; index < ARRAY_SIZE(flip_scenario_test); index++) {
> > >> +		igt_describe(flip_scenario_test[index].describe);
> > >> +		igt_subtest(flip_scenario_test[index].name) {
> > >> +			for_each_pipe_with_single_output(&data.display, pipe,
> > >> +							 output)
> > >> +				test_flip_to_scaled(&data, index, pipe, output);
> > >> +
> > >> +			free_fbs(&data);
> > >> +		}
> > >> +	}
> > >> +	igt_fixture {
> > >> +		free_fbs(&data);
> > >> +		if (data.pipe_crc) {
> > >> +			igt_pipe_crc_stop(data.pipe_crc);
> > >> +			igt_pipe_crc_free(data.pipe_crc);
> > >> +			data.pipe_crc = NULL;
> > >> +		}
> > >> +		kmstest_set_vt_text_mode();
> > >> +		igt_display_fini(&data.display);
> > >> +	}
> > >> +}
> > >> diff --git a/tests/meson.build b/tests/meson.build index
> > >> 684de043..8e17a6ae
> > >> 100644
> > >> --- a/tests/meson.build
> > >> +++ b/tests/meson.build
> > >> @@ -37,6 +37,7 @@ test_progs = [
> > >>   	'kms_fence_pin_leak',
> > >>   	'kms_flip',
> > >>   	'kms_flip_event_leak',
> > >> +	'kms_flip_scaled_crc',
> > >>   	'kms_flip_tiling',
> > >>   	'kms_force_connector_basic',
> > >>   	'kms_frontbuffer_tracking',
> > >> --
> > >> 2.26.0
> > >>
> > >> _______________________________________________
> > >> igt-dev mailing list
> > >> igt-dev@lists.freedesktop.org
> > >> https://lists.freedesktop.org/mailman/listinfo/igt-dev
> 
> _______________________________________________
> igt-dev mailing list
> igt-dev@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/igt-dev
_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [igt-dev] [PATCH i-g-t] tests/kms_flip_scaled_crc: add flip to downscaled subtests
  2020-09-14 11:58   ` Juha-Pekka Heikkila
@ 2020-09-15 12:08     ` Shankar, Uma
  2020-09-22 11:25       ` Shankar, Uma
  0 siblings, 1 reply; 15+ messages in thread
From: Shankar, Uma @ 2020-09-15 12:08 UTC (permalink / raw)
  To: juhapekka.heikkila, igt-dev



> -----Original Message-----
> From: Juha-Pekka Heikkila <juhapekka.heikkila@gmail.com>
> Sent: Monday, September 14, 2020 5:29 PM
> To: Shankar, Uma <uma.shankar@intel.com>; igt-dev@lists.freedesktop.org
> Subject: Re: [igt-dev] [PATCH i-g-t] tests/kms_flip_scaled_crc: add flip to
> downscaled subtests
> 
> On 4.9.2020 17.31, Shankar, Uma wrote:
> >
> >
> >> -----Original Message-----
> >> From: igt-dev <igt-dev-bounces@lists.freedesktop.org> On Behalf Of
> >> Juha-Pekka Heikkila
> >> Sent: Wednesday, September 2, 2020 2:42 PM
> >> To: igt-dev@lists.freedesktop.org
> >> Subject: [igt-dev] [PATCH i-g-t] tests/kms_flip_scaled_crc: add flip
> >> to downscaled subtests
> >
> > I think this would sound better "Add Subtests for Flip with fb downscaling"
> >
> >>
> >> attempt to cause cdclk changes and stress scalers with flipping to
> >> different size fb with different modifiers. Verify results with crc.
> >
> > This is failing on some platforms like in GLK:
> > https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4945/shard-glk9/igt@kms
> > _flip_scaled_crc@flip-32bpp-ytile-to-32bpp-ytileccs.html
> >
> > Can you check why it could be happening, I can see you have the modifier
> check. But still its rejecting the combination in driver.
> > May be something to fix.
> 
> This I suspect is something problematic on i915 side, what is returned there is -
> EINVAL from flip. Those GLK dmesgs generally look somehow really messy, it is
> for some reason all the time trying to do something with pipe b even when it's
> supposing to be disabled.

Ok, we may have to ensure that this doesn't fail else enabling it in CI will crib.
May be create a separate Bug for this and get that tracked separately.

> >
> > Overall this is really a good plan to have this combination tested, something
> we have lacked.
> 
> There was regression on drm-tip on these which was just recently fixed
> hence this test. If for example would have run some videoplayer which
> uses hw downscaling result would've been just black screen ;)
> >
> >> Signed-off-by: Juha-Pekka Heikkila <juhapekka.heikkila@gmail.com>
> >> ---
> >>   tests/Makefile.sources      |   1 +
> >>   tests/kms_flip_scaled_crc.c | 255 ++++++++++++++++++++++++++++++++++++
> >>   tests/meson.build           |   1 +
> >>   3 files changed, 257 insertions(+)
> >>   create mode 100644 tests/kms_flip_scaled_crc.c
> >>
> >> diff --git a/tests/Makefile.sources b/tests/Makefile.sources index
> >> 269b506d..fe9fb7ed 100644
> >> --- a/tests/Makefile.sources
> >> +++ b/tests/Makefile.sources
> >> @@ -53,6 +53,7 @@ TESTS_progs = \
> >>   	kms_fence_pin_leak \
> >>   	kms_flip \
> >>   	kms_flip_event_leak \
> >> +	kms_flip_scaled_crc \
> >>   	kms_flip_tiling \
> >>   	kms_force_connector_basic \
> >>   	kms_frontbuffer_tracking \
> >> diff --git a/tests/kms_flip_scaled_crc.c b/tests/kms_flip_scaled_crc.c new file
> >> mode 100644 index 00000000..9daa2f92
> >> --- /dev/null
> >> +++ b/tests/kms_flip_scaled_crc.c
> >> @@ -0,0 +1,255 @@
> >> +/*
> >> + * Copyright © 2020 Intel Corporation
> >> + *
> >> + * Permission is hereby granted, free of charge, to any person
> >> +obtaining a
> >> + * copy of this software and associated documentation files (the
> >> +"Software"),
> >> + * to deal in the Software without restriction, including without
> >> +limitation
> >> + * the rights to use, copy, modify, merge, publish, distribute,
> >> +sublicense,
> >> + * and/or sell copies of the Software, and to permit persons to whom
> >> +the
> >> + * Software is furnished to do so, subject to the following conditions:
> >> + *
> >> + * The above copyright notice and this permission notice (including the
> >> +next
> >> + * paragraph) shall be included in all copies or substantial portions
> >> +of the
> >> + * Software.
> >> + *
> >> + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
> >> +EXPRESS OR
> >> + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
> >> +MERCHANTABILITY,
> >> + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO
> EVENT
> >> +SHALL
> >> + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
> DAMAGES
> >> OR
> >> +OTHER
> >> + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
> >> +ARISING
> >> + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
> >> OTHER
> >> +DEALINGS
> >> + * IN THE SOFTWARE.
> >> + *
> >> + */
> >> +
> >> +#include "igt.h"
> >> +
> >> +IGT_TEST_DESCRIPTION("Test flipping between scaled/nonscaled
> >> +framebuffers");
> >> +
> >> +typedef struct {
> >> +	int drm_fd;
> >> +	igt_display_t display;
> >> +	igt_output_t *output;
> >> +	enum pipe pipe;
> >> +	uint32_t gen;
> >> +	struct igt_fb small_fb;
> >> +	struct igt_fb big_fb;
> >> +	igt_pipe_crc_t *pipe_crc;
> >> +} data_t;
> >> +
> >> +const struct {
> >> +	const char * const name;
> >> +	const char * const describe;
> >> +	const uint64_t firstmodifier;
> >> +	const uint32_t firstformat;
> >> +	const uint64_t secondmodifier;
> >> +	const uint32_t secondformat;
> >> +} flip_scenario_test[] = {
> >> +	{
> >> +		"flip-32bpp-ytile-to-64bpp-ytile",
> >> +		"Try to flip from 32bpp non scaled fb to 64bpp downscaled fb in
> >> attempt to stress cdclk reprogramming.",
> >
> > We can trim this description, Like: "Flip from 32bpp non scaled fb to 64bpp
> downscaled fb to stress CD clock programming"
> > Trim this for all combinations.
> >
> >> +		LOCAL_I915_FORMAT_MOD_Y_TILED, DRM_FORMAT_XRGB8888,
> >> +		LOCAL_I915_FORMAT_MOD_Y_TILED,
> >> DRM_FORMAT_XRGB16161616F
> >> +	},
> >> +	{
> >> +		"flip-64bpp-ytile-to-32bpp-ytile",
> >> +		"Try to flip from 64bpp non scaled fb to 32bpp downscaled fb.",
> >> +		LOCAL_I915_FORMAT_MOD_Y_TILED,
> >> DRM_FORMAT_XRGB16161616F,
> >> +		LOCAL_I915_FORMAT_MOD_Y_TILED, DRM_FORMAT_XRGB8888
> >> +	},
> >> +	{
> >> +		"flip-64bpp-ytile-to-16bpp-ytile",
> >> +		"Try to flip from 64bpp non scaled fb to 16bpp downscaled fb.",
> >> +		LOCAL_I915_FORMAT_MOD_Y_TILED,
> >> DRM_FORMAT_XRGB16161616F,
> >> +		LOCAL_I915_FORMAT_MOD_Y_TILED, DRM_FORMAT_RGB565
> >> +	},
> >> +	{
> >> +		"flip-32bpp-ytileccs-to-64bpp-ytile",
> >> +		"Try to flip from 32bpp ccs non scaled fb to 64bpp downscaled fb
> >> ytile.",
> >> +		LOCAL_I915_FORMAT_MOD_Y_TILED_CCS,
> >> DRM_FORMAT_XRGB8888,
> >> +		LOCAL_I915_FORMAT_MOD_Y_TILED,
> >> DRM_FORMAT_XRGB16161616F
> >> +	},
> >> +	{
> >> +		"flip-32bpp-ytile-to-32bpp-ytilegen12rcccs",
> >> +		"Try to flip from 32bpp non scaled fb to 32bpp downscaled gen12
> >> rc ccs fb in attempt to stress cdclk reprogramming.",
> >> +		LOCAL_I915_FORMAT_MOD_Y_TILED, DRM_FORMAT_XRGB8888,
> >> +		LOCAL_I915_FORMAT_MOD_Y_TILED_GEN12_RC_CCS,
> >> DRM_FORMAT_XRGB8888
> >> +	},
> >> +	{
> >> +		"flip-32bpp-ytile-to-32bpp-ytileccs",
> >> +		"Try to flip from 32bpp non scaled ytiled fb to 32bpp downscaled
> >> ytiled ccs fb.",
> >> +		LOCAL_I915_FORMAT_MOD_Y_TILED, DRM_FORMAT_XRGB8888,
> >> +		LOCAL_I915_FORMAT_MOD_Y_TILED_CCS,
> >> DRM_FORMAT_XRGB8888
> >> +	},
> >> +	{
> >> +		"flip-64bpp-ytile-to-32bpp-ytilercccs",
> >> +		"Try to flip from 64bpp non scaled ytiled fb to 32bpp downscaled
> >> gen12 rc ccs fb.",
> >> +		LOCAL_I915_FORMAT_MOD_Y_TILED,
> >> DRM_FORMAT_XRGB16161616F,
> >> +		LOCAL_I915_FORMAT_MOD_Y_TILED_GEN12_RC_CCS,
> >> DRM_FORMAT_XRGB8888
> >> +	},
> >> +};
> >> +
> >> +static void setup_fb(data_t *data, struct igt_fb *newfb, uint32_t width,
> >> +		     uint32_t height, uint64_t format, uint64_t modifier) {
> >> +	struct drm_mode_fb_cmd2 f = {0};
> >> +	cairo_t *cr;
> >> +
> >> +	igt_require(igt_display_has_format_mod(&data->display, format,
> >> +					       modifier));
> >> +
> >> +	igt_create_bo_for_fb(data->drm_fd, width, height, format, modifier,
> >> +			     newfb);
> >> +	igt_assert(newfb->gem_handle > 0);
> >> +
> >> +	f.width = newfb->width;
> >> +	f.height = newfb->height;
> >> +	f.pixel_format = newfb->drm_format;
> >> +	f.flags = LOCAL_DRM_MODE_FB_MODIFIERS;
> >> +
> >> +	for (int n = 0; n < newfb->num_planes; n++) {
> >> +		f.handles[n] = newfb->gem_handle;
> >> +		f.modifier[n] = newfb->modifier;
> >> +		f.pitches[n] = newfb->strides[n];
> >> +		f.offsets[n] = newfb->offsets[n];
> >> +	}
> >> +
> >> +	cr = igt_get_cairo_ctx(data->drm_fd, newfb);
> >> +	igt_paint_color(cr, 0, 0, newfb->width, newfb->height, 0, 1, 0);
> >> +	igt_put_cairo_ctx(cr);
> >> +
> >> +	igt_assert(drmIoctl(data->drm_fd, LOCAL_DRM_IOCTL_MODE_ADDFB2,
> >> &f) == 0);
> >> +	newfb->fb_id = f.fb_id;
> >> +}
> >> +
> >> +static void free_fbs(data_t *data)
> >> +{
> >> +	igt_remove_fb(data->drm_fd, &data->small_fb);
> >> +	igt_remove_fb(data->drm_fd, &data->big_fb); }
> >> +
> >> +static void test_flip_to_scaled(data_t *data, uint32_t index, enum pipe pipe,
> >> +				igt_output_t *output)
> >> +{
> >> +	igt_plane_t *primary;
> >> +	igt_crc_t small_crc, big_crc;
> >> +
> >> +	drmModeModeInfo *mode;
> >> +	struct drm_event_vblank ev;
> >> +	int ret;
> >> +
> >> +	igt_display_reset(&data->display);
> >> +
> >> +	igt_debug("running on output %s pipe %s\n", output->name,
> >> +		  kmstest_pipe_name(pipe));
> >> +	if (data->big_fb.fb_id == 0) {
> >> +		mode = igt_output_get_mode(output);
> >> +
> >> +		// big fb will be 4k unless running on older than ICL
> >> +		if (data->gen < 11) {
> >> +			setup_fb(data, &data->small_fb,
> >> +				 min(mode->hdisplay, 640),
> >> +				 min(mode->vdisplay, 480),
> >> +				 flip_scenario_test[index].firstformat,
> >> +				 flip_scenario_test[index].firstmodifier);
> >> +
> >> +			setup_fb(data, &data->big_fb,
> >> +				 1280, 960,
> >
> > Not sure, but just something to check. Whether this downscaling will trigger a
> cd clock change for all platforms.
> > We should somehow check that as well if cd clock change really happened.  CD
> clock steps are not uniform across platforms.
> > Also if driver hardcodes a higher cd clock this test may pass without its
> intended objective.
> 
> I cannot enforce cdclk changes but what happen here with downscaling is
> it always go 4:1 I figure there's minimum four times more samples needed
> with filtering. As much as I verified those dmesgs from CI there was
> always display clock reprogrammed on all platforms but it is just what
> happen on today's drm-tip. If would run this on i915 from year ago there
> would be no such change thus on description it just says 'attempt to
> stress cdclk'.
> 
> As a flipping test I think final intended objective is flipping between
> framebuffers succeeded and it is verified with crc below.

Yeah agree, as long as this combination works we should be fine.

> 
> >
> >> +				 flip_scenario_test[index].secondformat,
> >> +				 flip_scenario_test[index].secondmodifier);
> >> +			igt_debug("small fb %dx%d\n", data->small_fb.width,
> >> +			          data->small_fb.height);
> >> +			igt_debug("big fb %dx%d\n", data->big_fb.width,
> >> +			          data->big_fb.height);
> >> +		} else {
> >> +			setup_fb(data, &data->small_fb,
> >> +				 min(mode->hdisplay, 1920),
> >> +				 min(mode->vdisplay, 1080),
> >> +				 flip_scenario_test[index].firstformat,
> >> +				 flip_scenario_test[index].firstmodifier);
> >> +
> >> +			setup_fb(data, &data->big_fb,
> >> +				 3840, 2160,
> >> +				 flip_scenario_test[index].secondformat,
> >> +				 flip_scenario_test[index].secondmodifier);
> >> +			igt_debug("small fb %dx%d\n", data->small_fb.width,
> >> +			          data->small_fb.height);
> >> +			igt_debug("big fb %dx%d\n", data->big_fb.width,
> >> +			          data->big_fb.height);
> >> +		}
> >> +	}
> >> +
> >> +	igt_output_set_pipe(output, pipe);
> >> +
> >> +	primary = igt_output_get_plane_type(output,
> >> DRM_PLANE_TYPE_PRIMARY);
> >> +	igt_display_commit_atomic(&data->display,
> >> DRM_MODE_ATOMIC_ALLOW_MODESET,
> >> +				  NULL);
> >> +	data->pipe_crc = igt_pipe_crc_new(data->drm_fd, pipe,
> >> +					  INTEL_PIPE_CRC_SOURCE_AUTO);
> >> +	igt_pipe_crc_start(data->pipe_crc);
> >> +
> >> +	igt_plane_set_position(primary, 0, 0);
> >> +	igt_plane_set_fb(primary, &data->small_fb);
> >> +
> >> +	igt_display_commit_atomic(&data->display,
> >> +				  DRM_MODE_ATOMIC_ALLOW_MODESET, NULL);
> >> +	igt_pipe_crc_get_current(data->drm_fd, data->pipe_crc, &small_crc);
> >> +
> >> +	igt_plane_set_fb(primary, &data->big_fb);
> >> +	igt_plane_set_size(primary, data->small_fb.width,
> >> +			   data->small_fb.height);
> >> +	ret = igt_display_try_commit_atomic(&data->display,
> >> +
> >> DRM_MODE_ATOMIC_ALLOW_MODESET  |
> >> +					    DRM_MODE_PAGE_FLIP_EVENT, NULL);
> >> +
> >> +	igt_require_f(ret != -ERANGE,
> >> +		      "Platform scaling limits exceeded, skipping.");
> >> +	igt_assert_eq(ret, 0);
> >> +
> >> +	igt_assert(read(data->drm_fd, &ev, sizeof(ev)) == sizeof(ev));
> >> +
> >> +	igt_pipe_crc_get_current(data->drm_fd, data->pipe_crc, &big_crc);
> >> +	igt_assert(igt_check_crc_equal(&small_crc, &big_crc));
> >
> > With this downscaling, are we able to match crc. Scalar may do some rounding,
> so not sure if this will
> > match in all cases. Good to check this.
> 
> We cannot really do crc checking with scalers but I have idea here
> maximum solid green would stay maximum solid green regardless of the
> scaler, all components for scaler are maximum solid green. With these
> starting values if scaler couldn't produce maximum solid green I'd call
> scaler broken.

Idea looks good, should be fine.

> >
> >> +
> >> +	igt_pipe_crc_stop(data->pipe_crc);
> >> +	igt_pipe_crc_free(data->pipe_crc);
> >> +	data->pipe_crc = NULL;
> >> +}
> >> +
> >> +igt_main
> >> +{
> >> +	enum pipe pipe;
> >> +	data_t data = {};
> >> +	igt_output_t *output;
> >> +
> >> +	igt_fixture {
> >> +		data.drm_fd = drm_open_driver_master(DRIVER_INTEL);
> >> +		data.gen = intel_gen(intel_get_drm_devid(data.drm_fd));
> >> +		igt_require(data.gen >= 9);
> >> +		igt_display_require(&data.display, data.drm_fd);
> >> +		igt_require(data.display.is_atomic);
> >> +		igt_require_pipe_crc(data.drm_fd);
> >> +		kmstest_set_vt_graphics_mode();
> >> +	}
> >> +
> >> +	for (int index = 0; index < ARRAY_SIZE(flip_scenario_test); index++) {
> >> +		igt_describe(flip_scenario_test[index].describe);
> >> +		igt_subtest(flip_scenario_test[index].name) {
> >> +			for_each_pipe_with_single_output(&data.display, pipe,
> >> +							 output)
> >> +				test_flip_to_scaled(&data, index, pipe, output);
> >> +
> >> +			free_fbs(&data);
> >> +		}
> >> +	}
> >> +	igt_fixture {
> >> +		free_fbs(&data);
> >> +		if (data.pipe_crc) {
> >> +			igt_pipe_crc_stop(data.pipe_crc);
> >> +			igt_pipe_crc_free(data.pipe_crc);
> >> +			data.pipe_crc = NULL;
> >> +		}
> >> +		kmstest_set_vt_text_mode();
> >> +		igt_display_fini(&data.display);
> >> +	}
> >> +}
> >> diff --git a/tests/meson.build b/tests/meson.build index 684de043..8e17a6ae
> >> 100644
> >> --- a/tests/meson.build
> >> +++ b/tests/meson.build
> >> @@ -37,6 +37,7 @@ test_progs = [
> >>   	'kms_fence_pin_leak',
> >>   	'kms_flip',
> >>   	'kms_flip_event_leak',
> >> +	'kms_flip_scaled_crc',
> >>   	'kms_flip_tiling',
> >>   	'kms_force_connector_basic',
> >>   	'kms_frontbuffer_tracking',
> >> --
> >> 2.26.0
> >>
> >> _______________________________________________
> >> igt-dev mailing list
> >> igt-dev@lists.freedesktop.org
> >> https://lists.freedesktop.org/mailman/listinfo/igt-dev

_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [igt-dev] [PATCH i-g-t] tests/kms_flip_scaled_crc: add flip to downscaled subtests
  2020-09-04 14:31 ` Shankar, Uma
@ 2020-09-14 11:58   ` Juha-Pekka Heikkila
  2020-09-15 12:08     ` Shankar, Uma
  0 siblings, 1 reply; 15+ messages in thread
From: Juha-Pekka Heikkila @ 2020-09-14 11:58 UTC (permalink / raw)
  To: Shankar, Uma, igt-dev

On 4.9.2020 17.31, Shankar, Uma wrote:
> 
> 
>> -----Original Message-----
>> From: igt-dev <igt-dev-bounces@lists.freedesktop.org> On Behalf Of Juha-Pekka
>> Heikkila
>> Sent: Wednesday, September 2, 2020 2:42 PM
>> To: igt-dev@lists.freedesktop.org
>> Subject: [igt-dev] [PATCH i-g-t] tests/kms_flip_scaled_crc: add flip to downscaled
>> subtests
> 
> I think this would sound better "Add Subtests for Flip with fb downscaling"
> 
>>
>> attempt to cause cdclk changes and stress scalers with flipping to different size fb
>> with different modifiers. Verify results with crc.
> 
> This is failing on some platforms like in GLK:
> https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4945/shard-glk9/igt@kms_flip_scaled_crc@flip-32bpp-ytile-to-32bpp-ytileccs.html
> 
> Can you check why it could be happening, I can see you have the modifier check. But still its rejecting the combination in driver.
> May be something to fix.

This I suspect is something problematic on i915 side, what is returned 
there is -EINVAL from flip. Those GLK dmesgs generally look somehow 
really messy, it is for some reason all the time trying to do something 
with pipe b even when it's supposing to be disabled.

> 
> Overall this is really a good plan to have this combination tested, something we have lacked.

There was regression on drm-tip on these which was just recently fixed 
hence this test. If for example would have run some videoplayer which 
uses hw downscaling result would've been just black screen ;)

> 
>> Signed-off-by: Juha-Pekka Heikkila <juhapekka.heikkila@gmail.com>
>> ---
>>   tests/Makefile.sources      |   1 +
>>   tests/kms_flip_scaled_crc.c | 255 ++++++++++++++++++++++++++++++++++++
>>   tests/meson.build           |   1 +
>>   3 files changed, 257 insertions(+)
>>   create mode 100644 tests/kms_flip_scaled_crc.c
>>
>> diff --git a/tests/Makefile.sources b/tests/Makefile.sources index
>> 269b506d..fe9fb7ed 100644
>> --- a/tests/Makefile.sources
>> +++ b/tests/Makefile.sources
>> @@ -53,6 +53,7 @@ TESTS_progs = \
>>   	kms_fence_pin_leak \
>>   	kms_flip \
>>   	kms_flip_event_leak \
>> +	kms_flip_scaled_crc \
>>   	kms_flip_tiling \
>>   	kms_force_connector_basic \
>>   	kms_frontbuffer_tracking \
>> diff --git a/tests/kms_flip_scaled_crc.c b/tests/kms_flip_scaled_crc.c new file
>> mode 100644 index 00000000..9daa2f92
>> --- /dev/null
>> +++ b/tests/kms_flip_scaled_crc.c
>> @@ -0,0 +1,255 @@
>> +/*
>> + * Copyright © 2020 Intel Corporation
>> + *
>> + * Permission is hereby granted, free of charge, to any person
>> +obtaining a
>> + * copy of this software and associated documentation files (the
>> +"Software"),
>> + * to deal in the Software without restriction, including without
>> +limitation
>> + * the rights to use, copy, modify, merge, publish, distribute,
>> +sublicense,
>> + * and/or sell copies of the Software, and to permit persons to whom
>> +the
>> + * Software is furnished to do so, subject to the following conditions:
>> + *
>> + * The above copyright notice and this permission notice (including the
>> +next
>> + * paragraph) shall be included in all copies or substantial portions
>> +of the
>> + * Software.
>> + *
>> + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
>> +EXPRESS OR
>> + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
>> +MERCHANTABILITY,
>> + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT
>> +SHALL
>> + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES
>> OR
>> +OTHER
>> + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
>> +ARISING
>> + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
>> OTHER
>> +DEALINGS
>> + * IN THE SOFTWARE.
>> + *
>> + */
>> +
>> +#include "igt.h"
>> +
>> +IGT_TEST_DESCRIPTION("Test flipping between scaled/nonscaled
>> +framebuffers");
>> +
>> +typedef struct {
>> +	int drm_fd;
>> +	igt_display_t display;
>> +	igt_output_t *output;
>> +	enum pipe pipe;
>> +	uint32_t gen;
>> +	struct igt_fb small_fb;
>> +	struct igt_fb big_fb;
>> +	igt_pipe_crc_t *pipe_crc;
>> +} data_t;
>> +
>> +const struct {
>> +	const char * const name;
>> +	const char * const describe;
>> +	const uint64_t firstmodifier;
>> +	const uint32_t firstformat;
>> +	const uint64_t secondmodifier;
>> +	const uint32_t secondformat;
>> +} flip_scenario_test[] = {
>> +	{
>> +		"flip-32bpp-ytile-to-64bpp-ytile",
>> +		"Try to flip from 32bpp non scaled fb to 64bpp downscaled fb in
>> attempt to stress cdclk reprogramming.",
> 
> We can trim this description, Like: "Flip from 32bpp non scaled fb to 64bpp downscaled fb to stress CD clock programming"
> Trim this for all combinations.
> 
>> +		LOCAL_I915_FORMAT_MOD_Y_TILED, DRM_FORMAT_XRGB8888,
>> +		LOCAL_I915_FORMAT_MOD_Y_TILED,
>> DRM_FORMAT_XRGB16161616F
>> +	},
>> +	{
>> +		"flip-64bpp-ytile-to-32bpp-ytile",
>> +		"Try to flip from 64bpp non scaled fb to 32bpp downscaled fb.",
>> +		LOCAL_I915_FORMAT_MOD_Y_TILED,
>> DRM_FORMAT_XRGB16161616F,
>> +		LOCAL_I915_FORMAT_MOD_Y_TILED, DRM_FORMAT_XRGB8888
>> +	},
>> +	{
>> +		"flip-64bpp-ytile-to-16bpp-ytile",
>> +		"Try to flip from 64bpp non scaled fb to 16bpp downscaled fb.",
>> +		LOCAL_I915_FORMAT_MOD_Y_TILED,
>> DRM_FORMAT_XRGB16161616F,
>> +		LOCAL_I915_FORMAT_MOD_Y_TILED, DRM_FORMAT_RGB565
>> +	},
>> +	{
>> +		"flip-32bpp-ytileccs-to-64bpp-ytile",
>> +		"Try to flip from 32bpp ccs non scaled fb to 64bpp downscaled fb
>> ytile.",
>> +		LOCAL_I915_FORMAT_MOD_Y_TILED_CCS,
>> DRM_FORMAT_XRGB8888,
>> +		LOCAL_I915_FORMAT_MOD_Y_TILED,
>> DRM_FORMAT_XRGB16161616F
>> +	},
>> +	{
>> +		"flip-32bpp-ytile-to-32bpp-ytilegen12rcccs",
>> +		"Try to flip from 32bpp non scaled fb to 32bpp downscaled gen12
>> rc ccs fb in attempt to stress cdclk reprogramming.",
>> +		LOCAL_I915_FORMAT_MOD_Y_TILED, DRM_FORMAT_XRGB8888,
>> +		LOCAL_I915_FORMAT_MOD_Y_TILED_GEN12_RC_CCS,
>> DRM_FORMAT_XRGB8888
>> +	},
>> +	{
>> +		"flip-32bpp-ytile-to-32bpp-ytileccs",
>> +		"Try to flip from 32bpp non scaled ytiled fb to 32bpp downscaled
>> ytiled ccs fb.",
>> +		LOCAL_I915_FORMAT_MOD_Y_TILED, DRM_FORMAT_XRGB8888,
>> +		LOCAL_I915_FORMAT_MOD_Y_TILED_CCS,
>> DRM_FORMAT_XRGB8888
>> +	},
>> +	{
>> +		"flip-64bpp-ytile-to-32bpp-ytilercccs",
>> +		"Try to flip from 64bpp non scaled ytiled fb to 32bpp downscaled
>> gen12 rc ccs fb.",
>> +		LOCAL_I915_FORMAT_MOD_Y_TILED,
>> DRM_FORMAT_XRGB16161616F,
>> +		LOCAL_I915_FORMAT_MOD_Y_TILED_GEN12_RC_CCS,
>> DRM_FORMAT_XRGB8888
>> +	},
>> +};
>> +
>> +static void setup_fb(data_t *data, struct igt_fb *newfb, uint32_t width,
>> +		     uint32_t height, uint64_t format, uint64_t modifier) {
>> +	struct drm_mode_fb_cmd2 f = {0};
>> +	cairo_t *cr;
>> +
>> +	igt_require(igt_display_has_format_mod(&data->display, format,
>> +					       modifier));
>> +
>> +	igt_create_bo_for_fb(data->drm_fd, width, height, format, modifier,
>> +			     newfb);
>> +	igt_assert(newfb->gem_handle > 0);
>> +
>> +	f.width = newfb->width;
>> +	f.height = newfb->height;
>> +	f.pixel_format = newfb->drm_format;
>> +	f.flags = LOCAL_DRM_MODE_FB_MODIFIERS;
>> +
>> +	for (int n = 0; n < newfb->num_planes; n++) {
>> +		f.handles[n] = newfb->gem_handle;
>> +		f.modifier[n] = newfb->modifier;
>> +		f.pitches[n] = newfb->strides[n];
>> +		f.offsets[n] = newfb->offsets[n];
>> +	}
>> +
>> +	cr = igt_get_cairo_ctx(data->drm_fd, newfb);
>> +	igt_paint_color(cr, 0, 0, newfb->width, newfb->height, 0, 1, 0);
>> +	igt_put_cairo_ctx(cr);
>> +
>> +	igt_assert(drmIoctl(data->drm_fd, LOCAL_DRM_IOCTL_MODE_ADDFB2,
>> &f) == 0);
>> +	newfb->fb_id = f.fb_id;
>> +}
>> +
>> +static void free_fbs(data_t *data)
>> +{
>> +	igt_remove_fb(data->drm_fd, &data->small_fb);
>> +	igt_remove_fb(data->drm_fd, &data->big_fb); }
>> +
>> +static void test_flip_to_scaled(data_t *data, uint32_t index, enum pipe pipe,
>> +				igt_output_t *output)
>> +{
>> +	igt_plane_t *primary;
>> +	igt_crc_t small_crc, big_crc;
>> +
>> +	drmModeModeInfo *mode;
>> +	struct drm_event_vblank ev;
>> +	int ret;
>> +
>> +	igt_display_reset(&data->display);
>> +
>> +	igt_debug("running on output %s pipe %s\n", output->name,
>> +		  kmstest_pipe_name(pipe));
>> +	if (data->big_fb.fb_id == 0) {
>> +		mode = igt_output_get_mode(output);
>> +
>> +		// big fb will be 4k unless running on older than ICL
>> +		if (data->gen < 11) {
>> +			setup_fb(data, &data->small_fb,
>> +				 min(mode->hdisplay, 640),
>> +				 min(mode->vdisplay, 480),
>> +				 flip_scenario_test[index].firstformat,
>> +				 flip_scenario_test[index].firstmodifier);
>> +
>> +			setup_fb(data, &data->big_fb,
>> +				 1280, 960,
> 
> Not sure, but just something to check. Whether this downscaling will trigger a cd clock change for all platforms.
> We should somehow check that as well if cd clock change really happened.  CD clock steps are not uniform across platforms.
> Also if driver hardcodes a higher cd clock this test may pass without its intended objective.

I cannot enforce cdclk changes but what happen here with downscaling is 
it always go 4:1 I figure there's minimum four times more samples needed 
with filtering. As much as I verified those dmesgs from CI there was 
always display clock reprogrammed on all platforms but it is just what 
happen on today's drm-tip. If would run this on i915 from year ago there 
would be no such change thus on description it just says 'attempt to 
stress cdclk'.

As a flipping test I think final intended objective is flipping between 
framebuffers succeeded and it is verified with crc below.

> 
>> +				 flip_scenario_test[index].secondformat,
>> +				 flip_scenario_test[index].secondmodifier);
>> +			igt_debug("small fb %dx%d\n", data->small_fb.width,
>> +			          data->small_fb.height);
>> +			igt_debug("big fb %dx%d\n", data->big_fb.width,
>> +			          data->big_fb.height);
>> +		} else {
>> +			setup_fb(data, &data->small_fb,
>> +				 min(mode->hdisplay, 1920),
>> +				 min(mode->vdisplay, 1080),
>> +				 flip_scenario_test[index].firstformat,
>> +				 flip_scenario_test[index].firstmodifier);
>> +
>> +			setup_fb(data, &data->big_fb,
>> +				 3840, 2160,
>> +				 flip_scenario_test[index].secondformat,
>> +				 flip_scenario_test[index].secondmodifier);
>> +			igt_debug("small fb %dx%d\n", data->small_fb.width,
>> +			          data->small_fb.height);
>> +			igt_debug("big fb %dx%d\n", data->big_fb.width,
>> +			          data->big_fb.height);
>> +		}
>> +	}
>> +
>> +	igt_output_set_pipe(output, pipe);
>> +
>> +	primary = igt_output_get_plane_type(output,
>> DRM_PLANE_TYPE_PRIMARY);
>> +	igt_display_commit_atomic(&data->display,
>> DRM_MODE_ATOMIC_ALLOW_MODESET,
>> +				  NULL);
>> +	data->pipe_crc = igt_pipe_crc_new(data->drm_fd, pipe,
>> +					  INTEL_PIPE_CRC_SOURCE_AUTO);
>> +	igt_pipe_crc_start(data->pipe_crc);
>> +
>> +	igt_plane_set_position(primary, 0, 0);
>> +	igt_plane_set_fb(primary, &data->small_fb);
>> +
>> +	igt_display_commit_atomic(&data->display,
>> +				  DRM_MODE_ATOMIC_ALLOW_MODESET, NULL);
>> +	igt_pipe_crc_get_current(data->drm_fd, data->pipe_crc, &small_crc);
>> +
>> +	igt_plane_set_fb(primary, &data->big_fb);
>> +	igt_plane_set_size(primary, data->small_fb.width,
>> +			   data->small_fb.height);
>> +	ret = igt_display_try_commit_atomic(&data->display,
>> +
>> DRM_MODE_ATOMIC_ALLOW_MODESET  |
>> +					    DRM_MODE_PAGE_FLIP_EVENT, NULL);
>> +
>> +	igt_require_f(ret != -ERANGE,
>> +		      "Platform scaling limits exceeded, skipping.");
>> +	igt_assert_eq(ret, 0);
>> +
>> +	igt_assert(read(data->drm_fd, &ev, sizeof(ev)) == sizeof(ev));
>> +
>> +	igt_pipe_crc_get_current(data->drm_fd, data->pipe_crc, &big_crc);
>> +	igt_assert(igt_check_crc_equal(&small_crc, &big_crc));
> 
> With this downscaling, are we able to match crc. Scalar may do some rounding, so not sure if this will
> match in all cases. Good to check this.

We cannot really do crc checking with scalers but I have idea here 
maximum solid green would stay maximum solid green regardless of the 
scaler, all components for scaler are maximum solid green. With these 
starting values if scaler couldn't produce maximum solid green I'd call 
scaler broken.

> 
>> +
>> +	igt_pipe_crc_stop(data->pipe_crc);
>> +	igt_pipe_crc_free(data->pipe_crc);
>> +	data->pipe_crc = NULL;
>> +}
>> +
>> +igt_main
>> +{
>> +	enum pipe pipe;
>> +	data_t data = {};
>> +	igt_output_t *output;
>> +
>> +	igt_fixture {
>> +		data.drm_fd = drm_open_driver_master(DRIVER_INTEL);
>> +		data.gen = intel_gen(intel_get_drm_devid(data.drm_fd));
>> +		igt_require(data.gen >= 9);
>> +		igt_display_require(&data.display, data.drm_fd);
>> +		igt_require(data.display.is_atomic);
>> +		igt_require_pipe_crc(data.drm_fd);
>> +		kmstest_set_vt_graphics_mode();
>> +	}
>> +
>> +	for (int index = 0; index < ARRAY_SIZE(flip_scenario_test); index++) {
>> +		igt_describe(flip_scenario_test[index].describe);
>> +		igt_subtest(flip_scenario_test[index].name) {
>> +			for_each_pipe_with_single_output(&data.display, pipe,
>> +							 output)
>> +				test_flip_to_scaled(&data, index, pipe, output);
>> +
>> +			free_fbs(&data);
>> +		}
>> +	}
>> +	igt_fixture {
>> +		free_fbs(&data);
>> +		if (data.pipe_crc) {
>> +			igt_pipe_crc_stop(data.pipe_crc);
>> +			igt_pipe_crc_free(data.pipe_crc);
>> +			data.pipe_crc = NULL;
>> +		}
>> +		kmstest_set_vt_text_mode();
>> +		igt_display_fini(&data.display);
>> +	}
>> +}
>> diff --git a/tests/meson.build b/tests/meson.build index 684de043..8e17a6ae
>> 100644
>> --- a/tests/meson.build
>> +++ b/tests/meson.build
>> @@ -37,6 +37,7 @@ test_progs = [
>>   	'kms_fence_pin_leak',
>>   	'kms_flip',
>>   	'kms_flip_event_leak',
>> +	'kms_flip_scaled_crc',
>>   	'kms_flip_tiling',
>>   	'kms_force_connector_basic',
>>   	'kms_frontbuffer_tracking',
>> --
>> 2.26.0
>>
>> _______________________________________________
>> igt-dev mailing list
>> igt-dev@lists.freedesktop.org
>> https://lists.freedesktop.org/mailman/listinfo/igt-dev

_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [igt-dev] [PATCH i-g-t] tests/kms_flip_scaled_crc: add flip to downscaled subtests
  2020-09-02  9:12 Juha-Pekka Heikkila
@ 2020-09-04 14:31 ` Shankar, Uma
  2020-09-14 11:58   ` Juha-Pekka Heikkila
  0 siblings, 1 reply; 15+ messages in thread
From: Shankar, Uma @ 2020-09-04 14:31 UTC (permalink / raw)
  To: Juha-Pekka Heikkila, igt-dev



> -----Original Message-----
> From: igt-dev <igt-dev-bounces@lists.freedesktop.org> On Behalf Of Juha-Pekka
> Heikkila
> Sent: Wednesday, September 2, 2020 2:42 PM
> To: igt-dev@lists.freedesktop.org
> Subject: [igt-dev] [PATCH i-g-t] tests/kms_flip_scaled_crc: add flip to downscaled
> subtests

I think this would sound better "Add Subtests for Flip with fb downscaling"

> 
> attempt to cause cdclk changes and stress scalers with flipping to different size fb
> with different modifiers. Verify results with crc.

This is failing on some platforms like in GLK:
https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_4945/shard-glk9/igt@kms_flip_scaled_crc@flip-32bpp-ytile-to-32bpp-ytileccs.html

Can you check why it could be happening, I can see you have the modifier check. But still its rejecting the combination in driver.
May be something to fix.

Overall this is really a good plan to have this combination tested, something we have lacked.

> Signed-off-by: Juha-Pekka Heikkila <juhapekka.heikkila@gmail.com>
> ---
>  tests/Makefile.sources      |   1 +
>  tests/kms_flip_scaled_crc.c | 255 ++++++++++++++++++++++++++++++++++++
>  tests/meson.build           |   1 +
>  3 files changed, 257 insertions(+)
>  create mode 100644 tests/kms_flip_scaled_crc.c
> 
> diff --git a/tests/Makefile.sources b/tests/Makefile.sources index
> 269b506d..fe9fb7ed 100644
> --- a/tests/Makefile.sources
> +++ b/tests/Makefile.sources
> @@ -53,6 +53,7 @@ TESTS_progs = \
>  	kms_fence_pin_leak \
>  	kms_flip \
>  	kms_flip_event_leak \
> +	kms_flip_scaled_crc \
>  	kms_flip_tiling \
>  	kms_force_connector_basic \
>  	kms_frontbuffer_tracking \
> diff --git a/tests/kms_flip_scaled_crc.c b/tests/kms_flip_scaled_crc.c new file
> mode 100644 index 00000000..9daa2f92
> --- /dev/null
> +++ b/tests/kms_flip_scaled_crc.c
> @@ -0,0 +1,255 @@
> +/*
> + * Copyright © 2020 Intel Corporation
> + *
> + * Permission is hereby granted, free of charge, to any person
> +obtaining a
> + * copy of this software and associated documentation files (the
> +"Software"),
> + * to deal in the Software without restriction, including without
> +limitation
> + * the rights to use, copy, modify, merge, publish, distribute,
> +sublicense,
> + * and/or sell copies of the Software, and to permit persons to whom
> +the
> + * Software is furnished to do so, subject to the following conditions:
> + *
> + * The above copyright notice and this permission notice (including the
> +next
> + * paragraph) shall be included in all copies or substantial portions
> +of the
> + * Software.
> + *
> + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
> +EXPRESS OR
> + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
> +MERCHANTABILITY,
> + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT
> +SHALL
> + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES
> OR
> +OTHER
> + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
> +ARISING
> + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
> OTHER
> +DEALINGS
> + * IN THE SOFTWARE.
> + *
> + */
> +
> +#include "igt.h"
> +
> +IGT_TEST_DESCRIPTION("Test flipping between scaled/nonscaled
> +framebuffers");
> +
> +typedef struct {
> +	int drm_fd;
> +	igt_display_t display;
> +	igt_output_t *output;
> +	enum pipe pipe;
> +	uint32_t gen;
> +	struct igt_fb small_fb;
> +	struct igt_fb big_fb;
> +	igt_pipe_crc_t *pipe_crc;
> +} data_t;
> +
> +const struct {
> +	const char * const name;
> +	const char * const describe;
> +	const uint64_t firstmodifier;
> +	const uint32_t firstformat;
> +	const uint64_t secondmodifier;
> +	const uint32_t secondformat;
> +} flip_scenario_test[] = {
> +	{
> +		"flip-32bpp-ytile-to-64bpp-ytile",
> +		"Try to flip from 32bpp non scaled fb to 64bpp downscaled fb in
> attempt to stress cdclk reprogramming.",

We can trim this description, Like: "Flip from 32bpp non scaled fb to 64bpp downscaled fb to stress CD clock programming"
Trim this for all combinations.

> +		LOCAL_I915_FORMAT_MOD_Y_TILED, DRM_FORMAT_XRGB8888,
> +		LOCAL_I915_FORMAT_MOD_Y_TILED,
> DRM_FORMAT_XRGB16161616F
> +	},
> +	{
> +		"flip-64bpp-ytile-to-32bpp-ytile",
> +		"Try to flip from 64bpp non scaled fb to 32bpp downscaled fb.",
> +		LOCAL_I915_FORMAT_MOD_Y_TILED,
> DRM_FORMAT_XRGB16161616F,
> +		LOCAL_I915_FORMAT_MOD_Y_TILED, DRM_FORMAT_XRGB8888
> +	},
> +	{
> +		"flip-64bpp-ytile-to-16bpp-ytile",
> +		"Try to flip from 64bpp non scaled fb to 16bpp downscaled fb.",
> +		LOCAL_I915_FORMAT_MOD_Y_TILED,
> DRM_FORMAT_XRGB16161616F,
> +		LOCAL_I915_FORMAT_MOD_Y_TILED, DRM_FORMAT_RGB565
> +	},
> +	{
> +		"flip-32bpp-ytileccs-to-64bpp-ytile",
> +		"Try to flip from 32bpp ccs non scaled fb to 64bpp downscaled fb
> ytile.",
> +		LOCAL_I915_FORMAT_MOD_Y_TILED_CCS,
> DRM_FORMAT_XRGB8888,
> +		LOCAL_I915_FORMAT_MOD_Y_TILED,
> DRM_FORMAT_XRGB16161616F
> +	},
> +	{
> +		"flip-32bpp-ytile-to-32bpp-ytilegen12rcccs",
> +		"Try to flip from 32bpp non scaled fb to 32bpp downscaled gen12
> rc ccs fb in attempt to stress cdclk reprogramming.",
> +		LOCAL_I915_FORMAT_MOD_Y_TILED, DRM_FORMAT_XRGB8888,
> +		LOCAL_I915_FORMAT_MOD_Y_TILED_GEN12_RC_CCS,
> DRM_FORMAT_XRGB8888
> +	},
> +	{
> +		"flip-32bpp-ytile-to-32bpp-ytileccs",
> +		"Try to flip from 32bpp non scaled ytiled fb to 32bpp downscaled
> ytiled ccs fb.",
> +		LOCAL_I915_FORMAT_MOD_Y_TILED, DRM_FORMAT_XRGB8888,
> +		LOCAL_I915_FORMAT_MOD_Y_TILED_CCS,
> DRM_FORMAT_XRGB8888
> +	},
> +	{
> +		"flip-64bpp-ytile-to-32bpp-ytilercccs",
> +		"Try to flip from 64bpp non scaled ytiled fb to 32bpp downscaled
> gen12 rc ccs fb.",
> +		LOCAL_I915_FORMAT_MOD_Y_TILED,
> DRM_FORMAT_XRGB16161616F,
> +		LOCAL_I915_FORMAT_MOD_Y_TILED_GEN12_RC_CCS,
> DRM_FORMAT_XRGB8888
> +	},
> +};
> +
> +static void setup_fb(data_t *data, struct igt_fb *newfb, uint32_t width,
> +		     uint32_t height, uint64_t format, uint64_t modifier) {
> +	struct drm_mode_fb_cmd2 f = {0};
> +	cairo_t *cr;
> +
> +	igt_require(igt_display_has_format_mod(&data->display, format,
> +					       modifier));
> +
> +	igt_create_bo_for_fb(data->drm_fd, width, height, format, modifier,
> +			     newfb);
> +	igt_assert(newfb->gem_handle > 0);
> +
> +	f.width = newfb->width;
> +	f.height = newfb->height;
> +	f.pixel_format = newfb->drm_format;
> +	f.flags = LOCAL_DRM_MODE_FB_MODIFIERS;
> +
> +	for (int n = 0; n < newfb->num_planes; n++) {
> +		f.handles[n] = newfb->gem_handle;
> +		f.modifier[n] = newfb->modifier;
> +		f.pitches[n] = newfb->strides[n];
> +		f.offsets[n] = newfb->offsets[n];
> +	}
> +
> +	cr = igt_get_cairo_ctx(data->drm_fd, newfb);
> +	igt_paint_color(cr, 0, 0, newfb->width, newfb->height, 0, 1, 0);
> +	igt_put_cairo_ctx(cr);
> +
> +	igt_assert(drmIoctl(data->drm_fd, LOCAL_DRM_IOCTL_MODE_ADDFB2,
> &f) == 0);
> +	newfb->fb_id = f.fb_id;
> +}
> +
> +static void free_fbs(data_t *data)
> +{
> +	igt_remove_fb(data->drm_fd, &data->small_fb);
> +	igt_remove_fb(data->drm_fd, &data->big_fb); }
> +
> +static void test_flip_to_scaled(data_t *data, uint32_t index, enum pipe pipe,
> +				igt_output_t *output)
> +{
> +	igt_plane_t *primary;
> +	igt_crc_t small_crc, big_crc;
> +
> +	drmModeModeInfo *mode;
> +	struct drm_event_vblank ev;
> +	int ret;
> +
> +	igt_display_reset(&data->display);
> +
> +	igt_debug("running on output %s pipe %s\n", output->name,
> +		  kmstest_pipe_name(pipe));
> +	if (data->big_fb.fb_id == 0) {
> +		mode = igt_output_get_mode(output);
> +
> +		// big fb will be 4k unless running on older than ICL
> +		if (data->gen < 11) {
> +			setup_fb(data, &data->small_fb,
> +				 min(mode->hdisplay, 640),
> +				 min(mode->vdisplay, 480),
> +				 flip_scenario_test[index].firstformat,
> +				 flip_scenario_test[index].firstmodifier);
> +
> +			setup_fb(data, &data->big_fb,
> +				 1280, 960,

Not sure, but just something to check. Whether this downscaling will trigger a cd clock change for all platforms.
We should somehow check that as well if cd clock change really happened.  CD clock steps are not uniform across platforms.
Also if driver hardcodes a higher cd clock this test may pass without its intended objective.

> +				 flip_scenario_test[index].secondformat,
> +				 flip_scenario_test[index].secondmodifier);
> +			igt_debug("small fb %dx%d\n", data->small_fb.width,
> +			          data->small_fb.height);
> +			igt_debug("big fb %dx%d\n", data->big_fb.width,
> +			          data->big_fb.height);
> +		} else {
> +			setup_fb(data, &data->small_fb,
> +				 min(mode->hdisplay, 1920),
> +				 min(mode->vdisplay, 1080),
> +				 flip_scenario_test[index].firstformat,
> +				 flip_scenario_test[index].firstmodifier);
> +
> +			setup_fb(data, &data->big_fb,
> +				 3840, 2160,
> +				 flip_scenario_test[index].secondformat,
> +				 flip_scenario_test[index].secondmodifier);
> +			igt_debug("small fb %dx%d\n", data->small_fb.width,
> +			          data->small_fb.height);
> +			igt_debug("big fb %dx%d\n", data->big_fb.width,
> +			          data->big_fb.height);
> +		}
> +	}
> +
> +	igt_output_set_pipe(output, pipe);
> +
> +	primary = igt_output_get_plane_type(output,
> DRM_PLANE_TYPE_PRIMARY);
> +	igt_display_commit_atomic(&data->display,
> DRM_MODE_ATOMIC_ALLOW_MODESET,
> +				  NULL);
> +	data->pipe_crc = igt_pipe_crc_new(data->drm_fd, pipe,
> +					  INTEL_PIPE_CRC_SOURCE_AUTO);
> +	igt_pipe_crc_start(data->pipe_crc);
> +
> +	igt_plane_set_position(primary, 0, 0);
> +	igt_plane_set_fb(primary, &data->small_fb);
> +
> +	igt_display_commit_atomic(&data->display,
> +				  DRM_MODE_ATOMIC_ALLOW_MODESET, NULL);
> +	igt_pipe_crc_get_current(data->drm_fd, data->pipe_crc, &small_crc);
> +
> +	igt_plane_set_fb(primary, &data->big_fb);
> +	igt_plane_set_size(primary, data->small_fb.width,
> +			   data->small_fb.height);
> +	ret = igt_display_try_commit_atomic(&data->display,
> +
> DRM_MODE_ATOMIC_ALLOW_MODESET  |
> +					    DRM_MODE_PAGE_FLIP_EVENT, NULL);
> +
> +	igt_require_f(ret != -ERANGE,
> +		      "Platform scaling limits exceeded, skipping.");
> +	igt_assert_eq(ret, 0);
> +
> +	igt_assert(read(data->drm_fd, &ev, sizeof(ev)) == sizeof(ev));
> +
> +	igt_pipe_crc_get_current(data->drm_fd, data->pipe_crc, &big_crc);
> +	igt_assert(igt_check_crc_equal(&small_crc, &big_crc));

With this downscaling, are we able to match crc. Scalar may do some rounding, so not sure if this will
match in all cases. Good to check this.

> +
> +	igt_pipe_crc_stop(data->pipe_crc);
> +	igt_pipe_crc_free(data->pipe_crc);
> +	data->pipe_crc = NULL;
> +}
> +
> +igt_main
> +{
> +	enum pipe pipe;
> +	data_t data = {};
> +	igt_output_t *output;
> +
> +	igt_fixture {
> +		data.drm_fd = drm_open_driver_master(DRIVER_INTEL);
> +		data.gen = intel_gen(intel_get_drm_devid(data.drm_fd));
> +		igt_require(data.gen >= 9);
> +		igt_display_require(&data.display, data.drm_fd);
> +		igt_require(data.display.is_atomic);
> +		igt_require_pipe_crc(data.drm_fd);
> +		kmstest_set_vt_graphics_mode();
> +	}
> +
> +	for (int index = 0; index < ARRAY_SIZE(flip_scenario_test); index++) {
> +		igt_describe(flip_scenario_test[index].describe);
> +		igt_subtest(flip_scenario_test[index].name) {
> +			for_each_pipe_with_single_output(&data.display, pipe,
> +							 output)
> +				test_flip_to_scaled(&data, index, pipe, output);
> +
> +			free_fbs(&data);
> +		}
> +	}
> +	igt_fixture {
> +		free_fbs(&data);
> +		if (data.pipe_crc) {
> +			igt_pipe_crc_stop(data.pipe_crc);
> +			igt_pipe_crc_free(data.pipe_crc);
> +			data.pipe_crc = NULL;
> +		}
> +		kmstest_set_vt_text_mode();
> +		igt_display_fini(&data.display);
> +	}
> +}
> diff --git a/tests/meson.build b/tests/meson.build index 684de043..8e17a6ae
> 100644
> --- a/tests/meson.build
> +++ b/tests/meson.build
> @@ -37,6 +37,7 @@ test_progs = [
>  	'kms_fence_pin_leak',
>  	'kms_flip',
>  	'kms_flip_event_leak',
> +	'kms_flip_scaled_crc',
>  	'kms_flip_tiling',
>  	'kms_force_connector_basic',
>  	'kms_frontbuffer_tracking',
> --
> 2.26.0
> 
> _______________________________________________
> igt-dev mailing list
> igt-dev@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/igt-dev
_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev

^ permalink raw reply	[flat|nested] 15+ messages in thread

* [igt-dev] [PATCH i-g-t] tests/kms_flip_scaled_crc: add flip to downscaled subtests
@ 2020-09-02  9:12 Juha-Pekka Heikkila
  2020-09-04 14:31 ` Shankar, Uma
  0 siblings, 1 reply; 15+ messages in thread
From: Juha-Pekka Heikkila @ 2020-09-02  9:12 UTC (permalink / raw)
  To: igt-dev

attempt to cause cdclk changes and stress scalers with flipping
to different size fb with different modifiers. Verify results
with crc.

Signed-off-by: Juha-Pekka Heikkila <juhapekka.heikkila@gmail.com>
---
 tests/Makefile.sources      |   1 +
 tests/kms_flip_scaled_crc.c | 255 ++++++++++++++++++++++++++++++++++++
 tests/meson.build           |   1 +
 3 files changed, 257 insertions(+)
 create mode 100644 tests/kms_flip_scaled_crc.c

diff --git a/tests/Makefile.sources b/tests/Makefile.sources
index 269b506d..fe9fb7ed 100644
--- a/tests/Makefile.sources
+++ b/tests/Makefile.sources
@@ -53,6 +53,7 @@ TESTS_progs = \
 	kms_fence_pin_leak \
 	kms_flip \
 	kms_flip_event_leak \
+	kms_flip_scaled_crc \
 	kms_flip_tiling \
 	kms_force_connector_basic \
 	kms_frontbuffer_tracking \
diff --git a/tests/kms_flip_scaled_crc.c b/tests/kms_flip_scaled_crc.c
new file mode 100644
index 00000000..9daa2f92
--- /dev/null
+++ b/tests/kms_flip_scaled_crc.c
@@ -0,0 +1,255 @@
+/*
+ * Copyright © 2020 Intel Corporation
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice (including the next
+ * paragraph) shall be included in all copies or substantial portions of the
+ * Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
+ * IN THE SOFTWARE.
+ *
+ */
+
+#include "igt.h"
+
+IGT_TEST_DESCRIPTION("Test flipping between scaled/nonscaled framebuffers");
+
+typedef struct {
+	int drm_fd;
+	igt_display_t display;
+	igt_output_t *output;
+	enum pipe pipe;
+	uint32_t gen;
+	struct igt_fb small_fb;
+	struct igt_fb big_fb;
+	igt_pipe_crc_t *pipe_crc;
+} data_t;
+
+const struct {
+	const char * const name;
+	const char * const describe;
+	const uint64_t firstmodifier;
+	const uint32_t firstformat;
+	const uint64_t secondmodifier;
+	const uint32_t secondformat;
+} flip_scenario_test[] = {
+	{
+		"flip-32bpp-ytile-to-64bpp-ytile",
+		"Try to flip from 32bpp non scaled fb to 64bpp downscaled fb in attempt to stress cdclk reprogramming.",
+		LOCAL_I915_FORMAT_MOD_Y_TILED, DRM_FORMAT_XRGB8888,
+		LOCAL_I915_FORMAT_MOD_Y_TILED, DRM_FORMAT_XRGB16161616F
+	},
+	{
+		"flip-64bpp-ytile-to-32bpp-ytile",
+		"Try to flip from 64bpp non scaled fb to 32bpp downscaled fb.",
+		LOCAL_I915_FORMAT_MOD_Y_TILED, DRM_FORMAT_XRGB16161616F,
+		LOCAL_I915_FORMAT_MOD_Y_TILED, DRM_FORMAT_XRGB8888
+	},
+	{
+		"flip-64bpp-ytile-to-16bpp-ytile",
+		"Try to flip from 64bpp non scaled fb to 16bpp downscaled fb.",
+		LOCAL_I915_FORMAT_MOD_Y_TILED, DRM_FORMAT_XRGB16161616F,
+		LOCAL_I915_FORMAT_MOD_Y_TILED, DRM_FORMAT_RGB565
+	},
+	{
+		"flip-32bpp-ytileccs-to-64bpp-ytile",
+		"Try to flip from 32bpp ccs non scaled fb to 64bpp downscaled fb ytile.",
+		LOCAL_I915_FORMAT_MOD_Y_TILED_CCS, DRM_FORMAT_XRGB8888,
+		LOCAL_I915_FORMAT_MOD_Y_TILED, DRM_FORMAT_XRGB16161616F
+	},
+	{
+		"flip-32bpp-ytile-to-32bpp-ytilegen12rcccs",
+		"Try to flip from 32bpp non scaled fb to 32bpp downscaled gen12 rc ccs fb in attempt to stress cdclk reprogramming.",
+		LOCAL_I915_FORMAT_MOD_Y_TILED, DRM_FORMAT_XRGB8888,
+		LOCAL_I915_FORMAT_MOD_Y_TILED_GEN12_RC_CCS, DRM_FORMAT_XRGB8888
+	},
+	{
+		"flip-32bpp-ytile-to-32bpp-ytileccs",
+		"Try to flip from 32bpp non scaled ytiled fb to 32bpp downscaled ytiled ccs fb.",
+		LOCAL_I915_FORMAT_MOD_Y_TILED, DRM_FORMAT_XRGB8888,
+		LOCAL_I915_FORMAT_MOD_Y_TILED_CCS, DRM_FORMAT_XRGB8888
+	},
+	{
+		"flip-64bpp-ytile-to-32bpp-ytilercccs",
+		"Try to flip from 64bpp non scaled ytiled fb to 32bpp downscaled gen12 rc ccs fb.",
+		LOCAL_I915_FORMAT_MOD_Y_TILED, DRM_FORMAT_XRGB16161616F,
+		LOCAL_I915_FORMAT_MOD_Y_TILED_GEN12_RC_CCS, DRM_FORMAT_XRGB8888
+	},
+};
+
+static void setup_fb(data_t *data, struct igt_fb *newfb, uint32_t width,
+		     uint32_t height, uint64_t format, uint64_t modifier)
+{
+	struct drm_mode_fb_cmd2 f = {0};
+	cairo_t *cr;
+
+	igt_require(igt_display_has_format_mod(&data->display, format,
+					       modifier));
+
+	igt_create_bo_for_fb(data->drm_fd, width, height, format, modifier,
+			     newfb);
+	igt_assert(newfb->gem_handle > 0);
+
+	f.width = newfb->width;
+	f.height = newfb->height;
+	f.pixel_format = newfb->drm_format;
+	f.flags = LOCAL_DRM_MODE_FB_MODIFIERS;
+
+	for (int n = 0; n < newfb->num_planes; n++) {
+		f.handles[n] = newfb->gem_handle;
+		f.modifier[n] = newfb->modifier;
+		f.pitches[n] = newfb->strides[n];
+		f.offsets[n] = newfb->offsets[n];
+	}
+
+	cr = igt_get_cairo_ctx(data->drm_fd, newfb);
+	igt_paint_color(cr, 0, 0, newfb->width, newfb->height, 0, 1, 0);
+	igt_put_cairo_ctx(cr);
+
+	igt_assert(drmIoctl(data->drm_fd, LOCAL_DRM_IOCTL_MODE_ADDFB2, &f) == 0);
+	newfb->fb_id = f.fb_id;
+}
+
+static void free_fbs(data_t *data)
+{
+	igt_remove_fb(data->drm_fd, &data->small_fb);
+	igt_remove_fb(data->drm_fd, &data->big_fb);
+}
+
+static void test_flip_to_scaled(data_t *data, uint32_t index, enum pipe pipe,
+				igt_output_t *output)
+{
+	igt_plane_t *primary;
+	igt_crc_t small_crc, big_crc;
+
+	drmModeModeInfo *mode;
+	struct drm_event_vblank ev;
+	int ret;
+
+	igt_display_reset(&data->display);
+
+	igt_debug("running on output %s pipe %s\n", output->name,
+		  kmstest_pipe_name(pipe));
+	if (data->big_fb.fb_id == 0) {
+		mode = igt_output_get_mode(output);
+
+		// big fb will be 4k unless running on older than ICL
+		if (data->gen < 11) {
+			setup_fb(data, &data->small_fb,
+				 min(mode->hdisplay, 640),
+				 min(mode->vdisplay, 480),
+				 flip_scenario_test[index].firstformat,
+				 flip_scenario_test[index].firstmodifier);
+
+			setup_fb(data, &data->big_fb,
+				 1280, 960,
+				 flip_scenario_test[index].secondformat,
+				 flip_scenario_test[index].secondmodifier);
+			igt_debug("small fb %dx%d\n", data->small_fb.width,
+			          data->small_fb.height);
+			igt_debug("big fb %dx%d\n", data->big_fb.width,
+			          data->big_fb.height);
+		} else {
+			setup_fb(data, &data->small_fb,
+				 min(mode->hdisplay, 1920),
+				 min(mode->vdisplay, 1080),
+				 flip_scenario_test[index].firstformat,
+				 flip_scenario_test[index].firstmodifier);
+
+			setup_fb(data, &data->big_fb,
+				 3840, 2160,
+				 flip_scenario_test[index].secondformat,
+				 flip_scenario_test[index].secondmodifier);
+			igt_debug("small fb %dx%d\n", data->small_fb.width,
+			          data->small_fb.height);
+			igt_debug("big fb %dx%d\n", data->big_fb.width,
+			          data->big_fb.height);
+		}
+	}
+
+	igt_output_set_pipe(output, pipe);
+
+	primary = igt_output_get_plane_type(output, DRM_PLANE_TYPE_PRIMARY);
+	igt_display_commit_atomic(&data->display, DRM_MODE_ATOMIC_ALLOW_MODESET,
+				  NULL);
+	data->pipe_crc = igt_pipe_crc_new(data->drm_fd, pipe,
+					  INTEL_PIPE_CRC_SOURCE_AUTO);
+	igt_pipe_crc_start(data->pipe_crc);
+
+	igt_plane_set_position(primary, 0, 0);
+	igt_plane_set_fb(primary, &data->small_fb);
+
+	igt_display_commit_atomic(&data->display,
+				  DRM_MODE_ATOMIC_ALLOW_MODESET, NULL);
+	igt_pipe_crc_get_current(data->drm_fd, data->pipe_crc, &small_crc);
+
+	igt_plane_set_fb(primary, &data->big_fb);
+	igt_plane_set_size(primary, data->small_fb.width,
+			   data->small_fb.height);
+	ret = igt_display_try_commit_atomic(&data->display,
+					    DRM_MODE_ATOMIC_ALLOW_MODESET  |
+					    DRM_MODE_PAGE_FLIP_EVENT, NULL);
+
+	igt_require_f(ret != -ERANGE,
+		      "Platform scaling limits exceeded, skipping.");
+	igt_assert_eq(ret, 0);
+
+	igt_assert(read(data->drm_fd, &ev, sizeof(ev)) == sizeof(ev));
+
+	igt_pipe_crc_get_current(data->drm_fd, data->pipe_crc, &big_crc);
+	igt_assert(igt_check_crc_equal(&small_crc, &big_crc));
+
+	igt_pipe_crc_stop(data->pipe_crc);
+	igt_pipe_crc_free(data->pipe_crc);
+	data->pipe_crc = NULL;
+}
+
+igt_main
+{
+	enum pipe pipe;
+	data_t data = {};
+	igt_output_t *output;
+
+	igt_fixture {
+		data.drm_fd = drm_open_driver_master(DRIVER_INTEL);
+		data.gen = intel_gen(intel_get_drm_devid(data.drm_fd));
+		igt_require(data.gen >= 9);
+		igt_display_require(&data.display, data.drm_fd);
+		igt_require(data.display.is_atomic);
+		igt_require_pipe_crc(data.drm_fd);
+		kmstest_set_vt_graphics_mode();
+	}
+
+	for (int index = 0; index < ARRAY_SIZE(flip_scenario_test); index++) {
+		igt_describe(flip_scenario_test[index].describe);
+		igt_subtest(flip_scenario_test[index].name) {
+			for_each_pipe_with_single_output(&data.display, pipe,
+							 output)
+				test_flip_to_scaled(&data, index, pipe, output);
+
+			free_fbs(&data);
+		}
+	}
+	igt_fixture {
+		free_fbs(&data);
+		if (data.pipe_crc) {
+			igt_pipe_crc_stop(data.pipe_crc);
+			igt_pipe_crc_free(data.pipe_crc);
+			data.pipe_crc = NULL;
+		}
+		kmstest_set_vt_text_mode();
+		igt_display_fini(&data.display);
+	}
+}
diff --git a/tests/meson.build b/tests/meson.build
index 684de043..8e17a6ae 100644
--- a/tests/meson.build
+++ b/tests/meson.build
@@ -37,6 +37,7 @@ test_progs = [
 	'kms_fence_pin_leak',
 	'kms_flip',
 	'kms_flip_event_leak',
+	'kms_flip_scaled_crc',
 	'kms_flip_tiling',
 	'kms_force_connector_basic',
 	'kms_frontbuffer_tracking',
-- 
2.26.0

_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev

^ permalink raw reply related	[flat|nested] 15+ messages in thread

* [igt-dev] [PATCH i-g-t] tests/kms_flip_scaled_crc: add flip to downscaled subtests
@ 2020-08-31  9:12 Juha-Pekka Heikkila
  0 siblings, 0 replies; 15+ messages in thread
From: Juha-Pekka Heikkila @ 2020-08-31  9:12 UTC (permalink / raw)
  To: igt-dev

attempt to cause cdclk changes and stress scalers with flipping
to different size fb with different modifiers. Verify results
with crc.

Signed-off-by: Juha-Pekka Heikkila <juhapekka.heikkila@gmail.com>
---
 tests/Makefile.sources      |   1 +
 tests/kms_flip_scaled_crc.c | 246 ++++++++++++++++++++++++++++++++++++
 tests/meson.build           |   1 +
 3 files changed, 248 insertions(+)
 create mode 100644 tests/kms_flip_scaled_crc.c

diff --git a/tests/Makefile.sources b/tests/Makefile.sources
index 269b506d..fe9fb7ed 100644
--- a/tests/Makefile.sources
+++ b/tests/Makefile.sources
@@ -53,6 +53,7 @@ TESTS_progs = \
 	kms_fence_pin_leak \
 	kms_flip \
 	kms_flip_event_leak \
+	kms_flip_scaled_crc \
 	kms_flip_tiling \
 	kms_force_connector_basic \
 	kms_frontbuffer_tracking \
diff --git a/tests/kms_flip_scaled_crc.c b/tests/kms_flip_scaled_crc.c
new file mode 100644
index 00000000..639a0ba8
--- /dev/null
+++ b/tests/kms_flip_scaled_crc.c
@@ -0,0 +1,246 @@
+/*
+ * Copyright © 2020 Intel Corporation
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice (including the next
+ * paragraph) shall be included in all copies or substantial portions of the
+ * Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
+ * IN THE SOFTWARE.
+ *
+ */
+
+#include "igt.h"
+
+IGT_TEST_DESCRIPTION("Test flipping between scaled/nonscaled framebuffers");
+
+typedef struct {
+	int drm_fd;
+	igt_display_t display;
+	igt_output_t *output;
+	enum pipe pipe;
+	uint32_t gen;
+	struct igt_fb small_fb;
+	struct igt_fb big_fb;
+	igt_pipe_crc_t *pipe_crc;
+} data_t;
+
+const struct {
+	const char * const name;
+	const char * const describe;
+	const uint64_t firstmodifier;
+	const uint32_t firstformat;
+	const uint64_t secondmodifier;
+	const uint32_t secondformat;
+} flip_scenario_test[] = {
+	{
+		"flip-32bpp-ytile-to-64bpp-ytile",
+		"Try to flip from 32bpp non scaled fb to 64bpp downscaled fb in attempt to stress cdclk reprogramming.",
+		LOCAL_I915_FORMAT_MOD_Y_TILED, DRM_FORMAT_XRGB8888,
+		LOCAL_I915_FORMAT_MOD_Y_TILED, DRM_FORMAT_XRGB16161616F
+	},
+	{
+		"flip-64bpp-ytile-to-32bpp-ytile",
+		"Try to flip from 64bpp non scaled fb to 32bpp downscaled fb.",
+		LOCAL_I915_FORMAT_MOD_Y_TILED, DRM_FORMAT_XRGB16161616F,
+		LOCAL_I915_FORMAT_MOD_Y_TILED, DRM_FORMAT_XRGB8888
+	},
+	{
+		"flip-64bpp-ytile-to-16bpp-ytile",
+		"Try to flip from 64bpp non scaled fb to 16bpp downscaled fb.",
+		LOCAL_I915_FORMAT_MOD_Y_TILED, DRM_FORMAT_XRGB16161616F,
+		LOCAL_I915_FORMAT_MOD_Y_TILED, DRM_FORMAT_RGB565
+	},
+	{
+		"flip-32bpp-ytileccs-to-64bpp-ytile",
+		"Try to flip from 32bpp ccs non scaled fb to 64bpp downscaled fb ytile.",
+		LOCAL_I915_FORMAT_MOD_Y_TILED_CCS, DRM_FORMAT_XRGB8888,
+		LOCAL_I915_FORMAT_MOD_Y_TILED, DRM_FORMAT_XRGB16161616F
+	},
+	{
+		"flip-32bpp-ytile-to-32bpp-ytilegen12rcccs",
+		"Try to flip from 32bpp non scaled fb to 32bpp downscaled gen12 rc ccs fb in attempt to stress cdclk reprogramming.",
+		LOCAL_I915_FORMAT_MOD_Y_TILED, DRM_FORMAT_XRGB8888,
+		LOCAL_I915_FORMAT_MOD_Y_TILED_GEN12_RC_CCS, DRM_FORMAT_XRGB8888
+	},
+	{
+		"flip-32bpp-ytile-to-32bpp-ytileccs",
+		"Try to flip from 32bpp non scaled ytiled fb to 32bpp downscaled ytiled ccs fb.",
+		LOCAL_I915_FORMAT_MOD_Y_TILED, DRM_FORMAT_XRGB8888,
+		LOCAL_I915_FORMAT_MOD_Y_TILED_CCS, DRM_FORMAT_XRGB8888
+	},
+	{
+		"flip-64bpp-ytile-to-32bpp-ytilercccs",
+		"Try to flip from 64bpp non scaled ytiled fb to 32bpp downscaled gen12 rc ccs fb.",
+		LOCAL_I915_FORMAT_MOD_Y_TILED, DRM_FORMAT_XRGB16161616F,
+		LOCAL_I915_FORMAT_MOD_Y_TILED_GEN12_RC_CCS, DRM_FORMAT_XRGB8888
+	},
+};
+
+static void setup_fb(data_t *data, struct igt_fb *newfb, uint32_t width,
+		     uint32_t height, uint64_t format, uint64_t modifier)
+{
+	struct drm_mode_fb_cmd2 f = {0};
+	cairo_t *cr;
+
+	igt_require(igt_display_has_format_mod(&data->display, format, modifier));
+
+	igt_create_bo_for_fb(data->drm_fd, width, height, format, modifier, newfb);
+	igt_assert(newfb->gem_handle > 0);
+
+	f.width = newfb->width;
+	f.height = newfb->height;
+	f.pixel_format = newfb->drm_format;
+	f.flags = LOCAL_DRM_MODE_FB_MODIFIERS;
+
+	for (int n = 0; n < newfb->num_planes; n++) {
+		f.handles[n] = newfb->gem_handle;
+		f.modifier[n] = newfb->modifier;
+		f.pitches[n] = newfb->strides[n];
+		f.offsets[n] = newfb->offsets[n];
+	}
+
+	cr = igt_get_cairo_ctx(data->drm_fd, newfb);
+	igt_paint_color(cr, 0, 0, newfb->width, newfb->height, 0, 1, 0);
+	igt_put_cairo_ctx(cr);
+
+	igt_assert(drmIoctl(data->drm_fd, LOCAL_DRM_IOCTL_MODE_ADDFB2, &f) == 0);
+	newfb->fb_id = f.fb_id;
+}
+
+static void free_fbs(data_t *data)
+{
+	igt_remove_fb(data->drm_fd, &data->small_fb);
+	igt_remove_fb(data->drm_fd, &data->big_fb);
+}
+
+static void test_flip_to_scaled(data_t *data, uint32_t index, enum pipe pipe, igt_output_t *output)
+{
+	igt_plane_t *primary;
+	igt_crc_t small_crc, big_crc;
+
+	drmModeModeInfo *mode;
+	struct drm_event_vblank ev;
+	int ret;
+
+	igt_debug("running on output %s pipe %s\n", output->name, kmstest_pipe_name(pipe));
+	if (data->big_fb.fb_id == 0) {
+		mode = igt_output_get_mode(output);
+
+		// big fb will be 4k unless running on older than ICL
+		if (data->gen < 11) {
+			setup_fb(data, &data->small_fb,
+				 min(mode->hdisplay, 640),
+				 min(mode->vdisplay, 480),
+				 flip_scenario_test[index].firstformat,
+				 flip_scenario_test[index].firstmodifier);
+
+			setup_fb(data, &data->big_fb,
+				 1280, 960,
+				 flip_scenario_test[index].secondformat,
+				 flip_scenario_test[index].secondmodifier);
+			igt_debug("small fb %dx%d\n", data->small_fb.width,
+			          data->small_fb.height);
+			igt_debug("big fb %dx%d\n", data->big_fb.width,
+			          data->big_fb.height);
+		} else {
+			setup_fb(data, &data->small_fb,
+				 min(mode->hdisplay, 1920),
+				 min(mode->vdisplay, 1080),
+				 flip_scenario_test[index].firstformat,
+				 flip_scenario_test[index].firstmodifier);
+
+			setup_fb(data, &data->big_fb,
+				 3840, 2160,
+				 flip_scenario_test[index].secondformat,
+				 flip_scenario_test[index].secondmodifier);
+			igt_debug("small fb %dx%d\n", data->small_fb.width,
+			          data->small_fb.height);
+			igt_debug("big fb %dx%d\n", data->big_fb.width,
+			          data->big_fb.height);
+		}
+	}
+
+	igt_output_set_pipe(output, pipe);
+
+	primary = igt_output_get_plane_type(output, DRM_PLANE_TYPE_PRIMARY);
+	igt_plane_set_fb(primary, NULL);
+
+	igt_display_commit_atomic(&data->display, DRM_MODE_ATOMIC_ALLOW_MODESET, NULL);
+	data->pipe_crc = igt_pipe_crc_new(data->drm_fd, pipe, INTEL_PIPE_CRC_SOURCE_AUTO);
+	igt_pipe_crc_start(data->pipe_crc);
+
+	igt_plane_set_position(primary, 0, 0);
+	igt_plane_set_fb(primary, &data->small_fb);
+
+	igt_display_commit_atomic(&data->display, DRM_MODE_ATOMIC_ALLOW_MODESET, NULL);
+	igt_pipe_crc_get_current(data->drm_fd, data->pipe_crc, &small_crc);
+
+	igt_plane_set_fb(primary, &data->big_fb);
+	igt_plane_set_size(primary, data->small_fb.width, data->small_fb.height);
+	ret = igt_display_try_commit_atomic(&data->display,
+					    DRM_MODE_ATOMIC_ALLOW_MODESET  |
+					    DRM_MODE_PAGE_FLIP_EVENT, NULL);
+
+	igt_require_f(ret != -34, "Platform scaling limits exceeded, skipping.");
+	igt_assert_eq(ret, 0);
+
+	igt_assert(read(data->drm_fd, &ev, sizeof(ev)) == sizeof(ev));
+
+	igt_pipe_crc_get_current(data->drm_fd, data->pipe_crc, &big_crc);
+	igt_assert(igt_check_crc_equal(&small_crc, &big_crc));
+
+	igt_pipe_crc_stop(data->pipe_crc);
+	igt_pipe_crc_free(data->pipe_crc);
+	data->pipe_crc = NULL;
+	igt_output_set_pipe(output, PIPE_ANY);
+}
+
+igt_main
+{
+	enum pipe pipe;
+	data_t data = {};
+	igt_output_t *output;
+
+	igt_fixture {
+		data.drm_fd = drm_open_driver_master(DRIVER_INTEL);
+		data.gen = intel_gen(intel_get_drm_devid(data.drm_fd));
+		igt_require(data.gen >= 9);
+		igt_display_require(&data.display, data.drm_fd);
+		igt_require(data.display.is_atomic);
+		igt_require_pipe_crc(data.drm_fd);
+		kmstest_set_vt_graphics_mode();
+	}
+
+	for (int index = 0; index < ARRAY_SIZE(flip_scenario_test); index++) {
+		igt_describe(flip_scenario_test[index].describe);
+		igt_subtest(flip_scenario_test[index].name) {
+			for_each_pipe_with_single_output(&data.display, pipe, output)
+				test_flip_to_scaled(&data, index, pipe, output);
+
+			free_fbs(&data);
+		}
+	}
+	igt_fixture {
+		free_fbs(&data);
+		if (data.pipe_crc) {
+			igt_pipe_crc_stop(data.pipe_crc);
+			igt_pipe_crc_free(data.pipe_crc);
+			data.pipe_crc = NULL;
+		}
+		kmstest_set_vt_text_mode();
+		igt_display_fini(&data.display);
+	}
+}
diff --git a/tests/meson.build b/tests/meson.build
index 684de043..8e17a6ae 100644
--- a/tests/meson.build
+++ b/tests/meson.build
@@ -37,6 +37,7 @@ test_progs = [
 	'kms_fence_pin_leak',
 	'kms_flip',
 	'kms_flip_event_leak',
+	'kms_flip_scaled_crc',
 	'kms_flip_tiling',
 	'kms_force_connector_basic',
 	'kms_frontbuffer_tracking',
-- 
2.26.0

_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev

^ permalink raw reply related	[flat|nested] 15+ messages in thread

* [igt-dev] [PATCH i-g-t] tests/kms_flip_scaled_crc: add flip to downscaled subtests
@ 2020-08-27 15:36 Juha-Pekka Heikkila
  0 siblings, 0 replies; 15+ messages in thread
From: Juha-Pekka Heikkila @ 2020-08-27 15:36 UTC (permalink / raw)
  To: igt-dev

attempt to cause cdclk changes and stress scalers with flipping
to different size fb with different modifiers. Verify results
with crc.

Signed-off-by: Juha-Pekka Heikkila <juhapekka.heikkila@gmail.com>
---
 tests/Makefile.sources      |   1 +
 tests/kms_flip_scaled_crc.c | 241 ++++++++++++++++++++++++++++++++++++
 tests/meson.build           |   1 +
 3 files changed, 243 insertions(+)
 create mode 100644 tests/kms_flip_scaled_crc.c

diff --git a/tests/Makefile.sources b/tests/Makefile.sources
index 269b506d..fe9fb7ed 100644
--- a/tests/Makefile.sources
+++ b/tests/Makefile.sources
@@ -53,6 +53,7 @@ TESTS_progs = \
 	kms_fence_pin_leak \
 	kms_flip \
 	kms_flip_event_leak \
+	kms_flip_scaled_crc \
 	kms_flip_tiling \
 	kms_force_connector_basic \
 	kms_frontbuffer_tracking \
diff --git a/tests/kms_flip_scaled_crc.c b/tests/kms_flip_scaled_crc.c
new file mode 100644
index 00000000..f7654e92
--- /dev/null
+++ b/tests/kms_flip_scaled_crc.c
@@ -0,0 +1,241 @@
+/*
+ * Copyright © 2020 Intel Corporation
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice (including the next
+ * paragraph) shall be included in all copies or substantial portions of the
+ * Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
+ * IN THE SOFTWARE.
+ *
+ */
+
+#include "igt.h"
+#include "drmtest.h"
+#include <errno.h>
+#include <stdbool.h>
+#include <stdio.h>
+#include <string.h>
+#include <time.h>
+#include <cairo.h>
+
+IGT_TEST_DESCRIPTION("Test flipping between scaled/nonscaled framebuffers");
+
+typedef struct {
+	int drm_fd;
+	igt_display_t display;
+	igt_output_t *output;
+	enum pipe pipe;
+	uint32_t gen;
+	struct igt_fb small_fb;
+	struct igt_fb big_fb;
+	igt_pipe_crc_t *pipe_crc;
+} data_t;
+
+const struct {
+	const char * const name;
+	const char * const describe;
+	const uint64_t firstmodifier;
+	const uint32_t firstformat;
+	const uint64_t secondmodifier;
+	const uint32_t secondformat;
+} flip_scenario_test[] = {
+	{
+		"flip-32bpp-ytile-to-64bpp-ytile",
+		"Try to flip from 32bpp non scaled fb to 64bpp downscaled fb in attempt to stress cdclk reprogramming.",
+		LOCAL_I915_FORMAT_MOD_Y_TILED, DRM_FORMAT_XRGB8888,
+		LOCAL_I915_FORMAT_MOD_Y_TILED, DRM_FORMAT_XRGB16161616F
+	},
+	{
+		"flip-64bpp-ytile-to-32bpp-ytile",
+		"Try to flip from 64bpp non scaled fb to 32bpp downscaled fb.",
+		LOCAL_I915_FORMAT_MOD_Y_TILED, DRM_FORMAT_XRGB16161616F,
+		LOCAL_I915_FORMAT_MOD_Y_TILED, DRM_FORMAT_XRGB8888
+	},
+	{
+		"flip-64bpp-ytile-to-16bpp-ytile",
+		"Try to flip from 64bpp non scaled fb to 16bpp downscaled fb.",
+		LOCAL_I915_FORMAT_MOD_Y_TILED, DRM_FORMAT_XRGB16161616F,
+		LOCAL_I915_FORMAT_MOD_Y_TILED, DRM_FORMAT_RGB565
+	},
+	{
+		"flip-32bpp-ytileccs-to-64bpp-ytile",
+		"Try to flip from 32bpp ccs non scaled fb to 64bpp downscaled fb ytile.",
+		LOCAL_I915_FORMAT_MOD_Y_TILED_CCS, DRM_FORMAT_XRGB8888,
+		LOCAL_I915_FORMAT_MOD_Y_TILED, DRM_FORMAT_XRGB16161616F
+	},
+	{
+		"flip-32bpp-ytile-to-32bpp-ytilegen12rcccs",
+		"Try to flip from 32bpp non scaled fb to 32bpp downscaled gen12 rc ccs fb in attempt to stress cdclk reprogramming.",
+		LOCAL_I915_FORMAT_MOD_Y_TILED, DRM_FORMAT_XRGB8888,
+		LOCAL_I915_FORMAT_MOD_Y_TILED_GEN12_RC_CCS, DRM_FORMAT_XRGB8888
+	},
+	{
+		"flip-32bpp-ytile-to-32bpp-ytileccs",
+		"Try to flip from 32bpp non scaled ytiled fb to 32bpp downscaled ytiled ccs fb.",
+		LOCAL_I915_FORMAT_MOD_Y_TILED, DRM_FORMAT_XRGB8888,
+		LOCAL_I915_FORMAT_MOD_Y_TILED_CCS, DRM_FORMAT_XRGB8888
+	},
+	{
+		"flip-64bpp-ytile-to-32bpp-ytilercccs",
+		"Try to flip from 64bpp non scaled ytiled fb to 32bpp downscaled gen12 rc ccs fb.",
+		LOCAL_I915_FORMAT_MOD_Y_TILED, DRM_FORMAT_XRGB16161616F,
+		LOCAL_I915_FORMAT_MOD_Y_TILED_GEN12_RC_CCS, DRM_FORMAT_XRGB8888
+	},
+};
+
+static void setup_fb(data_t *data, struct igt_fb *newfb, uint32_t width,
+		     uint32_t height, uint64_t format, uint64_t modifier)
+{
+	struct drm_mode_fb_cmd2 f = {0};
+	cairo_t *cr;
+
+	igt_require(igt_display_has_format_mod(&data->display, format, modifier));
+
+	igt_create_bo_for_fb(data->drm_fd, width, height, format, modifier, newfb);
+	igt_assert(newfb->gem_handle > 0);
+
+	f.width = newfb->width;
+	f.height = newfb->height;
+	f.pixel_format = newfb->drm_format;
+	f.flags = LOCAL_DRM_MODE_FB_MODIFIERS;
+
+	for (int n = 0; n < newfb->num_planes; n++) {
+		f.handles[n] = newfb->gem_handle;
+		f.modifier[n] = newfb->modifier;
+		f.pitches[n] = newfb->strides[n];
+		f.offsets[n] = newfb->offsets[n];
+	}
+
+	cr = igt_get_cairo_ctx(data->drm_fd, newfb);
+	igt_paint_color(cr, 0, 0, newfb->width, newfb->height, 0, 1, 0);
+	igt_put_cairo_ctx(cr);
+
+	igt_assert(drmIoctl(data->drm_fd, LOCAL_DRM_IOCTL_MODE_ADDFB2, &f) == 0);
+	newfb->fb_id = f.fb_id;
+}
+
+static void free_fbs(data_t *data)
+{
+	igt_remove_fb(data->drm_fd, &data->small_fb);
+	igt_remove_fb(data->drm_fd, &data->big_fb);
+}
+
+static void test_flip_to_scaled(data_t *data, uint32_t index, enum pipe pipe, igt_output_t *output)
+{
+	igt_plane_t *primary;
+	igt_crc_t small_crc, big_crc;
+
+	drmModeModeInfo *mode;
+	struct drm_event_vblank ev;
+
+	if (data->big_fb.fb_id == 0) {
+		mode = igt_output_get_mode(output);
+
+		// big fb will be 4k unless running on older than ICL
+		if (data->gen < 11) {
+			setup_fb(data, &data->small_fb,
+				 min(mode->hdisplay, 640),
+				 min(mode->vdisplay, 480),
+				 flip_scenario_test[index].firstformat,
+				 flip_scenario_test[index].firstmodifier);
+
+			setup_fb(data, &data->big_fb,
+				 1280, 960,
+				 flip_scenario_test[index].secondformat,
+				 flip_scenario_test[index].secondmodifier);
+		} else {
+			setup_fb(data, &data->small_fb,
+				 min(mode->hdisplay, 1920),
+				 min(mode->vdisplay, 1080),
+				 flip_scenario_test[index].firstformat,
+				 flip_scenario_test[index].firstmodifier);
+
+			setup_fb(data, &data->big_fb,
+				 3840, 2160,
+				 flip_scenario_test[index].secondformat,
+				 flip_scenario_test[index].secondmodifier);
+		}
+	}
+
+	igt_output_set_pipe(output, pipe);
+
+	primary = igt_output_get_plane_type(output, DRM_PLANE_TYPE_PRIMARY);
+	igt_plane_set_fb(primary, NULL);
+
+	igt_display_commit_atomic(&data->display, DRM_MODE_ATOMIC_ALLOW_MODESET, NULL);
+	data->pipe_crc = igt_pipe_crc_new(data->drm_fd, pipe, INTEL_PIPE_CRC_SOURCE_AUTO);
+	igt_pipe_crc_start(data->pipe_crc);
+
+	igt_plane_set_position(primary, 0, 0);
+	igt_plane_set_fb(primary, &data->small_fb);
+
+	igt_display_commit_atomic(&data->display, DRM_MODE_ATOMIC_ALLOW_MODESET, NULL);
+	igt_pipe_crc_collect_crc(data->pipe_crc, &small_crc);
+
+	igt_plane_set_fb(primary, &data->big_fb);
+	igt_plane_set_size(primary, data->small_fb.width, data->small_fb.height);
+	igt_display_commit_atomic(&data->display, DRM_MODE_ATOMIC_ALLOW_MODESET  |
+						DRM_MODE_PAGE_FLIP_EVENT, NULL);
+
+	igt_assert(read(data->drm_fd, &ev, sizeof(ev)) == sizeof(ev));
+
+	igt_pipe_crc_collect_crc(data->pipe_crc, &big_crc);
+	igt_assert(igt_check_crc_equal(&small_crc, &big_crc));
+
+	igt_pipe_crc_stop(data->pipe_crc);
+	igt_pipe_crc_free(data->pipe_crc);
+	data->pipe_crc = NULL;
+	igt_output_set_pipe(output, PIPE_ANY);
+
+}
+
+igt_main
+{
+	enum pipe pipe;
+	data_t data = {};
+	igt_output_t *output;
+
+	igt_fixture {
+		data.drm_fd = drm_open_driver_master(DRIVER_INTEL);
+		igt_require_intel(data.drm_fd);
+		data.gen = intel_gen(intel_get_drm_devid(data.drm_fd));
+		igt_require(data.gen >= 9);
+		igt_display_require(&data.display, data.drm_fd);
+		igt_require(data.display.is_atomic);
+		igt_require_pipe_crc(data.drm_fd);
+		kmstest_set_vt_graphics_mode();
+	}
+
+	for (int index = 0; index < ARRAY_SIZE(flip_scenario_test); index++) {
+		igt_describe(flip_scenario_test[index].describe);
+		igt_subtest(flip_scenario_test[index].name) {
+			for_each_pipe_with_single_output(&data.display, pipe, output)
+				test_flip_to_scaled(&data, index, pipe, output);
+
+			free_fbs(&data);
+		}
+	}
+	igt_fixture {
+		free_fbs(&data);
+		if (data.pipe_crc) {
+			igt_pipe_crc_stop(data.pipe_crc);
+			igt_pipe_crc_free(data.pipe_crc);
+			data.pipe_crc = NULL;
+		}
+		kmstest_set_vt_text_mode();
+		igt_display_fini(&data.display);
+	}
+}
diff --git a/tests/meson.build b/tests/meson.build
index 684de043..8e17a6ae 100644
--- a/tests/meson.build
+++ b/tests/meson.build
@@ -37,6 +37,7 @@ test_progs = [
 	'kms_fence_pin_leak',
 	'kms_flip',
 	'kms_flip_event_leak',
+	'kms_flip_scaled_crc',
 	'kms_flip_tiling',
 	'kms_force_connector_basic',
 	'kms_frontbuffer_tracking',
-- 
2.26.0

_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev

^ permalink raw reply related	[flat|nested] 15+ messages in thread

end of thread, other threads:[~2020-09-22 11:25 UTC | newest]

Thread overview: 15+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-08-31 13:34 [igt-dev] [PATCH i-g-t] tests/kms_flip_scaled_crc: add flip to downscaled subtests Juha-Pekka Heikkila
2020-08-31 14:21 ` [igt-dev] ✗ Fi.CI.BAT: failure for tests/kms_flip_scaled_crc: add flip to downscaled subtests (rev5) Patchwork
2020-08-31 15:43 ` [igt-dev] ✓ Fi.CI.BAT: success for tests/kms_flip_scaled_crc: add flip to downscaled subtests (rev6) Patchwork
2020-08-31 19:17 ` [igt-dev] ✓ Fi.CI.BAT: success for tests/kms_flip_scaled_crc: add flip to downscaled subtests (rev7) Patchwork
2020-08-31 21:31 ` [igt-dev] ✓ Fi.CI.IGT: success for tests/kms_flip_scaled_crc: add flip to downscaled subtests (rev6) Patchwork
2020-09-01  2:13 ` [igt-dev] ✗ Fi.CI.IGT: failure for tests/kms_flip_scaled_crc: add flip to downscaled subtests (rev7) Patchwork
2020-09-01 11:38 ` [igt-dev] [PATCH i-g-t] tests/kms_flip_scaled_crc: add flip to downscaled subtests Maarten Lankhorst
2020-09-01 12:52   ` Juha-Pekka Heikkila
  -- strict thread matches above, loose matches on Subject: below --
2020-09-02  9:12 Juha-Pekka Heikkila
2020-09-04 14:31 ` Shankar, Uma
2020-09-14 11:58   ` Juha-Pekka Heikkila
2020-09-15 12:08     ` Shankar, Uma
2020-09-22 11:25       ` Shankar, Uma
2020-08-31  9:12 Juha-Pekka Heikkila
2020-08-27 15:36 Juha-Pekka Heikkila

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.