[igt-dev] [PATCH i-g-t 1/2] tests/i915/kms_psr2_su: Convert tests to dynamic
Hogander, Jouni
jouni.hogander at intel.com
Fri Sep 9 11:23:10 UTC 2022
On Thu, 2022-09-08 at 18:44 +0530, Jeevan B wrote:
> Converting the existing subtests to dynamic subtests.
> Adding support for each_pipe, currently PSR2 is supported on
> PIPE_A so breaking the loop for other pipes currently.
>
> v2: Add commit message and change break to continue. (Jouni)
> v3: Check for pipe supporting PSR2 or not and then add to dynamic
> subtest. (Jouni)
>
> Signed-off-by: Jeevan B <jeevan.b at intel.com>
> ---
> tests/i915/kms_psr2_su.c | 63 +++++++++++++++++++++++++-------------
> --
> 1 file changed, 40 insertions(+), 23 deletions(-)
>
> diff --git a/tests/i915/kms_psr2_su.c b/tests/i915/kms_psr2_su.c
> index caccf713..f63f1483 100644
> --- a/tests/i915/kms_psr2_su.c
> +++ b/tests/i915/kms_psr2_su.c
> @@ -260,13 +260,30 @@ static void cleanup(data_t *data)
> igt_remove_fb(data->drm_fd, &data->fb[0]);
> }
>
> +static int check_psr2_support(data_t *data, enum pipe pipe, int x)
> +{
> + igt_output_t *output;
> + igt_display_t *display = &data->display;
> +
> + igt_display_reset(display);
> + output = data->output;
> + igt_output_set_pipe(output, pipe);
> +
> + prepare(data);
You could remove prepare/cleanup from here and have commond
prepare/cleanup in the loop below. Would that work for you?
> + x = psr_wait_entry(data->debugfs_fd, PSR_MODE_2);
> + cleanup(data);
> +
> + return x;
> +}
> +
> igt_main
> {
> data_t data = {};
> + enum pipe pipe;
> + int r;
>
> igt_fixture {
> struct itimerspec interval;
> - int r;
>
> data.drm_fd = drm_open_driver_master(DRIVER_INTEL);
> data.debugfs_fd = igt_debugfs_dir(data.drm_fd);
> @@ -287,12 +304,6 @@ igt_main
> "Error enabling PSR2\n");
> data.op = FRONTBUFFER;
> data.format = DRM_FORMAT_XRGB8888;
> - prepare(&data);
> - r = psr_wait_entry(data.debugfs_fd, PSR_MODE_2);
> - cleanup(&data);
> - if (!r)
> - psr_print_debugfs(data.debugfs_fd);
> - igt_require_f(r, "PSR2 can not be enabled\n");
>
> /* blocking timerfd */
> data.change_screen_timerfd =
> timerfd_create(CLOCK_MONOTONIC, 0);
> @@ -312,23 +323,29 @@ igt_main
> while (*format != DRM_FORMAT_INVALID) {
> data.format = *format++;
> igt_describe("Test that selective update
> works when screen changes");
> - igt_subtest_f("%s-%s", op_str(data.op),
> igt_format_str(data.format)) {
> - if (data.op == FRONTBUFFER &&
> -
> intel_display_ver(intel_get_drm_devid(data.drm_fd)) >= 12) {
> - /*
> - * FIXME: Display 12+
> platforms now have PSR2
> - * selective fetch enabled by
> default but we
> - * still can't properly
> handle frontbuffer
> - * rendering, so right it
> does full frame
> - * fetches at every
> frontbuffer rendering.
> - * So it is expected that
> this test will fail
> - * in display 12+ platform
> for now.
> - */
> - igt_skip("PSR2 selective
> fetch is doing full frame fetches for frontbuffer rendering\n");
> + igt_subtest_with_dynamic_f("%s-%s",
> op_str(data.op), igt_format_str(data.format)) {
> + for_each_pipe_with_valid_output(&data
> .display, pipe, data.output) {
call prepare here.
> + if (check_psr2_support(&data,
> pipe, r)) {
> + igt_dynamic_f("pipe-
> %s", kmstest_pipe_name(pipe)) {
> + if (data.op
> == FRONTBUFFER &&
> +
> intel_display_ver(intel_get_drm_devid(data.drm_fd)) >= 12) {
> + /*
> + *
> FIXME: Display 12+ platforms now have PSR2
> + *
> selective fetch enabled by default but we
> + *
> still can't properly handle frontbuffer
> + *
> rendering, so right it does full frame
> + *
> fetches at every frontbuffer rendering.
> + * So
> it is expected that this test will fail
> + * in
> display 12+ platform for now.
> + */
> + igt_s
> kip("PSR2 selective fetch is doing full frame fetches for frontbuffer
> rendering\n");
> + }
> + prepare(&data
> );
Remove this one as well.
> + run(&data);
> + cleanup(&data
And remove cleanup from here
> );
> + }
> + }
> }
> - prepare(&data);
> - run(&data);
> - cleanup(&data);
> }
> }
Call cleanup here.
> }
BR,
Jouni Högander
More information about the igt-dev
mailing list