[igt-dev] [PATCH i-g-t 1/2] tests/i915/kms_draw_crc.c: Convert tests to dynamic

Modem, Bhanuprakash bhanuprakash.modem at intel.com
Tue Jul 19 13:27:45 UTC 2022


On Fri-17-06-2022 01:53 pm, Juha-Pekka Heikkila wrote:
> On 17.6.2022 11.12, Petri Latvala wrote:
>> On Fri, Jun 17, 2022 at 03:26:53AM +0530, Nidhi Gupta wrote:
>>> Convert the existing subtests to dynamic subtests at pipe level.
>>>
>>> Signed-off-by: Nidhi Gupta <nidhi1.gupta at intel.com>
>>> ---
>>>   tests/i915/kms_draw_crc.c | 26 ++++++++++++++++++++------
>>>   1 file changed, 20 insertions(+), 6 deletions(-)
>>>
>>> diff --git a/tests/i915/kms_draw_crc.c b/tests/i915/kms_draw_crc.c
>>> index 33fefed4..04cae0aa 100644
>>> --- a/tests/i915/kms_draw_crc.c
>>> +++ b/tests/i915/kms_draw_crc.c
>>> @@ -40,6 +40,7 @@ drmModeResPtr drm_res;
>>>   drmModeConnectorPtr drm_connectors[MAX_CONNECTORS];
>>>   struct buf_ops *bops;
>>>   igt_pipe_crc_t *pipe_crc;
>>> +igt_display_t display;
>>>   static const uint32_t formats[] = {
>>>       DRM_FORMAT_XRGB8888,
>>> @@ -265,6 +266,7 @@ static void setup_environment(void)
>>>       drm_fd = drm_open_driver_master(DRIVER_INTEL);
>>>       igt_require(drm_fd >= 0);
>>> +    igt_display_require(&display, drm_fd);
>>>       drm_res = drmModeGetResources(drm_fd);
>>>       igt_require(drm_res);
>>>       igt_assert(drm_res->count_connectors <= MAX_CONNECTORS);
>>> @@ -331,6 +333,8 @@ igt_main
>>>   {
>>>       enum igt_draw_method method;
>>>       int format_idx, modifier_idx;
>>> +    igt_output_t *output;
>>> +    enum pipe pipe;
>>>       igt_fixture
>>>           setup_environment();
>>> @@ -340,18 +344,28 @@ igt_main
>>>       for (modifier_idx = 0; modifier_idx < ARRAY_SIZE(modifiers); 
>>> modifier_idx++) {
>>>           igt_describe("This subtest verfies igt_draw library works "
>>>                    "with different modifiers, DRM_FORMATS, 
>>> DRAW_METHODS.");
>>> -        igt_subtest_f("draw-method-%s-%s-%s",
>>> +        igt_subtest_with_dynamic_f("draw-method-%s-%s-%s",
>>>                     format_str(format_idx),
>>>                     igt_draw_get_method_name(method),
>>> -                  modifier_str(modifier_idx))
>>> -            draw_method_subtest(method, format_idx,
>>> -                        modifiers[modifier_idx]);
>>> +                  modifier_str(modifier_idx)) {
>>> +            for_each_pipe_with_valid_output(&display, pipe, output) {
>>> +                igt_dynamic_f("%s-pipe-%s", igt_output_name(output), 
>>> kmstest_pipe_name(pipe)) {
>>> +                    draw_method_subtest(method, format_idx,
>>> +                                modifiers[modifier_idx]);
>>> +                }
>>
>> There's an easy thumb rule to follow: If you're looping over all
>> output/pipe combinations, and you're not even passing the output and
>> pipe to the test, you're just repeating the same operation n times.
> 
> Added to Petri's comment, when test description says lets try if 
> igt_draw library actually works there's not much point testing different 
> pipes/connectors since igt_draw library doesn't depend on those.

Yes, it doesn't matter the ouput/pipe combination. But still we need to 
convert to dynamic subtests with different format/modifier/draw_method 
combinations.

igt_subtest_with_dynamic("draw-method") {
     for_each(format) {
         for_each(draw_method) {
             for_each(modifier) {
                 igt_dynamic(combo);
             }
         }
     }
}

- Bhanu

> 
>>
>>
>>> +            }
>>> +        }
>>>       } } }
>>>       igt_describe("This subtest verifies CRC after filling fb with 
>>> x-tiling "
>>>                "or none.");
>>> -    igt_subtest("fill-fb")
>>> -        fill_fb_subtest();
>>> +    igt_subtest_with_dynamic("fill-fb") {
>>> +        for_each_pipe_with_valid_output(&display, pipe, output) {
>>> +            igt_dynamic_f("%s-pipe-%s", igt_output_name(output), 
>>> kmstest_pipe_name(pipe)) {
>>> +                fill_fb_subtest();
>>> +            }
>>
>> Same here.
>>
>>
>>
> 



More information about the igt-dev mailing list