Op 16-01-18 om 14:56 schreef Mika Kahola: > On Tue, 2018-01-16 at 14:47 +0100, Maarten Lankhorst wrote: >> Op 16-01-18 om 14:46 schreef Mika Kahola: >>> On Mon, 2018-01-15 at 15:28 +0100, Maarten Lankhorst wrote: >>>> From: Jyoti Yadav <jyoti.r.yadav@xxxxxxxxx> >>>> >>>> Add a subtest to display primary and overlay planes on two >>>> connected pipes and runs scaling test on both pipes >>>> >>>> Changes since v1: >>>> - Commit first before trying any scaling. (Maarten) >>>> - Use the same logic as kms_cursor_legacy to find a pipe and >>>> output. >>>> (Maarten) >>>> - Rework test to work with how cleanup is handled. (Maarten) >>>> Changes since v2: >>>> - Use get_num_scalers() to only use 2 scalers if available. >>>> (Maarten) >>>> >>>> Signed-off-by: Jyoti Yadav <jyoti.r.yadav@xxxxxxxxx> >>>> Signed-off-by: Mahesh Kumar <mahesh1.kumar@xxxxxxxxx> >>>> Signed-off-by: Vidya Srinivas <vidya.srinivas@xxxxxxxxx> >>>> Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.c >>>> om> >>>> --- >>>> tests/kms_plane_scaling.c | 93 >>>> ++++++++++++++++++++++++++++++++++++++++++++++- >>>> 1 file changed, 92 insertions(+), 1 deletion(-) >>>> >>>> diff --git a/tests/kms_plane_scaling.c >>>> b/tests/kms_plane_scaling.c >>>> index 36a6a8ef042b..8dbacf67b0a0 100644 >>>> --- a/tests/kms_plane_scaling.c >>>> +++ b/tests/kms_plane_scaling.c >>>> @@ -38,10 +38,12 @@ typedef struct { >>>> int image_w; >>>> int image_h; >>>> >>>> - struct igt_fb fb[3]; >>>> + struct igt_fb fb[4]; >>>> + >>>> igt_plane_t *plane1; >>>> igt_plane_t *plane2; >>>> igt_plane_t *plane3; >>>> + igt_plane_t *plane4; >>>> } data_t; >>>> >>>> static int get_num_scalers(uint32_t devid, enum pipe pipe) >>>> @@ -456,6 +458,92 @@ >>>> test_scaler_with_clipping_clamping_scenario(data_t *d, enum pipe >>>> pipe, igt_outpu >>>> igt_display_commit2(&d->display, COMMIT_ATOMIC); >>>> } >>>> >>>> +static void find_connected_pipe(igt_display_t *display, bool >>>> second, >>>> enum pipe *pipe, igt_output_t **output) >>>> +{ >>>> + enum pipe first = PIPE_NONE; >>>> + igt_output_t *first_output = NULL; >>>> + bool found = false; >>>> + >>>> + for_each_pipe_with_valid_output(display, *pipe, *output) >>>> { >>>> + if (first == *pipe || *output == first_output) >>>> + continue; >>>> + >>>> + if (second) { >>>> + first = *pipe; >>>> + first_output = *output; >>>> + second = false; >>>> + continue; >>>> + } >>>> + >>>> + return; >>>> + } >>>> + >>>> + if (first_output) >>>> + igt_require_f(found, "No second valid output >>>> found\n"); >>>> + else >>>> + igt_require_f(found, "No valid outputs >>>> found\n"); >>>> +} >>>> + >>>> +static void test_scaler_with_multi_pipe_plane(data_t *d) >>>> +{ >>>> + igt_display_t *display = &d->display; >>>> + igt_output_t *output1, *output2; >>>> + drmModeModeInfo *mode1, *mode2; >>>> + enum pipe pipe1, pipe2; >>>> + >>>> + cleanup_crtc(d); >>>> + >>>> + find_connected_pipe(display, false, &pipe1, &output1); >>>> + find_connected_pipe(display, true, &pipe2, &output2); >>>> + >>>> + igt_skip_on(!output1 || !output2); >>>> + >>>> + igt_output_set_pipe(output1, pipe1); >>>> + igt_output_set_pipe(output2, pipe2); >>>> + >>>> + d->plane1 = igt_output_get_plane(output1, 0); >>>> + d->plane2 = get_num_scalers(d->devid, pipe1) >= 2 ? >>>> igt_output_get_plane(output1, 1) : NULL; >>>> + d->plane3 = igt_output_get_plane(output2, 0); >>>> + d->plane4 = get_num_scalers(d->devid, pipe2) >= 2 ? >>>> igt_output_get_plane(output2, 1) : NULL; >>> Maybe use DRM plane type definitions DRM_PLANE_TYPE_OVERLAY and >>> DRM_PLANE_TYPE_PRIMARY instead of 0 and 1 to better indicate what >>> plane >>> we are referring to. >> igt_output_get_plane takes an index, igt_output_get_plane_type takes >> those definitions. >> I've been bit a few times by that as well. :) > yeah, you're absolutely right. Should have read more carefully :) > > You can bash my r-b. > > Reviewed-by: Mika Kahola <mika.kahola@xxxxxxxxx> Thanks for review, pushed. _______________________________________________ Intel-gfx mailing list Intel-gfx@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/intel-gfx