[PATCH i-g-t v1] tests/intel/kms_fbc_dirty_rect: cleanup the dirty rect tests
Reddy Guddati, Santhosh
santhosh.reddy.guddati at intel.com
Thu Mar 13 08:12:29 UTC 2025
Hi Vinod,
On 07-03-2025 21:18, Vinod Govindapillai wrote:
> These tests rely on FBC is enabled, some FIFO underruns can
> disable FBC and can trigger asserts. In case if such asserts
> are triggered, we end up not clearing the used fbs and crcs.
> Use common functions to prepare and clear igt test parameters
> as required for each tests
>
> Signed-off-by: Vinod Govindapillai <vinod.govindapillai at intel.com>
LGTM
Reviewed-by: Santhosh Reddy Guddati <santhosh.reddy.guddati at intel.com>
> ---
> tests/intel/kms_fbc_dirty_rect.c | 231 ++++++++++++-------------------
> 1 file changed, 90 insertions(+), 141 deletions(-)
>
> diff --git a/tests/intel/kms_fbc_dirty_rect.c b/tests/intel/kms_fbc_dirty_rect.c
> index ea7a73124..4484355b2 100644
> --- a/tests/intel/kms_fbc_dirty_rect.c
> +++ b/tests/intel/kms_fbc_dirty_rect.c
> @@ -51,6 +51,10 @@
> #define SQUARE_OFFSET 100
> #define SQUARE_OFFSET_2 600
>
> +#define N_FBS 4
> +#define MAIN_FB_IDX 0
> +#define DIRTY_RECT_FBS_START_IDX 1
> +
> typedef struct {
> int drm_fd;
> int debugfs_fd;
> @@ -61,7 +65,7 @@ typedef struct {
> enum pipe pipe;
> u32 format;
>
> - igt_crc_t ref_crc;
> + struct igt_fb fb[N_FBS];
>
> enum {
> FEATURE_NONE = 0,
> @@ -73,17 +77,12 @@ typedef struct {
> } feature;
> } data_t;
>
> -static void set_damage_clip(struct drm_mode_rect *damage, int x1, int y1, int x2, int y2)
> +static void set_damage_clip_w(struct drm_mode_rect *damage, int x1, int y1, int width, int height)
> {
> damage->x1 = x1;
> damage->y1 = y1;
> - damage->x2 = x2;
> - damage->y2 = y2;
> -}
> -
> -static void set_damage_clip_w(struct drm_mode_rect *damage, int x1, int y1, int width, int height)
> -{
> - set_damage_clip(damage, x1, y1, x1 + width, y1 + height);
> + damage->x2 = x1 + width;
> + damage->y2 = y1 + height;
> }
>
> static void dirty_rect_draw_white_rects(data_t *data, struct igt_fb *fb,
> @@ -116,16 +115,11 @@ set_damage_area(igt_plane_t *plane, struct drm_mode_rect *rects,
>
> static void
> set_fb_and_collect_crc(data_t *data, igt_plane_t *plane, struct igt_fb *fb,
> - igt_pipe_crc_t *pipe_crc, igt_crc_t *crc)
> + igt_crc_t *crc)
> {
> igt_plane_set_fb(plane, fb);
> igt_display_commit2(&data->display, COMMIT_ATOMIC);
>
> - if (!data->pipe_crc) {
> - data->pipe_crc = igt_pipe_crc_new(data->drm_fd, data->pipe,
> - IGT_PIPE_CRC_SOURCE_AUTO);
> - }
> -
> igt_pipe_crc_start(data->pipe_crc);
> igt_pipe_crc_get_current(data->drm_fd, data->pipe_crc, crc);
> igt_pipe_crc_stop(data->pipe_crc);
> @@ -186,52 +180,45 @@ update_rect_with_dirtyfb(data_t *data, struct igt_fb *fb1, struct igt_fb *fb2,
>
> static void fbc_dirty_rectangle_dirtyfb(data_t *data)
> {
> - igt_pipe_crc_t *pipe_crc = data->pipe_crc;
> - igt_display_t *display = &data->display;
> - igt_output_t *output = data->output;
> igt_plane_t *primary;
> - drmModeModeInfo *mode;
> - struct igt_fb main_fb, fb2, fb3;
> struct drm_mode_rect full_rect, rect1, rect2;
> igt_crc_t main_crc, fb2_crc, fb3_crc, crc;
>
> - mode = igt_output_get_mode(output);
> - igt_output_set_pipe(output, data->pipe);
> - primary = igt_output_get_plane_type(output, DRM_PLANE_TYPE_PRIMARY);
> + primary = igt_output_get_plane_type(data->output, DRM_PLANE_TYPE_PRIMARY);
>
> - set_damage_clip_w(&full_rect, 0, 0, mode->hdisplay, mode->vdisplay);
> + set_damage_clip_w(&full_rect, 0, 0, data->mode->hdisplay, data->mode->vdisplay);
> set_damage_clip_w(&rect1, SQUARE_OFFSET, SQUARE_OFFSET, SQUARE_SIZE, SQUARE_SIZE);
> set_damage_clip_w(&rect2, SQUARE_OFFSET_2, SQUARE_OFFSET_2, SQUARE_SIZE, SQUARE_SIZE);
>
> igt_create_color_fb(data->drm_fd, data->mode->hdisplay, data->mode->vdisplay,
> - data->format, DRM_FORMAT_MOD_LINEAR, 0.0, 0.0, 1.0, &main_fb);
> + data->format, DRM_FORMAT_MOD_LINEAR, 0.0, 0.0, 1.0, &data->fb[MAIN_FB_IDX]);
>
> igt_create_color_fb(data->drm_fd, data->mode->hdisplay, data->mode->vdisplay,
> - data->format, DRM_FORMAT_MOD_LINEAR, 0.0, 0.0, 1.0, &fb2);
> - dirty_rect_draw_white_rects(data, &fb2, 1, &rect1);
> + data->format, DRM_FORMAT_MOD_LINEAR, 0.0, 0.0, 1.0, &data->fb[1]);
> + dirty_rect_draw_white_rects(data, &data->fb[1], 1, &rect1);
>
> igt_create_color_fb(data->drm_fd, data->mode->hdisplay, data->mode->vdisplay,
> - data->format, DRM_FORMAT_MOD_LINEAR, 0.0, 0.0, 1.0, &fb3);
> - dirty_rect_draw_white_rects(data, &fb3, 1, &rect2);
> + data->format, DRM_FORMAT_MOD_LINEAR, 0.0, 0.0, 1.0, &data->fb[2]);
> + dirty_rect_draw_white_rects(data, &data->fb[2], 1, &rect2);
>
> /* 1st screen - Empty blue screen */
> set_damage_area(primary, &full_rect, sizeof(full_rect));
> - set_fb_and_collect_crc(data, primary, &main_fb, pipe_crc, &main_crc);
> + set_fb_and_collect_crc(data, primary, &data->fb[MAIN_FB_IDX], &main_crc);
>
> /* 2nd screen - 1st white rect at 100, 100 - using damage area */
> set_damage_area(primary, &rect1, sizeof(rect1));
> - set_fb_and_collect_crc(data, primary, &fb2, pipe_crc, &fb2_crc);
> + set_fb_and_collect_crc(data, primary, &data->fb[1], &fb2_crc);
>
> /* 3rd screen - 2nd white rect at 600, 600 - using damage area.
> * Now two white rects on screen
> */
> set_damage_area(primary, &rect2, sizeof(rect2));
> - set_fb_and_collect_crc(data, primary, &fb3, pipe_crc, &fb3_crc);
> + set_fb_and_collect_crc(data, primary, &data->fb[2], &fb3_crc);
>
> /* 4th screen - clear the 2nd white rect at 600,600 with dirtyfb.
> * Copy rect2 area from main_fb to fb3.
> */
> - update_rect_with_dirtyfb(data, &main_fb, &fb3, &rect2);
> + update_rect_with_dirtyfb(data, &data->fb[MAIN_FB_IDX], &data->fb[2], &rect2);
> /* Now the screen must match 1st screen - with whole blue */
> igt_pipe_crc_collect_crc(data->pipe_crc, &crc);
> igt_assert_crc_equal(&crc, &main_crc);
> @@ -239,21 +226,10 @@ static void fbc_dirty_rectangle_dirtyfb(data_t *data)
> /* 5th screen - Copy the first rect at 100,100 with dirtyfb.
> * Copy rect1 area from fb2 to fb3.
> */
> - update_rect_with_dirtyfb(data, &fb2, &fb3, &rect1);
> + update_rect_with_dirtyfb(data, &data->fb[1], &data->fb[2], &rect1);
> /* Now the screen must match 2nd screen - with one rect at 100,100 */
> igt_pipe_crc_collect_crc(data->pipe_crc, &crc);
> igt_assert_crc_equal(&crc, &fb2_crc);
> -
> - igt_plane_set_fb(primary, NULL);
> - igt_remove_fb(data->drm_fd, &main_fb);
> - igt_remove_fb(data->drm_fd, &fb2);
> - igt_remove_fb(data->drm_fd, &fb3);
> - igt_display_commit2(display, COMMIT_ATOMIC);
> -
> - if (data->pipe_crc) {
> - igt_pipe_crc_free(data->pipe_crc);
> - data->pipe_crc = NULL;
> - }
> }
>
> /**
> @@ -270,56 +246,43 @@ static void fbc_dirty_rectangle_dirtyfb(data_t *data)
> */
> static void fbc_dirty_rectangle_outside_visible_region(data_t *data)
> {
> - igt_pipe_crc_t *pipe_crc = data->pipe_crc;
> - igt_display_t *display = &data->display;
> - igt_output_t *output = data->output;
> igt_plane_t *primary;
> - struct igt_fb main_fb, rect_fb[3];
> - struct drm_mode_rect rect[3], full_rect;
> - igt_crc_t main_crc, rect_crc[3];
> + struct drm_mode_rect rect[N_FBS];
> + igt_crc_t rect_crc[N_FBS];
>
> - igt_output_set_pipe(output, data->pipe);
> - primary = igt_output_get_plane_type(output, DRM_PLANE_TYPE_PRIMARY);
> + primary = igt_output_get_plane_type(data->output, DRM_PLANE_TYPE_PRIMARY);
> +
> + set_damage_clip_w(&rect[0], 0, 0, data->mode->hdisplay + 200, data->mode->vdisplay + 200);
>
> - set_damage_clip(&full_rect, 0, 0, data->mode->hdisplay + 200, data->mode->vdisplay + 200);
> /* Rect Horizontally outside visible region */
> - set_damage_clip_w(&rect[0], data->mode->hdisplay + 10, 100, SQUARE_SIZE, SQUARE_SIZE);
> + set_damage_clip_w(&rect[1], data->mode->hdisplay + 10, 100, SQUARE_SIZE, SQUARE_SIZE);
> +
> /* Rect vertically outside visible region */
> - set_damage_clip_w(&rect[1], 10, data->mode->vdisplay + 50, SQUARE_SIZE, SQUARE_SIZE);
> + set_damage_clip_w(&rect[2], 10, data->mode->vdisplay + 50, SQUARE_SIZE, SQUARE_SIZE);
> +
> /* Rect Horizontally and vertically outside visible region */
> - set_damage_clip_w(&rect[2], data->mode->hdisplay + 10, data->mode->vdisplay + 50,
> + set_damage_clip_w(&rect[3], data->mode->hdisplay + 10, data->mode->vdisplay + 50,
> SQUARE_SIZE, SQUARE_SIZE);
>
> igt_create_color_fb(data->drm_fd, data->mode->hdisplay + 200,
> data->mode->vdisplay + 200, data->format,
> - DRM_FORMAT_MOD_LINEAR, 0.0, 1.0, 0.0, &main_fb);
> + DRM_FORMAT_MOD_LINEAR, 0.0, 1.0, 0.0, &data->fb[MAIN_FB_IDX]);
>
> - for (int i = 0; i < 3; i++) {
> + for (int i = DIRTY_RECT_FBS_START_IDX; i < N_FBS; i++) {
> igt_create_color_fb(data->drm_fd, data->mode->hdisplay + 200,
> data->mode->vdisplay + 200, data->format,
> - DRM_FORMAT_MOD_LINEAR, 0.0, 1.0, 0.0, &rect_fb[i]);
> - dirty_rect_draw_white_rects(data, &rect_fb[i], 1, &rect[i]);
> + DRM_FORMAT_MOD_LINEAR, 0.0, 1.0, 0.0, &data->fb[i]);
> + dirty_rect_draw_white_rects(data, &data->fb[i], 1, &rect[i]);
> }
>
> /* Main rect */
> - set_damage_area(primary, &full_rect, sizeof(full_rect));
> - set_fb_and_collect_crc(data, primary, &main_fb, pipe_crc, &main_crc);
> + set_damage_area(primary, &rect[MAIN_FB_IDX], sizeof(rect[MAIN_FB_IDX]));
> + set_fb_and_collect_crc(data, primary, &data->fb[MAIN_FB_IDX], &rect_crc[MAIN_FB_IDX]);
>
> - for (int i = 0; i < 3; i++) {
> + for (int i = DIRTY_RECT_FBS_START_IDX; i < N_FBS; i++) {
> set_damage_area(primary, &rect[i], sizeof(rect[i]));
> - set_fb_and_collect_crc(data, primary, &rect_fb[i], pipe_crc, &rect_crc[i]);
> - igt_assert_crc_equal(&rect_crc[i], &main_crc);
> - }
> -
> - igt_plane_set_fb(primary, NULL);
> - igt_remove_fb(data->drm_fd, &main_fb);
> - for (int i = 0; i < 3; i++)
> - igt_remove_fb(data->drm_fd, &rect_fb[i]);
> - igt_display_commit2(display, COMMIT_ATOMIC);
> -
> - if (data->pipe_crc) {
> - igt_pipe_crc_free(data->pipe_crc);
> - data->pipe_crc = NULL;
> + set_fb_and_collect_crc(data, primary, &data->fb[i], &rect_crc[i]);
> + igt_assert_crc_equal(&rect_crc[i], &rect_crc[MAIN_FB_IDX]);
> }
> }
>
> @@ -359,115 +322,119 @@ static void fbc_dirty_rectangle_outside_visible_region(data_t *data)
> */
> static void fbc_dirty_rectangle_basic(data_t *data)
> {
> - igt_display_t *display = &data->display;
> - igt_output_t *output = data->output;
> igt_plane_t *primary;
> - struct igt_fb main_fb;
> - struct igt_fb rect_1_fb;
> - struct igt_fb rect_2_fb;
> - struct igt_fb rect_combined_fb;
> struct drm_mode_rect rect1;
> struct drm_mode_rect rect2;
> struct drm_mode_rect rect_combined[2];
> struct drm_mode_rect full_rect;
> igt_crc_t main_fb_crc, rect_1_fb_crc, rect_2_fb_crc, rect_combined_fb_crc, crc;
>
> - igt_output_set_pipe(output, data->pipe);
> - primary = igt_output_get_plane_type(output, DRM_PLANE_TYPE_PRIMARY);
> + primary = igt_output_get_plane_type(data->output, DRM_PLANE_TYPE_PRIMARY);
>
> - set_damage_clip(&full_rect, 0, 0, data->mode->hdisplay-1, data->mode->vdisplay-1);
> - set_damage_clip(&rect1, SQUARE_OFFSET, SQUARE_OFFSET, SQUARE_OFFSET + SQUARE_SIZE,
> - SQUARE_OFFSET + SQUARE_SIZE);
> - set_damage_clip(&rect2, SQUARE_OFFSET_2, SQUARE_OFFSET_2, SQUARE_OFFSET_2 + SQUARE_SIZE,
> - SQUARE_OFFSET_2 + SQUARE_SIZE);
> - set_damage_clip(&rect_combined[0], rect1.x1, rect1.y1, rect1.x2, rect1.y2);
> - set_damage_clip(&rect_combined[1], rect2.x1, rect2.y1, rect2.x2, rect2.y2);
> + set_damage_clip_w(&full_rect, 0, 0, data->mode->hdisplay, data->mode->vdisplay);
> + set_damage_clip_w(&rect1, SQUARE_OFFSET, SQUARE_OFFSET, SQUARE_SIZE, SQUARE_SIZE);
> + set_damage_clip_w(&rect2, SQUARE_OFFSET_2, SQUARE_OFFSET_2, SQUARE_SIZE, SQUARE_SIZE);
> + rect_combined[0] = rect1;
> + rect_combined[1] = rect2;
>
> igt_create_color_fb(data->drm_fd, data->mode->hdisplay, data->mode->vdisplay, data->format,
> - DRM_FORMAT_MOD_LINEAR, 0.0, 0.0, 1.0, &main_fb);
> + DRM_FORMAT_MOD_LINEAR, 0.0, 0.0, 1.0, &data->fb[MAIN_FB_IDX]);
>
> igt_create_color_fb(data->drm_fd, data->mode->hdisplay, data->mode->vdisplay, data->format,
> - DRM_FORMAT_MOD_LINEAR, 0.0, 0.0, 1.0, &rect_1_fb);
> - dirty_rect_draw_white_rects(data, &rect_1_fb, 1, &rect1);
> + DRM_FORMAT_MOD_LINEAR, 0.0, 0.0, 1.0, &data->fb[1]);
> + dirty_rect_draw_white_rects(data, &data->fb[1], 1, &rect1);
>
> igt_create_color_fb(data->drm_fd, data->mode->hdisplay, data->mode->vdisplay, data->format,
> - DRM_FORMAT_MOD_LINEAR, 0.0, 0.0, 1.0, &rect_2_fb);
> - dirty_rect_draw_white_rects(data, &rect_2_fb, 1, &rect2);
> + DRM_FORMAT_MOD_LINEAR, 0.0, 0.0, 1.0, &data->fb[2]);
> + dirty_rect_draw_white_rects(data, &data->fb[2], 1, &rect2);
>
> igt_create_color_fb(data->drm_fd, data->mode->hdisplay, data->mode->vdisplay, data->format,
> - DRM_FORMAT_MOD_LINEAR, 0.0, 0.0, 1.0, &rect_combined_fb);
> - dirty_rect_draw_white_rects(data, &rect_combined_fb, ARRAY_SIZE(rect_combined),
> + DRM_FORMAT_MOD_LINEAR, 0.0, 0.0, 1.0, &data->fb[3]);
> + dirty_rect_draw_white_rects(data, &data->fb[3], ARRAY_SIZE(rect_combined),
> rect_combined);
>
> /* main_fb blank blue screen - get and store crc */
> - set_fb_and_collect_crc(data, primary, &main_fb, data->pipe_crc, &main_fb_crc);
> + set_fb_and_collect_crc(data, primary, &data->fb[MAIN_FB_IDX], &main_fb_crc);
>
> /* Whole blue screen with one white rect and collect crc */
> set_damage_area(primary, &full_rect, sizeof(full_rect));
> - set_fb_and_collect_crc(data, primary, &rect_1_fb, data->pipe_crc, &rect_1_fb_crc);
> + set_fb_and_collect_crc(data, primary, &data->fb[1], &rect_1_fb_crc);
>
> /* Second white rect and collect crc */
> set_damage_area(primary, &full_rect, sizeof(full_rect));
> - set_fb_and_collect_crc(data, primary, &rect_2_fb, data->pipe_crc, &rect_2_fb_crc);
> + set_fb_and_collect_crc(data, primary, &data->fb[2], &rect_2_fb_crc);
>
> /* Both rects and collect crc */
> set_damage_area(primary, &full_rect, sizeof(full_rect));
> - set_fb_and_collect_crc(data, primary, &rect_combined_fb, data->pipe_crc,
> - &rect_combined_fb_crc);
> + set_fb_and_collect_crc(data, primary, &data->fb[3], &rect_combined_fb_crc);
>
> /* Put full blank screen back */
> set_damage_area(primary, &full_rect, sizeof(full_rect));
> - set_fb_and_collect_crc(data, primary, &main_fb, data->pipe_crc, &crc);
> + set_fb_and_collect_crc(data, primary, &data->fb[MAIN_FB_IDX], &crc);
> igt_assert_crc_equal(&crc, &main_fb_crc);
>
> /* Set combined rect - draw two white rects using damage area */
> set_damage_area(primary, rect_combined, sizeof(rect_combined));
> - set_fb_and_collect_crc(data, primary, &rect_combined_fb, data->pipe_crc, &crc);
> + set_fb_and_collect_crc(data, primary, &data->fb[3], &crc);
> igt_assert_crc_equal(&crc, &rect_combined_fb_crc);
>
> /* Clear first rect using damage area. Only the second rect should be visible here! */
> set_damage_area(primary, &rect1, sizeof(rect1));
> - set_fb_and_collect_crc(data, primary, &main_fb, data->pipe_crc, &crc);
> + set_fb_and_collect_crc(data, primary, &data->fb[MAIN_FB_IDX], &crc);
> igt_assert_crc_equal(&crc, &rect_2_fb_crc);
>
> /* Clear the second rect as well. Now back to original blank screen */
> set_damage_area(primary, &rect2, sizeof(rect2));
> - set_fb_and_collect_crc(data, primary, &main_fb, data->pipe_crc, &crc);
> + set_fb_and_collect_crc(data, primary, &data->fb[MAIN_FB_IDX], &crc);
> igt_assert_crc_equal(&crc, &main_fb_crc);
> +}
>
> - igt_plane_set_fb(primary, NULL);
> - igt_remove_fb(data->drm_fd, &main_fb);
> - igt_remove_fb(data->drm_fd, &rect_1_fb);
> - igt_remove_fb(data->drm_fd, &rect_2_fb);
> - igt_remove_fb(data->drm_fd, &rect_combined_fb);
> - igt_display_commit2(display, COMMIT_ATOMIC);
> +static void cleanup(data_t *data)
I think the cleanup is not called when igt_assert happens in the
function, but the overall changes like creating common functions to
preare and cleanup looks good.
> +{
> + igt_remove_fb(data->drm_fd, &data->fb[0]);
> + igt_remove_fb(data->drm_fd, &data->fb[1]);
> + igt_remove_fb(data->drm_fd, &data->fb[2]);
> + igt_remove_fb(data->drm_fd, &data->fb[3]);
>
> - if (data->pipe_crc) {
> - igt_pipe_crc_free(data->pipe_crc);
> - data->pipe_crc = NULL;
> - }
> + igt_pipe_crc_free(data->pipe_crc);
> +
> + igt_output_set_pipe(data->output, PIPE_NONE);
> +
> + igt_display_commit2(&data->display, COMMIT_ATOMIC);
> }
>
> -static void prepare_test(data_t *data, igt_output_t *output)
> +static bool prepare_test(data_t *data)
> {
> + igt_display_reset(&data->display);
> +
> + data->mode = igt_output_get_mode(data->output);
> + igt_output_set_pipe(data->output, data->pipe);
> + data->pipe_crc = igt_pipe_crc_new(data->drm_fd, data->pipe,
> + IGT_PIPE_CRC_SOURCE_AUTO);
> +
> igt_require_f(intel_fbc_supported_on_chipset(data->drm_fd, data->pipe),
> "FBC not supported by the chipset on pipe\n");
>
> if (psr_sink_support(data->drm_fd, data->debugfs_fd, PSR_MODE_1, NULL) ||
> - psr_sink_support(data->drm_fd, data->debugfs_fd, PSR_MODE_2, NULL) ||
> - psr_sink_support(data->drm_fd, data->debugfs_fd, PR_MODE, NULL)) {
> + psr_sink_support(data->drm_fd, data->debugfs_fd, PSR_MODE_2, NULL) ||
> + psr_sink_support(data->drm_fd, data->debugfs_fd, PR_MODE, NULL)) {
> igt_info("PSR is supported by the sink. Disabling PSR to test Dirty FBC functionality.\n");
> - psr_disable(data->drm_fd, data->debugfs_fd, output);
> + psr_disable(data->drm_fd, data->debugfs_fd, data->output);
> }
>
> if (data->feature & FEATURE_FBC)
> intel_fbc_enable(data->drm_fd);
> +
> + return intel_pipe_output_combo_valid(&data->display);
> }
>
> static void fbc_dirty_rectangle_test(data_t *data, void (*test_func)(data_t *))
> {
> - prepare_test(data, data->output);
> + if (!prepare_test(data))
> + return;
> +
> test_func(data);
> + cleanup(data);
> }
>
> igt_main
> @@ -491,13 +458,7 @@ igt_main
>
> for_each_pipe(&data.display, data.pipe) {
> for_each_valid_output_on_pipe(&data.display, data.pipe, data.output) {
> - data.mode = igt_output_get_mode(data.output);
> data.format = DRM_FORMAT_XRGB8888;
> - igt_display_reset(&data.display);
> - igt_output_set_pipe(data.output, data.pipe);
> -
> - if (!intel_pipe_output_combo_valid(&data.display))
> - continue;
>
> igt_dynamic_f("pipe-%s-%s",
> kmstest_pipe_name(data.pipe),
> @@ -514,13 +475,7 @@ igt_main
>
> for_each_pipe(&data.display, data.pipe) {
> for_each_valid_output_on_pipe(&data.display, data.pipe, data.output) {
> - data.mode = igt_output_get_mode(data.output);
> data.format = DRM_FORMAT_XRGB8888;
> - igt_display_reset(&data.display);
> - igt_output_set_pipe(data.output, data.pipe);
> -
> - if (!intel_pipe_output_combo_valid(&data.display))
> - continue;
>
> igt_dynamic_f("pipe-%s-%s",
> kmstest_pipe_name(data.pipe),
> @@ -540,12 +495,6 @@ igt_main
>
> for_each_pipe(&data.display, data.pipe) {
> for_each_valid_output_on_pipe(&data.display, data.pipe, data.output) {
> - data.mode = igt_output_get_mode(data.output);
> - igt_display_reset(&data.display);
> - igt_output_set_pipe(data.output, data.pipe);
> -
> - if (!intel_pipe_output_combo_valid(&data.display))
> - continue;
>
> for (int i = 0; i < num_formats; i++) {
> igt_dynamic_f("pipe-%s-%s-format-%s",
More information about the igt-dev
mailing list