[igt-dev] [PATCH i-g-t 2/2] tests/kms_async_flips: Skip test when running with Intel's PSR2 selective fetch enabled
Petri Latvala
petri.latvala at intel.com
Mon Nov 1 09:27:51 UTC 2021
On Fri, Oct 29, 2021 at 05:07:44PM -0700, José Roberto de Souza wrote:
> 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));
> +
Please use the _f variant of this function and add a descriptive
message to this skip.
How does real userspace fare with this stuff? What even are the
implications, I'm not sure I get this fully. I think I saw you and
Ville discuss this on IRC but I missed the conclusion and what X does
on PSR2. Fall back to synchronous flips with some effect on
performance?
--
Petri Latvala
More information about the igt-dev
mailing list