[igt-dev] [PATCH i-g-t v2] tests/i915/kms_psr2_su: Convert tests to dynamic
Hogander, Jouni
jouni.hogander at intel.com
Thu Sep 1 14:49:48 UTC 2022
On Tue, 2022-08-23 at 11:35 +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.
I think you should implement check for pipe supporting PSR2 or not and
then adding dynamic subtest based on that.
>
> v2: Add commit message and change break to continue. (Jouni)
>
> Signed-off-by: Jeevan B <jeevan.b at intel.com>
> ---
> tests/i915/kms_psr2_su.c | 64 +++++++++++++++++++++++++-------------
> --
> 1 file changed, 41 insertions(+), 23 deletions(-)
>
> diff --git a/tests/i915/kms_psr2_su.c b/tests/i915/kms_psr2_su.c
> index caccf713..b3c6e953 100644
> --- a/tests/i915/kms_psr2_su.c
> +++ b/tests/i915/kms_psr2_su.c
> @@ -123,9 +123,15 @@ static void display_fini(data_t *data)
> igt_display_fini(&data->display);
> }
>
> -static void prepare(data_t *data)
> +static void prepare(data_t *data, enum pipe pipe)
> {
> igt_plane_t *primary;
> + igt_output_t *output;
> + igt_display_t *display = &data->display;
> +
> + igt_display_reset(display);
> + output = data->output;
> + igt_output_set_pipe(output, pipe);
>
> /* all green frame */
> igt_create_color_fb(data->drm_fd,
> @@ -263,6 +269,7 @@ static void cleanup(data_t *data)
> igt_main
> {
> data_t data = {};
> + enum pipe pipe;
>
> igt_fixture {
> struct itimerspec interval;
> @@ -287,12 +294,17 @@ 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");
> +
> + for_each_pipe_with_valid_output(&data.display, pipe,
> data.output) {
> + if (pipe != PIPE_A)
> + continue;
> + prepare(&data, pipe);
> + 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");
> + }
I think you should remove these checks from here and have that check
for pipe supporting PSR2 or not. Then add dynamic tests based on that
check.
>
> /* blocking timerfd */
> data.change_screen_timerfd =
> timerfd_create(CLOCK_MONOTONIC, 0);
> @@ -312,23 +324,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) {
> + if (pipe != PIPE_A)
> + continue;
> + 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_skip("PSR2
> selective fetch is doing full frame fetches for frontbuffer
> rendering\n");
> + }
> + prepare(&data, pipe);
> + run(&data);
> + cleanup(&data);
> + }
> }
> - prepare(&data);
> - run(&data);
> - cleanup(&data);
> }
> }
> }
More information about the igt-dev
mailing list