[igt-dev] [v5 i-g-t 07/14] tests/kms_atomic_transition: Fix mode selection for 2x tests

Nautiyal, Ankit K ankit.k.nautiyal at intel.com
Wed May 12 06:19:51 UTC 2021


On 5/11/2021 5:28 PM, Modem, Bhanuprakash wrote:
>> From: Nautiyal, Ankit K <ankit.k.nautiyal at intel.com>
>> Sent: Tuesday, May 11, 2021 3:00 PM
>> To: Modem, Bhanuprakash <bhanuprakash.modem at intel.com>; igt-
>> dev at lists.freedesktop.org
>> Cc: Deak, Imre <imre.deak at intel.com>; Daniel Vetter <daniel.vetter at ffwll.ch>
>> Subject: Re: [v5 i-g-t 07/14] tests/kms_atomic_transition: Fix mode selection
>> for 2x tests
>>
>>
>> On 5/8/2021 9:52 PM, Bhanuprakash Modem wrote:
>>> When two monitors connected through MST, the second monitor also
>>> tries to use the same mode. So two such modes may not fit into the
>>> link bandwidth.
>>>
>>> This patch will find a combination of modes that fit into the BW.
>>>
>>> Cc: Imre Deak <imre.deak at intel.com>
>>> Cc: Ankit Nautiyal <ankit.k.nautiyal at intel.com>
>>> Cc: Daniel Vetter <daniel.vetter at ffwll.ch>
>>> Signed-off-by: Bhanuprakash Modem <bhanuprakash.modem at intel.com>
>>> ---
>>>    tests/kms_atomic_transition.c | 15 +++++++++++++++
>>>    1 file changed, 15 insertions(+)
>>>
>>> diff --git a/tests/kms_atomic_transition.c b/tests/kms_atomic_transition.c
>>> index be60940d7..e6931de5f 100644
>>> --- a/tests/kms_atomic_transition.c
>>> +++ b/tests/kms_atomic_transition.c
>>> @@ -100,6 +100,7 @@ run_primary_test(data_t *data, enum pipe pipe,
>> igt_output_t *output)
>>>      igt_plane_set_fb(primary, NULL);
>>>      igt_output_set_pipe(output, PIPE_NONE);
>>>      igt_remove_fb(data->drm_fd, &fb);
>>> +   igt_display_commit2(&data->display, COMMIT_ATOMIC);
>>
>> Is this commit required? I guess it was working earlier.
> Still we need this commit to unset the pipe to connector, We need to clean-up
> the test before exit.
Alright makes sense.
>>>    }
>>>
>>>    static void *fence_inc_thread(void *arg)
>>> @@ -793,6 +794,7 @@ static void run_modeset_tests(data_t *data, int howmany,
>> bool nonblocking, bool
>>>      for (i = 0; i < data->display.n_outputs; i++)
>>>              igt_output_set_pipe(&data->display.outputs[i], PIPE_NONE);
>>>
>>> +retry:
>>>      for_each_connected_output(&data->display, output) {
>>>              drmModeModeInfo *mode = igt_output_get_mode(output);
>>>
>>> @@ -839,6 +841,19 @@ static void run_modeset_tests(data_t *data, int
>> howmany, bool nonblocking, bool
>>>      iter_max = 1 << j;
>> I think this line must be after the try commit block.
>>
>> In case of retry we will count double the pipes, as j is initialized
>> only in the beginning.
> True, even though we update the iter_max after the try_commit block, in case
> of retry, still the j value can be double the pipe count.
>
> Reinitializing the j to 0 at retry seems to be the best option to me.

Yes you are right, re initializing j to 0 is the correct solution.

Regards,

Ankit

>>
>>> +   if (igt_display_try_commit_atomic(&data->display,
>>> +                           DRM_MODE_ATOMIC_TEST_ONLY |
>>> +                           DRM_MODE_ATOMIC_ALLOW_MODESET,
>>> +                           NULL) != 0) {
>>> +           igt_output_t *out;
>>> +           bool found = igt_override_all_active_output_modes_to_fit_bw(&data-
>>> display);
>>> +           igt_require_f(found, "No valid mode combo found.\n");
>>> +
>>> +           for_each_connected_output(&data->display, out)
>>> +                   igt_output_set_pipe(out, PIPE_NONE);
>>> +
>>> +           goto retry;
>>> +   }
>>>      igt_display_commit2(&data->display, COMMIT_ATOMIC);
>> As discussed earlier, commit to be in the else block.
>>
>>
>> Regards,
>>
>> Ankit
>>
>>>      for (i = 0; i < iter_max; i++) {


More information about the igt-dev mailing list