> -----Original Message-----
> From: Latvala, Petri
> Sent: Friday, November 24, 2017 2:58 PM
> To: Srinivas, Vidya <vidya.srini...@intel.com>
> Cc: intel-gfx@lists.freedesktop.org
> Subject: Re: [Intel-gfx] [PATCH i-g-t] i-g-t: kms_plane_scaling: Enhanced
> scaling tests
> 
> On Wed, Nov 22, 2017 at 01:45:04PM +0530, Vidya Srinivas wrote:
> > From: Jyoti Yadav <jyoti.r.ya...@intel.com>
> >
> > Added subtests to cover below gaps.
> >     1. scaler with pixelformat and tiling.
> >     2. scaler with rotation
> >     3. scaler with multiple planes
> >     4. scaler with multi pipe
> >     5. scaler with clipping/clamping scenario
> >
> > Signed-off-by: Jyoti Yadav <jyoti.r.ya...@intel.com>
> > ---
> >  tests/kms_plane_scaling.c | 480
> > +++++++++++++++++++++++++++++++++++++++++++++-
> >  1 file changed, 476 insertions(+), 4 deletions(-)
> >
> > diff --git a/tests/kms_plane_scaling.c b/tests/kms_plane_scaling.c
> > index 403df47..2be6acc 100644
> > --- a/tests/kms_plane_scaling.c
> > +++ b/tests/kms_plane_scaling.c
> > @@ -43,10 +43,11 @@ typedef struct {
> >     struct igt_fb fb1;
> >     struct igt_fb fb2;
> >     struct igt_fb fb3;
> > +   struct igt_fb fb4;
> >     int fb_id1;
> >     int fb_id2;
> >     int fb_id3;
> > -
> > +   int fb_id4;
> >     igt_plane_t *plane1;
> >     igt_plane_t *plane2;
> >     igt_plane_t *plane3;
> > @@ -54,6 +55,51 @@ typedef struct {
> >  } data_t;
> >
> >  #define FILE_NAME   "1080p-left.png"
> > +#define MIN_SRC_WIDTH 8
> > +#define MAX_SRC_WIDTH 4096
> > +static uint32_t check_pixel_format(uint32_t pixel_format) {
> > +   const uint32_t *igt_formats;
> > +   int num_igt_formats;
> > +   int i;
> > +
> > +
> > +   igt_get_all_cairo_formats(&igt_formats, &num_igt_formats);
> > +   for (i = 0; i < num_igt_formats; i++) {
> > +           if (pixel_format == igt_formats[i])
> > +                   return 0;
> > +   }
> > +
> > +   return -1;
> > +}
> > +bool is_igt_output_connected(igt_output_t *output) {
> > +   /* Something went wrong during probe? */
> > +   if (!output->config.connector)
> > +           return false;
> > +
> > +   if (output->config.connector->connection ==
> DRM_MODE_CONNECTED)
> > +           return true;
> > +
> > +   return false;
> > +}
> > +
> > +static igt_output_t *get_next_valid_output(igt_display_t *data, int
> > +i) {
> > +   int j = 0, valid_output = 0;
> > +   drmModeModeInfo *mode;
> > +   for (j = 0; j < data->n_outputs; j++) {
> > +           if (is_igt_output_connected(&data->outputs[j])) {
> > +                   mode = igt_output_get_mode(&data->outputs[j]);
> > +                   if (mode->hdisplay != 0 && mode->vdisplay != 0) {
> > +                           valid_output++;
> > +                           if (valid_output == i)
> > +                                   return &data->outputs[j];
> > +                   }
> > +           }
> > +   }
> > +   return NULL;
> > +}
> >
> >  static void prepare_crtc(data_t *data, igt_output_t *output, enum pipe
> pipe,
> >                     igt_plane_t *plane, drmModeModeInfo *mode,
> enum igt_commit_style
> > s) @@ -298,7 +344,418 @@ static void test_plane_scaling(data_t *d)
> >     igt_require_f(valid_tests, "no valid crtc/connector combinations
> > found\n");  }
> >
> > -igt_simple_main
> > +uint64_t get_tiling(int i)
> > +{
> > +   switch (i) {
> > +   case 0:
> > +           return LOCAL_DRM_FORMAT_MOD_NONE;
> > +           break;
> > +   case 1:
> > +           return LOCAL_I915_FORMAT_MOD_X_TILED;
> > +           break;
> > +   case 2:
> > +           return LOCAL_I915_FORMAT_MOD_Y_TILED;
> > +           break;
> > +   case 3:
> > +           return LOCAL_I915_FORMAT_MOD_Yf_TILED;
> > +           break;
> > +   default:
> > +           return -1;
> > +   }
> > +}
> > +
> > +void loop_plane_scaling(data_t *d, igt_plane_t *plane, uint32_t
> pixel_format,
> > +                   uint64_t tiling, enum pipe pipe, igt_output_t
> *output) {
> > +   igt_display_t *display = &d->display;
> > +   int width, height;
> > +   /* create buffer in the range of  min and max source side limit.*/
> > +   for (width = MIN_SRC_WIDTH; width <= MAX_SRC_WIDTH; width =
> width + 500) {
> > +           igt_output_set_pipe(output, pipe);
> > +           height = width + 10;
> > +           d->fb_id1 = igt_create_pattern_fb(display->drm_fd, width,
> height,
> > +                                           pixel_format, tiling, &d-
> >fb1);
> > +           igt_assert(d->fb_id1);
> > +           igt_plane_set_fb(plane, &d->fb1);
> > +           /* check upscaling */
> > +           igt_fb_set_position(&d->fb1, plane, 0, 0);
> > +           igt_fb_set_size(&d->fb1, plane, d->fb1.width, d-
> >fb1.height);
> > +           igt_plane_set_position(plane, 10, 10);
> > +           igt_plane_set_size(plane, width*2, height*2);
> > +           igt_display_commit2(display, COMMIT_ATOMIC);
> > +           igt_plane_set_fb(plane, NULL);
> > +           igt_plane_set_position(plane, 0, 0);
> > +           if (d->fb_id1) {
> > +                   igt_remove_fb(d->drm_fd, &d->fb1);
> > +                   d->fb_id1 = 0;
> > +           }
> > +   }
> > +}
> > +void test_scaler_with_pixel_format(data_t *d) {
> > +   igt_display_t *display = &d->display;
> > +   igt_output_t *output;
> > +   enum pipe pipe;
> > +   igt_plane_t *plane;
> > +   int valid_tests = 0;
> > +   igt_require(d->num_scalers);
> > +   for_each_pipe_with_valid_output(display, pipe, output) {
> > +           drmModeModeInfo *mode;
> > +           igt_output_set_pipe(output, pipe);
> > +           mode = igt_output_get_mode(output);
> > +           for_each_plane_on_pipe(display, pipe, plane) {
> > +                   /* check if plane is cursor. */
> > +                   if (plane->type == DRM_PLANE_TYPE_CURSOR)
> > +                           continue;
> > +                   /* run loop for all pixel formats.*/
> > +                   drmModePlanePtr plane_kms;
> > +                   plane_kms = plane->drm_plane;
> > +                   for (int j = 0; j < plane_kms->count_formats; j++) {
> > +                           /* check plane pixel format is supported in
> > +                            * cairo pixel formats.
> > +                            */
> > +                           if (check_pixel_format(plane_kms-
> >formats[j])  == 0) {
> > +                                   /* loop for tiling */
> > +                                   igt_require_fb_modifiers(d-
> >drm_fd);
> > +                                   for (int i = 0; i < 4; i++) {
> > +                                           uint64_t tiling = get_tiling(i);
> > +                                           loop_plane_scaling(d, plane,
> plane_kms->formats[j],
> > +                                                           tiling, pipe,
> output);
> > +                                   }
> > +                           }
> > +                   }
> > +           }
> > +   }
> > +}
> > +
> > +static igt_rotation_t get_rotation_angle(int i) {
> > +   switch (i) {
> > +   case 0:
> > +           return IGT_ROTATION_0;
> > +           break;
> > +   case 1:
> > +           return IGT_ROTATION_90;
> > +           break;
> > +   case 2:
> > +           return IGT_ROTATION_180;
> > +           break;
> > +   case 3:
> > +           return IGT_ROTATION_270;
> > +           break;
> > +   default:
> > +           return -1;
> > +   }
> > +}
> > +
> > +void test_scaler_with_rotation(data_t *d) {
> > +   igt_display_t *display = &d->display;
> > +   igt_output_t *output;
> > +   enum pipe pipe;
> > +   igt_plane_t *plane;
> > +   int valid_tests = 0;
> > +   igt_require(d->num_scalers);
> > +   for_each_pipe_with_valid_output(display, pipe, output) {
> > +           drmModeModeInfo *mode;
> > +           mode = igt_output_get_mode(output);
> > +           for_each_plane_on_pipe(display, pipe, plane) {
> > +                   if (plane->type == DRM_PLANE_TYPE_CURSOR)
> > +                           continue;
> > +                   /* run loop for all pixel formats.*/
> > +                   drmModePlanePtr plane_kms;
> > +                   plane_kms = plane->drm_plane;
> > +                   for (int j = 0; j < plane_kms->count_formats; j++) {
> > +                           /* 90/270 degree rotation is not supported
> on RGB565 and C8 pixel
> > +                            * formats
> > +                            */
> > +                           if (plane_kms->formats[j] ==
> DRM_FORMAT_RGB565 ||
> > +                                   plane_kms->formats[j] ==
> DRM_FORMAT_C8) {
> > +                                   continue;
> > +                           }
> > +                           if (check_pixel_format(plane_kms-
> >formats[j]) == 0) {
> > +                                   igt_output_set_pipe(output, pipe);
> > +                                   d->fb_id1 =
> igt_create_pattern_fb(display->drm_fd,
> > +
> mode->hdisplay, mode->vdisplay,
> > +
> plane_kms->formats[j],
> > +
> LOCAL_I915_FORMAT_MOD_Y_TILED, &d->fb1);
> > +                                   igt_assert(d->fb_id1);
> > +                                   /* check all the supported rotation
> format*/
> > +                                   for (int i = 0; i < 4; i++) {
> > +                                           igt_plane_set_fb(plane, &d-
> >fb1);
> > +                                           /* check upscaling */
> > +                                           igt_fb_set_position(&d->fb1,
> plane, 0, 0);
> > +                                           igt_fb_set_size(&d->fb1,
> plane, 300, 400);
> > +
>       igt_plane_set_position(plane, 0, 0);
> > +                                           igt_plane_set_size(plane,
> mode->hdisplay-200, mode->vdisplay-200);
> > +
>       igt_plane_set_rotation(plane, get_rotation_angle(i));
> > +
>       igt_display_commit2(display, COMMIT_ATOMIC);
> > +                                           /* check downscaling */
> > +                                           igt_fb_set_position(&d->fb1,
> plane, 0, 0);
> > +                                           igt_fb_set_size(&d->fb1,
> plane, 300, 400);
> > +
>       igt_plane_set_position(plane, 0, 0);
> > +                                           igt_plane_set_size(plane,
> 350, 250); /* downscale by 50 pixels*/
> > +
>       igt_plane_set_rotation(plane, get_rotation_angle(i));
> > +
>       igt_display_commit2(display, COMMIT_ATOMIC);
> > +                                           /* disable Plane*/
> > +                                           igt_plane_set_fb(plane,
> NULL);
> > +
>       igt_plane_set_position(plane, 0, 0);
> > +                                   }
> > +                                   if (d->fb_id1) {
> > +                                           igt_remove_fb(d->drm_fd,
> &d->fb1);
> > +                                           d->fb_id1 = 0;
> > +                                   }
> > +                           }
> > +                   }
> > +           }
> > +   }
> > +}
> > +
> > +void test_scaler_with_multiple_planes(data_t *d) {
> > +   igt_display_t *display = &d->display;
> > +   igt_output_t *output;
> > +   enum pipe pipe;
> > +   int valid_tests = 0;
> > +   igt_require(d->num_scalers);
> > +   for_each_pipe_with_valid_output(display, pipe, output) {
> > +           /* For Gen 9, Pipe C supports only 1 scaler*/
> > +           if (intel_gen(d->devid) == 9 && pipe == PIPE_C)
> > +                   continue;
> > +           drmModeModeInfo *mode;
> > +           igt_output_set_pipe(output, pipe);
> > +           mode = igt_output_get_mode(output);
> > +           /* Create 2 Framebuffers */
> > +           d->fb_id2 = igt_create_pattern_fb(d->drm_fd, mode-
> >hdisplay, mode->vdisplay,
> > +                                           DRM_FORMAT_XRGB8888,
> > +
>       LOCAL_I915_FORMAT_MOD_X_TILED, /* tiled */
> > +                                           &d->fb2);
> > +           igt_assert(d->fb_id2);
> > +
> > +           d->fb_id3 = igt_create_pattern_fb(d->drm_fd,
> > +                                             mode->hdisplay, mode-
> >vdisplay,
> > +                                             DRM_FORMAT_XRGB8888,
> > +
> LOCAL_I915_FORMAT_MOD_Y_TILED, /* tiled */
> > +                                             &d->fb3);
> > +           igt_assert(d->fb_id3);
> > +
> > +           d->plane1 = igt_output_get_plane(output, 0);
> > +           igt_plane_set_fb(d->plane1, &d->fb2);
> > +           d->plane2 = igt_output_get_plane(output, 1);
> > +           igt_plane_set_fb(d->plane2, &d->fb3);
> > +           /* plane upscaling  on 2 planes*/
> > +           igt_fb_set_position(&d->fb2, d->plane1, 0, 0);
> > +           igt_fb_set_size(&d->fb2, d->plane1, 300, 300);
> > +           igt_plane_set_position(d->plane1, 0, 0);
> > +           igt_plane_set_size(d->plane1, 400, 400);
> > +
> > +           igt_fb_set_position(&d->fb3, d->plane2, 0, 0);
> > +           igt_fb_set_size(&d->fb3, d->plane2, 400, 400);
> > +           igt_plane_set_position(d->plane2, 100, 100);
> > +           igt_plane_set_size(d->plane2, 500, 500);
> > +
> > +           igt_display_commit2(display, COMMIT_ATOMIC);
> > +           /* disbale above 2planes*/
> > +           igt_plane_set_fb(d->plane1, NULL);
> > +           igt_plane_set_position(d->plane1, 0, 0);
> > +           igt_plane_set_fb(d->plane2, NULL);
> > +           igt_plane_set_position(d->plane2, 0, 0);
> > +
> > +           /* Switch scaler from above 2 planes to next 2 planes*/
> > +           d->plane3 = igt_output_get_plane(output, 2);
> > +           igt_plane_set_fb(d->plane3, &d->fb2);
> > +           d->plane4 = igt_output_get_plane(output, 3);
> > +           igt_plane_set_fb(d->plane4, &d->fb3);
> > +
> > +           igt_fb_set_position(&d->fb2, d->plane3, 0, 0);
> > +           igt_fb_set_size(&d->fb2, d->plane3, 300, 300);
> > +           igt_plane_set_position(d->plane3, 0, 0);
> > +           igt_plane_set_size(d->plane3, 600, 600);
> > +
> > +           igt_fb_set_position(&d->fb3, d->plane4, 0, 0);
> > +           igt_fb_set_size(&d->fb3, d->plane4, 400, 400);
> > +           igt_plane_set_position(d->plane4, 100, 100);
> > +           igt_plane_set_size(d->plane4, 700, 700);
> > +
> > +           igt_display_commit2(display, COMMIT_ATOMIC);
> > +           /* disbale above 2planes and remove FB*/
> > +           igt_plane_set_fb(d->plane3, NULL);
> > +           igt_plane_set_position(d->plane3, 0, 0);
> > +           igt_plane_set_fb(d->plane4, NULL);
> > +           igt_plane_set_position(d->plane4, 0, 0);
> > +           if (d->fb_id2) {
> > +                   igt_remove_fb(d->drm_fd, &d->fb2);
> > +                   d->fb_id2 = 0;
> > +           }
> > +           if (d->fb_id3) {
> > +                   igt_remove_fb(d->drm_fd, &d->fb3);
> > +                   d->fb_id3 = 0;
> > +           }
> > +   }
> > +}
> > +
> > +void test_scaler_with_clipping_clamping_scenario(data_t *d) {
> > +   igt_display_t *display = &d->display;
> > +   igt_output_t *output;
> > +   enum pipe pipe;
> > +   int valid_tests = 0;
> > +   igt_require(d->num_scalers);
> > +
> > +   for_each_pipe_with_valid_output(display, pipe, output) {
> > +
> > +           if (intel_gen(d->devid) == 9 && pipe == PIPE_C)
> > +                   continue;
> > +           drmModeModeInfo *mode;
> > +           igt_output_set_pipe(output, pipe);
> > +           mode = igt_output_get_mode(output);
> > +           /* allocate fb2 and fb3 */
> > +           d->fb_id2 = igt_create_pattern_fb(d->drm_fd, mode-
> >hdisplay, mode->vdisplay,
> > +                                           DRM_FORMAT_XRGB8888,
> > +
>       LOCAL_I915_FORMAT_MOD_X_TILED, /* tiled */
> > +                                           &d->fb2);
> > +           igt_assert(d->fb_id2);
> > +
> > +           d->fb_id3 = igt_create_pattern_fb(d->drm_fd,
> > +                                             mode->hdisplay, mode-
> >vdisplay,
> > +                                             DRM_FORMAT_XRGB8888,
> > +
> LOCAL_I915_FORMAT_MOD_Y_TILED, /* tiled */
> > +                                             &d->fb3);
> > +           igt_assert(d->fb_id3);
> > +
> > +           /* Set up display with plane 1 */
> > +           d->plane1 = igt_output_get_plane(output, 0);
> > +           igt_plane_set_fb(d->plane1, &d->fb2);
> > +           d->plane2 = igt_output_get_plane(output, 1);
> > +           igt_plane_set_fb(d->plane2, &d->fb3);
> > +
> > +           /* plane upscaling  on 2 planes*/
> > +           igt_fb_set_position(&d->fb2, d->plane1, 0, 0);
> > +           igt_fb_set_size(&d->fb2, d->plane1, 300, 300);
> > +           igt_plane_set_position(d->plane1, 100, 400);
> > +           /* scaled window size is outside the modeset area.*/
> > +           igt_plane_set_size(d->plane1, mode->hdisplay + 200, mode-
> >vdisplay
> > ++ 200);
> > +
> > +           igt_fb_set_position(&d->fb3, d->plane2, 0, 0);
> > +           igt_fb_set_size(&d->fb3, d->plane2, 400, 400);
> > +           igt_plane_set_position(d->plane2, 100, 100);
> > +           /* scaled window size is outside the modeset area.*/
> > +           igt_plane_set_size(d->plane2, mode->hdisplay + 100, mode-
> >vdisplay + 100);
> > +           igt_display_commit2(display, COMMIT_ATOMIC);
> > +           /* disbale above 2planes*/
> > +           igt_plane_set_fb(d->plane1, NULL);
> > +           igt_plane_set_position(d->plane1, 0, 0);
> > +           igt_plane_set_fb(d->plane2, NULL);
> > +           igt_plane_set_position(d->plane2, 0, 0);
> > +           if (d->fb_id2) {
> > +                   igt_remove_fb(d->drm_fd, &d->fb2);
> > +                   d->fb_id2 = 0;
> > +           }
> > +           if (d->fb_id3) {
> > +                   igt_remove_fb(d->drm_fd, &d->fb3);
> > +                   d->fb_id3 = 0;
> > +           }
> > +   }
> > +}
> > +
> > +void test_scaler_with_multi_pipe_plane(data_t *d) {
> > +   igt_display_t *display = &d->display;
> > +   igt_output_t *output1, *output2;
> > +   /*check whether 2 connectors are active .*/
> > +   igt_skip_on(display->n_outputs < 2);
> > +   output1 = get_next_valid_output(display, 1);
> > +   output2 = get_next_valid_output(display, 2);
> > +   igt_output_set_pipe(output1, 0);
> > +   igt_output_set_pipe(output2, 1);
> > +   d->plane1 = igt_output_get_plane_type(output1,
> DRM_PLANE_TYPE_PRIMARY);
> > +   d->plane2 = igt_output_get_plane_type(output1,
> DRM_PLANE_TYPE_OVERLAY);
> > +   d->plane3 = igt_output_get_plane_type(output2,
> DRM_PLANE_TYPE_PRIMARY);
> > +   d->plane4 = igt_output_get_plane_type(output2,
> DRM_PLANE_TYPE_OVERLAY);
> > +   drmModeModeInfo *mode1, *mode2;
> > +   mode1 = igt_output_get_mode(output1);
> > +   mode2 = igt_output_get_mode(output2);
> > +   /* allocate fb with mode size */
> > +   d->fb_id1 = igt_create_pattern_fb(d->drm_fd, mode1->hdisplay,
> mode1->vdisplay,
> > +                                   DRM_FORMAT_XRGB8888,
> LOCAL_I915_FORMAT_MOD_X_TILED, /* tiled */
> > +                                   &d->fb1);
> > +   igt_assert(d->fb_id1);
> > +
> > +   d->fb_id2 = igt_create_pattern_fb(d->drm_fd,
> > +                                     mode1->hdisplay, mode1->vdisplay,
> > +                                     DRM_FORMAT_XRGB8888,
> > +
> LOCAL_I915_FORMAT_MOD_Y_TILED, /* tiled */
> > +                                     &d->fb2);
> > +   igt_assert(d->fb_id2);
> > +   d->fb_id3 = igt_create_pattern_fb(d->drm_fd, mode2->hdisplay,
> mode2->vdisplay,
> > +                                   DRM_FORMAT_XRGB8888,
> > +
>       LOCAL_I915_FORMAT_MOD_Y_TILED, /* tiled */
> > +                                   &d->fb3);
> > +   igt_assert(d->fb_id3);
> > +
> > +   d->fb_id4 = igt_create_pattern_fb(d->drm_fd,
> > +                                     mode2->hdisplay, mode2->vdisplay,
> > +                                     DRM_FORMAT_XRGB8888,
> > +
> LOCAL_DRM_FORMAT_MOD_NONE, /* tiled */
> > +                                     &d->fb4);
> > +   igt_assert(d->fb_id4);
> > +   /* Set up display with plane 1 */
> > +   igt_plane_set_fb(d->plane1, &d->fb1);
> > +   igt_plane_set_fb(d->plane2, &d->fb2);
> > +   igt_plane_set_fb(d->plane3, &d->fb3);
> > +   igt_plane_set_fb(d->plane4, &d->fb4);
> > +
> > +   /* plane upscaling  on 2 planes*/
> > +   igt_fb_set_position(&d->fb1, d->plane1, 0, 0);
> > +   igt_fb_set_size(&d->fb1, d->plane1, 300, 300);
> > +   igt_plane_set_position(d->plane1, 100, 100);
> > +   igt_plane_set_size(d->plane1, mode1->hdisplay - 100, mode1-
> >vdisplay
> > +- 50);
> > +
> > +   igt_fb_set_position(&d->fb2, d->plane2, 100, 100);
> > +   igt_fb_set_size(&d->fb2, d->plane2, d->fb2.width - 100, d-
> >fb2.height - 100);
> > +   igt_plane_set_position(d->plane2, 100, 100);
> > +   /* downscale by 50 pixels*/
> > +   igt_plane_set_size(d->plane2, d->fb2.width - 150, d->fb2.height -
> > +150);
> > +
> > +   igt_fb_set_position(&d->fb3, d->plane3, 0, 0);
> > +   igt_fb_set_size(&d->fb3, d->plane3, 400, 400);
> > +   igt_plane_set_position(d->plane3, 100, 100);
> > +   igt_plane_set_size(d->plane3, mode2->hdisplay - 50, mode2-
> >vdisplay
> > +- 50);
> > +
> > +   igt_fb_set_position(&d->fb4, d->plane4, 100, 100);
> > +   igt_fb_set_size(&d->fb2, d->plane4, d->fb4.width - 100, d-
> >fb4.height - 100);
> > +   igt_plane_set_position(d->plane4, 100, 100);
> > +   /* downscale by 50 pixels*/
> > +   igt_plane_set_size(d->plane4, d->fb4.width - 150, d->fb4.height -
> > +150);
> > +
> > +   igt_display_commit2(display, COMMIT_ATOMIC);
> > +   /* disbale above 4 planes*/
> > +   igt_plane_set_fb(d->plane1, NULL);
> > +   igt_plane_set_position(d->plane1, 0, 0);
> > +   igt_plane_set_fb(d->plane2, NULL);
> > +   igt_plane_set_position(d->plane2, 0, 0);
> > +   igt_plane_set_fb(d->plane3, NULL);
> > +   igt_plane_set_position(d->plane3, 0, 0);
> > +   igt_plane_set_fb(d->plane4, NULL);
> > +   igt_plane_set_position(d->plane4, 0, 0);
> > +   if (d->fb_id1) {
> > +           igt_remove_fb(d->drm_fd, &d->fb1);
> > +           d->fb_id1 = 0;
> > +   }
> > +   if (d->fb_id2) {
> > +           igt_remove_fb(d->drm_fd, &d->fb2);
> > +           d->fb_id2 = 0;
> > +   }
> > +   if (d->fb_id3) {
> > +           igt_remove_fb(d->drm_fd, &d->fb3);
> > +           d->fb_id3 = 0;
> > +   }
> > +   if (d->fb_id4) {
> > +           igt_remove_fb(d->drm_fd, &d->fb4);
> > +           d->fb_id4 = 0;
> > +   }
> > +}
> > +igt_main
> >  {
> >     data_t data = {};
> >
> > @@ -308,11 +765,26 @@ igt_simple_main
> >     data.drm_fd = drm_open_driver(DRIVER_INTEL);
> >     igt_require_pipe_crc(data.drm_fd);
> >     igt_display_init(&data.display, data.drm_fd);
> > +   igt_require(data.display.is_atomic);
> >     data.devid = intel_get_drm_devid(data.drm_fd);
> >
> 
> 
> The CI results are cut off before the important parts that state what's wrong
> here. The test that fails is igt_command_line.sh. You can run the script
> directly yourself to see the output.
> 
> You're changing a test-without-subtests to one with subtests, and that
> means you need to do stuff like drm_open_driver() inside an igt_fixture.
> 
>

Thank you very much. I will include things you mentioned to see if it runs 
clearly.

Regards
Vidya
 
> --
> Petri Latvala
> 
> 
> 
> >     data.num_scalers = intel_gen(data.devid) >= 9 ? 2 : 0;
> >
> > -   test_plane_scaling(&data);
> > -
> > +   //test_plane_scaling(&data);
> > +   igt_subtest_f("scaler_with_pixel_format") {
> > +           test_scaler_with_pixel_format(&data);
> > +   }
> > +   igt_subtest_f("scaler_with_rotation") {
> > +           test_scaler_with_rotation(&data);
> > +   }
> > +   igt_subtest_f("scaler_with_multiple_planes") {
> > +           test_scaler_with_multiple_planes(&data);
> > +   }
> > +   igt_subtest_f("scaler_with_clipping_clamping") {
> > +           test_scaler_with_clipping_clamping_scenario(&data);
> > +   }
> > +   igt_subtest_f("scaler_with_multi_pipe_plane") {
> > +           test_scaler_with_multi_pipe_plane(&data);
> > +   }
> >     igt_display_fini(&data.display);
> >  }
> > --
> > 2.7.4
> >
> > _______________________________________________
> > Intel-gfx mailing list
> > Intel-gfx@lists.freedesktop.org
> > https://lists.freedesktop.org/mailman/listinfo/intel-gfx
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

Reply via email to