All of lore.kernel.org
 help / color / mirror / Atom feed
* [igt-dev] [PATCH i-g-t 0/8] VDSC YCbCr420 + Fractional BPP
@ 2023-01-09 15:28 Swati Sharma
  2023-01-09 15:28 ` [igt-dev] [PATCH i-g-t 1/8] lib/dsc: Move VDSC functions to separate lib file Swati Sharma
                   ` (10 more replies)
  0 siblings, 11 replies; 15+ messages in thread
From: Swati Sharma @ 2023-01-09 15:28 UTC (permalink / raw)
  To: igt-dev; +Cc: petri.latvala

In this series, fractional BPP patches are added
on top of VDSC YCbCr420 from
https://patchwork.freedesktop.org/series/110336/
Here, on top of previous changes dsc related functions
are moved from igt_kms to igt_dsc.
Also, kms_dsc_helper file is created to consolidate all
the wrapper functions used in kms_dsc.

Swati Sharma (8):
  lib/dsc: Move VDSC functions to separate lib file
  Move wrapper functions from kms_dsc to kms_dsc_helper
  lib/dsc: Add helpers for VDSC YCbCr420 debugfs entry
  tests/i915/kms_dsc: Prep work for extending val support for VDSC
    YCbCr420
  tests/i915/kms_dsc: Enable validation for VDSC YCbCr420
  lib/dsc: Add helpers for VDSC Fractional BPP debugfs entry
  tests/i915/kms_dsc: Enable validation for VDSC Fractional BPP
  tests/i915/kms_dsc: Add test summary

 lib/igt.h                   |   1 +
 lib/igt_dsc.c               | 302 +++++++++++++++++++++++++++++++++
 lib/igt_dsc.h               |  46 +++++
 lib/igt_kms.c               | 144 ++--------------
 lib/igt_kms.h               |  16 +-
 lib/meson.build             |   1 +
 tests/i915/kms_dsc.c        | 323 ++++++++++++++++--------------------
 tests/i915/kms_dsc_helper.c | 246 +++++++++++++++++++++++++++
 tests/i915/kms_dsc_helper.h |  74 +++++++++
 tests/meson.build           |  10 +-
 10 files changed, 842 insertions(+), 321 deletions(-)
 create mode 100644 lib/igt_dsc.c
 create mode 100644 lib/igt_dsc.h
 create mode 100644 tests/i915/kms_dsc_helper.c
 create mode 100644 tests/i915/kms_dsc_helper.h

-- 
2.25.1

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

* [igt-dev] [PATCH i-g-t 1/8] lib/dsc: Move VDSC functions to separate lib file
  2023-01-09 15:28 [igt-dev] [PATCH i-g-t 0/8] VDSC YCbCr420 + Fractional BPP Swati Sharma
@ 2023-01-09 15:28 ` Swati Sharma
  2023-01-09 15:28 ` [igt-dev] [PATCH i-g-t 2/8] Move wrapper functions from kms_dsc to kms_dsc_helper Swati Sharma
                   ` (9 subsequent siblings)
  10 siblings, 0 replies; 15+ messages in thread
From: Swati Sharma @ 2023-01-09 15:28 UTC (permalink / raw)
  To: igt-dev; +Cc: petri.latvala

Move dsc func() from lib/igt_kms to lib/igt_dsc. With
DSC1.2a new functions will be introduced. It's better
to create separate file having dsc specific functions
instead of overcrowding igt_kms.

Signed-off-by: Swati Sharma <swati2.sharma@intel.com>
---
 lib/igt.h       |   1 +
 lib/igt_dsc.c   | 151 ++++++++++++++++++++++++++++++++++++++++++++++++
 lib/igt_dsc.h   |  37 ++++++++++++
 lib/igt_kms.c   | 127 ----------------------------------------
 lib/igt_kms.h   |  10 ----
 lib/meson.build |   1 +
 6 files changed, 190 insertions(+), 137 deletions(-)
 create mode 100644 lib/igt_dsc.c
 create mode 100644 lib/igt_dsc.h

diff --git a/lib/igt.h b/lib/igt.h
index 88938109e..73b6f7727 100644
--- a/lib/igt.h
+++ b/lib/igt.h
@@ -40,6 +40,7 @@
 #include "igt_pipe_crc.h"
 #include "igt_pm.h"
 #include "igt_stats.h"
+#include "igt_dsc.h"
 #ifdef HAVE_CHAMELIUM
 #include "igt_alsa.h"
 #include "igt_audio.h"
diff --git a/lib/igt_dsc.c b/lib/igt_dsc.c
new file mode 100644
index 000000000..2d54c1ce5
--- /dev/null
+++ b/lib/igt_dsc.c
@@ -0,0 +1,151 @@
+/*
+ * Copyright © 2022 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 <unistd.h>
+#include <fcntl.h>
+#include <string.h>
+#include "igt_dsc.h"
+#include "igt_sysfs.h"
+
+static bool check_dsc_debugfs(int drmfd, char *connector_name, const char *check_str)
+{
+	char file_name[128] = {0};
+	char buf[512];
+
+	sprintf(file_name, "%s/i915_dsc_fec_support", connector_name);
+
+	igt_debugfs_read(drmfd, file_name, buf);
+
+	return strstr(buf, check_str);
+}
+
+static int write_dsc_debugfs(int drmfd, char *connector_name, const char *file_name,
+			     const char *write_buf)
+{
+	int debugfs_fd = igt_debugfs_dir(drmfd);
+	int len = strlen(write_buf);
+	int ret;
+	char file_path[128] = {0};
+
+	sprintf(file_path, "%s/%s", connector_name, file_name);
+
+	ret = igt_sysfs_write(debugfs_fd, file_path, write_buf, len);
+
+	close(debugfs_fd);
+
+	return ret;
+}
+
+/*
+ * igt_is_dsc_supported:
+ * @drmfd: A drm file descriptor
+ * @connector_name: Name of the libdrm connector we're going to use
+ *
+ * Returns: True if DSC is supported for the given connector, false otherwise.
+ */
+bool igt_is_dsc_supported(int drmfd, char *connector_name)
+{
+	return check_dsc_debugfs(drmfd, connector_name, "DSC_Sink_Support: yes");
+}
+
+/*
+ * igt_is_fec_supported:
+ * @drmfd: A drm file descriptor
+ * @connector_name: Name of the libdrm connector we're going to use
+ *
+ * Returns: True if FEC is supported for the given connector, false otherwise.
+ */
+bool igt_is_fec_supported(int drmfd, char *connector_name)
+{
+	return check_dsc_debugfs(drmfd, connector_name, "FEC_Sink_Support: yes");
+}
+
+/*
+ * igt_is_dsc_enabled:
+ * @drmfd: A drm file descriptor
+ * @connector_name: Name of the libdrm connector we're going to use
+ *
+ * Returns: True if DSC is enabled for the given connector, false otherwise.
+ */
+bool igt_is_dsc_enabled(int drmfd, char *connector_name)
+{
+	return check_dsc_debugfs(drmfd, connector_name, "DSC_Enabled: yes");
+}
+
+/*
+ * igt_is_force_dsc_enabled:
+ * @drmfd: A drm file descriptor
+ * @connector_name: Name of the libdrm connector we're going to use
+ *
+ * Returns: True if DSC is force enabled (via debugfs) for the given connector,
+ * false otherwise.
+ */
+bool igt_is_force_dsc_enabled(int drmfd, char *connector_name)
+{
+	return check_dsc_debugfs(drmfd, connector_name, "Force_DSC_Enable: yes");
+}
+
+/*
+ * igt_force_dsc_enable:
+ * @drmfd: A drm file descriptor
+ * @connector_name: Name of the libdrm connector we're going to use
+ *
+ * Returns: 1 on success or negative error code, in case of failure.
+ */
+int igt_force_dsc_enable(int drmfd, char *connector_name)
+{
+	return write_dsc_debugfs(drmfd, connector_name, "i915_dsc_fec_support", "1");
+}
+
+/*
+ * igt_force_dsc_enable_bpc:
+ * @drmfd: A drm file descriptor
+ * @connector_name: Name of the libdrm connector we're going to use
+ * @bpc: Input BPC
+ *
+ * Returns: No. of bytes written or negative error code, in case of failure.
+ */
+int igt_force_dsc_enable_bpc(int drmfd, char *connector_name, int bpc)
+{
+	char buf[20] = {0};
+
+	sprintf(buf, "%d", bpc);
+
+	return write_dsc_debugfs(drmfd, connector_name, "i915_dsc_bpc", buf);
+}
+
+/*
+ * igt_get_dsc_debugfs_fd:
+ * @drmfd: A drm file descriptor
+ * @connector_name: Name of the libdrm connector we're going to use
+ *
+ * Returns: fd of the DSC debugfs for the given connector, else returns -1.
+ */
+int igt_get_dsc_debugfs_fd(int drmfd, char *connector_name)
+{
+	char file_name[128] = {0};
+
+	sprintf(file_name, "%s/i915_dsc_fec_support", connector_name);
+
+	return openat(igt_debugfs_dir(drmfd), file_name, O_WRONLY);
+}
diff --git a/lib/igt_dsc.h b/lib/igt_dsc.h
new file mode 100644
index 000000000..047db42eb
--- /dev/null
+++ b/lib/igt_dsc.h
@@ -0,0 +1,37 @@
+/*
+ * Copyright © 2023 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.
+ */
+
+#ifndef IGT_DSC_H
+#define IGT_DSC_H
+
+#include "igt_fb.h"
+
+bool igt_is_dsc_supported(int drmfd, char *connector_name);
+bool igt_is_fec_supported(int drmfd, char *connector_name);
+bool igt_is_dsc_enabled(int drmfd, char *connector_name);
+bool igt_is_force_dsc_enabled(int drmfd, char *connector_name);
+int igt_force_dsc_enable(int drmfd, char *connector_name);
+int igt_force_dsc_enable_bpc(int drmfd, char *connector_name, int bpc);
+int igt_get_dsc_debugfs_fd(int drmfd, char *connector_name);
+
+#endif
diff --git a/lib/igt_kms.c b/lib/igt_kms.c
index b4a98ae17..31e6dfda0 100644
--- a/lib/igt_kms.c
+++ b/lib/igt_kms.c
@@ -5564,133 +5564,6 @@ void igt_dump_crtcs_fd(int drmfd)
 	drmModeFreeResources(mode_resources);
 }
 
-static
-bool check_dsc_debugfs(int drmfd, char *connector_name,
-		       const char *check_str)
-{
-	char file_name[128] = {0};
-	char buf[512];
-
-	sprintf(file_name, "%s/i915_dsc_fec_support", connector_name);
-
-	igt_debugfs_read(drmfd, file_name, buf);
-
-	return strstr(buf, check_str);
-}
-
-static
-int write_dsc_debugfs(int drmfd, char *connector_name,
-		      const char *file_name,
-		      const char *write_buf)
-{
-	int debugfs_fd = igt_debugfs_dir(drmfd);
-	int len = strlen(write_buf);
-	int ret;
-	char file_path[128] = {0};
-
-	sprintf(file_path, "%s/%s", connector_name, file_name);
-
-	ret = igt_sysfs_write(debugfs_fd, file_path, write_buf, len);
-
-	close(debugfs_fd);
-
-	return ret;
-}
-
-/*
- * igt_is_dsc_supported:
- * @drmfd: A drm file descriptor
- * @connector_name: Name of the libdrm connector we're going to use
- *
- * Returns: True if DSC is supported for the given connector, false otherwise.
- */
-bool igt_is_dsc_supported(int drmfd, char *connector_name)
-{
-	return check_dsc_debugfs(drmfd, connector_name, "DSC_Sink_Support: yes");
-}
-
-/*
- * igt_is_fec_supported:
- * @drmfd: A drm file descriptor
- * @connector_name: Name of the libdrm connector we're going to use
- *
- * Returns: True if FEC is supported for the given connector, false otherwise.
- */
-bool igt_is_fec_supported(int drmfd, char *connector_name)
-{
-	return check_dsc_debugfs(drmfd, connector_name, "FEC_Sink_Support: yes");
-}
-
-/*
- * igt_is_dsc_enabled:
- * @drmfd: A drm file descriptor
- * @connector_name: Name of the libdrm connector we're going to use
- *
- * Returns: True if DSC is enabled for the given connector, false otherwise.
- */
-bool igt_is_dsc_enabled(int drmfd, char *connector_name)
-{
-	return check_dsc_debugfs(drmfd, connector_name, "DSC_Enabled: yes");
-}
-
-/*
- * igt_is_force_dsc_enabled:
- * @drmfd: A drm file descriptor
- * @connector_name: Name of the libdrm connector we're going to use
- *
- * Returns: True if DSC is force enabled (via debugfs) for the given connector,
- * false otherwise.
- */
-bool igt_is_force_dsc_enabled(int drmfd, char *connector_name)
-{
-	return check_dsc_debugfs(drmfd, connector_name, "Force_DSC_Enable: yes");
-}
-
-/*
- * igt_force_dsc_enable:
- * @drmfd: A drm file descriptor
- * @connector_name: Name of the libdrm connector we're going to use
- *
- * Returns: 1 on success or negative error code, in case of failure.
- */
-int igt_force_dsc_enable(int drmfd, char *connector_name)
-{
-	return write_dsc_debugfs(drmfd, connector_name, "i915_dsc_fec_support", "1");
-}
-
-/*
- * igt_force_dsc_enable_bpc:
- * @drmfd: A drm file descriptor
- * @connector_name: Name of the libdrm connector we're going to use
- * @bpc: Input BPC
- *
- * Returns: No. of bytes written or negative error code, in case of failure.
- */
-int igt_force_dsc_enable_bpc(int drmfd, char *connector_name, int bpc)
-{
-	char buf[20] = {0};
-
-	sprintf(buf, "%d", bpc);
-
-	return write_dsc_debugfs(drmfd, connector_name, "i915_dsc_bpc", buf);
-}
-
-/*
- * igt_get_dsc_debugfs_fd:
- * @drmfd: A drm file descriptor
- * @connector_name: Name of the libdrm connector we're going to use
- *
- * Returns: fd of the DSC debugfs for the given connector, else returns -1.
- */
-int igt_get_dsc_debugfs_fd(int drmfd, char *connector_name)
-{
-	char file_name[128] = {0};
-
-	sprintf(file_name, "%s/i915_dsc_fec_support", connector_name);
-
-	return openat(igt_debugfs_dir(drmfd), file_name, O_WRONLY);
-}
-
 /*
  * igt_get_output_max_bpc:
  * @drmfd: A drm file descriptor
diff --git a/lib/igt_kms.h b/lib/igt_kms.h
index 7a00d2045..be5482e08 100644
--- a/lib/igt_kms.h
+++ b/lib/igt_kms.h
@@ -974,16 +974,6 @@ void igt_require_pipe(igt_display_t *display,
 void igt_dump_connectors_fd(int drmfd);
 void igt_dump_crtcs_fd(int drmfd);
 bool igt_override_all_active_output_modes_to_fit_bw(igt_display_t *display);
-
-bool igt_is_dsc_supported(int drmfd, char *connector_name);
-bool igt_is_fec_supported(int drmfd, char *connector_name);
-bool igt_is_dsc_enabled(int drmfd, char *connector_name);
-bool igt_is_force_dsc_enabled(int drmfd, char *connector_name);
-int igt_force_dsc_enable(int drmfd, char *connector_name);
-int igt_force_dsc_enable_bpc(int drmfd, char *connector_name,
-			     int bpc);
-int igt_get_dsc_debugfs_fd(int drmfd, char *connector_name);
-
 unsigned int igt_get_output_max_bpc(int drmfd, char *connector_name);
 unsigned int igt_get_pipe_current_bpc(int drmfd, enum pipe pipe);
 void igt_assert_output_bpc_equal(int drmfd, enum pipe pipe,
diff --git a/lib/meson.build b/lib/meson.build
index c79e3e952..1ba64bfd4 100644
--- a/lib/meson.build
+++ b/lib/meson.build
@@ -96,6 +96,7 @@ lib_sources = [
 	'igt_infoframe.c',
 	'veboxcopy_gen12.c',
 	'igt_msm.c',
+	'igt_dsc.c',
 ]
 
 lib_deps = [
-- 
2.25.1

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

* [igt-dev] [PATCH i-g-t 2/8] Move wrapper functions from kms_dsc to kms_dsc_helper
  2023-01-09 15:28 [igt-dev] [PATCH i-g-t 0/8] VDSC YCbCr420 + Fractional BPP Swati Sharma
  2023-01-09 15:28 ` [igt-dev] [PATCH i-g-t 1/8] lib/dsc: Move VDSC functions to separate lib file Swati Sharma
@ 2023-01-09 15:28 ` Swati Sharma
  2023-01-10 10:54   ` Hogander, Jouni
  2023-01-09 15:28 ` [igt-dev] [PATCH i-g-t 3/8] lib/dsc: Add helpers for VDSC YCbCr420 debugfs entry Swati Sharma
                   ` (8 subsequent siblings)
  10 siblings, 1 reply; 15+ messages in thread
From: Swati Sharma @ 2023-01-09 15:28 UTC (permalink / raw)
  To: igt-dev; +Cc: petri.latvala

To add dsc concurrent tests, these wrapper functions can be
reused. Lets create separate helper file to avoid code duplication.

Signed-off-by: Swati Sharma <swati2.sharma@intel.com>
---
 tests/i915/kms_dsc.c        | 130 +----------------------------------
 tests/i915/kms_dsc_helper.c | 131 ++++++++++++++++++++++++++++++++++++
 tests/i915/kms_dsc_helper.h |  65 ++++++++++++++++++
 tests/meson.build           |  10 ++-
 4 files changed, 207 insertions(+), 129 deletions(-)
 create mode 100644 tests/i915/kms_dsc_helper.c
 create mode 100644 tests/i915/kms_dsc_helper.h

diff --git a/tests/i915/kms_dsc.c b/tests/i915/kms_dsc.c
index 330fc050b..0db6cc2ef 100644
--- a/tests/i915/kms_dsc.c
+++ b/tests/i915/kms_dsc.c
@@ -29,22 +29,8 @@
  * Manasi Navare <manasi.d.navare@intel.com>
  *
  */
-#include "igt.h"
-#include "igt_sysfs.h"
-#include <errno.h>
-#include <getopt.h>
-#include <math.h>
-#include <stdint.h>
-#include <stdbool.h>
-#include <strings.h>
-#include <unistd.h>
-#include <stdlib.h>
-#include <signal.h>
-#include <time.h>
-#include <fcntl.h>
-#include <termios.h>
-
-#define HDISPLAY_5K	5120
+
+#include "kms_dsc_helper.h"
 
 IGT_TEST_DESCRIPTION("Test to validate display stream compression");
 
@@ -53,20 +39,6 @@ enum dsc_test_type {
 	TEST_DSC_BPC
 };
 
-typedef struct {
-	int drm_fd;
-	uint32_t devid;
-	igt_display_t display;
-	struct igt_fb fb_test_pattern;
-	igt_output_t *output;
-	int input_bpc;
-	int n_pipes;
-	enum pipe pipe;
-} data_t;
-
-bool force_dsc_en_orig;
-int force_dsc_restore_fd = -1;
-
 const struct {
 	const int format;
 	const char format_str[20];
@@ -84,56 +56,6 @@ static inline void manual(const char *expected)
 	igt_debug_interactive_mode_check("all", expected);
 }
 
-static void force_dsc_enable(data_t *data)
-{
-	int ret;
-
-	igt_debug("Forcing DSC enable on %s\n", data->output->name);
-	ret = igt_force_dsc_enable(data->drm_fd,
-				   data->output->name);
-	igt_assert_f(ret > 0, "debugfs_write failed");
-}
-
-static void force_dsc_enable_bpc(data_t *data)
-{
-	int ret;
-
-	igt_debug("Forcing input DSC BPC to %d on %s\n",
-		  data->input_bpc, data->output->name);
-	ret = igt_force_dsc_enable_bpc(data->drm_fd,
-				       data->output->name,
-				       data->input_bpc);
-	igt_assert_f(ret > 0, "debugfs_write failed");
-}
-
-static void save_force_dsc_en(data_t *data)
-{
-	force_dsc_en_orig =
-		igt_is_force_dsc_enabled(data->drm_fd,
-					 data->output->name);
-	force_dsc_restore_fd =
-		igt_get_dsc_debugfs_fd(data->drm_fd,
-				       data->output->name);
-	igt_assert(force_dsc_restore_fd >= 0);
-}
-
-static void restore_force_dsc_en(void)
-{
-	if (force_dsc_restore_fd < 0)
-		return;
-
-	igt_debug("Restoring DSC enable\n");
-	igt_assert(write(force_dsc_restore_fd, force_dsc_en_orig ? "1" : "0", 1) == 1);
-
-	close(force_dsc_restore_fd);
-	force_dsc_restore_fd = -1;
-}
-
-static void kms_dsc_exit_handler(int sig)
-{
-	restore_force_dsc_en();
-}
-
 static drmModeModeInfo *get_highres_mode(igt_output_t *output)
 {
 	drmModeConnector *connector = output->config.connector;
@@ -146,26 +68,6 @@ static drmModeModeInfo *get_highres_mode(igt_output_t *output)
 	return highest_mode;
 }
 
-static bool check_dsc_on_connector(data_t *data)
-{
-	igt_output_t *output = data->output;
-
-	if (!igt_is_dsc_supported(data->drm_fd, output->name)) {
-		igt_debug("DSC not supported on connector %s\n",
-			  output->name);
-		return false;
-	}
-
-	if (!output_is_internal_panel(output) &&
-	    !igt_is_fec_supported(data->drm_fd, output->name)) {
-		igt_debug("DSC cannot be enabled without FEC on %s\n",
-			  output->name);
-		return false;
-	}
-
-	return true;
-}
-
 static bool check_big_joiner_pipe_constraint(data_t *data)
 {
 	igt_output_t *output = data->output;
@@ -181,34 +83,6 @@ static bool check_big_joiner_pipe_constraint(data_t *data)
 	return true;
 }
 
-static bool check_gen11_dp_constraint(data_t *data)
-{
-	igt_output_t *output = data->output;
-	uint32_t devid = intel_get_drm_devid(data->drm_fd);
-	drmModeConnector *connector = output->config.connector;
-
-	if ((connector->connector_type == DRM_MODE_CONNECTOR_DisplayPort) &&
-	    (data->pipe == PIPE_A) && IS_GEN11(devid)) {
-		igt_debug("DSC not supported on pipe A on external DP in gen11 platforms\n");
-		return false;
-	}
-
-	return true;
-}
-
-/* Max DSC Input BPC for ICL is 10 and for TGL+ is 12 */
-static bool check_gen11_bpc_constraint(data_t *data)
-{
-	uint32_t devid = intel_get_drm_devid(data->drm_fd);
-
-	if (IS_GEN11(devid) && data->input_bpc == 12) {
-		igt_debug("Input bpc 12 not supported on gen11 platforms\n");
-		return false;
-	}
-
-	return true;
-}
-
 static void test_cleanup(data_t *data)
 {
 	igt_output_t *output = data->output;
diff --git a/tests/i915/kms_dsc_helper.c b/tests/i915/kms_dsc_helper.c
new file mode 100644
index 000000000..183a31457
--- /dev/null
+++ b/tests/i915/kms_dsc_helper.c
@@ -0,0 +1,131 @@
+/*
+ * Copyright © 2023 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.
+ *
+ * Displayport Display Stream Compression test
+ * Until the CRC support is added this needs to be invoked with --interactive
+ * to manually verify if the test pattern is seen without corruption for each
+ * subtest.
+ *
+ */
+
+#include "kms_dsc_helper.h"
+
+bool force_dsc_en_orig;
+int force_dsc_restore_fd = -1;
+
+void force_dsc_enable(data_t *data)
+{
+	int ret;
+
+	igt_debug("Forcing DSC enable on %s\n", data->output->name);
+	ret = igt_force_dsc_enable(data->drm_fd,
+				   data->output->name);
+	igt_assert_f(ret > 0, "debugfs_write failed");
+}
+
+void force_dsc_enable_bpc(data_t *data)
+{
+	int ret;
+
+	igt_debug("Forcing input DSC BPC to %d on %s\n",
+		  data->input_bpc, data->output->name);
+	ret = igt_force_dsc_enable_bpc(data->drm_fd,
+				       data->output->name,
+				       data->input_bpc);
+	igt_assert_f(ret > 0, "debugfs_write failed");
+}
+
+void save_force_dsc_en(data_t *data)
+{
+	force_dsc_en_orig =
+		igt_is_force_dsc_enabled(data->drm_fd,
+					 data->output->name);
+	force_dsc_restore_fd =
+		igt_get_dsc_debugfs_fd(data->drm_fd,
+				       data->output->name);
+	igt_assert(force_dsc_restore_fd >= 0);
+}
+
+void restore_force_dsc_en(void)
+{
+	if (force_dsc_restore_fd < 0)
+		return;
+
+	igt_debug("Restoring DSC enable\n");
+	igt_assert(write(force_dsc_restore_fd, force_dsc_en_orig ? "1" : "0", 1) == 1);
+
+	close(force_dsc_restore_fd);
+	force_dsc_restore_fd = -1;
+}
+
+void kms_dsc_exit_handler(int sig)
+{
+	restore_force_dsc_en();
+}
+
+bool check_dsc_on_connector(data_t *data)
+{
+	igt_output_t *output = data->output;
+
+	if (!igt_is_dsc_supported(data->drm_fd, output->name)) {
+		igt_debug("DSC not supported on connector %s\n",
+			  output->name);
+		return false;
+	}
+
+	if (!output_is_internal_panel(output) &&
+	    !igt_is_fec_supported(data->drm_fd, output->name)) {
+		igt_debug("DSC cannot be enabled without FEC on %s\n",
+			  output->name);
+		return false;
+	}
+
+	return true;
+}
+
+bool check_gen11_dp_constraint(data_t *data)
+{
+	igt_output_t *output = data->output;
+	uint32_t devid = intel_get_drm_devid(data->drm_fd);
+	drmModeConnector *connector = output->config.connector;
+
+	if ((connector->connector_type == DRM_MODE_CONNECTOR_DisplayPort) &&
+	    (data->pipe == PIPE_A) && IS_GEN11(devid)) {
+		igt_debug("DSC not supported on pipe A on external DP in gen11 platforms\n");
+		return false;
+	}
+
+	return true;
+}
+
+/* Max DSC Input BPC for ICL is 10 and for TGL+ is 12 */
+bool check_gen11_bpc_constraint(data_t *data)
+{
+	uint32_t devid = intel_get_drm_devid(data->drm_fd);
+
+	if (IS_GEN11(devid) && data->input_bpc == 12) {
+		igt_debug("Input bpc 12 not supported on gen11 platforms\n");
+		return false;
+	}
+
+	return true;
+}
diff --git a/tests/i915/kms_dsc_helper.h b/tests/i915/kms_dsc_helper.h
new file mode 100644
index 000000000..0d93f7369
--- /dev/null
+++ b/tests/i915/kms_dsc_helper.h
@@ -0,0 +1,65 @@
+/*
+ * Copyright © 2023 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.
+ *
+ */
+
+#ifndef IGT_KMS_DSC_HELPER_H
+#define IGT_KMS_DSC_HELPER_H
+
+#include "igt.h"
+#include "igt_sysfs.h"
+#include <errno.h>
+#include <getopt.h>
+#include <math.h>
+#include <stdint.h>
+#include <stdbool.h>
+#include <strings.h>
+#include <unistd.h>
+#include <stdlib.h>
+#include <signal.h>
+#include <time.h>
+#include <fcntl.h>
+#include <termios.h>
+
+#define HDISPLAY_5K	5120
+
+typedef struct {
+	int drm_fd;
+	uint32_t devid;
+	igt_display_t display;
+	struct igt_fb fb_test_pattern;
+	igt_output_t *output;
+	int input_bpc;
+	int n_pipes;
+	enum pipe pipe;
+} data_t;
+
+void force_dsc_enable_bpc(data_t *data);
+void force_dsc_enable(data_t *data);
+void save_force_dsc_en(data_t *data);
+void restore_force_dsc_en(void);
+void kms_dsc_exit_handler(int sig);
+bool check_dsc_on_connector(data_t *data);
+bool check_gen11_dp_constraint(data_t *data);
+bool check_gen11_bpc_constraint(data_t *data);
+
+#endif
diff --git a/tests/meson.build b/tests/meson.build
index cb4289985..e63d62249 100644
--- a/tests/meson.build
+++ b/tests/meson.build
@@ -221,7 +221,6 @@ i915_progs = [
 	'kms_ccs',
 	'kms_cdclk',
 	'kms_draw_crc',
-	'kms_dsc',
 	'kms_fbcon_fbt',
 	'kms_fence_pin_leak',
 	'kms_flip_scaled_crc',
@@ -424,6 +423,15 @@ test_executables += executable('kms_color',
 	   install : true)
 test_list += 'kms_color'
 
+test_executables += executable('kms_dsc',
+	   [ join_paths('i915', 'kms_dsc.c'), join_paths ('i915', 'kms_dsc_helper.c')],
+	   dependencies : test_deps,
+	   install_dir : libexecdir,
+	   install_rpath : libexecdir_rpathdir,
+	   install : true)
+test_list += 'kms_dsc'
+
+
 if chamelium.found()
        test_executables += executable('kms_color_chamelium',
                              [ 'chamelium/kms_color_chamelium.c', 'kms_color_helper.c' ],
-- 
2.25.1

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

* [igt-dev] [PATCH i-g-t 3/8] lib/dsc: Add helpers for VDSC YCbCr420 debugfs entry
  2023-01-09 15:28 [igt-dev] [PATCH i-g-t 0/8] VDSC YCbCr420 + Fractional BPP Swati Sharma
  2023-01-09 15:28 ` [igt-dev] [PATCH i-g-t 1/8] lib/dsc: Move VDSC functions to separate lib file Swati Sharma
  2023-01-09 15:28 ` [igt-dev] [PATCH i-g-t 2/8] Move wrapper functions from kms_dsc to kms_dsc_helper Swati Sharma
@ 2023-01-09 15:28 ` Swati Sharma
  2023-01-09 15:28 ` [igt-dev] [PATCH i-g-t 4/8] tests/i915/kms_dsc: Prep work for extending val support for VDSC YCbCr420 Swati Sharma
                   ` (7 subsequent siblings)
  10 siblings, 0 replies; 15+ messages in thread
From: Swati Sharma @ 2023-01-09 15:28 UTC (permalink / raw)
  To: igt-dev; +Cc: petri.latvala

Helper functions are added for getting/setting VDSC YCbCr420 debugfs entry.

Signed-off-by: Swati Sharma <swati2.sharma@intel.com>
---
 lib/igt_dsc.c | 67 +++++++++++++++++++++++++++++++++++++++++++++++++++
 lib/igt_dsc.h |  4 +++
 2 files changed, 71 insertions(+)

diff --git a/lib/igt_dsc.c b/lib/igt_dsc.c
index 2d54c1ce5..d02c364aa 100644
--- a/lib/igt_dsc.c
+++ b/lib/igt_dsc.c
@@ -149,3 +149,70 @@ int igt_get_dsc_debugfs_fd(int drmfd, char *connector_name)
 
 	return openat(igt_debugfs_dir(drmfd), file_name, O_WRONLY);
 }
+
+static
+bool check_dsc_ycbcr420_debugfs(int drmfd, char *connector_name,
+                                const char *check_str)
+{
+	char file_name[128] = {0};
+	char buf[512];
+
+	sprintf(file_name, "%s/i915_dsc_ycbcr420", connector_name);
+
+	igt_debugfs_read(drmfd, file_name, buf);
+
+	return strstr(buf, check_str);
+}
+
+/*
+ * igt_is_dsc_ycbcr420_supported:
+ * @drmfd: A drm file descriptor
+ * @connector_name: Name of the libdrm connector we're going to use
+ *
+ * Returns: True if DSC YCbCr420 is supported for the given connector, false otherwise.
+ */
+bool igt_is_dsc_ycbcr420_supported(int drmfd, char *connector_name)
+{
+	return check_dsc_debugfs(drmfd, connector_name, "DSC_YCBCR420_Sink_Support: yes");
+}
+
+/*
+ * igt_is_force_dsc_ycbcr420_enabled:
+ * @drmfd: A drm file descriptor
+ * @connector_name: Name of the libdrm connector we're going to use
+ *
+ * Returns: True if DSC YCbCr420 is force enabled (via debugfs) for the given connector,
+ * false otherwise.
+ */
+bool igt_is_force_dsc_ycbcr420_enabled(int drmfd, char *connector_name)
+{
+	return check_dsc_ycbcr420_debugfs(drmfd, connector_name, "Force_DSC_YCBCR420_Enable: yes");
+}
+
+/*
+ * igt_force_dsc_ycbcr420_enable:
+ * @drmfd: A drm file descriptor
+ * @connector_name: Name of the libdrm connector we're going to use
+ *
+ * Returns: 1 on success or negative error code, in case of failure.
+ */
+int igt_force_dsc_ycbcr420_enable(int drmfd, char *connector_name)
+{
+	return write_dsc_debugfs(drmfd, connector_name, "i915_dsc_ycbcr420", "1");
+}
+
+/*
+ * igt_get_dsc_ycbcr420_debugfs_fd:
+ * @drmfd: A drm file descriptor
+ * @connector_name: Name of the libdrm connector we're going to use
+ *
+ * Returns: fd of the DSC YCbCr420 debugfs for the given connector, else returns -1.
+ */
+int igt_get_dsc_ycbcr420_debugfs_fd(int drmfd, char *connector_name)
+{
+	char file_name[128] = {0};
+
+	sprintf(file_name, "%s/i915_dsc_ycbcr420", connector_name);
+
+	return openat(igt_debugfs_dir(drmfd), file_name, O_WRONLY);
+}
diff --git a/lib/igt_dsc.h b/lib/igt_dsc.h
index 047db42eb..eeb4593be 100644
--- a/lib/igt_dsc.h
+++ b/lib/igt_dsc.h
@@ -33,5 +33,9 @@ bool igt_is_force_dsc_enabled(int drmfd, char *connector_name);
 int igt_force_dsc_enable(int drmfd, char *connector_name);
 int igt_force_dsc_enable_bpc(int drmfd, char *connector_name, int bpc);
 int igt_get_dsc_debugfs_fd(int drmfd, char *connector_name);
+bool igt_is_dsc_ycbcr420_supported(int drmfd, char *connector_name);
+bool igt_is_force_dsc_ycbcr420_enabled(int drmfd, char *connector_name);
+int igt_force_dsc_ycbcr420_enable(int drmfd, char *connector_name);
+int igt_get_dsc_ycbcr420_debugfs_fd(int drmfd, char *connector_name);
 
 #endif
-- 
2.25.1

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

* [igt-dev] [PATCH i-g-t 4/8] tests/i915/kms_dsc: Prep work for extending val support for VDSC YCbCr420
  2023-01-09 15:28 [igt-dev] [PATCH i-g-t 0/8] VDSC YCbCr420 + Fractional BPP Swati Sharma
                   ` (2 preceding siblings ...)
  2023-01-09 15:28 ` [igt-dev] [PATCH i-g-t 3/8] lib/dsc: Add helpers for VDSC YCbCr420 debugfs entry Swati Sharma
@ 2023-01-09 15:28 ` Swati Sharma
  2023-01-09 15:28 ` [igt-dev] [PATCH i-g-t 5/8] tests/i915/kms_dsc: Enable validation " Swati Sharma
                   ` (6 subsequent siblings)
  10 siblings, 0 replies; 15+ messages in thread
From: Swati Sharma @ 2023-01-09 15:28 UTC (permalink / raw)
  To: igt-dev; +Cc: petri.latvala

Functions are modified to accommodate changes for VDSC YCbCr420.

Signed-off-by: Swati Sharma <swati2.sharma@intel.com>
---
 tests/i915/kms_dsc.c        | 20 ++++++++++++++------
 tests/i915/kms_dsc_helper.c |  4 ++--
 tests/i915/kms_dsc_helper.h |  1 +
 3 files changed, 17 insertions(+), 8 deletions(-)

diff --git a/tests/i915/kms_dsc.c b/tests/i915/kms_dsc.c
index 0db6cc2ef..f264d37a7 100644
--- a/tests/i915/kms_dsc.c
+++ b/tests/i915/kms_dsc.c
@@ -96,7 +96,8 @@ static void test_cleanup(data_t *data)
 }
 
 /* re-probe connectors and do a modeset with DSC */
-static void update_display(data_t *data, enum dsc_test_type test_type, unsigned int plane_format)
+static void update_display(data_t *data, enum dsc_test_type test_type,
+			   unsigned int plane_format)
 {
 	bool enabled;
 	igt_plane_t *primary;
@@ -198,6 +199,12 @@ static void test_dsc(data_t *data, enum dsc_test_type test_type, int bpc,
 	}
 }
 
+static void run_test(data_t *data, enum dsc_test_type test_type, int bpc,
+		     unsigned int plane_format)
+{
+	test_dsc(data, test_type, bpc, plane_format);
+}
+
 igt_main
 {
 	data_t data = {};
@@ -206,11 +213,12 @@ igt_main
 	igt_fixture {
 		data.drm_fd = drm_open_driver_master(DRIVER_INTEL);
 		data.devid = intel_get_drm_devid(data.drm_fd);
+		data.disp_ver = intel_display_ver(data.devid);
 		kmstest_set_vt_graphics_mode();
 		igt_install_exit_handler(kms_dsc_exit_handler);
 		igt_display_require(&data.display, data.drm_fd);
 		igt_display_require_output(&data.display);
-		igt_require(intel_display_ver(data.devid) >= 11);
+		igt_require(data.disp_ver >= 11);
 		data.n_pipes = 0;
 		for_each_pipe(&data.display, i)
 			data.n_pipes++;
@@ -220,14 +228,14 @@ igt_main
 		     "by a connector by forcing DSC on all connectors that support it "
 		     "with default parameters");
 	igt_subtest_with_dynamic("basic-dsc")
-			test_dsc(&data, TEST_DSC_BASIC, 0, DRM_FORMAT_XRGB8888);
+			run_test(&data, TEST_DSC_BASIC, 0, DRM_FORMAT_XRGB8888);
 
 	igt_describe("Tests basic display stream compression functionality if supported "
 		     "by a connector by forcing DSC on all connectors that support it "
 		     "with default parameters and creating fb with diff formats");
 	igt_subtest_with_dynamic("dsc-with-formats") {
 		for (int k = 0; k < ARRAY_SIZE(format_list); k++)
-			test_dsc(&data, TEST_DSC_BASIC, 0, format_list[k].format);
+			run_test(&data, TEST_DSC_BASIC, 0, format_list[k].format);
 	}
 
 	igt_describe("Tests basic display stream compression functionality if supported "
@@ -235,7 +243,7 @@ igt_main
 		     "with certain input BPC for the connector");
 	igt_subtest_with_dynamic("dsc-with-bpc") {
 		for (int j = 0; j < ARRAY_SIZE(bpc_list); j++)
-			test_dsc(&data, TEST_DSC_BPC, bpc_list[j], DRM_FORMAT_XRGB8888);
+			run_test(&data, TEST_DSC_BPC, bpc_list[j], DRM_FORMAT_XRGB8888);
 	}
 
 	igt_describe("Tests basic display stream compression functionality if supported "
@@ -244,7 +252,7 @@ igt_main
 	igt_subtest_with_dynamic("dsc-with-bpc-formats") {
 		for (int j = 0; j < ARRAY_SIZE(bpc_list); j++) {
 			for (int k = 0; k < ARRAY_SIZE(format_list); k++) {
-				test_dsc(&data, TEST_DSC_BPC, bpc_list[j], format_list[k].format);
+				run_test(&data, TEST_DSC_BPC, bpc_list[j], format_list[k].format);
 			}
 		}
 	}
diff --git a/tests/i915/kms_dsc_helper.c b/tests/i915/kms_dsc_helper.c
index 183a31457..7b75be82e 100644
--- a/tests/i915/kms_dsc_helper.c
+++ b/tests/i915/kms_dsc_helper.c
@@ -39,7 +39,7 @@ void force_dsc_enable(data_t *data)
 	igt_debug("Forcing DSC enable on %s\n", data->output->name);
 	ret = igt_force_dsc_enable(data->drm_fd,
 				   data->output->name);
-	igt_assert_f(ret > 0, "debugfs_write failed");
+	igt_assert_f(ret > 0, "forcing dsc enable debugfs_write failed\n");
 }
 
 void force_dsc_enable_bpc(data_t *data)
@@ -51,7 +51,7 @@ void force_dsc_enable_bpc(data_t *data)
 	ret = igt_force_dsc_enable_bpc(data->drm_fd,
 				       data->output->name,
 				       data->input_bpc);
-	igt_assert_f(ret > 0, "debugfs_write failed");
+	igt_assert_f(ret > 0, "forcing input dsc bpc debugfs_write failed\n");
 }
 
 void save_force_dsc_en(data_t *data)
diff --git a/tests/i915/kms_dsc_helper.h b/tests/i915/kms_dsc_helper.h
index 0d93f7369..cfca2ed98 100644
--- a/tests/i915/kms_dsc_helper.h
+++ b/tests/i915/kms_dsc_helper.h
@@ -50,6 +50,7 @@ typedef struct {
 	igt_output_t *output;
 	int input_bpc;
 	int n_pipes;
+	int disp_ver;
 	enum pipe pipe;
 } data_t;
 
-- 
2.25.1

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

* [igt-dev] [PATCH i-g-t 5/8] tests/i915/kms_dsc: Enable validation for VDSC YCbCr420
  2023-01-09 15:28 [igt-dev] [PATCH i-g-t 0/8] VDSC YCbCr420 + Fractional BPP Swati Sharma
                   ` (3 preceding siblings ...)
  2023-01-09 15:28 ` [igt-dev] [PATCH i-g-t 4/8] tests/i915/kms_dsc: Prep work for extending val support for VDSC YCbCr420 Swati Sharma
@ 2023-01-09 15:28 ` Swati Sharma
  2023-01-10 11:56   ` Hogander, Jouni
  2023-01-09 15:28 ` [igt-dev] [PATCH i-g-t 6/8] lib/dsc: Add helpers for VDSC Fractional BPP debugfs entry Swati Sharma
                   ` (5 subsequent siblings)
  10 siblings, 1 reply; 15+ messages in thread
From: Swati Sharma @ 2023-01-09 15:28 UTC (permalink / raw)
  To: igt-dev; +Cc: petri.latvala

Existing i-g-t is extended to enable validation for VDSC YCbCr420.
If a mode is supported in both RGB and YCbCr420 output formats by the
sink, i915 driver policy is to try RGB first and fall back to YCbCr420, if
mode cannot be shown using RGB. To test YCbCr420, we need a debugfs
entry (force_dsc_ycbcr420) to force this output format; so that YCbCr420 code
gets executed.
From i-g-t, we have set this debugfs entry. However, before setting
debugfs entry, we have checked capability i.e. YCbCr420 is supported by
both platform (D14+) and sink.
Also, all the modes doesn't support both YCbCr420 and RGB formats; so if
sink and platform supports YCbCr420 we will do try commit with each mode
till we get a successful commit.

v2: -used is_dsc_ycbcr420_supported() (Ankit)
    -handled try-commit correctly (Ankit)
    -instead of flag use enum for output formats (Ankit)
v3: -instead of global count, pass count as para (Ankit)
    -print output format (Ankit)

Signed-off-by: Swati Sharma <swati2.sharma@intel.com>
---
 lib/igt_kms.c               |  17 ++++
 lib/igt_kms.h               |   6 ++
 tests/i915/kms_dsc.c        | 157 +++++++++++++++++++++++-------------
 tests/i915/kms_dsc_helper.c |  49 +++++++++++
 tests/i915/kms_dsc_helper.h |   4 +
 5 files changed, 177 insertions(+), 56 deletions(-)

diff --git a/lib/igt_kms.c b/lib/igt_kms.c
index 31e6dfda0..0f1f7c6b9 100644
--- a/lib/igt_kms.c
+++ b/lib/igt_kms.c
@@ -966,6 +966,23 @@ const char *kmstest_scaling_filter_str(int filter)
 	return find_type_name(scaling_filter_names, filter);
 }
 
+static const struct type_name dsc_output_format_names[] = {
+	{ DSC_FORMAT_RGB444, "RGB444" },
+	{ DSC_FORMAT_YCBCR420, "YCBCR420" },
+	{}
+};
+
+/**
+ * kmstest_dsc_output_format_str:
+ * @output_format: DSC_FORMAT_* output format value
+ *
+ * Returns: A string representing the output format @output format.
+ */
+const char *kmstest_dsc_output_format_str(int output_format)
+{
+	return find_type_name(dsc_output_format_names, output_format);
+}
+
 static const struct type_name connector_type_names[] = {
 	{ DRM_MODE_CONNECTOR_Unknown, "Unknown" },
 	{ DRM_MODE_CONNECTOR_VGA, "VGA" },
diff --git a/lib/igt_kms.h b/lib/igt_kms.h
index be5482e08..61ec8fbec 100644
--- a/lib/igt_kms.h
+++ b/lib/igt_kms.h
@@ -106,10 +106,16 @@ enum igt_custom_edid_type {
  */
 #define kmstest_port_name(port) ((port) + 'A')
 
+enum dsc_output_format {
+	DSC_FORMAT_RGB444,
+	DSC_FORMAT_YCBCR420
+};
+
 const char *kmstest_encoder_type_str(int type);
 const char *kmstest_connector_status_str(int status);
 const char *kmstest_connector_type_str(int type);
 const char *kmstest_scaling_filter_str(int filter);
+const char *kmstest_dsc_output_format_str(int output_format);
 
 void kmstest_dump_mode(drmModeModeInfo *mode);
 #define MAX_HDISPLAY_PER_PIPE 5120
diff --git a/tests/i915/kms_dsc.c b/tests/i915/kms_dsc.c
index f264d37a7..689cb81b1 100644
--- a/tests/i915/kms_dsc.c
+++ b/tests/i915/kms_dsc.c
@@ -68,6 +68,19 @@ static drmModeModeInfo *get_highres_mode(igt_output_t *output)
 	return highest_mode;
 }
 
+static drmModeModeInfo *get_next_mode(igt_output_t *output, int count)
+{
+	drmModeConnector *connector = output->config.connector;
+	drmModeModeInfo *next_mode = NULL;
+
+	for (int i = count; i < connector->count_modes; i++) {
+		next_mode = &connector->modes[i];
+		break;
+	}
+
+	return next_mode;
+}
+
 static bool check_big_joiner_pipe_constraint(data_t *data)
 {
 	igt_output_t *output = data->output;
@@ -97,75 +110,103 @@ static void test_cleanup(data_t *data)
 
 /* re-probe connectors and do a modeset with DSC */
 static void update_display(data_t *data, enum dsc_test_type test_type,
-			   unsigned int plane_format)
+			   unsigned int plane_format, enum dsc_output_format output_format)
 {
+	int ret;
 	bool enabled;
 	igt_plane_t *primary;
 	drmModeModeInfo *mode;
+	int count = 0;
+	bool test_complete = false;
 	igt_output_t *output = data->output;
 	igt_display_t *display = &data->display;
 
-	/* sanitize the state before starting the subtest */
-	igt_display_reset(display);
-	igt_display_commit(display);
+	while (!test_complete) {
+		/* sanitize the state before starting the subtest */
+		igt_display_reset(display);
+		igt_display_commit(display);
 
-	igt_debug("DSC is supported on %s\n", data->output->name);
-	save_force_dsc_en(data);
-	force_dsc_enable(data);
+		igt_debug("DSC is supported on %s\n", data->output->name);
+		save_force_dsc_en(data);
+		force_dsc_enable(data);
 
-	if (test_type == TEST_DSC_BPC) {
-		igt_debug("Trying to set input BPC to %d\n", data->input_bpc);
-		force_dsc_enable_bpc(data);
-	}
+		if (output_format == DSC_FORMAT_YCBCR420) {
+			igt_debug("DSC YCbCr420 is supported on %s\n", data->output->name);
+			save_force_dsc_ycbcr420_en(data);
+			force_dsc_ycbcr420_enable(data);
+		}
 
-	igt_output_set_pipe(output, data->pipe);
+		if (test_type == TEST_DSC_BPC) {
+			igt_debug("Trying to set input BPC to %d\n", data->input_bpc);
+			force_dsc_enable_bpc(data);
+		}
 
-	mode = get_highres_mode(output);
-	igt_require(mode != NULL);
-	igt_output_override_mode(output, mode);
+		igt_output_set_pipe(output, data->pipe);
 
-	primary = igt_output_get_plane_type(output, DRM_PLANE_TYPE_PRIMARY);
+		if (output_format == DSC_FORMAT_YCBCR420)
+			mode = get_next_mode(output, count);
+		else
+			mode = get_highres_mode(output);
+
+		igt_require(mode != NULL);
+		igt_output_override_mode(output, mode);
+
+		primary = igt_output_get_plane_type(output, DRM_PLANE_TYPE_PRIMARY);
+
+		igt_skip_on(!igt_plane_has_format_mod(primary, plane_format,
+			    DRM_FORMAT_MOD_LINEAR));
+
+		igt_create_pattern_fb(data->drm_fd,
+				      mode->hdisplay,
+				      mode->vdisplay,
+				      plane_format,
+				      DRM_FORMAT_MOD_LINEAR,
+				      &data->fb_test_pattern);
+
+		igt_plane_set_fb(primary, &data->fb_test_pattern);
+		ret = igt_display_try_commit_atomic(display, DRM_MODE_ATOMIC_ALLOW_MODESET, NULL);
+		if (ret == 0) {
+			igt_display_commit(display);
+			test_complete = true;
+		} else if (output_format == DSC_FORMAT_YCBCR420) {
+			count++;
+			continue;
+		}
+
+		igt_assert_eq(ret, 0);
+
+		/*
+		 * Until we have CRC check support, manually check if RGB test
+		 * pattern has no corruption.
+		 */
+		manual("RGB test pattern without corruption");
+
+		enabled = igt_is_dsc_enabled(data->drm_fd, output->name);
+		igt_info("Current mode is: %dx%d @%dHz -- DSC is: %s\n",
+					mode->hdisplay,
+					mode->vdisplay,
+					mode->vrefresh,
+					enabled ? "ON" : "OFF");
+
+		restore_force_dsc_en();
+		if (output_format == DSC_FORMAT_YCBCR420)
+			restore_force_dsc_ycbcr420_en();
 
-	igt_skip_on(!igt_plane_has_format_mod(primary, plane_format,
-		    DRM_FORMAT_MOD_LINEAR));
-
-	igt_create_pattern_fb(data->drm_fd,
-			      mode->hdisplay,
-			      mode->vdisplay,
-			      plane_format,
-			      DRM_FORMAT_MOD_LINEAR,
-			      &data->fb_test_pattern);
-
-	igt_plane_set_fb(primary, &data->fb_test_pattern);
-	igt_display_commit(display);
-
-	/* until we have CRC check support, manually check if RGB test
-	 * pattern has no corruption.
-	 */
-	manual("RGB test pattern without corruption");
-
-	enabled = igt_is_dsc_enabled(data->drm_fd, output->name);
-	igt_info("Current mode is: %dx%d @%dHz -- DSC is: %s\n",
-				mode->hdisplay,
-				mode->vdisplay,
-				mode->vrefresh,
-				enabled ? "ON" : "OFF");
-
-	restore_force_dsc_en();
-	igt_debug("Reset compression BPC\n");
-	data->input_bpc = 0;
-	force_dsc_enable_bpc(data);
-
-	igt_assert_f(enabled,
-		     "Default DSC enable failed on connector: %s pipe: %s\n",
-		     output->name,
-		     kmstest_pipe_name(data->pipe));
-
-	test_cleanup(data);
+		igt_debug("Reset input BPC\n");
+		data->input_bpc = 0;
+		force_dsc_enable_bpc(data);
+
+		igt_assert_f(enabled,
+			    "Default DSC enable failed on connector: %s pipe: %s\n",
+			    output->name,
+			    kmstest_pipe_name(data->pipe));
+
+		test_cleanup(data);
+	}
 }
 
 static void test_dsc(data_t *data, enum dsc_test_type test_type, int bpc,
-		     unsigned int plane_format)
+		     unsigned int plane_format, enum dsc_output_format output_format)
 {
 	igt_display_t *display = &data->display;
 	igt_output_t *output;
@@ -194,15 +235,19 @@ static void test_dsc(data_t *data, enum dsc_test_type test_type, int bpc,
 		else
 			snprintf(name, sizeof(name), "-%s", igt_format_str(plane_format));
 
-		igt_dynamic_f("pipe-%s-%s%s",  kmstest_pipe_name(data->pipe), data->output->name, name)
-			update_display(data, test_type, plane_format);
+		igt_dynamic_f("pipe-%s-%s%s-%s",  kmstest_pipe_name(data->pipe), data->output->name, name, kmstest_dsc_output_format_str(output_format))
+			update_display(data, test_type, plane_format, output_format);
 	}
 }
 
 static void run_test(data_t *data, enum dsc_test_type test_type, int bpc,
 		     unsigned int plane_format)
 {
-	test_dsc(data, test_type, bpc, plane_format);
+	test_dsc(data, test_type, bpc, plane_format, DSC_FORMAT_RGB444);
+
+	/* YCbCr420 DSC is supported on display version 14+ */
+	if ((data->disp_ver >= 14) && (is_dsc_ycbcr420_supported(data)))
+		test_dsc(data, test_type, bpc, plane_format, DSC_FORMAT_YCBCR420);
 }
 
 igt_main
diff --git a/tests/i915/kms_dsc_helper.c b/tests/i915/kms_dsc_helper.c
index 7b75be82e..8f0326f13 100644
--- a/tests/i915/kms_dsc_helper.c
+++ b/tests/i915/kms_dsc_helper.c
@@ -30,7 +30,9 @@
 #include "kms_dsc_helper.h"
 
 bool force_dsc_en_orig;
+bool force_dsc_ycbcr420_en_orig;
 int force_dsc_restore_fd = -1;
+int force_dsc_ycbcr420_restore_fd = -1;
 
 void force_dsc_enable(data_t *data)
 {
@@ -80,6 +82,7 @@ void restore_force_dsc_en(void)
 void kms_dsc_exit_handler(int sig)
 {
 	restore_force_dsc_en();
+	restore_force_dsc_ycbcr420_en();
 }
 
 bool check_dsc_on_connector(data_t *data)
@@ -129,3 +132,49 @@ bool check_gen11_bpc_constraint(data_t *data)
 
 	return true;
 }
+
+void force_dsc_ycbcr420_enable(data_t *data)
+{
+	int ret;
+
+	igt_debug("Forcing DSC YCbCr420 on %s\n", data->output->name);
+	ret = igt_force_dsc_ycbcr420_enable(data->drm_fd,
+					    data->output->name);
+	igt_assert_f(ret > 0, "forcing dsc ycbcr420 debugfs_write failed\n");
+}
+
+void save_force_dsc_ycbcr420_en(data_t *data)
+{
+	force_dsc_ycbcr420_en_orig =
+		igt_is_force_dsc_ycbcr420_enabled(data->drm_fd,
+						  data->output->name);
+	force_dsc_ycbcr420_restore_fd =
+		igt_get_dsc_ycbcr420_debugfs_fd(data->drm_fd,
+						data->output->name);
+	igt_assert(force_dsc_ycbcr420_restore_fd >= 0);
+}
+
+void restore_force_dsc_ycbcr420_en(void)
+{
+	if (force_dsc_ycbcr420_restore_fd < 0)
+		return;
+
+	igt_debug("Restoring DSC YCbCr420 enable\n");
+	igt_assert(write(force_dsc_ycbcr420_restore_fd, force_dsc_ycbcr420_en_orig ? "1" : "0", 1) == 1);
+
+	close(force_dsc_ycbcr420_restore_fd);
+	force_dsc_ycbcr420_restore_fd = -1;
+}
+
+bool is_dsc_ycbcr420_supported(data_t *data)
+{
+	igt_output_t *output = data->output;
+
+	if (!igt_is_dsc_ycbcr420_supported(data->drm_fd, output->name)) {
+		igt_debug("DSC YCbCr420 not supported on connector %s\n",
+			  output->name);
+		return false;
+	}
+
+	return true;
+}
diff --git a/tests/i915/kms_dsc_helper.h b/tests/i915/kms_dsc_helper.h
index cfca2ed98..57cb67737 100644
--- a/tests/i915/kms_dsc_helper.h
+++ b/tests/i915/kms_dsc_helper.h
@@ -62,5 +62,9 @@ void kms_dsc_exit_handler(int sig);
 bool check_dsc_on_connector(data_t *data);
 bool check_gen11_dp_constraint(data_t *data);
 bool check_gen11_bpc_constraint(data_t *data);
+void force_dsc_ycbcr420_enable(data_t *data);
+void save_force_dsc_ycbcr420_en(data_t *data);
+void restore_force_dsc_ycbcr420_en(void);
+bool is_dsc_ycbcr420_supported(data_t *data);
 
 #endif
-- 
2.25.1

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

* [igt-dev] [PATCH i-g-t 6/8] lib/dsc: Add helpers for VDSC Fractional BPP debugfs entry
  2023-01-09 15:28 [igt-dev] [PATCH i-g-t 0/8] VDSC YCbCr420 + Fractional BPP Swati Sharma
                   ` (4 preceding siblings ...)
  2023-01-09 15:28 ` [igt-dev] [PATCH i-g-t 5/8] tests/i915/kms_dsc: Enable validation " Swati Sharma
@ 2023-01-09 15:28 ` Swati Sharma
  2023-01-09 15:28 ` [igt-dev] [PATCH i-g-t 7/8] tests/i915/kms_dsc: Enable validation for VDSC Fractional BPP Swati Sharma
                   ` (4 subsequent siblings)
  10 siblings, 0 replies; 15+ messages in thread
From: Swati Sharma @ 2023-01-09 15:28 UTC (permalink / raw)
  To: igt-dev; +Cc: petri.latvala

Helper functions are added for getting/setting VDSC Fractional BPP
debugfs entry.

v2: -improved func description (Ankit)
    -increased buff size (Ankit)
    -asserted bpp_prec (Ankit)

Signed-off-by: Swati Sharma <swati2.sharma@intel.com>
---
 lib/igt_dsc.c | 84 +++++++++++++++++++++++++++++++++++++++++++++++++++
 lib/igt_dsc.h |  5 +++
 2 files changed, 89 insertions(+)

diff --git a/lib/igt_dsc.c b/lib/igt_dsc.c
index d02c364aa..c3f214073 100644
--- a/lib/igt_dsc.c
+++ b/lib/igt_dsc.c
@@ -216,3 +216,87 @@ int igt_get_dsc_ycbcr420_debugfs_fd(int drmfd, char *connector_name)
 
 	return openat(igt_debugfs_dir(drmfd), file_name, O_WRONLY);
 }
+
+static
+bool check_dsc_fractional_bpp_debugfs(int drmfd, char *connector_name,
+				      const char *check_str)
+{
+	char file_name[128] = {0};
+	char buf[512];
+
+	sprintf(file_name, "%s/i915_dsc_fractional_bpp", connector_name);
+
+	igt_debugfs_read(drmfd, file_name, buf);
+
+	return strstr(buf, check_str);
+}
+
+/*
+ * igt_get_dsc_fractional_bpp_supported:
+ * @drmfd: A drm file descriptor
+ * @connector_name: Name of the libdrm connector we're going to use
+ *
+ * Returns: The dsc sink bpp precision.
+ * 	    Precision value of
+ * 				16 => 1/16
+ * 				8  => 1/8
+ * 				1  => fractional bpp not supported
+ */
+int igt_get_dsc_fractional_bpp_supported(int drmfd, char *connector_name)
+{
+	char file_name[128] = {0};
+	char buf[512];
+	char *start_loc;
+	int bpp_prec;
+
+	sprintf(file_name, "%s/i915_dsc_fec_support", connector_name);
+	igt_debugfs_read(drmfd, file_name, buf);
+
+	igt_assert(start_loc = strstr(buf, "DSC_Sink_BPP_Precision: "));
+	igt_assert_eq(sscanf(start_loc, "DSC_Sink_BPP_Precision: %d", &bpp_prec), 1);
+	igt_assert(bpp_prec > 0);
+
+	return bpp_prec;
+}
+
+/*
+ * igt_is_force_dsc_fractional_bpp_enabled:
+ * @drmfd: A drm file descriptor
+ * @connector_name: Name of the libdrm connector we're going to use
+ *
+ * Returns: True if DSC Fractional BPP is force enabled (via debugfs) for the given connector,
+ * false otherwise.
+ */
+bool igt_is_force_dsc_fractional_bpp_enabled(int drmfd, char *connector_name)
+{
+	return check_dsc_fractional_bpp_debugfs(drmfd, connector_name, "Force_DSC_Fractional_BPP_Enable: yes");
+}
+
+/*
+ * igt_force_dsc_fractional_bpp_enable:
+ * @drmfd: A drm file descriptor
+ * @connector_name: Name of the libdrm connector we're going to use
+ *
+ * Returns: 1 on success or negative error code, in case of failure.
+ */
+int igt_force_dsc_fractional_bpp_enable(int drmfd, char *connector_name)
+{
+	return write_dsc_debugfs(drmfd, connector_name, "i915_dsc_fractional_bpp", "1");
+}
+
+/*
+ * igt_get_dsc_fractional_bpp_debugfs_fd:
+ * @drmfd: A drm file descriptor
+ * @connector_name: Name of the libdrm connector we're going to use
+ *
+ * Returns: fd of the DSC Fractional BPP debugfs for the given connector,
+ * else returns -1.
+ */
+int igt_get_dsc_fractional_bpp_debugfs_fd(int drmfd, char *connector_name)
+{
+	char file_name[128] = {0};
+
+	sprintf(file_name, "%s/i915_dsc_fractional_bpp", connector_name);
+
+	return openat(igt_debugfs_dir(drmfd), file_name, O_WRONLY);
+}
diff --git a/lib/igt_dsc.h b/lib/igt_dsc.h
index eeb4593be..e9a0814b6 100644
--- a/lib/igt_dsc.h
+++ b/lib/igt_dsc.h
@@ -25,6 +25,7 @@
 #define IGT_DSC_H
 
 #include "igt_fb.h"
+#include "igt_core.h"
 
 bool igt_is_dsc_supported(int drmfd, char *connector_name);
 bool igt_is_fec_supported(int drmfd, char *connector_name);
@@ -37,5 +38,9 @@ bool igt_is_dsc_ycbcr420_supported(int drmfd, char *connector_name);
 bool igt_is_force_dsc_ycbcr420_enabled(int drmfd, char *connector_name);
 int igt_force_dsc_ycbcr420_enable(int drmfd, char *connector_name);
 int igt_get_dsc_ycbcr420_debugfs_fd(int drmfd, char *connector_name);
+int igt_get_dsc_fractional_bpp_supported(int drmfd, char *connector_name);
+bool igt_is_force_dsc_fractional_bpp_enabled(int drmfd, char *connector_name);
+int igt_force_dsc_fractional_bpp_enable(int drmfd, char *connector_name);
+int igt_get_dsc_fractional_bpp_debugfs_fd(int drmfd, char *connector_name);
 
 #endif
-- 
2.25.1

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

* [igt-dev] [PATCH i-g-t 7/8] tests/i915/kms_dsc: Enable validation for VDSC Fractional BPP
  2023-01-09 15:28 [igt-dev] [PATCH i-g-t 0/8] VDSC YCbCr420 + Fractional BPP Swati Sharma
                   ` (5 preceding siblings ...)
  2023-01-09 15:28 ` [igt-dev] [PATCH i-g-t 6/8] lib/dsc: Add helpers for VDSC Fractional BPP debugfs entry Swati Sharma
@ 2023-01-09 15:28 ` Swati Sharma
  2023-01-09 15:28 ` [igt-dev] [PATCH i-g-t 8/8] tests/i915/kms_dsc: Add test summary Swati Sharma
                   ` (3 subsequent siblings)
  10 siblings, 0 replies; 15+ messages in thread
From: Swati Sharma @ 2023-01-09 15:28 UTC (permalink / raw)
  To: igt-dev; +Cc: petri.latvala

Fractional BPP support comes from DSC1.2. To test Fractional BPP, debugfs entry
(force_dsc_fractional_bpp) is introduced. From the IGT; we are setting this
debugfs entry. However, before setting this debugfs entry, we are checking
capability i.e. Fractional BPP is supported by platform and sink both. In driver,
if force_dsc_fractional_bpp is set then while iterating over output bpp with
fractional step size we will continue if output_bpp is computed as integer and
allow DSC iff compressed bpp is fractional.

v2: change in igt_describe (Ankit)

Signed-off-by: Swati Sharma <swati2.sharma@intel.com>
Reviewed-by: Ankit Nautiyal <ankit.k.nautiyal@intel.com>
---
 tests/i915/kms_dsc.c        | 27 ++++++++++++---
 tests/i915/kms_dsc_helper.c | 66 +++++++++++++++++++++++++++++++++++++
 tests/i915/kms_dsc_helper.h |  4 +++
 3 files changed, 93 insertions(+), 4 deletions(-)

diff --git a/tests/i915/kms_dsc.c b/tests/i915/kms_dsc.c
index 689cb81b1..963d9f008 100644
--- a/tests/i915/kms_dsc.c
+++ b/tests/i915/kms_dsc.c
@@ -36,7 +36,8 @@ IGT_TEST_DESCRIPTION("Test to validate display stream compression");
 
 enum dsc_test_type {
 	TEST_DSC_BASIC,
-	TEST_DSC_BPC
+	TEST_DSC_BPC,
+	TEST_DSC_FRACTIONAL_BPP
 };
 
 const struct {
@@ -139,6 +140,10 @@ static void update_display(data_t *data, enum dsc_test_type test_type,
 		if (test_type == TEST_DSC_BPC) {
 			igt_debug("Trying to set input BPC to %d\n", data->input_bpc);
 			force_dsc_enable_bpc(data);
+		} else if (test_type == TEST_DSC_FRACTIONAL_BPP) {
+			igt_debug("DSC fractional bpp is supported on %s\n", data->output->name);
+			save_force_dsc_fractional_bpp_en(data);
+			force_dsc_fractional_bpp_enable(data);
 		}
 
 		igt_output_set_pipe(output, data->pipe);
@@ -192,9 +197,12 @@ static void update_display(data_t *data, enum dsc_test_type test_type,
 		if (output_format == DSC_FORMAT_YCBCR420)
 			restore_force_dsc_ycbcr420_en();
 
-		igt_debug("Reset input BPC\n");
-		data->input_bpc = 0;
-		force_dsc_enable_bpc(data);
+		if (test_type == TEST_DSC_BPC) {
+			igt_debug("Reset input BPC\n");
+			data->input_bpc = 0;
+			force_dsc_enable_bpc(data);
+		} else if (test_type == TEST_DSC_FRACTIONAL_BPP)
+			restore_force_dsc_fractional_bpp_en();
 
 		igt_assert_f(enabled,
 			    "Default DSC enable failed on connector: %s pipe: %s\n",
@@ -230,6 +238,9 @@ static void test_dsc(data_t *data, enum dsc_test_type test_type, int bpc,
 		if (!check_big_joiner_pipe_constraint(data))
 			continue;
 
+		if ((test_type == TEST_DSC_FRACTIONAL_BPP) && !(check_dsc_fractional_bpp_on_connector(data)))
+			continue;
+
 		if (test_type == TEST_DSC_BPC)
 			snprintf(name, sizeof(name), "-%dbpc-%s", data->input_bpc, igt_format_str(plane_format));
 		else
@@ -302,6 +313,14 @@ igt_main
 		}
 	}
 
+	igt_describe("Tests fractional compressed bpp functionality if supported "
+		     "by a connector by forcing fractional_bpp on all connectors that support it "
+		     "with default parameter. While finding the optimum compressed bpp, driver will "
+		     "skip over the compressed bpps with integer values. It will go ahead with DSC, "
+		     "iff compressed bpp is fractional, failing in which, it will fail the commit.");
+	igt_subtest_with_dynamic("dsc-fractional-bpp")
+			run_test(&data, TEST_DSC_FRACTIONAL_BPP, 0, DRM_FORMAT_XRGB8888);
+
 	igt_fixture {
 		igt_display_fini(&data.display);
 		close(data.drm_fd);
diff --git a/tests/i915/kms_dsc_helper.c b/tests/i915/kms_dsc_helper.c
index 8f0326f13..eef0f2c4b 100644
--- a/tests/i915/kms_dsc_helper.c
+++ b/tests/i915/kms_dsc_helper.c
@@ -31,8 +31,10 @@
 
 bool force_dsc_en_orig;
 bool force_dsc_ycbcr420_en_orig;
+bool force_dsc_fractional_bpp_en_orig;
 int force_dsc_restore_fd = -1;
 int force_dsc_ycbcr420_restore_fd = -1;
+int force_dsc_fractional_bpp_restore_fd = -1;
 
 void force_dsc_enable(data_t *data)
 {
@@ -83,6 +85,7 @@ void kms_dsc_exit_handler(int sig)
 {
 	restore_force_dsc_en();
 	restore_force_dsc_ycbcr420_en();
+	restore_force_dsc_fractional_bpp_en();
 }
 
 bool check_dsc_on_connector(data_t *data)
@@ -178,3 +181,66 @@ bool is_dsc_ycbcr420_supported(data_t *data)
 
 	return true;
 }
+
+void force_dsc_fractional_bpp_enable(data_t *data)
+{
+	int ret;
+
+	igt_debug("Forcing DSC Fractional BPP on %s\n", data->output->name);
+	ret = igt_force_dsc_fractional_bpp_enable(data->drm_fd,
+						  data->output->name);
+	igt_assert_f(ret > 0, "forcing dsc fractional bpp debugfs_write failed\n");
+}
+
+void save_force_dsc_fractional_bpp_en(data_t *data)
+{
+	force_dsc_fractional_bpp_en_orig =
+		igt_is_force_dsc_fractional_bpp_enabled(data->drm_fd,
+							data->output->name);
+	force_dsc_fractional_bpp_restore_fd =
+		igt_get_dsc_fractional_bpp_debugfs_fd(data->drm_fd,
+						      data->output->name);
+	igt_assert(force_dsc_fractional_bpp_restore_fd >= 0);
+}
+
+void restore_force_dsc_fractional_bpp_en(void)
+{
+	if (force_dsc_fractional_bpp_restore_fd < 0)
+		return;
+
+	igt_debug("Restoring DSC Fractional BPP enable\n");
+	igt_assert(write(force_dsc_fractional_bpp_restore_fd, force_dsc_fractional_bpp_en_orig ? "1" : "0", 1) == 1);
+
+	close(force_dsc_fractional_bpp_restore_fd);
+	force_dsc_fractional_bpp_restore_fd = -1;
+}
+
+static
+bool is_dsc_fractional_bpp_supported(int drmfd, char *connector_name)
+{
+	int bpp_prec;
+
+	bpp_prec = igt_get_dsc_fractional_bpp_supported(drmfd, connector_name);
+
+	if (bpp_prec == 1)
+		return false;
+
+	return true;
+}
+
+bool check_dsc_fractional_bpp_on_connector(data_t *data)
+{
+	igt_output_t *output = data->output;
+
+	if (data->disp_ver >= 14) {
+		if (!is_dsc_fractional_bpp_supported(data->drm_fd, output->name)) {
+			igt_debug("DSC fractional bpp not supported on connector %s\n",
+				   output->name);
+			return false;
+		} else
+			return true;
+	}
+
+	return false;
+}
+
diff --git a/tests/i915/kms_dsc_helper.h b/tests/i915/kms_dsc_helper.h
index 57cb67737..9376b11ef 100644
--- a/tests/i915/kms_dsc_helper.h
+++ b/tests/i915/kms_dsc_helper.h
@@ -66,5 +66,9 @@ void force_dsc_ycbcr420_enable(data_t *data);
 void save_force_dsc_ycbcr420_en(data_t *data);
 void restore_force_dsc_ycbcr420_en(void);
 bool is_dsc_ycbcr420_supported(data_t *data);
+void force_dsc_fractional_bpp_enable(data_t *data);
+void save_force_dsc_fractional_bpp_en(data_t *data);
+void restore_force_dsc_fractional_bpp_en(void);
+bool check_dsc_fractional_bpp_on_connector(data_t *data);
 
 #endif
-- 
2.25.1

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

* [igt-dev] [PATCH i-g-t 8/8] tests/i915/kms_dsc: Add test summary
  2023-01-09 15:28 [igt-dev] [PATCH i-g-t 0/8] VDSC YCbCr420 + Fractional BPP Swati Sharma
                   ` (6 preceding siblings ...)
  2023-01-09 15:28 ` [igt-dev] [PATCH i-g-t 7/8] tests/i915/kms_dsc: Enable validation for VDSC Fractional BPP Swati Sharma
@ 2023-01-09 15:28 ` Swati Sharma
  2023-01-09 18:04 ` [igt-dev] ✗ GitLab.Pipeline: warning for VDSC YCbCr420 + Fractional BPP (rev2) Patchwork
                   ` (2 subsequent siblings)
  10 siblings, 0 replies; 15+ messages in thread
From: Swati Sharma @ 2023-01-09 15:28 UTC (permalink / raw)
  To: igt-dev; +Cc: petri.latvala

Add test summary giving overall view of what all is being validated
in the test.

Signed-off-by: Swati Sharma <swati2.sharma@intel.com>
---
 tests/i915/kms_dsc.c | 11 +++++++++++
 1 file changed, 11 insertions(+)

diff --git a/tests/i915/kms_dsc.c b/tests/i915/kms_dsc.c
index 963d9f008..892c07b86 100644
--- a/tests/i915/kms_dsc.c
+++ b/tests/i915/kms_dsc.c
@@ -34,6 +34,17 @@
 
 IGT_TEST_DESCRIPTION("Test to validate display stream compression");
 
+/*
+ * i915 driver supports DSC1.1 from gen11+. To validate DSC, we have
+ * different scenarios
+ * (i) basic modeset (ii) input bpc (iii) formats (iv) fractional bpp
+ * These tests will check for basic DSC support by the connector and
+ * few other gen specific constraints. Fractional bpp got introduced
+ * with DSC1.2 from MTL. By default, tests will get executed on RGB444
+ * output format. However, if sink and platform supports YCBCR420, all the
+ * tests will get executed with this format too.
+ */
+
 enum dsc_test_type {
 	TEST_DSC_BASIC,
 	TEST_DSC_BPC,
-- 
2.25.1

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

* [igt-dev] ✗ GitLab.Pipeline: warning for VDSC YCbCr420 + Fractional BPP (rev2)
  2023-01-09 15:28 [igt-dev] [PATCH i-g-t 0/8] VDSC YCbCr420 + Fractional BPP Swati Sharma
                   ` (7 preceding siblings ...)
  2023-01-09 15:28 ` [igt-dev] [PATCH i-g-t 8/8] tests/i915/kms_dsc: Add test summary Swati Sharma
@ 2023-01-09 18:04 ` Patchwork
  2023-01-09 18:34 ` [igt-dev] ✓ Fi.CI.BAT: success " Patchwork
  2023-01-10  1:34 ` [igt-dev] ✓ Fi.CI.IGT: " Patchwork
  10 siblings, 0 replies; 15+ messages in thread
From: Patchwork @ 2023-01-09 18:04 UTC (permalink / raw)
  To: Swati Sharma; +Cc: igt-dev

== Series Details ==

Series: VDSC YCbCr420 + Fractional BPP (rev2)
URL   : https://patchwork.freedesktop.org/series/111342/
State : warning

== Summary ==

Pipeline status: FAILED.

see https://gitlab.freedesktop.org/gfx-ci/igt-ci-tags/-/pipelines/779506 for the overview.

build:tests-debian-meson has failed (https://gitlab.freedesktop.org/gfx-ci/igt-ci-tags/-/jobs/34374699):
  /usr/include/xf86drmMode.h:533:2: error: unknown type name ‘uint32_t’
    uint32_t lessees[0];
    ^~~~~~~~
  /usr/include/xf86drmMode.h:539:2: error: unknown type name ‘uint32_t’
    uint32_t count;
    ^~~~~~~~
  /usr/include/xf86drmMode.h:540:2: error: unknown type name ‘uint32_t’
    uint32_t objects[0];
    ^~~~~~~~
  /usr/include/xf86drmMode.h:545:39: error: unknown type name ‘uint32_t’; did you mean ‘intptr_t’?
   extern int drmModeRevokeLease(int fd, uint32_t lessee_id);
                                         ^~~~~~~~
                                         intptr_t
  ninja: build stopped: subcommand failed.
  section_end:1673287401:step_script
  section_start:1673287401:cleanup_file_variables
  Cleaning up project directory and file based variables
  section_end:1673287402:cleanup_file_variables
  ERROR: Job failed: exit code 1
  

build:tests-debian-meson-arm64 has failed (https://gitlab.freedesktop.org/gfx-ci/igt-ci-tags/-/jobs/34374702):
  /usr/include/xf86drmMode.h:533:2: error: unknown type name ‘uint32_t’
    uint32_t lessees[0];
    ^~~~~~~~
  /usr/include/xf86drmMode.h:539:2: error: unknown type name ‘uint32_t’
    uint32_t count;
    ^~~~~~~~
  /usr/include/xf86drmMode.h:540:2: error: unknown type name ‘uint32_t’
    uint32_t objects[0];
    ^~~~~~~~
  /usr/include/xf86drmMode.h:545:39: error: unknown type name ‘uint32_t’; did you mean ‘intptr_t’?
   extern int drmModeRevokeLease(int fd, uint32_t lessee_id);
                                         ^~~~~~~~
                                         intptr_t
  ninja: build stopped: subcommand failed.
  section_end:1673287413:step_script
  section_start:1673287413:cleanup_file_variables
  Cleaning up project directory and file based variables
  section_end:1673287414:cleanup_file_variables
  ERROR: Job failed: exit code 1
  

build:tests-debian-meson-armhf has failed (https://gitlab.freedesktop.org/gfx-ci/igt-ci-tags/-/jobs/34374701):
  /usr/include/xf86drmMode.h:533:2: error: unknown type name ‘uint32_t’
    uint32_t lessees[0];
    ^~~~~~~~
  /usr/include/xf86drmMode.h:539:2: error: unknown type name ‘uint32_t’
    uint32_t count;
    ^~~~~~~~
  /usr/include/xf86drmMode.h:540:2: error: unknown type name ‘uint32_t’
    uint32_t objects[0];
    ^~~~~~~~
  /usr/include/xf86drmMode.h:545:39: error: unknown type name ‘uint32_t’; did you mean ‘intptr_t’?
   extern int drmModeRevokeLease(int fd, uint32_t lessee_id);
                                         ^~~~~~~~
                                         intptr_t
  ninja: build stopped: subcommand failed.
  section_end:1673287413:step_script
  section_start:1673287413:cleanup_file_variables
  Cleaning up project directory and file based variables
  section_end:1673287414:cleanup_file_variables
  ERROR: Job failed: exit code 1
  

build:tests-debian-meson-mips has failed (https://gitlab.freedesktop.org/gfx-ci/igt-ci-tags/-/jobs/34374703):
  /usr/include/xf86drmMode.h:533:2: error: unknown type name ‘uint32_t’
    uint32_t lessees[0];
    ^~~~~~~~
  /usr/include/xf86drmMode.h:539:2: error: unknown type name ‘uint32_t’
    uint32_t count;
    ^~~~~~~~
  /usr/include/xf86drmMode.h:540:2: error: unknown type name ‘uint32_t’
    uint32_t objects[0];
    ^~~~~~~~
  /usr/include/xf86drmMode.h:545:39: error: unknown type name ‘uint32_t’; did you mean ‘intptr_t’?
   extern int drmModeRevokeLease(int fd, uint32_t lessee_id);
                                         ^~~~~~~~
                                         intptr_t
  ninja: build stopped: subcommand failed.
  section_end:1673287423:step_script
  section_start:1673287423:cleanup_file_variables
  Cleaning up project directory and file based variables
  section_end:1673287423:cleanup_file_variables
  ERROR: Job failed: exit code 1
  

build:tests-debian-minimal has failed (https://gitlab.freedesktop.org/gfx-ci/igt-ci-tags/-/jobs/34374700):
  /usr/include/xf86drmMode.h:533:2: error: unknown type name ‘uint32_t’
    uint32_t lessees[0];
    ^~~~~~~~
  /usr/include/xf86drmMode.h:539:2: error: unknown type name ‘uint32_t’
    uint32_t count;
    ^~~~~~~~
  /usr/include/xf86drmMode.h:540:2: error: unknown type name ‘uint32_t’
    uint32_t objects[0];
    ^~~~~~~~
  /usr/include/xf86drmMode.h:545:39: error: unknown type name ‘uint32_t’; did you mean ‘intptr_t’?
   extern int drmModeRevokeLease(int fd, uint32_t lessee_id);
                                         ^~~~~~~~
                                         intptr_t
  ninja: build stopped: subcommand failed.
  section_end:1673287405:step_script
  section_start:1673287405:cleanup_file_variables
  Cleaning up project directory and file based variables
  section_end:1673287406:cleanup_file_variables
  ERROR: Job failed: exit code 1
  

build:tests-fedora has failed (https://gitlab.freedesktop.org/gfx-ci/igt-ci-tags/-/jobs/34374694):
        |  ^~~~~~~~
  /usr/include/xf86drmMode.h:533:2: error: unknown type name ‘uint32_t’
    533 |  uint32_t lessees[0];
        |  ^~~~~~~~
  /usr/include/xf86drmMode.h:539:2: error: unknown type name ‘uint32_t’
    539 |  uint32_t count;
        |  ^~~~~~~~
  /usr/include/xf86drmMode.h:540:2: error: unknown type name ‘uint32_t’
    540 |  uint32_t objects[0];
        |  ^~~~~~~~
  /usr/include/xf86drmMode.h:545:39: error: unknown type name ‘uint32_t’
    545 | extern int drmModeRevokeLease(int fd, uint32_t lessee_id);
        |                                       ^~~~~~~~
  ninja: build stopped: subcommand failed.
  section_end:1673287363:step_script
  section_start:1673287363:cleanup_file_variables
  Cleaning up project directory and file based variables
  section_end:1673287364:cleanup_file_variables
  ERROR: Job failed: exit code 1
  

build:tests-fedora-clang has failed (https://gitlab.freedesktop.org/gfx-ci/igt-ci-tags/-/jobs/34374698):
          uint32_t bpp;
          ^
  /usr/include/xf86drmMode.h:221:2: error: unknown type name 'uint32_t'
          uint32_t depth;
          ^
  /usr/include/xf86drmMode.h:223:2: error: unknown type name 'uint32_t'
          uint32_t handle;
          ^
  /usr/include/xf86drmMode.h:229:2: error: unknown type name 'uint32_t'
          uint32_t id;
          ^
  fatal error: too many errors emitted, stopping now [-ferror-limit=]
  20 errors generated.
  ninja: build stopped: subcommand failed.
  section_end:1673287385:step_script
  section_start:1673287385:cleanup_file_variables
  Cleaning up project directory and file based variables
  section_end:1673287386:cleanup_file_variables
  ERROR: Job failed: exit code 1
  

build:tests-fedora-no-libdrm-nouveau has failed (https://gitlab.freedesktop.org/gfx-ci/igt-ci-tags/-/jobs/34374697):
        |  ^~~~~~~~
  /usr/include/xf86drmMode.h:533:2: error: unknown type name ‘uint32_t’
    533 |  uint32_t lessees[0];
        |  ^~~~~~~~
  /usr/include/xf86drmMode.h:539:2: error: unknown type name ‘uint32_t’
    539 |  uint32_t count;
        |  ^~~~~~~~
  /usr/include/xf86drmMode.h:540:2: error: unknown type name ‘uint32_t’
    540 |  uint32_t objects[0];
        |  ^~~~~~~~
  /usr/include/xf86drmMode.h:545:39: error: unknown type name ‘uint32_t’
    545 | extern int drmModeRevokeLease(int fd, uint32_t lessee_id);
        |                                       ^~~~~~~~
  ninja: build stopped: subcommand failed.
  section_end:1673287380:step_script
  section_start:1673287380:cleanup_file_variables
  Cleaning up project directory and file based variables
  section_end:1673287381:cleanup_file_variables
  ERROR: Job failed: exit code 1
  

build:tests-fedora-no-libunwind has failed (https://gitlab.freedesktop.org/gfx-ci/igt-ci-tags/-/jobs/34374695):
        |  ^~~~~~~~
  /usr/include/xf86drmMode.h:533:2: error: unknown type name ‘uint32_t’
    533 |  uint32_t lessees[0];
        |  ^~~~~~~~
  /usr/include/xf86drmMode.h:539:2: error: unknown type name ‘uint32_t’
    539 |  uint32_t count;
        |  ^~~~~~~~
  /usr/include/xf86drmMode.h:540:2: error: unknown type name ‘uint32_t’
    540 |  uint32_t objects[0];
        |  ^~~~~~~~
  /usr/include/xf86drmMode.h:545:39: error: unknown type name ‘uint32_t’
    545 | extern int drmModeRevokeLease(int fd, uint32_t lessee_id);
        |                                       ^~~~~~~~
  ninja: build stopped: subcommand failed.
  section_end:1673287365:step_script
  section_start:1673287365:cleanup_file_variables
  Cleaning up project directory and file based variables
  section_end:1673287366:cleanup_file_variables
  ERROR: Job failed: exit code 1
  

build:tests-fedora-oldest-meson has failed (https://gitlab.freedesktop.org/gfx-ci/igt-ci-tags/-/jobs/34374696):
        |  ^~~~~~~~
  /usr/include/xf86drmMode.h:533:2: error: unknown type name ‘uint32_t’
    533 |  uint32_t lessees[0];
        |  ^~~~~~~~
  /usr/include/xf86drmMode.h:539:2: error: unknown type name ‘uint32_t’
    539 |  uint32_t count;
        |  ^~~~~~~~
  /usr/include/xf86drmMode.h:540:2: error: unknown type name ‘uint32_t’
    540 |  uint32_t objects[0];
        |  ^~~~~~~~
  /usr/include/xf86drmMode.h:545:39: error: unknown type name ‘uint32_t’
    545 | extern int drmModeRevokeLease(int fd, uint32_t lessee_id);
        |                                       ^~~~~~~~
  ninja: build stopped: subcommand failed.
  section_end:1673287375:step_script
  section_start:1673287375:cleanup_file_variables
  Cleaning up project directory and file based variables
  section_end:1673287376:cleanup_file_variables
  ERROR: Job failed: exit code 1

== Logs ==

For more details see: https://gitlab.freedesktop.org/gfx-ci/igt-ci-tags/-/pipelines/779506

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

* [igt-dev] ✓ Fi.CI.BAT: success for VDSC YCbCr420 + Fractional BPP (rev2)
  2023-01-09 15:28 [igt-dev] [PATCH i-g-t 0/8] VDSC YCbCr420 + Fractional BPP Swati Sharma
                   ` (8 preceding siblings ...)
  2023-01-09 18:04 ` [igt-dev] ✗ GitLab.Pipeline: warning for VDSC YCbCr420 + Fractional BPP (rev2) Patchwork
@ 2023-01-09 18:34 ` Patchwork
  2023-01-10  1:34 ` [igt-dev] ✓ Fi.CI.IGT: " Patchwork
  10 siblings, 0 replies; 15+ messages in thread
From: Patchwork @ 2023-01-09 18:34 UTC (permalink / raw)
  To: Swati Sharma; +Cc: igt-dev

[-- Attachment #1: Type: text/plain, Size: 3770 bytes --]

== Series Details ==

Series: VDSC YCbCr420 + Fractional BPP (rev2)
URL   : https://patchwork.freedesktop.org/series/111342/
State : success

== Summary ==

CI Bug Log - changes from CI_DRM_12559 -> IGTPW_8318
====================================================

Summary
-------

  **SUCCESS**

  No regressions found.

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

Participating hosts (38 -> 37)
------------------------------

  Missing    (1): fi-snb-2520m 

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

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

### IGT changes ###

#### Suppressed ####

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

  * igt@i915_selftest@live@guc:
    - {bat-rpls-1}:       [PASS][1] -> [DMESG-WARN][2]
   [1]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12559/bat-rpls-1/igt@i915_selftest@live@guc.html
   [2]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8318/bat-rpls-1/igt@i915_selftest@live@guc.html

  * {igt@kms_chamelium_hpd@common-hpd-after-suspend}:
    - {bat-adlp-6}:       NOTRUN -> [SKIP][3]
   [3]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8318/bat-adlp-6/igt@kms_chamelium_hpd@common-hpd-after-suspend.html

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

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

### IGT changes ###

#### Issues hit ####

  * igt@kms_setmode@basic-clone-single-crtc:
    - fi-snb-2600:        NOTRUN -> [SKIP][4] ([fdo#109271])
   [4]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8318/fi-snb-2600/igt@kms_setmode@basic-clone-single-crtc.html

  
#### Possible fixes ####

  * igt@gem_exec_gttfill@basic:
    - fi-pnv-d510:        [FAIL][5] ([i915#7229]) -> [PASS][6]
   [5]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12559/fi-pnv-d510/igt@gem_exec_gttfill@basic.html
   [6]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8318/fi-pnv-d510/igt@gem_exec_gttfill@basic.html

  * igt@i915_selftest@live@requests:
    - {bat-adlp-6}:       [INCOMPLETE][7] ([i915#6257]) -> [PASS][8]
   [7]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12559/bat-adlp-6/igt@i915_selftest@live@requests.html
   [8]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8318/bat-adlp-6/igt@i915_selftest@live@requests.html

  * igt@i915_selftest@live@slpc:
    - {bat-rpls-1}:       [DMESG-FAIL][9] ([i915#6367]) -> [PASS][10]
   [9]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12559/bat-rpls-1/igt@i915_selftest@live@slpc.html
   [10]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8318/bat-rpls-1/igt@i915_selftest@live@slpc.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
  [i915#4312]: https://gitlab.freedesktop.org/drm/intel/issues/4312
  [i915#6257]: https://gitlab.freedesktop.org/drm/intel/issues/6257
  [i915#6367]: https://gitlab.freedesktop.org/drm/intel/issues/6367
  [i915#7229]: https://gitlab.freedesktop.org/drm/intel/issues/7229
  [i915#7359]: https://gitlab.freedesktop.org/drm/intel/issues/7359


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

  * CI: CI-20190529 -> None
  * IGT: IGT_7113 -> IGTPW_8318

  CI-20190529: 20190529
  CI_DRM_12559: b4a7d5ac8957c0b894b81d125b15b1ff45eaf5b2 @ git://anongit.freedesktop.org/gfx-ci/linux
  IGTPW_8318: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8318/index.html
  IGT_7113: 15562e123ee6ed88163c7da2ef330dfe9bbd16a5 @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git


Testlist changes
----------------

+igt@kms_dsc@dsc-fractional-bpp

== Logs ==

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

[-- Attachment #2: Type: text/html, Size: 4386 bytes --]

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

* [igt-dev] ✓ Fi.CI.IGT: success for VDSC YCbCr420 + Fractional BPP (rev2)
  2023-01-09 15:28 [igt-dev] [PATCH i-g-t 0/8] VDSC YCbCr420 + Fractional BPP Swati Sharma
                   ` (9 preceding siblings ...)
  2023-01-09 18:34 ` [igt-dev] ✓ Fi.CI.BAT: success " Patchwork
@ 2023-01-10  1:34 ` Patchwork
  10 siblings, 0 replies; 15+ messages in thread
From: Patchwork @ 2023-01-10  1:34 UTC (permalink / raw)
  To: Swati Sharma; +Cc: igt-dev

[-- Attachment #1: Type: text/plain, Size: 31998 bytes --]

== Series Details ==

Series: VDSC YCbCr420 + Fractional BPP (rev2)
URL   : https://patchwork.freedesktop.org/series/111342/
State : success

== Summary ==

CI Bug Log - changes from CI_DRM_12559_full -> IGTPW_8318_full
====================================================

Summary
-------

  **SUCCESS**

  No regressions found.

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

Participating hosts (14 -> 10)
------------------------------

  Missing    (4): shard-rkl0 pig-kbl-iris pig-glk-j5005 pig-skl-6260u 

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

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

### IGT changes ###

#### Possible regressions ####

  * {igt@kms_dsc@dsc-fractional-bpp} (NEW):
    - {shard-rkl}:        NOTRUN -> [SKIP][1]
   [1]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8318/shard-rkl-6/igt@kms_dsc@dsc-fractional-bpp.html
    - {shard-dg1}:        NOTRUN -> [SKIP][2]
   [2]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8318/shard-dg1-19/igt@kms_dsc@dsc-fractional-bpp.html

  
#### Suppressed ####

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

  * {igt@kms_chamelium_color@ctm-negative}:
    - {shard-tglu-10}:    NOTRUN -> [SKIP][3] +6 similar issues
   [3]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8318/shard-tglu-10/igt@kms_chamelium_color@ctm-negative.html

  * {igt@kms_chamelium_edid@hdmi-edid-stress-resolution-4k}:
    - {shard-tglu}:       NOTRUN -> [SKIP][4] +18 similar issues
   [4]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8318/shard-tglu-1/igt@kms_chamelium_edid@hdmi-edid-stress-resolution-4k.html

  * {igt@kms_chamelium_hpd@vga-hpd-fast}:
    - {shard-rkl}:        NOTRUN -> [SKIP][5] +5 similar issues
   [5]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8318/shard-rkl-2/igt@kms_chamelium_hpd@vga-hpd-fast.html
    - {shard-tglu-9}:     NOTRUN -> [SKIP][6] +2 similar issues
   [6]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8318/shard-tglu-9/igt@kms_chamelium_hpd@vga-hpd-fast.html

  
New tests
---------

  New tests have been introduced between CI_DRM_12559_full and IGTPW_8318_full:

### New IGT tests (1) ###

  * igt@kms_dsc@dsc-fractional-bpp:
    - Statuses : 5 skip(s)
    - Exec time: [0.0] s

  

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

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

### IGT changes ###

#### Issues hit ####

  * igt@gem_caching@read-writes:
    - shard-apl:          [PASS][7] -> [INCOMPLETE][8] ([i915#7708]) +1 similar issue
   [7]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12559/shard-apl6/igt@gem_caching@read-writes.html
   [8]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8318/shard-apl3/igt@gem_caching@read-writes.html

  * igt@gem_exec_fair@basic-deadline:
    - shard-glk:          [PASS][9] -> [FAIL][10] ([i915#2846])
   [9]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12559/shard-glk3/igt@gem_exec_fair@basic-deadline.html
   [10]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8318/shard-glk1/igt@gem_exec_fair@basic-deadline.html

  * igt@gem_exec_fair@basic-pace@vcs0:
    - shard-glk:          [PASS][11] -> [FAIL][12] ([i915#2842]) +2 similar issues
   [11]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12559/shard-glk9/igt@gem_exec_fair@basic-pace@vcs0.html
   [12]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8318/shard-glk3/igt@gem_exec_fair@basic-pace@vcs0.html

  * igt@gem_exec_nop@basic-parallel:
    - shard-glk:          [PASS][13] -> [DMESG-WARN][14] ([i915#118])
   [13]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12559/shard-glk7/igt@gem_exec_nop@basic-parallel.html
   [14]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8318/shard-glk5/igt@gem_exec_nop@basic-parallel.html

  * igt@gem_lmem_swapping@heavy-verify-multi:
    - shard-glk:          NOTRUN -> [SKIP][15] ([fdo#109271] / [i915#4613])
   [15]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8318/shard-glk7/igt@gem_lmem_swapping@heavy-verify-multi.html

  * igt@gem_lmem_swapping@massive:
    - shard-apl:          NOTRUN -> [SKIP][16] ([fdo#109271] / [i915#4613])
   [16]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8318/shard-apl3/igt@gem_lmem_swapping@massive.html

  * igt@gem_userptr_blits@vma-merge:
    - shard-glk:          NOTRUN -> [FAIL][17] ([i915#3318])
   [17]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8318/shard-glk8/igt@gem_userptr_blits@vma-merge.html

  * igt@gen9_exec_parse@allowed-single:
    - shard-apl:          [PASS][18] -> [DMESG-WARN][19] ([i915#5566] / [i915#716])
   [18]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12559/shard-apl7/igt@gen9_exec_parse@allowed-single.html
   [19]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8318/shard-apl1/igt@gen9_exec_parse@allowed-single.html

  * igt@i915_suspend@debugfs-reader:
    - shard-apl:          [PASS][20] -> [DMESG-WARN][21] ([i915#180])
   [20]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12559/shard-apl2/igt@i915_suspend@debugfs-reader.html
   [21]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8318/shard-apl1/igt@i915_suspend@debugfs-reader.html

  * igt@kms_ccs@pipe-b-bad-aux-stride-y_tiled_gen12_mc_ccs:
    - shard-apl:          NOTRUN -> [SKIP][22] ([fdo#109271] / [i915#3886])
   [22]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8318/shard-apl3/igt@kms_ccs@pipe-b-bad-aux-stride-y_tiled_gen12_mc_ccs.html

  * igt@kms_ccs@pipe-c-crc-primary-basic-y_tiled_gen12_rc_ccs_cc:
    - shard-glk:          NOTRUN -> [SKIP][23] ([fdo#109271] / [i915#3886]) +1 similar issue
   [23]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8318/shard-glk2/igt@kms_ccs@pipe-c-crc-primary-basic-y_tiled_gen12_rc_ccs_cc.html

  * igt@kms_content_protection@atomic-dpms@pipe-a-dp-1:
    - shard-apl:          NOTRUN -> [TIMEOUT][24] ([i915#7173])
   [24]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8318/shard-apl1/igt@kms_content_protection@atomic-dpms@pipe-a-dp-1.html

  * igt@kms_cursor_legacy@flip-vs-cursor@atomic-transitions:
    - shard-glk:          [PASS][25] -> [FAIL][26] ([i915#2346])
   [25]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12559/shard-glk8/igt@kms_cursor_legacy@flip-vs-cursor@atomic-transitions.html
   [26]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8318/shard-glk4/igt@kms_cursor_legacy@flip-vs-cursor@atomic-transitions.html

  * {igt@kms_dsc@dsc-fractional-bpp} (NEW):
    - shard-snb:          NOTRUN -> [SKIP][27] ([fdo#109271])
   [27]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8318/shard-snb4/igt@kms_dsc@dsc-fractional-bpp.html

  * igt@kms_frontbuffer_tracking@psr-1p-primscrn-pri-indfb-draw-mmap-gtt:
    - shard-glk:          NOTRUN -> [SKIP][28] ([fdo#109271]) +31 similar issues
   [28]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8318/shard-glk9/igt@kms_frontbuffer_tracking@psr-1p-primscrn-pri-indfb-draw-mmap-gtt.html

  * igt@kms_plane_scaling@plane-downscale-with-modifiers-factor-0-5@pipe-a-dp-1:
    - shard-apl:          NOTRUN -> [SKIP][29] ([fdo#109271]) +20 similar issues
   [29]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8318/shard-apl1/igt@kms_plane_scaling@plane-downscale-with-modifiers-factor-0-5@pipe-a-dp-1.html

  * igt@kms_psr2_sf@primary-plane-update-sf-dmg-area:
    - shard-glk:          NOTRUN -> [SKIP][30] ([fdo#109271] / [i915#658])
   [30]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8318/shard-glk6/igt@kms_psr2_sf@primary-plane-update-sf-dmg-area.html

  
#### Possible fixes ####

  * igt@drm_fdinfo@most-busy-check-all@rcs0:
    - {shard-rkl}:        [FAIL][31] ([i915#7742]) -> [PASS][32]
   [31]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12559/shard-rkl-3/igt@drm_fdinfo@most-busy-check-all@rcs0.html
   [32]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8318/shard-rkl-2/igt@drm_fdinfo@most-busy-check-all@rcs0.html

  * igt@fbdev@read:
    - {shard-rkl}:        [SKIP][33] ([i915#2582]) -> [PASS][34]
   [33]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12559/shard-rkl-1/igt@fbdev@read.html
   [34]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8318/shard-rkl-4/igt@fbdev@read.html
    - {shard-tglu}:       [SKIP][35] ([i915#2582]) -> [PASS][36]
   [35]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12559/shard-tglu-6/igt@fbdev@read.html
   [36]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8318/shard-tglu-5/igt@fbdev@read.html

  * igt@feature_discovery@psr2:
    - {shard-rkl}:        [SKIP][37] ([i915#658]) -> [PASS][38]
   [37]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12559/shard-rkl-4/igt@feature_discovery@psr2.html
   [38]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8318/shard-rkl-6/igt@feature_discovery@psr2.html

  * igt@gem_eio@in-flight-suspend:
    - {shard-rkl}:        [FAIL][39] ([fdo#103375]) -> [PASS][40] +1 similar issue
   [39]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12559/shard-rkl-3/igt@gem_eio@in-flight-suspend.html
   [40]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8318/shard-rkl-2/igt@gem_eio@in-flight-suspend.html

  * igt@gem_exec_endless@dispatch@bcs0:
    - {shard-rkl}:        [SKIP][41] ([i915#6247]) -> [PASS][42]
   [41]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12559/shard-rkl-5/igt@gem_exec_endless@dispatch@bcs0.html
   [42]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8318/shard-rkl-4/igt@gem_exec_endless@dispatch@bcs0.html

  * igt@gem_exec_fair@basic-none-share@rcs0:
    - shard-glk:          [FAIL][43] ([i915#2842]) -> [PASS][44]
   [43]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12559/shard-glk7/igt@gem_exec_fair@basic-none-share@rcs0.html
   [44]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8318/shard-glk3/igt@gem_exec_fair@basic-none-share@rcs0.html

  * igt@gem_exec_fair@basic-none-solo@rcs0:
    - shard-apl:          [FAIL][45] ([i915#2842]) -> [PASS][46]
   [45]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12559/shard-apl1/igt@gem_exec_fair@basic-none-solo@rcs0.html
   [46]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8318/shard-apl1/igt@gem_exec_fair@basic-none-solo@rcs0.html

  * igt@gem_exec_fair@basic-none@vcs0:
    - {shard-rkl}:        [FAIL][47] ([i915#2842]) -> [PASS][48] +2 similar issues
   [47]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12559/shard-rkl-1/igt@gem_exec_fair@basic-none@vcs0.html
   [48]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8318/shard-rkl-5/igt@gem_exec_fair@basic-none@vcs0.html

  * igt@gem_exec_reloc@basic-gtt-read-noreloc:
    - {shard-rkl}:        [SKIP][49] ([i915#3281]) -> [PASS][50] +9 similar issues
   [49]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12559/shard-rkl-1/igt@gem_exec_reloc@basic-gtt-read-noreloc.html
   [50]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8318/shard-rkl-5/igt@gem_exec_reloc@basic-gtt-read-noreloc.html

  * igt@gem_set_tiling_vs_pwrite:
    - {shard-rkl}:        [SKIP][51] ([i915#3282]) -> [PASS][52] +2 similar issues
   [51]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12559/shard-rkl-4/igt@gem_set_tiling_vs_pwrite.html
   [52]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8318/shard-rkl-5/igt@gem_set_tiling_vs_pwrite.html

  * igt@gen9_exec_parse@allowed-single:
    - shard-glk:          [DMESG-WARN][53] ([i915#5566] / [i915#716]) -> [PASS][54]
   [53]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12559/shard-glk3/igt@gen9_exec_parse@allowed-single.html
   [54]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8318/shard-glk1/igt@gen9_exec_parse@allowed-single.html

  * igt@gen9_exec_parse@cmd-crossing-page:
    - {shard-rkl}:        [SKIP][55] ([i915#2527]) -> [PASS][56] +1 similar issue
   [55]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12559/shard-rkl-4/igt@gen9_exec_parse@cmd-crossing-page.html
   [56]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8318/shard-rkl-5/igt@gen9_exec_parse@cmd-crossing-page.html

  * igt@i915_hangman@engine-engine-error@bcs0:
    - {shard-rkl}:        [SKIP][57] ([i915#6258]) -> [PASS][58]
   [57]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12559/shard-rkl-5/igt@i915_hangman@engine-engine-error@bcs0.html
   [58]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8318/shard-rkl-6/igt@i915_hangman@engine-engine-error@bcs0.html

  * igt@i915_pm_rpm@dpms-non-lpsp:
    - {shard-dg1}:        [SKIP][59] ([i915#1397]) -> [PASS][60]
   [59]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12559/shard-dg1-14/igt@i915_pm_rpm@dpms-non-lpsp.html
   [60]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8318/shard-dg1-17/igt@i915_pm_rpm@dpms-non-lpsp.html

  * igt@i915_pm_sseu@full-enable:
    - {shard-rkl}:        [SKIP][61] ([i915#4387]) -> [PASS][62]
   [61]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12559/shard-rkl-3/igt@i915_pm_sseu@full-enable.html
   [62]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8318/shard-rkl-5/igt@i915_pm_sseu@full-enable.html

  * igt@kms_big_fb@linear-32bpp-rotate-180:
    - {shard-rkl}:        [SKIP][63] ([i915#1845] / [i915#4098]) -> [PASS][64] +19 similar issues
   [63]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12559/shard-rkl-3/igt@kms_big_fb@linear-32bpp-rotate-180.html
   [64]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8318/shard-rkl-6/igt@kms_big_fb@linear-32bpp-rotate-180.html

  * igt@kms_big_fb@y-tiled-max-hw-stride-32bpp-rotate-180-hflip-async-flip:
    - {shard-dg1}:        [DMESG-WARN][65] -> [PASS][66] +1 similar issue
   [65]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12559/shard-dg1-16/igt@kms_big_fb@y-tiled-max-hw-stride-32bpp-rotate-180-hflip-async-flip.html
   [66]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8318/shard-dg1-14/igt@kms_big_fb@y-tiled-max-hw-stride-32bpp-rotate-180-hflip-async-flip.html

  * igt@kms_cursor_legacy@flip-vs-cursor@atomic-transitions-varying-size:
    - shard-apl:          [FAIL][67] ([i915#2346]) -> [PASS][68]
   [67]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12559/shard-apl1/igt@kms_cursor_legacy@flip-vs-cursor@atomic-transitions-varying-size.html
   [68]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8318/shard-apl6/igt@kms_cursor_legacy@flip-vs-cursor@atomic-transitions-varying-size.html

  * igt@kms_fbcon_fbt@psr-suspend:
    - {shard-rkl}:        [SKIP][69] ([fdo#110189] / [i915#3955]) -> [PASS][70]
   [69]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12559/shard-rkl-5/igt@kms_fbcon_fbt@psr-suspend.html
   [70]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8318/shard-rkl-6/igt@kms_fbcon_fbt@psr-suspend.html

  * igt@kms_flip@flip-vs-suspend-interruptible@b-dp1:
    - shard-apl:          [DMESG-WARN][71] ([i915#180]) -> [PASS][72]
   [71]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12559/shard-apl7/igt@kms_flip@flip-vs-suspend-interruptible@b-dp1.html
   [72]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8318/shard-apl6/igt@kms_flip@flip-vs-suspend-interruptible@b-dp1.html

  * igt@kms_frontbuffer_tracking@fbc-1p-offscren-pri-indfb-draw-blt:
    - {shard-tglu}:       [SKIP][73] ([i915#1849]) -> [PASS][74]
   [73]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12559/shard-tglu-6/igt@kms_frontbuffer_tracking@fbc-1p-offscren-pri-indfb-draw-blt.html
   [74]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8318/shard-tglu-2/igt@kms_frontbuffer_tracking@fbc-1p-offscren-pri-indfb-draw-blt.html

  * igt@kms_frontbuffer_tracking@fbc-1p-primscrn-pri-indfb-draw-pwrite:
    - {shard-rkl}:        [SKIP][75] ([i915#1849] / [i915#4098]) -> [PASS][76] +14 similar issues
   [75]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12559/shard-rkl-1/igt@kms_frontbuffer_tracking@fbc-1p-primscrn-pri-indfb-draw-pwrite.html
   [76]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8318/shard-rkl-6/igt@kms_frontbuffer_tracking@fbc-1p-primscrn-pri-indfb-draw-pwrite.html

  * igt@kms_plane@plane-position-hole-dpms@pipe-b-planes:
    - {shard-rkl}:        [SKIP][77] ([i915#1849]) -> [PASS][78] +1 similar issue
   [77]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12559/shard-rkl-1/igt@kms_plane@plane-position-hole-dpms@pipe-b-planes.html
   [78]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8318/shard-rkl-6/igt@kms_plane@plane-position-hole-dpms@pipe-b-planes.html

  * igt@kms_psr@sprite_mmap_gtt:
    - {shard-rkl}:        [SKIP][79] ([i915#1072]) -> [PASS][80] +1 similar issue
   [79]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12559/shard-rkl-5/igt@kms_psr@sprite_mmap_gtt.html
   [80]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8318/shard-rkl-6/igt@kms_psr@sprite_mmap_gtt.html

  * igt@kms_universal_plane@disable-primary-vs-flip-pipe-a:
    - {shard-rkl}:        [SKIP][81] ([i915#1845] / [i915#4070] / [i915#4098]) -> [PASS][82]
   [81]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12559/shard-rkl-1/igt@kms_universal_plane@disable-primary-vs-flip-pipe-a.html
   [82]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8318/shard-rkl-6/igt@kms_universal_plane@disable-primary-vs-flip-pipe-a.html

  * igt@kms_universal_plane@universal-plane-pipe-d-functional:
    - {shard-tglu}:       [SKIP][83] ([fdo#109274]) -> [PASS][84]
   [83]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12559/shard-tglu-6/igt@kms_universal_plane@universal-plane-pipe-d-functional.html
   [84]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8318/shard-tglu-1/igt@kms_universal_plane@universal-plane-pipe-d-functional.html

  * igt@kms_vblank@pipe-a-ts-continuation-suspend:
    - {shard-tglu}:       [SKIP][85] ([i915#7651]) -> [PASS][86] +6 similar issues
   [85]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12559/shard-tglu-6/igt@kms_vblank@pipe-a-ts-continuation-suspend.html
   [86]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8318/shard-tglu-2/igt@kms_vblank@pipe-a-ts-continuation-suspend.html

  * igt@kms_vblank@pipe-b-wait-busy-hang:
    - {shard-tglu}:       [SKIP][87] ([i915#1845] / [i915#7651]) -> [PASS][88] +5 similar issues
   [87]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12559/shard-tglu-6/igt@kms_vblank@pipe-b-wait-busy-hang.html
   [88]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8318/shard-tglu-3/igt@kms_vblank@pipe-b-wait-busy-hang.html

  * igt@perf@gen12-mi-rpc:
    - {shard-rkl}:        [SKIP][89] ([fdo#109289]) -> [PASS][90]
   [89]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12559/shard-rkl-5/igt@perf@gen12-mi-rpc.html
   [90]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8318/shard-rkl-1/igt@perf@gen12-mi-rpc.html

  * igt@perf@polling-small-buf:
    - {shard-rkl}:        [FAIL][91] ([i915#1722]) -> [PASS][92]
   [91]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12559/shard-rkl-4/igt@perf@polling-small-buf.html
   [92]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8318/shard-rkl-6/igt@perf@polling-small-buf.html

  * igt@perf_pmu@idle@rcs0:
    - {shard-dg1}:        [FAIL][93] ([i915#4349]) -> [PASS][94]
   [93]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12559/shard-dg1-19/igt@perf_pmu@idle@rcs0.html
   [94]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8318/shard-dg1-15/igt@perf_pmu@idle@rcs0.html
    - {shard-rkl}:        [FAIL][95] ([i915#4349]) -> [PASS][96]
   [95]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12559/shard-rkl-1/igt@perf_pmu@idle@rcs0.html
   [96]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8318/shard-rkl-5/igt@perf_pmu@idle@rcs0.html

  * igt@prime_vgem@basic-fence-read:
    - {shard-rkl}:        [SKIP][97] ([fdo#109295] / [i915#3291] / [i915#3708]) -> [PASS][98]
   [97]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12559/shard-rkl-6/igt@prime_vgem@basic-fence-read.html
   [98]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8318/shard-rkl-5/igt@prime_vgem@basic-fence-read.html

  * igt@sysfs_heartbeat_interval@precise@rcs0:
    - {shard-dg1}:        [FAIL][99] ([i915#1755]) -> [PASS][100] +4 similar issues
   [99]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12559/shard-dg1-19/igt@sysfs_heartbeat_interval@precise@rcs0.html
   [100]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8318/shard-dg1-18/igt@sysfs_heartbeat_interval@precise@rcs0.html

  
#### Warnings ####

  * igt@kms_dsc@dsc-with-bpc-formats:
    - shard-glk:          [SKIP][101] ([fdo#109271] / [i915#7205]) -> [SKIP][102] ([fdo#109271])
   [101]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12559/shard-glk1/igt@kms_dsc@dsc-with-bpc-formats.html
   [102]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8318/shard-glk4/igt@kms_dsc@dsc-with-bpc-formats.html
    - shard-apl:          [SKIP][103] ([fdo#109271] / [i915#7205]) -> [SKIP][104] ([fdo#109271])
   [103]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12559/shard-apl1/igt@kms_dsc@dsc-with-bpc-formats.html
   [104]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8318/shard-apl3/igt@kms_dsc@dsc-with-bpc-formats.html

  * igt@runner@aborted:
    - shard-apl:          [FAIL][105] ([i915#180] / [i915#4312]) -> ([FAIL][106], [FAIL][107]) ([fdo#109271] / [i915#180] / [i915#4312])
   [105]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12559/shard-apl7/igt@runner@aborted.html
   [106]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8318/shard-apl1/igt@runner@aborted.html
   [107]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8318/shard-apl1/igt@runner@aborted.html

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

  [fdo#103375]: https://bugs.freedesktop.org/show_bug.cgi?id=103375
  [fdo#109271]: https://bugs.freedesktop.org/show_bug.cgi?id=109271
  [fdo#109274]: https://bugs.freedesktop.org/show_bug.cgi?id=109274
  [fdo#109280]: https://bugs.freedesktop.org/show_bug.cgi?id=109280
  [fdo#109283]: https://bugs.freedesktop.org/show_bug.cgi?id=109283
  [fdo#109285]: https://bugs.freedesktop.org/show_bug.cgi?id=109285
  [fdo#109289]: https://bugs.freedesktop.org/show_bug.cgi?id=109289
  [fdo#109295]: https://bugs.freedesktop.org/show_bug.cgi?id=109295
  [fdo#109308]: https://bugs.freedesktop.org/show_bug.cgi?id=109308
  [fdo#109309]: https://bugs.freedesktop.org/show_bug.cgi?id=109309
  [fdo#109314]: https://bugs.freedesktop.org/show_bug.cgi?id=109314
  [fdo#109315]: https://bugs.freedesktop.org/show_bug.cgi?id=109315
  [fdo#109506]: https://bugs.freedesktop.org/show_bug.cgi?id=109506
  [fdo#109642]: https://bugs.freedesktop.org/show_bug.cgi?id=109642
  [fdo#110189]: https://bugs.freedesktop.org/show_bug.cgi?id=110189
  [fdo#110542]: https://bugs.freedesktop.org/show_bug.cgi?id=110542
  [fdo#110723]: https://bugs.freedesktop.org/show_bug.cgi?id=110723
  [fdo#111068]: https://bugs.freedesktop.org/show_bug.cgi?id=111068
  [fdo#111614]: https://bugs.freedesktop.org/show_bug.cgi?id=111614
  [fdo#111615]: https://bugs.freedesktop.org/show_bug.cgi?id=111615
  [fdo#111644]: https://bugs.freedesktop.org/show_bug.cgi?id=111644
  [fdo#111825]: https://bugs.freedesktop.org/show_bug.cgi?id=111825
  [fdo#111827]: https://bugs.freedesktop.org/show_bug.cgi?id=111827
  [fdo#112054]: https://bugs.freedesktop.org/show_bug.cgi?id=112054
  [fdo#112283]: https://bugs.freedesktop.org/show_bug.cgi?id=112283
  [i915#1072]: https://gitlab.freedesktop.org/drm/intel/issues/1072
  [i915#118]: https://gitlab.freedesktop.org/drm/intel/issues/118
  [i915#132]: https://gitlab.freedesktop.org/drm/intel/issues/132
  [i915#1397]: https://gitlab.freedesktop.org/drm/intel/issues/1397
  [i915#1722]: https://gitlab.freedesktop.org/drm/intel/issues/1722
  [i915#1755]: https://gitlab.freedesktop.org/drm/intel/issues/1755
  [i915#180]: https://gitlab.freedesktop.org/drm/intel/issues/180
  [i915#1825]: https://gitlab.freedesktop.org/drm/intel/issues/1825
  [i915#1839]: https://gitlab.freedesktop.org/drm/intel/issues/1839
  [i915#1845]: https://gitlab.freedesktop.org/drm/intel/issues/1845
  [i915#1849]: https://gitlab.freedesktop.org/drm/intel/issues/1849
  [i915#1902]: https://gitlab.freedesktop.org/drm/intel/issues/1902
  [i915#2346]: https://gitlab.freedesktop.org/drm/intel/issues/2346
  [i915#2437]: https://gitlab.freedesktop.org/drm/intel/issues/2437
  [i915#2527]: https://gitlab.freedesktop.org/drm/intel/issues/2527
  [i915#2575]: https://gitlab.freedesktop.org/drm/intel/issues/2575
  [i915#2582]: https://gitlab.freedesktop.org/drm/intel/issues/2582
  [i915#2587]: https://gitlab.freedesktop.org/drm/intel/issues/2587
  [i915#2672]: https://gitlab.freedesktop.org/drm/intel/issues/2672
  [i915#2681]: https://gitlab.freedesktop.org/drm/intel/issues/2681
  [i915#2705]: https://gitlab.freedesktop.org/drm/intel/issues/2705
  [i915#280]: https://gitlab.freedesktop.org/drm/intel/issues/280
  [i915#284]: https://gitlab.freedesktop.org/drm/intel/issues/284
  [i915#2842]: https://gitlab.freedesktop.org/drm/intel/issues/2842
  [i915#2846]: https://gitlab.freedesktop.org/drm/intel/issues/2846
  [i915#2856]: https://gitlab.freedesktop.org/drm/intel/issues/2856
  [i915#2920]: https://gitlab.freedesktop.org/drm/intel/issues/2920
  [i915#2994]: https://gitlab.freedesktop.org/drm/intel/issues/2994
  [i915#3116]: https://gitlab.freedesktop.org/drm/intel/issues/3116
  [i915#3281]: https://gitlab.freedesktop.org/drm/intel/issues/3281
  [i915#3282]: https://gitlab.freedesktop.org/drm/intel/issues/3282
  [i915#3291]: https://gitlab.freedesktop.org/drm/intel/issues/3291
  [i915#3297]: https://gitlab.freedesktop.org/drm/intel/issues/3297
  [i915#3299]: https://gitlab.freedesktop.org/drm/intel/issues/3299
  [i915#3301]: https://gitlab.freedesktop.org/drm/intel/issues/3301
  [i915#3318]: https://gitlab.freedesktop.org/drm/intel/issues/3318
  [i915#3359]: https://gitlab.freedesktop.org/drm/intel/issues/3359
  [i915#3371]: https://gitlab.freedesktop.org/drm/intel/issues/3371
  [i915#3458]: https://gitlab.freedesktop.org/drm/intel/issues/3458
  [i915#3469]: https://gitlab.freedesktop.org/drm/intel/issues/3469
  [i915#3528]: https://gitlab.freedesktop.org/drm/intel/issues/3528
  [i915#3539]: https://gitlab.freedesktop.org/drm/intel/issues/3539
  [i915#3546]: https://gitlab.freedesktop.org/drm/intel/issues/3546
  [i915#3555]: https://gitlab.freedesktop.org/drm/intel/issues/3555
  [i915#3558]: https://gitlab.freedesktop.org/drm/intel/issues/3558
  [i915#3637]: https://gitlab.freedesktop.org/drm/intel/issues/3637
  [i915#3638]: https://gitlab.freedesktop.org/drm/intel/issues/3638
  [i915#3689]: https://gitlab.freedesktop.org/drm/intel/issues/3689
  [i915#3708]: https://gitlab.freedesktop.org/drm/intel/issues/3708
  [i915#3734]: https://gitlab.freedesktop.org/drm/intel/issues/3734
  [i915#3804]: https://gitlab.freedesktop.org/drm/intel/issues/3804
  [i915#3825]: https://gitlab.freedesktop.org/drm/intel/issues/3825
  [i915#3826]: https://gitlab.freedesktop.org/drm/intel/issues/3826
  [i915#3886]: https://gitlab.freedesktop.org/drm/intel/issues/3886
  [i915#3955]: https://gitlab.freedesktop.org/drm/intel/issues/3955
  [i915#3966]: https://gitlab.freedesktop.org/drm/intel/issues/3966
  [i915#404]: https://gitlab.freedesktop.org/drm/intel/issues/404
  [i915#4070]: https://gitlab.freedesktop.org/drm/intel/issues/4070
  [i915#4077]: https://gitlab.freedesktop.org/drm/intel/issues/4077
  [i915#4078]: https://gitlab.freedesktop.org/drm/intel/issues/4078
  [i915#4079]: https://gitlab.freedesktop.org/drm/intel/issues/4079
  [i915#4083]: https://gitlab.freedesktop.org/drm/intel/issues/4083
  [i915#4098]: https://gitlab.freedesktop.org/drm/intel/issues/4098
  [i915#4103]: https://gitlab.freedesktop.org/drm/intel/issues/4103
  [i915#4258]: https://gitlab.freedesktop.org/drm/intel/issues/4258
  [i915#426]: https://gitlab.freedesktop.org/drm/intel/issues/426
  [i915#4270]: https://gitlab.freedesktop.org/drm/intel/issues/4270
  [i915#4281]: https://gitlab.freedesktop.org/drm/intel/issues/4281
  [i915#4312]: https://gitlab.freedesktop.org/drm/intel/issues/4312
  [i915#4349]: https://gitlab.freedesktop.org/drm/intel/issues/4349
  [i915#4387]: https://gitlab.freedesktop.org/drm/intel/issues/4387
  [i915#4525]: https://gitlab.freedesktop.org/drm/intel/issues/4525
  [i915#4538]: https://gitlab.freedesktop.org/drm/intel/issues/4538
  [i915#4613]: https://gitlab.freedesktop.org/drm/intel/issues/4613
  [i915#4767]: https://gitlab.freedesktop.org/drm/intel/issues/4767
  [i915#4771]: https://gitlab.freedesktop.org/drm/intel/issues/4771
  [i915#4852]: https://gitlab.freedesktop.org/drm/intel/issues/4852
  [i915#5176]: https://gitlab.freedesktop.org/drm/intel/issues/5176
  [i915#5235]: https://gitlab.freedesktop.org/drm/intel/issues/5235
  [i915#5286]: https://gitlab.freedesktop.org/drm/intel/issues/5286
  [i915#5288]: https://gitlab.freedesktop.org/drm/intel/issues/5288
  [i915#5289]: https://gitlab.freedesktop.org/drm/intel/issues/5289
  [i915#5325]: https://gitlab.freedesktop.org/drm/intel/issues/5325
  [i915#5327]: https://gitlab.freedesktop.org/drm/intel/issues/5327
  [i915#533]: https://gitlab.freedesktop.org/drm/intel/issues/533
  [i915#5439]: https://gitlab.freedesktop.org/drm/intel/issues/5439
  [i915#5461]: https://gitlab.freedesktop.org/drm/intel/issues/5461
  [i915#5566]: https://gitlab.freedesktop.org/drm/intel/issues/5566
  [i915#5784]: https://gitlab.freedesktop.org/drm/intel/issues/5784
  [i915#6095]: https://gitlab.freedesktop.org/drm/intel/issues/6095
  [i915#6117]: https://gitlab.freedesktop.org/drm/intel/issues/6117
  [i915#6227]: https://gitlab.freedesktop.org/drm/intel/issues/6227
  [i915#6247]: https://gitlab.freedesktop.org/drm/intel/issues/6247
  [i915#6248]: https://gitlab.freedesktop.org/drm/intel/issues/6248
  [i915#6252]: https://gitlab.freedesktop.org/drm/intel/issues/6252
  [i915#6258]: https://gitlab.freedesktop.org/drm/intel/issues/6258
  [i915#6268]: https://gitlab.freedesktop.org/drm/intel/issues/6268
  [i915#6301]: https://gitlab.freedesktop.org/drm/intel/issues/6301
  [i915#6334]: https://gitlab.freedesktop.org/drm/intel/issues/6334
  [i915#6335]: https://gitlab.freedesktop.org/drm/intel/issues/6335
  [i915#6355]: https://gitlab.freedesktop.org/drm/intel/issues/6355
  [i915#6433]: https://gitlab.freedesktop.org/drm/intel/issues/6433
  [i915#6497]: https://gitlab.freedesktop.org/drm/intel/issues/6497
  [i915#6524]: https://gitlab.freedesktop.org/drm/intel/issues/6524
  [i915#658]: https://gitlab.freedesktop.org/drm/intel/issues/658
  [i915#6590]: https://gitlab.freedesktop.org/drm/intel/issues/6590
  [i915#6768]: https://gitlab.freedesktop.org/drm/intel/issues/6768
  [i915#6944]: https://gitlab.freedesktop.org/drm/intel/issues/6944
  [i915#6946]: https://gitlab.freedesktop.org/drm/intel/issues/6946
  [i915#7116]: https://gitlab.freedesktop.org/drm/intel/issues/7116
  [i915#7118]: https://gitlab.freedesktop.org/drm/intel/issues/7118
  [i915#7128]: https://gitlab.freedesktop.org/drm/intel/issues/7128
  [i915#716]: https://gitlab.freedesktop.org/drm/intel/issues/716
  [i915#7173]: https://gitlab.freedesktop.org/drm/intel/issues/7173
  [i915#7205]: https://gitlab.freedesktop.org/drm/intel/issues/7205
  [i915#7276]: https://gitlab.freedesktop.org/drm/intel/issues/7276
  [i915#7294]: https://gitlab.freedesktop.org/drm/intel/issues/7294
  [i915#7561]: https://gitlab.freedesktop.org/drm/intel/issues/7561
  [i915#7651]: https://gitlab.freedesktop.org/drm/intel/issues/7651
  [i915#7697]: https://gitlab.freedesktop.org/drm/intel/issues/7697
  [i915#7701]: https://gitlab.freedesktop.org/drm/intel/issues/7701
  [i915#7707]: https://gitlab.freedesktop.org/drm/intel/issues/7707
  [i915#7708]: https://gitlab.freedesktop.org/drm/intel/issues/7708
  [i915#7711]: https://gitlab.freedesktop.org/drm/intel/issues/7711
  [i915#7742]: https://gitlab.freedesktop.org/drm/intel/issues/7742


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

  * CI: CI-20190529 -> None
  * IGT: IGT_7113 -> IGTPW_8318
  * Piglit: piglit_4509 -> None

  CI-20190529: 20190529
  CI_DRM_12559: b4a7d5ac8957c0b894b81d125b15b1ff45eaf5b2 @ git://anongit.freedesktop.org/gfx-ci/linux
  IGTPW_8318: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8318/index.html
  IGT_7113: 15562e123ee6ed88163c7da2ef330dfe9bbd16a5 @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git
  piglit_4509: fdc5a4ca11124ab8413c7988896eec4c97336694 @ git://anongit.freedesktop.org/piglit

== Logs ==

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

[-- Attachment #2: Type: text/html, Size: 29137 bytes --]

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

* Re: [igt-dev] [PATCH i-g-t 2/8] Move wrapper functions from kms_dsc to kms_dsc_helper
  2023-01-09 15:28 ` [igt-dev] [PATCH i-g-t 2/8] Move wrapper functions from kms_dsc to kms_dsc_helper Swati Sharma
@ 2023-01-10 10:54   ` Hogander, Jouni
  0 siblings, 0 replies; 15+ messages in thread
From: Hogander, Jouni @ 2023-01-10 10:54 UTC (permalink / raw)
  To: igt-dev, Sharma, Swati2; +Cc: Latvala, Petri

On Mon, 2023-01-09 at 20:58 +0530, Swati Sharma wrote:
> To add dsc concurrent tests, these wrapper functions can be
> reused. Lets create separate helper file to avoid code duplication.
> 
> Signed-off-by: Swati Sharma <swati2.sharma@intel.com>
> ---
>  tests/i915/kms_dsc.c        | 130 +---------------------------------
> -
>  tests/i915/kms_dsc_helper.c | 131
> ++++++++++++++++++++++++++++++++++++
>  tests/i915/kms_dsc_helper.h |  65 ++++++++++++++++++
>  tests/meson.build           |  10 ++-
>  4 files changed, 207 insertions(+), 129 deletions(-)
>  create mode 100644 tests/i915/kms_dsc_helper.c
>  create mode 100644 tests/i915/kms_dsc_helper.h
> 
> diff --git a/tests/i915/kms_dsc.c b/tests/i915/kms_dsc.c
> index 330fc050b..0db6cc2ef 100644
> --- a/tests/i915/kms_dsc.c
> +++ b/tests/i915/kms_dsc.c
> @@ -29,22 +29,8 @@
>   * Manasi Navare <manasi.d.navare@intel.com>
>   *
>   */
> -#include "igt.h"
> -#include "igt_sysfs.h"
> -#include <errno.h>
> -#include <getopt.h>
> -#include <math.h>
> -#include <stdint.h>
> -#include <stdbool.h>
> -#include <strings.h>
> -#include <unistd.h>
> -#include <stdlib.h>
> -#include <signal.h>
> -#include <time.h>
> -#include <fcntl.h>
> -#include <termios.h>
> -
> -#define HDISPLAY_5K    5120
> +
> +#include "kms_dsc_helper.h"
>  
>  IGT_TEST_DESCRIPTION("Test to validate display stream compression");
>  
> @@ -53,20 +39,6 @@ enum dsc_test_type {
>         TEST_DSC_BPC
>  };
>  
> -typedef struct {
> -       int drm_fd;
> -       uint32_t devid;
> -       igt_display_t display;
> -       struct igt_fb fb_test_pattern;
> -       igt_output_t *output;
> -       int input_bpc;
> -       int n_pipes;
> -       enum pipe pipe;
> -} data_t;
> -
> -bool force_dsc_en_orig;
> -int force_dsc_restore_fd = -1;
> -
>  const struct {
>         const int format;
>         const char format_str[20];
> @@ -84,56 +56,6 @@ static inline void manual(const char *expected)
>         igt_debug_interactive_mode_check("all", expected);
>  }
>  
> -static void force_dsc_enable(data_t *data)
> -{
> -       int ret;
> -
> -       igt_debug("Forcing DSC enable on %s\n", data->output->name);
> -       ret = igt_force_dsc_enable(data->drm_fd,
> -                                  data->output->name);
> -       igt_assert_f(ret > 0, "debugfs_write failed");
> -}
> -
> -static void force_dsc_enable_bpc(data_t *data)
> -{
> -       int ret;
> -
> -       igt_debug("Forcing input DSC BPC to %d on %s\n",
> -                 data->input_bpc, data->output->name);
> -       ret = igt_force_dsc_enable_bpc(data->drm_fd,
> -                                      data->output->name,
> -                                      data->input_bpc);
> -       igt_assert_f(ret > 0, "debugfs_write failed");
> -}
> -
> -static void save_force_dsc_en(data_t *data)
> -{
> -       force_dsc_en_orig =
> -               igt_is_force_dsc_enabled(data->drm_fd,
> -                                        data->output->name);
> -       force_dsc_restore_fd =
> -               igt_get_dsc_debugfs_fd(data->drm_fd,
> -                                      data->output->name);
> -       igt_assert(force_dsc_restore_fd >= 0);
> -}
> -
> -static void restore_force_dsc_en(void)
> -{
> -       if (force_dsc_restore_fd < 0)
> -               return;
> -
> -       igt_debug("Restoring DSC enable\n");
> -       igt_assert(write(force_dsc_restore_fd, force_dsc_en_orig ?
> "1" : "0", 1) == 1);
> -
> -       close(force_dsc_restore_fd);
> -       force_dsc_restore_fd = -1;
> -}
> -
> -static void kms_dsc_exit_handler(int sig)
> -{
> -       restore_force_dsc_en();
> -}
> -
>  static drmModeModeInfo *get_highres_mode(igt_output_t *output)
>  {
>         drmModeConnector *connector = output->config.connector;
> @@ -146,26 +68,6 @@ static drmModeModeInfo
> *get_highres_mode(igt_output_t *output)
>         return highest_mode;
>  }
>  
> -static bool check_dsc_on_connector(data_t *data)
> -{
> -       igt_output_t *output = data->output;
> -
> -       if (!igt_is_dsc_supported(data->drm_fd, output->name)) {
> -               igt_debug("DSC not supported on connector %s\n",
> -                         output->name);
> -               return false;
> -       }
> -
> -       if (!output_is_internal_panel(output) &&
> -           !igt_is_fec_supported(data->drm_fd, output->name)) {
> -               igt_debug("DSC cannot be enabled without FEC on
> %s\n",
> -                         output->name);
> -               return false;
> -       }
> -
> -       return true;
> -}
> -
>  static bool check_big_joiner_pipe_constraint(data_t *data)
>  {
>         igt_output_t *output = data->output;
> @@ -181,34 +83,6 @@ static bool
> check_big_joiner_pipe_constraint(data_t *data)
>         return true;
>  }
>  
> -static bool check_gen11_dp_constraint(data_t *data)
> -{
> -       igt_output_t *output = data->output;
> -       uint32_t devid = intel_get_drm_devid(data->drm_fd);
> -       drmModeConnector *connector = output->config.connector;
> -
> -       if ((connector->connector_type ==
> DRM_MODE_CONNECTOR_DisplayPort) &&
> -           (data->pipe == PIPE_A) && IS_GEN11(devid)) {
> -               igt_debug("DSC not supported on pipe A on external DP
> in gen11 platforms\n");
> -               return false;
> -       }
> -
> -       return true;
> -}
> -
> -/* Max DSC Input BPC for ICL is 10 and for TGL+ is 12 */
> -static bool check_gen11_bpc_constraint(data_t *data)
> -{
> -       uint32_t devid = intel_get_drm_devid(data->drm_fd);
> -
> -       if (IS_GEN11(devid) && data->input_bpc == 12) {
> -               igt_debug("Input bpc 12 not supported on gen11
> platforms\n");
> -               return false;
> -       }
> -
> -       return true;
> -}
> -
>  static void test_cleanup(data_t *data)
>  {
>         igt_output_t *output = data->output;
> diff --git a/tests/i915/kms_dsc_helper.c
> b/tests/i915/kms_dsc_helper.c
> new file mode 100644
> index 000000000..183a31457
> --- /dev/null
> +++ b/tests/i915/kms_dsc_helper.c
> @@ -0,0 +1,131 @@
> +/*
> + * Copyright © 2023 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.
> + *
> + * Displayport Display Stream Compression test
> + * Until the CRC support is added this needs to be invoked with --
> interactive
> + * to manually verify if the test pattern is seen without corruption
> for each
> + * subtest.
> + *
> + */
> +
> +#include "kms_dsc_helper.h"
> +
> +bool force_dsc_en_orig;
> +int force_dsc_restore_fd = -1;
> +
> +void force_dsc_enable(data_t *data)
> +{
> +       int ret;
> +
> +       igt_debug("Forcing DSC enable on %s\n", data->output->name);
> +       ret = igt_force_dsc_enable(data->drm_fd,
> +                                  data->output->name);
> +       igt_assert_f(ret > 0, "debugfs_write failed");
> +}
> +
> +void force_dsc_enable_bpc(data_t *data)
> +{
> +       int ret;
> +
> +       igt_debug("Forcing input DSC BPC to %d on %s\n",
> +                 data->input_bpc, data->output->name);
> +       ret = igt_force_dsc_enable_bpc(data->drm_fd,
> +                                      data->output->name,
> +                                      data->input_bpc);
> +       igt_assert_f(ret > 0, "debugfs_write failed");
> +}
> +
> +void save_force_dsc_en(data_t *data)
> +{
> +       force_dsc_en_orig =
> +               igt_is_force_dsc_enabled(data->drm_fd,
> +                                        data->output->name);
> +       force_dsc_restore_fd =
> +               igt_get_dsc_debugfs_fd(data->drm_fd,
> +                                      data->output->name);
> +       igt_assert(force_dsc_restore_fd >= 0);
> +}
> +
> +void restore_force_dsc_en(void)
> +{
> +       if (force_dsc_restore_fd < 0)
> +               return;
> +
> +       igt_debug("Restoring DSC enable\n");
> +       igt_assert(write(force_dsc_restore_fd, force_dsc_en_orig ?
> "1" : "0", 1) == 1);
> +
> +       close(force_dsc_restore_fd);
> +       force_dsc_restore_fd = -1;
> +}
> +
> +void kms_dsc_exit_handler(int sig)
> +{
> +       restore_force_dsc_en();
> +}
> +
> +bool check_dsc_on_connector(data_t *data)
> +{
> +       igt_output_t *output = data->output;
> +
> +       if (!igt_is_dsc_supported(data->drm_fd, output->name)) {
> +               igt_debug("DSC not supported on connector %s\n",
> +                         output->name);
> +               return false;
> +       }
> +
> +       if (!output_is_internal_panel(output) &&
> +           !igt_is_fec_supported(data->drm_fd, output->name)) {
> +               igt_debug("DSC cannot be enabled without FEC on
> %s\n",
> +                         output->name);
> +               return false;
> +       }
> +
> +       return true;
> +}
> +
> +bool check_gen11_dp_constraint(data_t *data)
> +{
> +       igt_output_t *output = data->output;
> +       uint32_t devid = intel_get_drm_devid(data->drm_fd);
> +       drmModeConnector *connector = output->config.connector;
> +
> +       if ((connector->connector_type ==
> DRM_MODE_CONNECTOR_DisplayPort) &&
> +           (data->pipe == PIPE_A) && IS_GEN11(devid)) {
> +               igt_debug("DSC not supported on pipe A on external DP
> in gen11 platforms\n");
> +               return false;
> +       }
> +
> +       return true;
> +}
> +
> +/* Max DSC Input BPC for ICL is 10 and for TGL+ is 12 */
> +bool check_gen11_bpc_constraint(data_t *data)
> +{
> +       uint32_t devid = intel_get_drm_devid(data->drm_fd);
> +
> +       if (IS_GEN11(devid) && data->input_bpc == 12) {
> +               igt_debug("Input bpc 12 not supported on gen11
> platforms\n");
> +               return false;
> +       }
> +
> +       return true;
> +}
> diff --git a/tests/i915/kms_dsc_helper.h
> b/tests/i915/kms_dsc_helper.h
> new file mode 100644
> index 000000000..0d93f7369
> --- /dev/null
> +++ b/tests/i915/kms_dsc_helper.h
> @@ -0,0 +1,65 @@
> +/*
> + * Copyright © 2023 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.
> + *
> + */
> +
> +#ifndef IGT_KMS_DSC_HELPER_H
> +#define IGT_KMS_DSC_HELPER_H
> +
> +#include "igt.h"
> +#include "igt_sysfs.h"
> +#include <errno.h>
> +#include <getopt.h>
> +#include <math.h>
> +#include <stdint.h>
> +#include <stdbool.h>
> +#include <strings.h>
> +#include <unistd.h>
> +#include <stdlib.h>
> +#include <signal.h>
> +#include <time.h>
> +#include <fcntl.h>
> +#include <termios.h>
> +
> +#define HDISPLAY_5K    5120
> +
> +typedef struct {
> +       int drm_fd;
> +       uint32_t devid;
> +       igt_display_t display;
> +       struct igt_fb fb_test_pattern;
> +       igt_output_t *output;
> +       int input_bpc;
> +       int n_pipes;
> +       enum pipe pipe;
> +} data_t;

Defining this data structure here forces testcase to use this specific
format as it's data. I'm thinking kms_psr2_sf dsc patch from me where
kms_psr2_sf.c is possible user for this:

https://patchwork.freedesktop.org/series/112098/

How about just adding more parameters to exported functions? E.g.:

void force_dsc_enable_bpc(data_t *data); ->

void force_dsc_enable_bpc(data->drm_fd, igt_output_t *output);
 
> +
> +void force_dsc_enable_bpc(data_t *data);
> +void force_dsc_enable(data_t *data);
> +void save_force_dsc_en(data_t *data);
> +void restore_force_dsc_en(void);
> +void kms_dsc_exit_handler(int sig);
> +bool check_dsc_on_connector(data_t *data);
> +bool check_gen11_dp_constraint(data_t *data);
> +bool check_gen11_bpc_constraint(data_t *data);
> +
> +#endif
> diff --git a/tests/meson.build b/tests/meson.build
> index cb4289985..e63d62249 100644
> --- a/tests/meson.build
> +++ b/tests/meson.build
> @@ -221,7 +221,6 @@ i915_progs = [
>         'kms_ccs',
>         'kms_cdclk',
>         'kms_draw_crc',
> -       'kms_dsc',
>         'kms_fbcon_fbt',
>         'kms_fence_pin_leak',
>         'kms_flip_scaled_crc',
> @@ -424,6 +423,15 @@ test_executables += executable('kms_color',
>            install : true)
>  test_list += 'kms_color'
>  
> +test_executables += executable('kms_dsc',
> +          [ join_paths('i915', 'kms_dsc.c'), join_paths ('i915',
> 'kms_dsc_helper.c')],
> +          dependencies : test_deps,
> +          install_dir : libexecdir,
> +          install_rpath : libexecdir_rpathdir,
> +          install : true)
> +test_list += 'kms_dsc'
> +
> +
>  if chamelium.found()
>         test_executables += executable('kms_color_chamelium',
>                               [ 'chamelium/kms_color_chamelium.c',
> 'kms_color_helper.c' ],


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

* Re: [igt-dev] [PATCH i-g-t 5/8] tests/i915/kms_dsc: Enable validation for VDSC YCbCr420
  2023-01-09 15:28 ` [igt-dev] [PATCH i-g-t 5/8] tests/i915/kms_dsc: Enable validation " Swati Sharma
@ 2023-01-10 11:56   ` Hogander, Jouni
  2023-01-11  6:38     ` Swati Sharma
  0 siblings, 1 reply; 15+ messages in thread
From: Hogander, Jouni @ 2023-01-10 11:56 UTC (permalink / raw)
  To: igt-dev, Sharma, Swati2; +Cc: Latvala, Petri

Hello,

See my inline comments below.

On Mon, 2023-01-09 at 20:58 +0530, Swati Sharma wrote:
> Existing i-g-t is extended to enable validation for VDSC YCbCr420.
> If a mode is supported in both RGB and YCbCr420 output formats by the
> sink, i915 driver policy is to try RGB first and fall back to
> YCbCr420, if
> mode cannot be shown using RGB. To test YCbCr420, we need a debugfs
> entry (force_dsc_ycbcr420) to force this output format; so that
> YCbCr420 code
> gets executed.
> From i-g-t, we have set this debugfs entry. However, before setting
> debugfs entry, we have checked capability i.e. YCbCr420 is supported
> by
> both platform (D14+) and sink.
> Also, all the modes doesn't support both YCbCr420 and RGB formats; so
> if
> sink and platform supports YCbCr420 we will do try commit with each
> mode
> till we get a successful commit.
> 
> v2: -used is_dsc_ycbcr420_supported() (Ankit)
>     -handled try-commit correctly (Ankit)
>     -instead of flag use enum for output formats (Ankit)
> v3: -instead of global count, pass count as para (Ankit)
>     -print output format (Ankit)
> 
> Signed-off-by: Swati Sharma <swati2.sharma@intel.com>
> ---
>  lib/igt_kms.c               |  17 ++++
>  lib/igt_kms.h               |   6 ++
>  tests/i915/kms_dsc.c        | 157 +++++++++++++++++++++++-----------
> --
>  tests/i915/kms_dsc_helper.c |  49 +++++++++++
>  tests/i915/kms_dsc_helper.h |   4 +
>  5 files changed, 177 insertions(+), 56 deletions(-)
> 
> diff --git a/lib/igt_kms.c b/lib/igt_kms.c
> index 31e6dfda0..0f1f7c6b9 100644
> --- a/lib/igt_kms.c
> +++ b/lib/igt_kms.c
> @@ -966,6 +966,23 @@ const char *kmstest_scaling_filter_str(int
> filter)
>         return find_type_name(scaling_filter_names, filter);
>  }
>  
> +static const struct type_name dsc_output_format_names[] = {
> +       { DSC_FORMAT_RGB444, "RGB444" },
> +       { DSC_FORMAT_YCBCR420, "YCBCR420" },
> +       {}
> +};
> +
> +/**
> + * kmstest_dsc_output_format_str:
> + * @output_format: DSC_FORMAT_* output format value
> + *
> + * Returns: A string representing the output format @output format.
> + */
> +const char *kmstest_dsc_output_format_str(int output_format)
> +{
> +       return find_type_name(dsc_output_format_names,
> output_format);
> +}
> +
>  static const struct type_name connector_type_names[] = {
>         { DRM_MODE_CONNECTOR_Unknown, "Unknown" },
>         { DRM_MODE_CONNECTOR_VGA, "VGA" },
> diff --git a/lib/igt_kms.h b/lib/igt_kms.h
> index be5482e08..61ec8fbec 100644
> --- a/lib/igt_kms.h
> +++ b/lib/igt_kms.h
> @@ -106,10 +106,16 @@ enum igt_custom_edid_type {
>   */
>  #define kmstest_port_name(port) ((port) + 'A')
>  
> +enum dsc_output_format {
> +       DSC_FORMAT_RGB444,
> +       DSC_FORMAT_YCBCR420
> +};
> +
>  const char *kmstest_encoder_type_str(int type);
>  const char *kmstest_connector_status_str(int status);
>  const char *kmstest_connector_type_str(int type);
>  const char *kmstest_scaling_filter_str(int filter);
> +const char *kmstest_dsc_output_format_str(int output_format);
>  
>  void kmstest_dump_mode(drmModeModeInfo *mode);
>  #define MAX_HDISPLAY_PER_PIPE 5120
> diff --git a/tests/i915/kms_dsc.c b/tests/i915/kms_dsc.c
> index f264d37a7..689cb81b1 100644
> --- a/tests/i915/kms_dsc.c
> +++ b/tests/i915/kms_dsc.c
> @@ -68,6 +68,19 @@ static drmModeModeInfo
> *get_highres_mode(igt_output_t *output)
>         return highest_mode;
>  }
>  
> +static drmModeModeInfo *get_next_mode(igt_output_t *output, int
> count)
> +{
> +       drmModeConnector *connector = output->config.connector;
> +       drmModeModeInfo *next_mode = NULL;
> +
> +       for (int i = count; i < connector->count_modes; i++) {
> +               next_mode = &connector->modes[i];
> +               break;
> +       }
> +
> +       return next_mode;

return output->config.connector->modes[count]; ?

> +}
> +
>  static bool check_big_joiner_pipe_constraint(data_t *data)
>  {
>         igt_output_t *output = data->output;
> @@ -97,75 +110,103 @@ static void test_cleanup(data_t *data)
>  
>  /* re-probe connectors and do a modeset with DSC */
>  static void update_display(data_t *data, enum dsc_test_type
> test_type,
> -                          unsigned int plane_format)
> +                          unsigned int plane_format, enum
> dsc_output_format output_format)
>  {
> +       int ret;
>         bool enabled;
>         igt_plane_t *primary;
>         drmModeModeInfo *mode;
> +       int count = 0;
> +       bool test_complete = false;
>         igt_output_t *output = data->output;
>         igt_display_t *display = &data->display;
>  
> -       /* sanitize the state before starting the subtest */
> -       igt_display_reset(display);
> -       igt_display_commit(display);
> +       while (!test_complete) {
> +               /* sanitize the state before starting the subtest */
> +               igt_display_reset(display);
> +               igt_display_commit(display);
>  
> -       igt_debug("DSC is supported on %s\n", data->output->name);
> -       save_force_dsc_en(data);
> -       force_dsc_enable(data);
> +               igt_debug("DSC is supported on %s\n", data->output-
> >name);
> +               save_force_dsc_en(data);
> +               force_dsc_enable(data);
>  
> -       if (test_type == TEST_DSC_BPC) {
> -               igt_debug("Trying to set input BPC to %d\n", data-
> >input_bpc);
> -               force_dsc_enable_bpc(data);
> -       }
> +               if (output_format == DSC_FORMAT_YCBCR420) {
> +                       igt_debug("DSC YCbCr420 is supported on
> %s\n", data->output->name);
> +                       save_force_dsc_ycbcr420_en(data);
> +                       force_dsc_ycbcr420_enable(data);
> +               }
>  
> -       igt_output_set_pipe(output, data->pipe);
> +               if (test_type == TEST_DSC_BPC) {
> +                       igt_debug("Trying to set input BPC to %d\n",
> data->input_bpc);
> +                       force_dsc_enable_bpc(data);
> +               }
>  
> -       mode = get_highres_mode(output);
> -       igt_require(mode != NULL);
> -       igt_output_override_mode(output, mode);
> +               igt_output_set_pipe(output, data->pipe);
>  
> -       primary = igt_output_get_plane_type(output,
> DRM_PLANE_TYPE_PRIMARY);
> +               if (output_format == DSC_FORMAT_YCBCR420)
> +                       mode = get_next_mode(output, count);
> +               else
> +                       mode = get_highres_mode(output);

If I understood your code correctly what you really want to loop is:

count = 0;
do {
	if (output_format == DSC_FORMAT_YCBCR420)
		mode = get_next_mode(output, count);
	else
		mode = get_highres_mode(output);
	igt_require(mode != NULL);
	igt_output_override_mode(output, mode);
} while(igt_display_try_commit_atomic(display,
DRM_MODE_ATOMIC_ALLOW_MODESET, NULL));

everything else seems to remain same over iterations and if
output_format != DSC_FORMAT_YCBCR420 even the mode is not changed.

Currently you are looping everything. E.g. igt_create_pattern_fb is
called several times and the igt_remove_fb is done only once in
test_cleanup.

> +
> +               igt_require(mode != NULL);
> +               igt_output_override_mode(output, mode);
> +
> +               primary = igt_output_get_plane_type(output,
> DRM_PLANE_TYPE_PRIMARY);
> +
> +               igt_skip_on(!igt_plane_has_format_mod(primary,
> plane_format,
> +                           DRM_FORMAT_MOD_LINEAR));
> +
> +               igt_create_pattern_fb(data->drm_fd,
> +                                     mode->hdisplay,
> +                                     mode->vdisplay,
> +                                     plane_format,
> +                                     DRM_FORMAT_MOD_LINEAR,
> +                                     &data->fb_test_pattern);
> +
> +               igt_plane_set_fb(primary, &data->fb_test_pattern);
> +               ret = igt_display_try_commit_atomic(display,
> DRM_MODE_ATOMIC_ALLOW_MODESET, NULL);
> +               if (ret == 0) {
> +                       igt_display_commit(display);

Isn't igt_display_try_commit_atomic enough or why you are doing
igt_display_commit even if igt_display_try_commit_atomic succeeded?

> +                       test_complete = true;
> +               } else if (output_format == DSC_FORMAT_YCBCR420) {
> +                       count++;
> +                       continue;
> +               }
> +
> +               igt_assert_eq(ret, 0);
> +
> +               /*
> +                * Until we have CRC check support, manually check if
> RGB test
> +                * pattern has no corruption.
> +                */
> +               manual("RGB test pattern without corruption");
> +
> +               enabled = igt_is_dsc_enabled(data->drm_fd, output-
> >name);
> +               igt_info("Current mode is: %dx%d @%dHz -- DSC is:
> %s\n",
> +                                       mode->hdisplay,
> +                                       mode->vdisplay,
> +                                       mode->vrefresh,
> +                                       enabled ? "ON" : "OFF");
> +
> +               restore_force_dsc_en();
> +               if (output_format == DSC_FORMAT_YCBCR420)
> +                       restore_force_dsc_ycbcr420_en();
>  
> -       igt_skip_on(!igt_plane_has_format_mod(primary, plane_format,
> -                   DRM_FORMAT_MOD_LINEAR));
> -
> -       igt_create_pattern_fb(data->drm_fd,
> -                             mode->hdisplay,
> -                             mode->vdisplay,
> -                             plane_format,
> -                             DRM_FORMAT_MOD_LINEAR,
> -                             &data->fb_test_pattern);
> -
> -       igt_plane_set_fb(primary, &data->fb_test_pattern);
> -       igt_display_commit(display);
> -
> -       /* until we have CRC check support, manually check if RGB
> test
> -        * pattern has no corruption.
> -        */
> -       manual("RGB test pattern without corruption");
> -
> -       enabled = igt_is_dsc_enabled(data->drm_fd, output->name);
> -       igt_info("Current mode is: %dx%d @%dHz -- DSC is: %s\n",
> -                               mode->hdisplay,
> -                               mode->vdisplay,
> -                               mode->vrefresh,
> -                               enabled ? "ON" : "OFF");
> -
> -       restore_force_dsc_en();
> -       igt_debug("Reset compression BPC\n");
> -       data->input_bpc = 0;
> -       force_dsc_enable_bpc(data);
> -
> -       igt_assert_f(enabled,
> -                    "Default DSC enable failed on connector: %s
> pipe: %s\n",
> -                    output->name,
> -                    kmstest_pipe_name(data->pipe));
> -
> -       test_cleanup(data);
> +               igt_debug("Reset input BPC\n");
> +               data->input_bpc = 0;
> +               force_dsc_enable_bpc(data);
> +
> +               igt_assert_f(enabled,
> +                           "Default DSC enable failed on connector:
> %s pipe: %s\n",
> +                           output->name,
> +                           kmstest_pipe_name(data->pipe));
> +
> +               test_cleanup(data);
> +       }
>  }
>  
>  static void test_dsc(data_t *data, enum dsc_test_type test_type, int
> bpc,
> -                    unsigned int plane_format)
> +                    unsigned int plane_format, enum
> dsc_output_format output_format)
>  {
>         igt_display_t *display = &data->display;
>         igt_output_t *output;
> @@ -194,15 +235,19 @@ static void test_dsc(data_t *data, enum
> dsc_test_type test_type, int bpc,
>                 else
>                         snprintf(name, sizeof(name), "-%s",
> igt_format_str(plane_format));
>  
> -               igt_dynamic_f("pipe-%s-%s%s", 
> kmstest_pipe_name(data->pipe), data->output->name, name)
> -                       update_display(data, test_type,
> plane_format);
> +               igt_dynamic_f("pipe-%s-%s%s-%s", 
> kmstest_pipe_name(data->pipe), data->output->name, name,
> kmstest_dsc_output_format_str(output_format))
> +                       update_display(data, test_type, plane_format,
> output_format);
>         }
>  }
>  
>  static void run_test(data_t *data, enum dsc_test_type test_type, int
> bpc,
>                      unsigned int plane_format)
>  {
> -       test_dsc(data, test_type, bpc, plane_format);
> +       test_dsc(data, test_type, bpc, plane_format,
> DSC_FORMAT_RGB444);
> +
> +       /* YCbCr420 DSC is supported on display version 14+ */
> +       if ((data->disp_ver >= 14) &&
> (is_dsc_ycbcr420_supported(data)))
> +               test_dsc(data, test_type, bpc, plane_format,
> DSC_FORMAT_YCBCR420);
>  }
>  
>  igt_main
> diff --git a/tests/i915/kms_dsc_helper.c
> b/tests/i915/kms_dsc_helper.c
> index 7b75be82e..8f0326f13 100644
> --- a/tests/i915/kms_dsc_helper.c
> +++ b/tests/i915/kms_dsc_helper.c
> @@ -30,7 +30,9 @@
>  #include "kms_dsc_helper.h"
>  
>  bool force_dsc_en_orig;
> +bool force_dsc_ycbcr420_en_orig;
>  int force_dsc_restore_fd = -1;
> +int force_dsc_ycbcr420_restore_fd = -1;
>  
>  void force_dsc_enable(data_t *data)
>  {
> @@ -80,6 +82,7 @@ void restore_force_dsc_en(void)
>  void kms_dsc_exit_handler(int sig)
>  {
>         restore_force_dsc_en();
> +       restore_force_dsc_ycbcr420_en();
>  }
>  
>  bool check_dsc_on_connector(data_t *data)
> @@ -129,3 +132,49 @@ bool check_gen11_bpc_constraint(data_t *data)
>  
>         return true;
>  }
> +
> +void force_dsc_ycbcr420_enable(data_t *data)
> +{
> +       int ret;
> +
> +       igt_debug("Forcing DSC YCbCr420 on %s\n", data->output-
> >name);
> +       ret = igt_force_dsc_ycbcr420_enable(data->drm_fd,
> +                                           data->output->name);
> +       igt_assert_f(ret > 0, "forcing dsc ycbcr420 debugfs_write
> failed\n");
> +}
> +
> +void save_force_dsc_ycbcr420_en(data_t *data)
> +{
> +       force_dsc_ycbcr420_en_orig =
> +               igt_is_force_dsc_ycbcr420_enabled(data->drm_fd,
> +                                                 data->output-
> >name);
> +       force_dsc_ycbcr420_restore_fd =
> +               igt_get_dsc_ycbcr420_debugfs_fd(data->drm_fd,
> +                                               data->output->name);
> +       igt_assert(force_dsc_ycbcr420_restore_fd >= 0);
> +}
> +
> +void restore_force_dsc_ycbcr420_en(void)
> +{
> +       if (force_dsc_ycbcr420_restore_fd < 0)
> +               return;
> +
> +       igt_debug("Restoring DSC YCbCr420 enable\n");
> +       igt_assert(write(force_dsc_ycbcr420_restore_fd,
> force_dsc_ycbcr420_en_orig ? "1" : "0", 1) == 1);
> +
> +       close(force_dsc_ycbcr420_restore_fd);
> +       force_dsc_ycbcr420_restore_fd = -1;
> +}
> +
> +bool is_dsc_ycbcr420_supported(data_t *data)
> +{
> +       igt_output_t *output = data->output;
> +
> +       if (!igt_is_dsc_ycbcr420_supported(data->drm_fd, output-
> >name)) {
> +               igt_debug("DSC YCbCr420 not supported on connector
> %s\n",
> +                         output->name);
> +               return false;
> +       }
> +
> +       return true;
> +}
> diff --git a/tests/i915/kms_dsc_helper.h
> b/tests/i915/kms_dsc_helper.h
> index cfca2ed98..57cb67737 100644
> --- a/tests/i915/kms_dsc_helper.h
> +++ b/tests/i915/kms_dsc_helper.h
> @@ -62,5 +62,9 @@ void kms_dsc_exit_handler(int sig);
>  bool check_dsc_on_connector(data_t *data);
>  bool check_gen11_dp_constraint(data_t *data);
>  bool check_gen11_bpc_constraint(data_t *data);
> +void force_dsc_ycbcr420_enable(data_t *data);
> +void save_force_dsc_ycbcr420_en(data_t *data);
> +void restore_force_dsc_ycbcr420_en(void);
> +bool is_dsc_ycbcr420_supported(data_t *data);
>  
>  #endif


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

* Re: [igt-dev] [PATCH i-g-t 5/8] tests/i915/kms_dsc: Enable validation for VDSC YCbCr420
  2023-01-10 11:56   ` Hogander, Jouni
@ 2023-01-11  6:38     ` Swati Sharma
  0 siblings, 0 replies; 15+ messages in thread
From: Swati Sharma @ 2023-01-11  6:38 UTC (permalink / raw)
  To: Hogander, Jouni, igt-dev; +Cc: Latvala, Petri

Thanks Jouni for the review.
Please find my replies inline.

On 10-Jan-23 5:26 PM, Hogander, Jouni wrote:
> Hello,
> 
> See my inline comments below.
> 
> On Mon, 2023-01-09 at 20:58 +0530, Swati Sharma wrote:
>> Existing i-g-t is extended to enable validation for VDSC YCbCr420.
>> If a mode is supported in both RGB and YCbCr420 output formats by the
>> sink, i915 driver policy is to try RGB first and fall back to
>> YCbCr420, if
>> mode cannot be shown using RGB. To test YCbCr420, we need a debugfs
>> entry (force_dsc_ycbcr420) to force this output format; so that
>> YCbCr420 code
>> gets executed.
>>  From i-g-t, we have set this debugfs entry. However, before setting
>> debugfs entry, we have checked capability i.e. YCbCr420 is supported
>> by
>> both platform (D14+) and sink.
>> Also, all the modes doesn't support both YCbCr420 and RGB formats; so
>> if
>> sink and platform supports YCbCr420 we will do try commit with each
>> mode
>> till we get a successful commit.
>>
>> v2: -used is_dsc_ycbcr420_supported() (Ankit)
>>      -handled try-commit correctly (Ankit)
>>      -instead of flag use enum for output formats (Ankit)
>> v3: -instead of global count, pass count as para (Ankit)
>>      -print output format (Ankit)
>>
>> Signed-off-by: Swati Sharma <swati2.sharma@intel.com>
>> ---
>>   lib/igt_kms.c               |  17 ++++
>>   lib/igt_kms.h               |   6 ++
>>   tests/i915/kms_dsc.c        | 157 +++++++++++++++++++++++-----------
>> --
>>   tests/i915/kms_dsc_helper.c |  49 +++++++++++
>>   tests/i915/kms_dsc_helper.h |   4 +
>>   5 files changed, 177 insertions(+), 56 deletions(-)
>>
>> diff --git a/lib/igt_kms.c b/lib/igt_kms.c
>> index 31e6dfda0..0f1f7c6b9 100644
>> --- a/lib/igt_kms.c
>> +++ b/lib/igt_kms.c
>> @@ -966,6 +966,23 @@ const char *kmstest_scaling_filter_str(int
>> filter)
>>          return find_type_name(scaling_filter_names, filter);
>>   }
>>   
>> +static const struct type_name dsc_output_format_names[] = {
>> +       { DSC_FORMAT_RGB444, "RGB444" },
>> +       { DSC_FORMAT_YCBCR420, "YCBCR420" },
>> +       {}
>> +};
>> +
>> +/**
>> + * kmstest_dsc_output_format_str:
>> + * @output_format: DSC_FORMAT_* output format value
>> + *
>> + * Returns: A string representing the output format @output format.
>> + */
>> +const char *kmstest_dsc_output_format_str(int output_format)
>> +{
>> +       return find_type_name(dsc_output_format_names,
>> output_format);
>> +}
>> +
>>   static const struct type_name connector_type_names[] = {
>>          { DRM_MODE_CONNECTOR_Unknown, "Unknown" },
>>          { DRM_MODE_CONNECTOR_VGA, "VGA" },
>> diff --git a/lib/igt_kms.h b/lib/igt_kms.h
>> index be5482e08..61ec8fbec 100644
>> --- a/lib/igt_kms.h
>> +++ b/lib/igt_kms.h
>> @@ -106,10 +106,16 @@ enum igt_custom_edid_type {
>>    */
>>   #define kmstest_port_name(port) ((port) + 'A')
>>   
>> +enum dsc_output_format {
>> +       DSC_FORMAT_RGB444,
>> +       DSC_FORMAT_YCBCR420
>> +};
>> +
>>   const char *kmstest_encoder_type_str(int type);
>>   const char *kmstest_connector_status_str(int status);
>>   const char *kmstest_connector_type_str(int type);
>>   const char *kmstest_scaling_filter_str(int filter);
>> +const char *kmstest_dsc_output_format_str(int output_format);
>>   
>>   void kmstest_dump_mode(drmModeModeInfo *mode);
>>   #define MAX_HDISPLAY_PER_PIPE 5120
>> diff --git a/tests/i915/kms_dsc.c b/tests/i915/kms_dsc.c
>> index f264d37a7..689cb81b1 100644
>> --- a/tests/i915/kms_dsc.c
>> +++ b/tests/i915/kms_dsc.c
>> @@ -68,6 +68,19 @@ static drmModeModeInfo
>> *get_highres_mode(igt_output_t *output)
>>          return highest_mode;
>>   }
>>   
>> +static drmModeModeInfo *get_next_mode(igt_output_t *output, int
>> count)
>> +{
>> +       drmModeConnector *connector = output->config.connector;
>> +       drmModeModeInfo *next_mode = NULL;
>> +
>> +       for (int i = count; i < connector->count_modes; i++) {
>> +               next_mode = &connector->modes[i];
>> +               break;
>> +       }
>> +
>> +       return next_mode;
> 
> return output->config.connector->modes[count]; ?

Yes, this is doable.

>> +}
>> +
>>   static bool check_big_joiner_pipe_constraint(data_t *data)
>>   {
>>          igt_output_t *output = data->output;
>> @@ -97,75 +110,103 @@ static void test_cleanup(data_t *data)
>>   
>>   /* re-probe connectors and do a modeset with DSC */
>>   static void update_display(data_t *data, enum dsc_test_type
>> test_type,
>> -                          unsigned int plane_format)
>> +                          unsigned int plane_format, enum
>> dsc_output_format output_format)
>>   {
>> +       int ret;
>>          bool enabled;
>>          igt_plane_t *primary;
>>          drmModeModeInfo *mode;
>> +       int count = 0;
>> +       bool test_complete = false;
>>          igt_output_t *output = data->output;
>>          igt_display_t *display = &data->display;
>>   
>> -       /* sanitize the state before starting the subtest */
>> -       igt_display_reset(display);
>> -       igt_display_commit(display);
>> +       while (!test_complete) {
>> +               /* sanitize the state before starting the subtest */
>> +               igt_display_reset(display);
>> +               igt_display_commit(display);
>>   
>> -       igt_debug("DSC is supported on %s\n", data->output->name);
>> -       save_force_dsc_en(data);
>> -       force_dsc_enable(data);
>> +               igt_debug("DSC is supported on %s\n", data->output-
>>> name);
>> +               save_force_dsc_en(data);
>> +               force_dsc_enable(data);
>>   
>> -       if (test_type == TEST_DSC_BPC) {
>> -               igt_debug("Trying to set input BPC to %d\n", data-
>>> input_bpc);
>> -               force_dsc_enable_bpc(data);
>> -       }
>> +               if (output_format == DSC_FORMAT_YCBCR420) {
>> +                       igt_debug("DSC YCbCr420 is supported on
>> %s\n", data->output->name);
>> +                       save_force_dsc_ycbcr420_en(data);
>> +                       force_dsc_ycbcr420_enable(data);
>> +               }
>>   
>> -       igt_output_set_pipe(output, data->pipe);
>> +               if (test_type == TEST_DSC_BPC) {
>> +                       igt_debug("Trying to set input BPC to %d\n",
>> data->input_bpc);
>> +                       force_dsc_enable_bpc(data);
>> +               }
>>   
>> -       mode = get_highres_mode(output);
>> -       igt_require(mode != NULL);
>> -       igt_output_override_mode(output, mode);
>> +               igt_output_set_pipe(output, data->pipe);
>>   
>> -       primary = igt_output_get_plane_type(output,
>> DRM_PLANE_TYPE_PRIMARY);
>> +               if (output_format == DSC_FORMAT_YCBCR420)
>> +                       mode = get_next_mode(output, count);
>> +               else
>> +                       mode = get_highres_mode(output);
> 
> If I understood your code correctly what you really want to loop is:
> 
> count = 0;
> do {
> 	if (output_format == DSC_FORMAT_YCBCR420)
> 		mode = get_next_mode(output, count);
> 	else
> 		mode = get_highres_mode(output);
> 	igt_require(mode != NULL);
> 	igt_output_override_mode(output, mode);
> } while(igt_display_try_commit_atomic(display,
> DRM_MODE_ATOMIC_ALLOW_MODESET, NULL));
> 
> everything else seems to remain same over iterations and if
> output_format != DSC_FORMAT_YCBCR420 even the mode is not changed.
> 
> Currently you are looping everything. E.g. igt_create_pattern_fb is
> called several times and the igt_remove_fb is done only once in
> test_cleanup.

Right, we should remove fb before continue as per current code.
We are creating fb with mode->width and mode->height and this can't
be kept outside loop.
> 
>> +
>> +               igt_require(mode != NULL);
>> +               igt_output_override_mode(output, mode);
>> +
>> +               primary = igt_output_get_plane_type(output,
>> DRM_PLANE_TYPE_PRIMARY);
>> +
>> +               igt_skip_on(!igt_plane_has_format_mod(primary,
>> plane_format,
>> +                           DRM_FORMAT_MOD_LINEAR));
>> +
>> +               igt_create_pattern_fb(data->drm_fd,
>> +                                     mode->hdisplay,
>> +                                     mode->vdisplay,
>> +                                     plane_format,
>> +                                     DRM_FORMAT_MOD_LINEAR,
>> +                                     &data->fb_test_pattern);
>> +
>> +               igt_plane_set_fb(primary, &data->fb_test_pattern);
>> +               ret = igt_display_try_commit_atomic(display,
>> DRM_MODE_ATOMIC_ALLOW_MODESET, NULL);
>> +               if (ret == 0) {
>> +                       igt_display_commit(display);
> 
> Isn't igt_display_try_commit_atomic enough or why you are doing
> igt_display_commit even if igt_display_try_commit_atomic succeeded?
> 
>> +                       test_complete = true;
>> +               } else if (output_format == DSC_FORMAT_YCBCR420) {
>> +                       count++;
>> +                       continue;
>> +               }
>> +
>> +               igt_assert_eq(ret, 0);
>> +
>> +               /*
>> +                * Until we have CRC check support, manually check if
>> RGB test
>> +                * pattern has no corruption.
>> +                */
>> +               manual("RGB test pattern without corruption");
>> +
>> +               enabled = igt_is_dsc_enabled(data->drm_fd, output-
>>> name);
>> +               igt_info("Current mode is: %dx%d @%dHz -- DSC is:
>> %s\n",
>> +                                       mode->hdisplay,
>> +                                       mode->vdisplay,
>> +                                       mode->vrefresh,
>> +                                       enabled ? "ON" : "OFF");
>> +
>> +               restore_force_dsc_en();
>> +               if (output_format == DSC_FORMAT_YCBCR420)
>> +                       restore_force_dsc_ycbcr420_en();
>>   
>> -       igt_skip_on(!igt_plane_has_format_mod(primary, plane_format,
>> -                   DRM_FORMAT_MOD_LINEAR));
>> -
>> -       igt_create_pattern_fb(data->drm_fd,
>> -                             mode->hdisplay,
>> -                             mode->vdisplay,
>> -                             plane_format,
>> -                             DRM_FORMAT_MOD_LINEAR,
>> -                             &data->fb_test_pattern);
>> -
>> -       igt_plane_set_fb(primary, &data->fb_test_pattern);
>> -       igt_display_commit(display);
>> -
>> -       /* until we have CRC check support, manually check if RGB
>> test
>> -        * pattern has no corruption.
>> -        */
>> -       manual("RGB test pattern without corruption");
>> -
>> -       enabled = igt_is_dsc_enabled(data->drm_fd, output->name);
>> -       igt_info("Current mode is: %dx%d @%dHz -- DSC is: %s\n",
>> -                               mode->hdisplay,
>> -                               mode->vdisplay,
>> -                               mode->vrefresh,
>> -                               enabled ? "ON" : "OFF");
>> -
>> -       restore_force_dsc_en();
>> -       igt_debug("Reset compression BPC\n");
>> -       data->input_bpc = 0;
>> -       force_dsc_enable_bpc(data);
>> -
>> -       igt_assert_f(enabled,
>> -                    "Default DSC enable failed on connector: %s
>> pipe: %s\n",
>> -                    output->name,
>> -                    kmstest_pipe_name(data->pipe));
>> -
>> -       test_cleanup(data);
>> +               igt_debug("Reset input BPC\n");
>> +               data->input_bpc = 0;
>> +               force_dsc_enable_bpc(data);
>> +
>> +               igt_assert_f(enabled,
>> +                           "Default DSC enable failed on connector:
>> %s pipe: %s\n",
>> +                           output->name,
>> +                           kmstest_pipe_name(data->pipe));
>> +
>> +               test_cleanup(data);
>> +       }
>>   }
>>   
>>   static void test_dsc(data_t *data, enum dsc_test_type test_type, int
>> bpc,
>> -                    unsigned int plane_format)
>> +                    unsigned int plane_format, enum
>> dsc_output_format output_format)
>>   {
>>          igt_display_t *display = &data->display;
>>          igt_output_t *output;
>> @@ -194,15 +235,19 @@ static void test_dsc(data_t *data, enum
>> dsc_test_type test_type, int bpc,
>>                  else
>>                          snprintf(name, sizeof(name), "-%s",
>> igt_format_str(plane_format));
>>   
>> -               igt_dynamic_f("pipe-%s-%s%s",
>> kmstest_pipe_name(data->pipe), data->output->name, name)
>> -                       update_display(data, test_type,
>> plane_format);
>> +               igt_dynamic_f("pipe-%s-%s%s-%s",
>> kmstest_pipe_name(data->pipe), data->output->name, name,
>> kmstest_dsc_output_format_str(output_format))
>> +                       update_display(data, test_type, plane_format,
>> output_format);
>>          }
>>   }
>>   
>>   static void run_test(data_t *data, enum dsc_test_type test_type, int
>> bpc,
>>                       unsigned int plane_format)
>>   {
>> -       test_dsc(data, test_type, bpc, plane_format);
>> +       test_dsc(data, test_type, bpc, plane_format,
>> DSC_FORMAT_RGB444);
>> +
>> +       /* YCbCr420 DSC is supported on display version 14+ */
>> +       if ((data->disp_ver >= 14) &&
>> (is_dsc_ycbcr420_supported(data)))
>> +               test_dsc(data, test_type, bpc, plane_format,
>> DSC_FORMAT_YCBCR420);
>>   }
>>   
>>   igt_main
>> diff --git a/tests/i915/kms_dsc_helper.c
>> b/tests/i915/kms_dsc_helper.c
>> index 7b75be82e..8f0326f13 100644
>> --- a/tests/i915/kms_dsc_helper.c
>> +++ b/tests/i915/kms_dsc_helper.c
>> @@ -30,7 +30,9 @@
>>   #include "kms_dsc_helper.h"
>>   
>>   bool force_dsc_en_orig;
>> +bool force_dsc_ycbcr420_en_orig;
>>   int force_dsc_restore_fd = -1;
>> +int force_dsc_ycbcr420_restore_fd = -1;
>>   
>>   void force_dsc_enable(data_t *data)
>>   {
>> @@ -80,6 +82,7 @@ void restore_force_dsc_en(void)
>>   void kms_dsc_exit_handler(int sig)
>>   {
>>          restore_force_dsc_en();
>> +       restore_force_dsc_ycbcr420_en();
>>   }
>>   
>>   bool check_dsc_on_connector(data_t *data)
>> @@ -129,3 +132,49 @@ bool check_gen11_bpc_constraint(data_t *data)
>>   
>>          return true;
>>   }
>> +
>> +void force_dsc_ycbcr420_enable(data_t *data)
>> +{
>> +       int ret;
>> +
>> +       igt_debug("Forcing DSC YCbCr420 on %s\n", data->output-
>>> name);
>> +       ret = igt_force_dsc_ycbcr420_enable(data->drm_fd,
>> +                                           data->output->name);
>> +       igt_assert_f(ret > 0, "forcing dsc ycbcr420 debugfs_write
>> failed\n");
>> +}
>> +
>> +void save_force_dsc_ycbcr420_en(data_t *data)
>> +{
>> +       force_dsc_ycbcr420_en_orig =
>> +               igt_is_force_dsc_ycbcr420_enabled(data->drm_fd,
>> +                                                 data->output-
>>> name);
>> +       force_dsc_ycbcr420_restore_fd =
>> +               igt_get_dsc_ycbcr420_debugfs_fd(data->drm_fd,
>> +                                               data->output->name);
>> +       igt_assert(force_dsc_ycbcr420_restore_fd >= 0);
>> +}
>> +
>> +void restore_force_dsc_ycbcr420_en(void)
>> +{
>> +       if (force_dsc_ycbcr420_restore_fd < 0)
>> +               return;
>> +
>> +       igt_debug("Restoring DSC YCbCr420 enable\n");
>> +       igt_assert(write(force_dsc_ycbcr420_restore_fd,
>> force_dsc_ycbcr420_en_orig ? "1" : "0", 1) == 1);
>> +
>> +       close(force_dsc_ycbcr420_restore_fd);
>> +       force_dsc_ycbcr420_restore_fd = -1;
>> +}
>> +
>> +bool is_dsc_ycbcr420_supported(data_t *data)
>> +{
>> +       igt_output_t *output = data->output;
>> +
>> +       if (!igt_is_dsc_ycbcr420_supported(data->drm_fd, output-
>>> name)) {
>> +               igt_debug("DSC YCbCr420 not supported on connector
>> %s\n",
>> +                         output->name);
>> +               return false;
>> +       }
>> +
>> +       return true;
>> +}
>> diff --git a/tests/i915/kms_dsc_helper.h
>> b/tests/i915/kms_dsc_helper.h
>> index cfca2ed98..57cb67737 100644
>> --- a/tests/i915/kms_dsc_helper.h
>> +++ b/tests/i915/kms_dsc_helper.h
>> @@ -62,5 +62,9 @@ void kms_dsc_exit_handler(int sig);
>>   bool check_dsc_on_connector(data_t *data);
>>   bool check_gen11_dp_constraint(data_t *data);
>>   bool check_gen11_bpc_constraint(data_t *data);
>> +void force_dsc_ycbcr420_enable(data_t *data);
>> +void save_force_dsc_ycbcr420_en(data_t *data);
>> +void restore_force_dsc_ycbcr420_en(void);
>> +bool is_dsc_ycbcr420_supported(data_t *data);
>>   
>>   #endif
> 

-- 
~Swati Sharma

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

end of thread, other threads:[~2023-01-11  6:38 UTC | newest]

Thread overview: 15+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-01-09 15:28 [igt-dev] [PATCH i-g-t 0/8] VDSC YCbCr420 + Fractional BPP Swati Sharma
2023-01-09 15:28 ` [igt-dev] [PATCH i-g-t 1/8] lib/dsc: Move VDSC functions to separate lib file Swati Sharma
2023-01-09 15:28 ` [igt-dev] [PATCH i-g-t 2/8] Move wrapper functions from kms_dsc to kms_dsc_helper Swati Sharma
2023-01-10 10:54   ` Hogander, Jouni
2023-01-09 15:28 ` [igt-dev] [PATCH i-g-t 3/8] lib/dsc: Add helpers for VDSC YCbCr420 debugfs entry Swati Sharma
2023-01-09 15:28 ` [igt-dev] [PATCH i-g-t 4/8] tests/i915/kms_dsc: Prep work for extending val support for VDSC YCbCr420 Swati Sharma
2023-01-09 15:28 ` [igt-dev] [PATCH i-g-t 5/8] tests/i915/kms_dsc: Enable validation " Swati Sharma
2023-01-10 11:56   ` Hogander, Jouni
2023-01-11  6:38     ` Swati Sharma
2023-01-09 15:28 ` [igt-dev] [PATCH i-g-t 6/8] lib/dsc: Add helpers for VDSC Fractional BPP debugfs entry Swati Sharma
2023-01-09 15:28 ` [igt-dev] [PATCH i-g-t 7/8] tests/i915/kms_dsc: Enable validation for VDSC Fractional BPP Swati Sharma
2023-01-09 15:28 ` [igt-dev] [PATCH i-g-t 8/8] tests/i915/kms_dsc: Add test summary Swati Sharma
2023-01-09 18:04 ` [igt-dev] ✗ GitLab.Pipeline: warning for VDSC YCbCr420 + Fractional BPP (rev2) Patchwork
2023-01-09 18:34 ` [igt-dev] ✓ Fi.CI.BAT: success " Patchwork
2023-01-10  1:34 ` [igt-dev] ✓ Fi.CI.IGT: " Patchwork

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.