[igt-dev] [PATCH i-g-t 2/2] tests/kms_async_flips: Skip test when running with Intel's PSR2 selective fetch enabled
José Roberto de Souza
jose.souza at intel.com
Sat Oct 30 00:07:44 UTC 2021
Intel's PSR2 selective fetch adds other planes to state when
necessary, causing the async flip to fail because async flip is not
supported in cursor plane.
Cc: Karthik B S <karthik.b.s at intel.com>
Cc: Vandita Kulkarni <vandita.kulkarni at intel.com>
Cc: Ville Syrjälä <ville.syrjala at linux.intel.com>
Signed-off-by: José Roberto de Souza <jose.souza at intel.com>
---
lib/igt_psr.c | 16 ++++++++++++++++
lib/igt_psr.h | 2 ++
tests/kms_async_flips.c | 8 ++++++++
3 files changed, 26 insertions(+)
diff --git a/lib/igt_psr.c b/lib/igt_psr.c
index 857eb591c..8fa8b192f 100644
--- a/lib/igt_psr.c
+++ b/lib/igt_psr.c
@@ -21,6 +21,7 @@
* IN THE SOFTWARE.
*/
+#include "drmtest.h"
#include "igt_params.h"
#include "igt_psr.h"
#include "igt_sysfs.h"
@@ -264,3 +265,18 @@ void psr_print_debugfs(int debugfs_fd)
igt_info("%s", buf);
}
+
+bool i915_psr2_selective_fetch_check(int drm_fd)
+{
+ int debugfs_fd;
+ bool ret;
+
+ if (!is_i915_device(drm_fd))
+ return false;
+
+ debugfs_fd = igt_debugfs_dir(drm_fd);
+ ret = psr2_selective_fetch_check(debugfs_fd);
+ close(debugfs_fd);
+
+ return ret;
+}
diff --git a/lib/igt_psr.h b/lib/igt_psr.h
index c47b197b1..a075f336d 100644
--- a/lib/igt_psr.h
+++ b/lib/igt_psr.h
@@ -47,4 +47,6 @@ bool psr_sink_support(int device, int debugfs_fd, enum psr_mode mode);
bool psr2_wait_su(int debugfs_fd, uint16_t *num_su_blocks);
void psr_print_debugfs(int debugfs_fd);
+bool i915_psr2_selective_fetch_check(int drm_fd);
+
#endif
diff --git a/tests/kms_async_flips.c b/tests/kms_async_flips.c
index 4ff7a196a..c35565f69 100644
--- a/tests/kms_async_flips.c
+++ b/tests/kms_async_flips.c
@@ -27,6 +27,7 @@
#include "igt.h"
#include "igt_aux.h"
+#include "igt_psr.h"
#include <sys/ioctl.h>
#include <sys/time.h>
#include <poll.h>
@@ -299,6 +300,13 @@ static void test_cursor(data_t *data)
struct igt_fb cursor_fb;
struct drm_mode_cursor cur;
+ /*
+ * Intel's PSR2 selective fetch adds other planes to state when
+ * necessary, causing the async flip to fail because async flip is not
+ * supported in cursor plane.
+ */
+ igt_skip_on(i915_psr2_selective_fetch_check(data->drm_fd));
+
do_or_die(drmGetCap(data->drm_fd, DRM_CAP_CURSOR_WIDTH, &width));
do_or_die(drmGetCap(data->drm_fd, DRM_CAP_CURSOR_WIDTH, &height));
--
2.33.1
More information about the igt-dev
mailing list