[igt-dev] [PATCH i-g-t v2 2/2] kms_psr2_sf: Add dynamic subtests which use DSC feature

Hogander, Jouni jouni.hogander at intel.com
Tue Feb 7 06:47:31 UTC 2023


On Mon, 2023-02-06 at 23:44 +0530, Swati Sharma wrote:
> Patch LGTM.
> Reviewed-by: Swati Sharma <swati2.sharma at intel.com>

Thank you Swati. These two patches are now merged.

> 
> On 03-Feb-23 1:28 PM, Jouni Högander wrote:
> > Add mechanism to add coexisting features with selective fetch
> > and add dynamic subtests for DSC as coexisting feature.
> > 
> > v2:
> >   - check dsc is enabled (Swati)
> >   - remove unused variables
> > 
> > Cc: Jeevan B <jeevan.b at intel.com>
> > Cc: Swati Sharma <swati2.sharma at intel.com>
> > Signed-off-by: Jouni Högander <jouni.hogander at intel.com>
> > ---
> >   tests/i915/kms_psr2_sf.c | 333 ++++++++++++++++++++++++++--------
> > -----
> >   tests/meson.build        |   9 +-
> >   2 files changed, 234 insertions(+), 108 deletions(-)
> > 
> > diff --git a/tests/i915/kms_psr2_sf.c b/tests/i915/kms_psr2_sf.c
> > index 078884ac..2d761d31 100644
> > --- a/tests/i915/kms_psr2_sf.c
> > +++ b/tests/i915/kms_psr2_sf.c
> > @@ -25,6 +25,7 @@
> >   #include "igt.h"
> >   #include "igt_sysfs.h"
> >   #include "igt_psr.h"
> > +#include "kms_dsc_helper.h"
> >   #include <errno.h>
> >   #include <stdbool.h>
> >   #include <stdio.h>
> > @@ -86,6 +87,11 @@ typedef struct {
> >         uint32_t screen_changes;
> >         int cur_x, cur_y;
> >         enum pipe pipe;
> > +       enum {
> > +               FEATURE_NONE  = 0,
> > +               FEATURE_DSC   = 1,
> > +               FEATURE_COUNT = 2,
> > +       } coexist_feature;
> >   } data_t;
> >   
> >   static const char *op_str(enum operations op)
> > @@ -104,6 +110,18 @@ static const char *op_str(enum operations op)
> >         return name[op];
> >   }
> >   
> > +static const char *coexist_feature_str(int coexist_feature)
> > +{
> > +       switch (coexist_feature) {
> > +       case FEATURE_NONE:
> > +               return "";
> > +       case FEATURE_DSC:
> > +               return "-dsc";
> > +       default:
> > +               igt_assert(false);
> > +       }
> > +}
> > +
> >   static void display_init(data_t *data)
> >   {
> >         igt_display_require(&data->display, data->drm_fd);
> > @@ -224,9 +242,17 @@ static void prepare(data_t *data)
> >         igt_plane_t *primary, *sprite = NULL, *cursor = NULL;
> >         int fb_w, fb_h, x, y, view_w, view_h;
> >   
> > -       igt_output_set_pipe(output, data->pipe);
> >         data->mode = igt_output_get_mode(output);
> >   
> > +       if (data->coexist_feature & FEATURE_DSC) {
> > +               save_force_dsc_en(data->drm_fd, output);
> > +               force_dsc_enable(data->drm_fd, output);
> > +               igt_output_set_pipe(output, PIPE_NONE);
> > +               igt_display_commit2(&data->display, COMMIT_ATOMIC);
> > +       }
> > +
> > +       igt_output_set_pipe(output, data->pipe);
> > +
> >         if (data->big_fb_test) {
> >                 fb_w = data->big_fb_width;
> >                 fb_h = data->big_fb_height;
> > @@ -357,6 +383,10 @@ static void prepare(data_t *data)
> >         igt_plane_set_size(primary, view_w, view_h);
> >         igt_plane_set_position(primary, 0, 0);
> >         igt_display_commit2(&data->display, COMMIT_ATOMIC);
> > +
> > +       if (data->coexist_feature & FEATURE_DSC)
> > +               igt_require_f(igt_is_dsc_enabled(data->drm_fd,
> > output->name),
> > +                             "DSC is not enabled\n");
> >   }
> >   
> >   static inline void manual(const char *expected)
> > @@ -816,6 +846,11 @@ static void cleanup(data_t *data)
> >                 igt_plane_set_fb(sprite, NULL);
> >         }
> >   
> > +       if (data->coexist_feature & FEATURE_DSC) {
> > +               restore_force_dsc_en();
> > +               igt_output_set_pipe(output, PIPE_NONE);
> > +       }
> > +
> >         igt_display_commit2(&data->display, COMMIT_ATOMIC);
> >   
> >         igt_remove_fb(data->drm_fd, &data->fb_primary);
> > @@ -839,9 +874,10 @@ igt_main
> >   {
> >         data_t data = {};
> >         igt_output_t *outputs[IGT_MAX_PIPES * IGT_MAX_PIPES];
> > -       int i, j;
> > +       int i, j, k;
> >         int pipes[IGT_MAX_PIPES * IGT_MAX_PIPES];
> >         int n_pipes = 0;
> > +       int coexist_features[IGT_MAX_PIPES * IGT_MAX_PIPES];
> >   
> >         igt_fixture {
> >                 drmModeResPtr res;
> > @@ -877,9 +913,14 @@ igt_main
> >                               "PSR2 selective fetch not
> > enabled\n");
> >   
> >                 for_each_pipe_with_valid_output(&data.display,
> > data.pipe, data.output) {
> > +                       coexist_features[n_pipes] = 0;
> >                         if (check_psr2_support(&data)) {
> >                                 pipes[n_pipes] = data.pipe;
> >                                 outputs[n_pipes] = data.output;
> > +
> > +                               if
> > (check_dsc_on_connector(data.drm_fd, data.output))
> > +                                       coexist_features[n_pipes]
> > |= FEATURE_DSC;
> > +
> >                                 n_pipes++;
> >                         }
> >                 }
> > @@ -889,16 +930,22 @@ igt_main
> >         igt_describe("Test that selective fetch works on primary
> > plane");
> >         igt_subtest_with_dynamic_f("primary-%s-sf-dmg-area",
> > op_str(data.op)) {
> >                 for (i = 0; i < n_pipes; i++) {
> > -                       igt_dynamic_f("pipe-%s-%s",
> > kmstest_pipe_name(pipes[i]),
> > -
> >                                        igt_output_name(outputs[i]))
> > {
> > -                               data.pipe = pipes[i];
> > -                               data.output = outputs[i];
> > -                               for (j = 1; j <= MAX_DAMAGE_AREAS;
> > j++) {
> > -                                       data.damage_area_count = j;
> > +                       for (j = FEATURE_NONE; j < FEATURE_COUNT;
> > j++) {
> > +                               if (j != FEATURE_NONE &&
> > !(coexist_features[i] & j))
> > +                                       continue;
> > +                               igt_dynamic_f("pipe-%s-%s%s",
> > kmstest_pipe_name(pipes[i]),
> > +                                            
> > igt_output_name(outputs[i]),
> > +                                            
> > coexist_feature_str(j)) {
> > +                                       data.pipe = pipes[i];
> > +                                       data.output = outputs[i];
> >                                         data.test_plane_id =
> > DRM_PLANE_TYPE_PRIMARY;
> > -                                       prepare(&data);
> > -                                       run(&data);
> > -                                       cleanup(&data);
> > +                                       data.coexist_feature = j;
> > +                                       for (k = 1; k <=
> > MAX_DAMAGE_AREAS; k++) {
> > +                                               data.damage_area_co
> > unt = k;
> > +                                               prepare(&data);
> > +                                               run(&data);
> > +                                               cleanup(&data);
> > +                                       }
> >                                 }
> >                         }
> >                 }
> > @@ -909,16 +956,22 @@ igt_main
> >         igt_describe("Test that selective fetch works on primary
> > plane with big fb");
> >         igt_subtest_with_dynamic_f("primary-%s-sf-dmg-area-big-fb",
> > op_str(data.op)) {
> >                 for (i = 0; i < n_pipes; i++) {
> > -                       igt_dynamic_f("pipe-%s-%s",
> > kmstest_pipe_name(pipes[i]),
> > -
> >                                        igt_output_name(outputs[i]))
> > {
> > -                               data.pipe = pipes[i];
> > -                               data.output = outputs[i];
> > -                               for (j = 1; j <= MAX_DAMAGE_AREAS;
> > j++) {
> > -                                       data.damage_area_count = j;
> > +                       for (j = FEATURE_NONE; j < FEATURE_COUNT;
> > j++) {
> > +                               if (j != FEATURE_NONE &&
> > !(coexist_features[i] & j))
> > +                                       continue;
> > +                               igt_dynamic_f("pipe-%s-%s%s",
> > kmstest_pipe_name(pipes[i]),
> > +                                            
> > igt_output_name(outputs[i]),
> > +                                            
> > coexist_feature_str(j)) {
> > +                                       data.pipe = pipes[i];
> > +                                       data.output = outputs[i];
> >                                         data.test_plane_id =
> > DRM_PLANE_TYPE_PRIMARY;
> > -                                       prepare(&data);
> > -                                       run(&data);
> > -                                       cleanup(&data);
> > +                                       data.coexist_feature = j;
> > +                                       for (k = 1; k <=
> > MAX_DAMAGE_AREAS; k++) {
> > +                                               data.damage_area_co
> > unt = k;
> > +                                               prepare(&data);
> > +                                               run(&data);
> > +                                               cleanup(&data);
> > +                                       }
> >                                 }
> >                         }
> >                 }
> > @@ -929,16 +982,22 @@ igt_main
> >         igt_describe("Test that selective fetch works on overlay
> > plane");
> >         igt_subtest_with_dynamic_f("overlay-%s-sf-dmg-area",
> > op_str(data.op)) {
> >                 for (i = 0; i < n_pipes; i++) {
> > -                       igt_dynamic_f("pipe-%s-%s",
> > kmstest_pipe_name(pipes[i]),
> > -
> >                                        igt_output_name(outputs[i]))
> > {
> > -                               data.pipe = pipes[i];
> > -                               data.output = outputs[i];
> > -                               for (j = 1; j <= MAX_DAMAGE_AREAS;
> > j++) {
> > -                                       data.damage_area_count = j;
> > +                       for (j = FEATURE_NONE; j < FEATURE_COUNT;
> > j++) {
> > +                               if (j != FEATURE_NONE &&
> > !(coexist_features[i] & j))
> > +                                       continue;
> > +                               igt_dynamic_f("pipe-%s-%s%s",
> > kmstest_pipe_name(pipes[i]),
> > +                                            
> > igt_output_name(outputs[i]),
> > +                                            
> > coexist_feature_str(j)) {
> > +                                       data.pipe = pipes[i];
> > +                                       data.output = outputs[i];
> >                                         data.test_plane_id =
> > DRM_PLANE_TYPE_OVERLAY;
> > -                                       prepare(&data);
> > -                                       run(&data);
> > -                                       cleanup(&data);
> > +                                       data.coexist_feature = j;
> > +                                       for (k = 1; k <=
> > MAX_DAMAGE_AREAS; k++) {
> > +                                               data.damage_area_co
> > unt = k;
> > +                                               prepare(&data);
> > +                                               run(&data);
> > +                                               cleanup(&data);
> > +                                       }
> >                                 }
> >                         }
> >                 }
> > @@ -949,14 +1008,20 @@ igt_main
> >         igt_describe("Test that selective fetch works on cursor
> > plane");
> >         igt_subtest_with_dynamic_f("cursor-%s-sf", op_str(data.op))
> > {
> >                 for (i = 0; i < n_pipes; i++) {
> > -                       igt_dynamic_f("pipe-%s-%s",
> > kmstest_pipe_name(pipes[i]),
> > -
> >                                        igt_output_name(outputs[i]))
> > {
> > -                               data.pipe = pipes[i];
> > -                               data.output = outputs[i];
> > -                               data.test_plane_id =
> > DRM_PLANE_TYPE_CURSOR;
> > -                               prepare(&data);
> > -                               run(&data);
> > -                               cleanup(&data);
> > +                       for (j = FEATURE_NONE; j < FEATURE_COUNT;
> > j++) {
> > +                               if (j != FEATURE_NONE &&
> > !(coexist_features[i] & j))
> > +                                       continue;
> > +                               igt_dynamic_f("pipe-%s-%s%s",
> > kmstest_pipe_name(pipes[i]),
> > +                                            
> > igt_output_name(outputs[i]),
> > +                                            
> > coexist_feature_str(j)) {
> > +                                       data.pipe = pipes[i];
> > +                                       data.output = outputs[i];
> > +                                       data.test_plane_id =
> > DRM_PLANE_TYPE_CURSOR;
> > +                                       data.coexist_feature = j;
> > +                                       prepare(&data);
> > +                                       run(&data);
> > +                                       cleanup(&data);
> > +                               }
> >                         }
> >                 }
> >         }
> > @@ -965,14 +1030,20 @@ igt_main
> >         igt_describe("Test that selective fetch works on moving
> > cursor plane (no update)");
> >         igt_subtest_with_dynamic_f("cursor-%s-sf", op_str(data.op))
> > {
> >                 for (i = 0; i < n_pipes; i++) {
> > -                       igt_dynamic_f("pipe-%s-%s",
> > kmstest_pipe_name(pipes[i]),
> > -
> >                                        igt_output_name(outputs[i]))
> > {
> > -                               data.pipe = pipes[i];
> > -                               data.output = outputs[i];
> > -                               data.test_plane_id =
> > DRM_PLANE_TYPE_CURSOR;
> > -                               prepare(&data);
> > -                               run(&data);
> > -                               cleanup(&data);
> > +                       for (j = FEATURE_NONE; j < FEATURE_COUNT;
> > j++) {
> > +                               if (j != FEATURE_NONE &&
> > !(coexist_features[i] & j))
> > +                                       continue;
> > +                               igt_dynamic_f("pipe-%s-%s%s",
> > kmstest_pipe_name(pipes[i]),
> > +                                            
> > igt_output_name(outputs[i]),
> > +                                            
> > coexist_feature_str(j)) {
> > +                                       data.pipe = pipes[i];
> > +                                       data.output = outputs[i];
> > +                                       data.test_plane_id =
> > DRM_PLANE_TYPE_CURSOR;
> > +                                       data.coexist_feature = j;
> > +                                       prepare(&data);
> > +                                       run(&data);
> > +                                       cleanup(&data);
> > +                               }
> >                         }
> >                 }
> >         }
> > @@ -981,14 +1052,20 @@ igt_main
> >         igt_describe("Test that selective fetch works on moving
> > cursor plane exceeding partially visible area (no update)");
> >         igt_subtest_with_dynamic_f("cursor-%s-sf", op_str(data.op))
> > {
> >                 for (i = 0; i < n_pipes; i++) {
> > -                       igt_dynamic_f("pipe-%s-%s",
> > kmstest_pipe_name(pipes[i]),
> > -
> >                                        igt_output_name(outputs[i]))
> > {
> > -                               data.pipe = pipes[i];
> > -                               data.output = outputs[i];
> > -                               data.test_plane_id =
> > DRM_PLANE_TYPE_CURSOR;
> > -                               prepare(&data);
> > -                               run(&data);
> > -                               cleanup(&data);
> > +                       for (j = FEATURE_NONE; j < FEATURE_COUNT;
> > j++) {
> > +                               if (j != FEATURE_NONE &&
> > !(coexist_features[i] & j))
> > +                                       continue;
> > +                               igt_dynamic_f("pipe-%s-%s%s",
> > kmstest_pipe_name(pipes[i]),
> > +                                            
> > igt_output_name(outputs[i]),
> > +                                            
> > coexist_feature_str(j)) {
> > +                                       data.pipe = pipes[i];
> > +                                       data.output = outputs[i];
> > +                                       data.test_plane_id =
> > DRM_PLANE_TYPE_CURSOR;
> > +                                       data.coexist_feature = j;
> > +                                       prepare(&data);
> > +                                       run(&data);
> > +                                       cleanup(&data);
> > +                               }
> >                         }
> >                 }
> >         }
> > @@ -997,14 +1074,20 @@ igt_main
> >         igt_describe("Test that selective fetch works on moving
> > cursor plane exceeding fully visible area (no update)");
> >         igt_subtest_with_dynamic_f("cursor-%s-sf", op_str(data.op))
> > {
> >                 for (i = 0; i < n_pipes; i++) {
> > -                       igt_dynamic_f("pipe-%s-%s",
> > kmstest_pipe_name(pipes[i]),
> > -
> >                                        igt_output_name(outputs[i]))
> > {
> > -                               data.pipe = pipes[i];
> > -                               data.output = outputs[i];
> > -                               data.test_plane_id =
> > DRM_PLANE_TYPE_CURSOR;
> > -                               prepare(&data);
> > -                               run(&data);
> > -                               cleanup(&data);
> > +                       for (j = FEATURE_NONE; j < FEATURE_COUNT;
> > j++) {
> > +                               if (j != FEATURE_NONE &&
> > !(coexist_features[i] & j))
> > +                                       continue;
> > +                               igt_dynamic_f("pipe-%s-%s%s",
> > kmstest_pipe_name(pipes[i]),
> > +                                            
> > igt_output_name(outputs[i]),
> > +                                            
> > coexist_feature_str(j)) {
> > +                                       data.pipe = pipes[i];
> > +                                       data.output = outputs[i];
> > +                                       data.test_plane_id =
> > DRM_PLANE_TYPE_CURSOR;
> > +                                       data.coexist_feature = j;
> > +                                       prepare(&data);
> > +                                       run(&data);
> > +                                       cleanup(&data);
> > +                               }
> >                         }
> >                 }
> >         }
> > @@ -1015,16 +1098,22 @@ igt_main
> >         igt_describe("Test that selective fetch works on moving
> > overlay plane");
> >         igt_subtest_with_dynamic_f("%s-sf-dmg-area",
> > op_str(data.op)) {
> >                 for (i = 0; i < n_pipes; i++) {
> > -                       igt_dynamic_f("pipe-%s-%s",
> > kmstest_pipe_name(pipes[i]),
> > -
> >                                        igt_output_name(outputs[i]))
> > {
> > -                               data.pipe = pipes[i];
> > -                               data.output = outputs[i];
> > -                               for (j = POS_TOP_LEFT; j <=
> > POS_BOTTOM_RIGHT ; j++) {
> > -                                       data.pos = j;
> > +                       for (j = FEATURE_NONE; j < FEATURE_COUNT;
> > j++) {
> > +                               if (j != FEATURE_NONE &&
> > !(coexist_features[i] & j))
> > +                                       continue;
> > +                               igt_dynamic_f("pipe-%s-%s%s",
> > kmstest_pipe_name(pipes[i]),
> > +                                            
> > igt_output_name(outputs[i]),
> > +                                            
> > coexist_feature_str(j)) {
> > +                                       data.pipe = pipes[i];
> > +                                       data.output = outputs[i];
> >                                         data.test_plane_id =
> > DRM_PLANE_TYPE_OVERLAY;
> > -                                       prepare(&data);
> > -                                       run(&data);
> > -                                       cleanup(&data);
> > +                                       data.coexist_feature = j;
> > +                                       for (k = POS_TOP_LEFT; k <=
> > POS_BOTTOM_RIGHT ; k++) {
> > +                                               data.pos = k;
> > +                                               prepare(&data);
> > +                                               run(&data);
> > +                                               cleanup(&data);
> > +                                       }
> >                                 }
> >                         }
> >                 }
> > @@ -1034,14 +1123,20 @@ igt_main
> >         igt_describe("Test that selective fetch works on moving
> > overlay plane (no update)");
> >         igt_subtest_with_dynamic_f("overlay-%s-sf",
> > op_str(data.op)) {
> >                 for (i = 0; i < n_pipes; i++) {
> > -                       igt_dynamic_f("pipe-%s-%s",
> > kmstest_pipe_name(pipes[i]),
> > -
> >                                        igt_output_name(outputs[i]))
> > {
> > +                       for (j = FEATURE_NONE; j < FEATURE_COUNT;
> > j++) {
> > +                               if (j != FEATURE_NONE &&
> > !(coexist_features[i] & j))
> > +                                       continue;
> > +                               igt_dynamic_f("pipe-%s-%s%s",
> > kmstest_pipe_name(pipes[i]),
> > +                                            
> > igt_output_name(outputs[i]),
> > +                                            
> > coexist_feature_str(j)) {
> >                                 data.pipe = pipes[i];
> >                                 data.output = outputs[i];
> >                                 data.test_plane_id =
> > DRM_PLANE_TYPE_OVERLAY;
> > +                               data.coexist_feature = j;
> >                                 prepare(&data);
> >                                 run(&data);
> >                                 cleanup(&data);
> > +                               }
> >                         }
> >                 }
> >         }
> > @@ -1050,14 +1145,20 @@ igt_main
> >         igt_describe("Test that selective fetch works on moving
> > overlay plane partially exceeding visible area (no update)");
> >         igt_subtest_with_dynamic_f("overlay-%s-sf",
> > op_str(data.op)) {
> >                 for (i = 0; i < n_pipes; i++) {
> > -                       igt_dynamic_f("pipe-%s-%s",
> > kmstest_pipe_name(pipes[i]),
> > -
> >                                        igt_output_name(outputs[i]))
> > {
> > -                               data.pipe = pipes[i];
> > -                               data.output = outputs[i];
> > -                               data.test_plane_id =
> > DRM_PLANE_TYPE_OVERLAY;
> > -                               prepare(&data);
> > -                               run(&data);
> > -                               cleanup(&data);
> > +                       for (j = FEATURE_NONE; j < FEATURE_COUNT;
> > j++) {
> > +                               if (j != FEATURE_NONE &&
> > !(coexist_features[i] & j))
> > +                                       continue;
> > +                               igt_dynamic_f("pipe-%s-%s%s",
> > kmstest_pipe_name(pipes[i]),
> > +                                            
> > igt_output_name(outputs[i]),
> > +                                            
> > coexist_feature_str(j)) {
> > +                                       data.pipe = pipes[i];
> > +                                       data.output = outputs[i];
> > +                                       data.test_plane_id =
> > DRM_PLANE_TYPE_OVERLAY;
> > +                                       data.coexist_feature = j;
> > +                                       prepare(&data);
> > +                                       run(&data);
> > +                                       cleanup(&data);
> > +                               }
> >                         }
> >                 }
> >         }
> > @@ -1066,14 +1167,20 @@ igt_main
> >         igt_describe("Test that selective fetch works on moving
> > overlay plane fully exceeding visible area (no update)");
> >         igt_subtest_with_dynamic_f("overlay-%s-sf",
> > op_str(data.op)) {
> >                 for (i = 0; i < n_pipes; i++) {
> > -                       igt_dynamic_f("pipe-%s-%s",
> > kmstest_pipe_name(pipes[i]),
> > -
> >                                        igt_output_name(outputs[i]))
> > {
> > -                               data.pipe = pipes[i];
> > -                               data.output = outputs[i];
> > -                               data.test_plane_id =
> > DRM_PLANE_TYPE_OVERLAY;
> > -                               prepare(&data);
> > -                               run(&data);
> > -                               cleanup(&data);
> > +                       for (j = FEATURE_NONE; j < FEATURE_COUNT;
> > j++) {
> > +                               if (j != FEATURE_NONE &&
> > !(coexist_features[i] & j))
> > +                                       continue;
> > +                               igt_dynamic_f("pipe-%s-%s%s",
> > kmstest_pipe_name(pipes[i]),
> > +                                            
> > igt_output_name(outputs[i]),
> > +                                            
> > coexist_feature_str(j)) {
> > +                                       data.pipe = pipes[i];
> > +                                       data.output = outputs[i];
> > +                                       data.test_plane_id =
> > DRM_PLANE_TYPE_OVERLAY;
> > +                                       data.coexist_feature = j;
> > +                                       prepare(&data);
> > +                                       run(&data);
> > +                                       cleanup(&data);
> > +                               }
> >                         }
> >                 }
> >         }
> > @@ -1084,16 +1191,22 @@ igt_main
> >                      "with blended overlay plane");
> >         igt_subtest_with_dynamic_f("%s-sf-dmg-area",
> > op_str(data.op)) {
> >                 for (i = 0; i < n_pipes; i++) {
> > -                       igt_dynamic_f("pipe-%s-%s",
> > kmstest_pipe_name(pipes[i]),
> > -
> >                                        igt_output_name(outputs[i]))
> > {
> > -                               data.pipe = pipes[i];
> > -                               data.output = outputs[i];
> > -                               for (j = 1; j <= MAX_DAMAGE_AREAS;
> > j++) {
> > -                                       data.damage_area_count = j;
> > -                                       data.test_plane_id =
> > DRM_PLANE_TYPE_PRIMARY;
> > -                                       prepare(&data);
> > -                                       run(&data);
> > -                                       cleanup(&data);
> > +                       for (j = FEATURE_NONE; j < FEATURE_COUNT;
> > j++) {
> > +                               if (j != FEATURE_NONE &&
> > !(coexist_features[i] & j))
> > +                                       continue;
> > +                               igt_dynamic_f("pipe-%s-%s%s",
> > kmstest_pipe_name(pipes[i]),
> > +                                            
> > igt_output_name(outputs[i]),
> > +                                            
> > coexist_feature_str(j)) {
> > +                                       data.pipe = pipes[i];
> > +                                       data.output = outputs[i];
> > +                                       for (k = 1; k <=
> > MAX_DAMAGE_AREAS; k++) {
> > +                                               data.damage_area_co
> > unt = k;
> > +                                               data.test_plane_id
> > = DRM_PLANE_TYPE_PRIMARY;
> > +                                               data.coexist_featur
> > e = j;
> > +                                               prepare(&data);
> > +                                               run(&data);
> > +                                               cleanup(&data);
> > +                                       }
> >                                 }
> >                         }
> >                 }
> > @@ -1108,15 +1221,21 @@ igt_main
> >         igt_describe("Test that selective fetch works on overlay
> > plane");
> >         igt_subtest_with_dynamic_f("overlay-%s-sf",
> > op_str(data.op)) {
> >                 for (i = 0; i < n_pipes; i++) {
> > -                       igt_dynamic_f("pipe-%s-%s",
> > kmstest_pipe_name(pipes[i]),
> > -                                     igt_output_name(outputs[i]))
> > {
> > -                               data.pipe = pipes[i];
> > -                               data.output = outputs[i];
> > -                               data.damage_area_count = 1;
> > -                               data.test_plane_id =
> > DRM_PLANE_TYPE_OVERLAY;
> > -                               prepare(&data);
> > -                               run(&data);
> > -                               cleanup(&data);
> > +                       for (j = FEATURE_NONE; j < FEATURE_COUNT;
> > j++) {
> > +                               if (j != FEATURE_NONE &&
> > !(coexist_features[i] & j))
> > +                                       continue;
> > +                               igt_dynamic_f("pipe-%s-%s%s",
> > kmstest_pipe_name(pipes[i]),
> > +                                            
> > igt_output_name(outputs[i]),
> > +                                            
> > coexist_feature_str(j)) {
> > +                                       data.pipe = pipes[i];
> > +                                       data.output = outputs[i];
> > +                                       data.damage_area_count = 1;
> > +                                       data.test_plane_id =
> > DRM_PLANE_TYPE_OVERLAY;
> > +                                       data.coexist_feature = j;
> > +                                       prepare(&data);
> > +                                       run(&data);
> > +                                       cleanup(&data);
> > +                               }
> >                         }
> >                 }
> >         }
> > diff --git a/tests/meson.build b/tests/meson.build
> > index d93a07c9..6fb1bb86 100644
> > --- a/tests/meson.build
> > +++ b/tests/meson.build
> > @@ -233,7 +233,6 @@ i915_progs = [
> >         'kms_pipe_b_c_ivb',
> >         'kms_psr',
> >         'kms_psr2_su',
> > -       'kms_psr2_sf',
> >         'kms_psr_stress_test',
> >         'kms_pwrite_crc',
> >         'sysfs_defaults',
> > @@ -436,6 +435,14 @@ test_executables += executable('kms_dsc',
> >            install : true)
> >   test_list += 'kms_dsc'
> >   
> > +test_executables += executable('kms_psr2_sf',
> > +          [ join_paths('i915', 'kms_psr2_sf.c'), join_paths
> > ('i915', 'kms_dsc_helper.c')],
> > +          dependencies : test_deps,
> > +          install_dir : libexecdir,
> > +          install_rpath : libexecdir_rpathdir,
> > +          install : true)
> > +test_list += 'kms_psr2_sf'
> > +
> >   if chamelium.found()
> >          test_executables += executable('kms_chamelium_color',
> >                                [ 'chamelium/kms_chamelium_color.c',
> > 'kms_color_helper.c' ],
> 



More information about the igt-dev mailing list