Message ID | 1489778126-11988-7-git-send-email-praveen.paneri@intel.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Em Sáb, 2017-03-18 às 00:45 +0530, Praveen Paneri escreveu: > Allow tests to create Y-tiled bufferes using a separate > argument to the test without increasing the number of > subtests. > > Signed-off-by: Praveen Paneri <praveen.paneri@intel.com> > --- > tests/kms_frontbuffer_tracking.c | 46 +++++++++++++++++++++++------- > ---------- > 1 file changed, 27 insertions(+), 19 deletions(-) > > diff --git a/tests/kms_frontbuffer_tracking.c > b/tests/kms_frontbuffer_tracking.c > index 03c7710..0597f10 100644 > --- a/tests/kms_frontbuffer_tracking.c > +++ b/tests/kms_frontbuffer_tracking.c > @@ -250,6 +250,7 @@ struct { > int only_pipes; > int shared_fb_x_offset; > int shared_fb_y_offset; > + uint64_t tiling; > } opt = { > .check_status = true, > .check_crc = true, > @@ -262,6 +263,7 @@ struct { > .only_pipes = PIPE_COUNT, > .shared_fb_x_offset = 500, > .shared_fb_y_offset = 500, > + .tiling = LOCAL_I915_FORMAT_MOD_X_TILED, > }; > > struct modeset_params { > @@ -576,7 +578,7 @@ static void create_fb(enum pixel_format pformat, > int width, int height, > if (plane == PLANE_CUR) > tiling_for_size = LOCAL_DRM_FORMAT_MOD_NONE; > else > - tiling_for_size = LOCAL_I915_FORMAT_MOD_X_TILED; > + tiling_for_size = opt.tiling; > > igt_calc_fb_size(drm.fd, width, height, bpp, > tiling_for_size, &size, > &stride); > @@ -708,7 +710,7 @@ static void create_shared_fb(enum pixel_format > format) > > big_h = prim_h + scnd_h + offs_h + opt.shared_fb_y_offset; > > - create_fb(format, big_w, big_h, > LOCAL_I915_FORMAT_MOD_X_TILED, > + create_fb(format, big_w, big_h, opt.tiling, > PLANE_PRI, &s->big); > } > > @@ -742,16 +744,16 @@ static void create_fbs(enum pixel_format > format) > > create_fb(format, prim_mode_params.mode->hdisplay, > prim_mode_params.mode->vdisplay, > - LOCAL_I915_FORMAT_MOD_X_TILED, PLANE_PRI, &s- > >prim_pri); > + opt.tiling, PLANE_PRI, &s->prim_pri); > create_fb(format, prim_mode_params.cursor.w, > prim_mode_params.cursor.h, > LOCAL_DRM_FORMAT_MOD_NONE, > PLANE_CUR, &s->prim_cur); > create_fb(format, prim_mode_params.sprite.w, > - prim_mode_params.sprite.h, > LOCAL_I915_FORMAT_MOD_X_TILED, > + prim_mode_params.sprite.h, opt.tiling, > PLANE_SPR, &s->prim_spr); > > create_fb(format, offscreen_fb.w, offscreen_fb.h, > - LOCAL_I915_FORMAT_MOD_X_TILED, PLANE_PRI, &s- > >offscreen); > + opt.tiling, PLANE_PRI, &s->offscreen); > > create_shared_fb(format); > > @@ -760,11 +762,11 @@ static void create_fbs(enum pixel_format > format) > > create_fb(format, scnd_mode_params.mode->hdisplay, > scnd_mode_params.mode->vdisplay, > - LOCAL_I915_FORMAT_MOD_X_TILED, PLANE_PRI, &s- > >scnd_pri); > + opt.tiling, PLANE_PRI, &s->scnd_pri); > create_fb(format, scnd_mode_params.cursor.w, > scnd_mode_params.cursor.h, > LOCAL_DRM_FORMAT_MOD_NONE, PLANE_CUR, &s- > >scnd_cur); > create_fb(format, scnd_mode_params.sprite.w, > scnd_mode_params.sprite.h, > - LOCAL_I915_FORMAT_MOD_X_TILED, PLANE_SPR, &s- > >scnd_spr); > + opt.tiling, PLANE_SPR, &s->scnd_spr); > } > > static bool set_mode_for_params(struct modeset_params *params) > @@ -1241,7 +1243,7 @@ static void init_blue_crc(enum pixel_format > format, bool mandatory_sink_crc) > > create_fb(format, prim_mode_params.mode->hdisplay, > prim_mode_params.mode->vdisplay, > - LOCAL_I915_FORMAT_MOD_X_TILED, PLANE_PRI, &blue); > + opt.tiling, PLANE_PRI, &blue); > > fill_fb(&blue, COLOR_PRIM_BG); > > @@ -1276,7 +1278,7 @@ static void init_crcs(enum pixel_format format, > for (r = 0; r < pattern->n_rects; r++) > create_fb(format, prim_mode_params.mode->hdisplay, > prim_mode_params.mode->vdisplay, > - LOCAL_I915_FORMAT_MOD_X_TILED, PLANE_PRI, > &tmp_fbs[r]); > + opt.tiling, PLANE_PRI, &tmp_fbs[r]); > > for (r = 0; r < pattern->n_rects; r++) > fill_fb(&tmp_fbs[r], COLOR_PRIM_BG); > @@ -2374,7 +2376,7 @@ static void flip_subtest(const struct test_mode > *t) > prepare_subtest(t, pattern); > > create_fb(t->format, params->fb.fb->width, params->fb.fb- > >height, > - LOCAL_I915_FORMAT_MOD_X_TILED, t->plane, &fb2); > + opt.tiling, t->plane, &fb2); > fill_fb(&fb2, bg_color); > orig_fb = params->fb.fb; > > @@ -2420,7 +2422,7 @@ static void fliptrack_subtest(const struct > test_mode *t, enum flip_type type) > prepare_subtest(t, pattern); > > create_fb(t->format, params->fb.fb->width, params->fb.fb- > >height, > - LOCAL_I915_FORMAT_MOD_X_TILED, t->plane, &fb2); > + opt.tiling, t->plane, &fb2); > fill_fb(&fb2, COLOR_PRIM_BG); > orig_fb = params->fb.fb; > > @@ -2631,7 +2633,7 @@ static void fullscreen_plane_subtest(const > struct test_mode *t) > prepare_subtest(t, pattern); > > rect = pattern->get_rect(¶ms->fb, 0); > - create_fb(t->format, rect.w, rect.h, > LOCAL_I915_FORMAT_MOD_X_TILED, > + create_fb(t->format, rect.w, rect.h, opt.tiling, > t->plane, &fullscreen_fb); > /* Call pick_color() again since PRI and SPR may not support > the same > * pixel formats. */ > @@ -2710,7 +2712,7 @@ static void scaledprimary_subtest(const struct > test_mode *t) > old_fb = params->fb.fb; > > create_fb(t->format, params->fb.fb->width, params->fb.fb- > >height, > - LOCAL_I915_FORMAT_MOD_X_TILED, > + opt.tiling, > t->plane, &new_fb); > fill_fb(&new_fb, COLOR_BLUE); > > @@ -2820,7 +2822,7 @@ static void modesetfrombusy_subtest(const > struct test_mode *t) > prepare_subtest(t, NULL); > > create_fb(t->format, params->fb.fb->width, params->fb.fb- > >height, > - LOCAL_I915_FORMAT_MOD_X_TILED, t->plane, &fb2); > + opt.tiling, t->plane, &fb2); > fill_fb(&fb2, COLOR_PRIM_BG); > > start_busy_thread(params->fb.fb); > @@ -2925,7 +2927,7 @@ static void farfromfence_subtest(const struct > test_mode *t) > target = pick_target(t, params); > > create_fb(t->format, params->mode->hdisplay, max_height, > - LOCAL_I915_FORMAT_MOD_X_TILED, t->plane, > &tall_fb); > + opt.tiling, t->plane, &tall_fb); > > fill_fb(&tall_fb, COLOR_PRIM_BG); > > @@ -3000,7 +3002,7 @@ static void badstride_subtest(const struct > test_mode *t) > old_fb = params->fb.fb; > > create_fb(t->format, params->fb.fb->width + 4096, params- > >fb.fb->height, > - LOCAL_I915_FORMAT_MOD_X_TILED, t->plane, > &wide_fb); > + opt.tiling, t->plane, &wide_fb); > igt_assert(wide_fb.stride > 16384); > > fill_fb(&wide_fb, COLOR_PRIM_BG); > @@ -3067,7 +3069,7 @@ static void stridechange_subtest(const struct > test_mode *t) > old_fb = params->fb.fb; > > create_fb(t->format, params->fb.fb->width + 512, params- > >fb.fb->height, > - LOCAL_I915_FORMAT_MOD_X_TILED, t->plane, &new_fb); > + opt.tiling, t->plane, &new_fb); > fill_fb(&new_fb, COLOR_PRIM_BG); > > igt_assert(old_fb->stride != new_fb.stride); > @@ -3186,7 +3188,7 @@ static void basic_subtest(const struct > test_mode *t) > prepare_subtest(t, pattern); > > create_fb(t->format, params->fb.fb->width, params->fb.fb- > >height, > - LOCAL_I915_FORMAT_MOD_X_TILED, t->plane, &fb2); > + opt.tiling, t->plane, &fb2); > fb1 = params->fb.fb; > > for (r = 0, method = 0; method < IGT_DRAW_METHOD_COUNT; > method++, r++) { > @@ -3255,6 +3257,10 @@ static int opt_handler(int option, int > option_index, void *data) > igt_assert_eq(opt.only_pipes, PIPE_COUNT); > opt.only_pipes = PIPE_DUAL; > break; > + case 'l': > + igt_assert_eq(strtol(optarg, NULL, 0), > I915_TILING_Y); ??? > + opt.tiling = > igt_fb_tiling_to_mod((uint64_t)strtol(optarg, NULL, 0)); This looks a little bit awkward. Please make the option just be a string: --tiling x, --tiling y, so later we can add --tiling yf and such. With this, we'll be able to avoid the igt_fb_tiling_to_mod call. > + break; > default: > igt_assert(false); > } > @@ -3274,7 +3280,8 @@ const char *help_str = > " --shared-fb-x offset Use 'offset' as the X offset for the > shared FB\n" > " --shared-fb-y offset Use 'offset' as the Y offset for the > shared FB\n" > " --1p-only Only run subtests that use 1 pipe\n" > -" --2p-only Only run subtests that use 2 > pipes\n"; > +" --2p-only Only run subtests that use 2 pipes\n" > +" --tiling give 2 for y-tiled, default is x- > tiled\n"; Keep the same coding style, please: no tabs are being used here. > > static const char *pipes_str(int pipes) > { > @@ -3413,6 +3420,7 @@ int main(int argc, char *argv[]) > { "shared-fb-y", 1, 0, 'y'}, > { "1p-only", 0, 0, '1'}, > { "2p-only", 0, 0, '2'}, > + { "tiling", 1, 0, 'l'}, > { 0, 0, 0, 0 } > }; >
diff --git a/tests/kms_frontbuffer_tracking.c b/tests/kms_frontbuffer_tracking.c index 03c7710..0597f10 100644 --- a/tests/kms_frontbuffer_tracking.c +++ b/tests/kms_frontbuffer_tracking.c @@ -250,6 +250,7 @@ struct { int only_pipes; int shared_fb_x_offset; int shared_fb_y_offset; + uint64_t tiling; } opt = { .check_status = true, .check_crc = true, @@ -262,6 +263,7 @@ struct { .only_pipes = PIPE_COUNT, .shared_fb_x_offset = 500, .shared_fb_y_offset = 500, + .tiling = LOCAL_I915_FORMAT_MOD_X_TILED, }; struct modeset_params { @@ -576,7 +578,7 @@ static void create_fb(enum pixel_format pformat, int width, int height, if (plane == PLANE_CUR) tiling_for_size = LOCAL_DRM_FORMAT_MOD_NONE; else - tiling_for_size = LOCAL_I915_FORMAT_MOD_X_TILED; + tiling_for_size = opt.tiling; igt_calc_fb_size(drm.fd, width, height, bpp, tiling_for_size, &size, &stride); @@ -708,7 +710,7 @@ static void create_shared_fb(enum pixel_format format) big_h = prim_h + scnd_h + offs_h + opt.shared_fb_y_offset; - create_fb(format, big_w, big_h, LOCAL_I915_FORMAT_MOD_X_TILED, + create_fb(format, big_w, big_h, opt.tiling, PLANE_PRI, &s->big); } @@ -742,16 +744,16 @@ static void create_fbs(enum pixel_format format) create_fb(format, prim_mode_params.mode->hdisplay, prim_mode_params.mode->vdisplay, - LOCAL_I915_FORMAT_MOD_X_TILED, PLANE_PRI, &s->prim_pri); + opt.tiling, PLANE_PRI, &s->prim_pri); create_fb(format, prim_mode_params.cursor.w, prim_mode_params.cursor.h, LOCAL_DRM_FORMAT_MOD_NONE, PLANE_CUR, &s->prim_cur); create_fb(format, prim_mode_params.sprite.w, - prim_mode_params.sprite.h, LOCAL_I915_FORMAT_MOD_X_TILED, + prim_mode_params.sprite.h, opt.tiling, PLANE_SPR, &s->prim_spr); create_fb(format, offscreen_fb.w, offscreen_fb.h, - LOCAL_I915_FORMAT_MOD_X_TILED, PLANE_PRI, &s->offscreen); + opt.tiling, PLANE_PRI, &s->offscreen); create_shared_fb(format); @@ -760,11 +762,11 @@ static void create_fbs(enum pixel_format format) create_fb(format, scnd_mode_params.mode->hdisplay, scnd_mode_params.mode->vdisplay, - LOCAL_I915_FORMAT_MOD_X_TILED, PLANE_PRI, &s->scnd_pri); + opt.tiling, PLANE_PRI, &s->scnd_pri); create_fb(format, scnd_mode_params.cursor.w, scnd_mode_params.cursor.h, LOCAL_DRM_FORMAT_MOD_NONE, PLANE_CUR, &s->scnd_cur); create_fb(format, scnd_mode_params.sprite.w, scnd_mode_params.sprite.h, - LOCAL_I915_FORMAT_MOD_X_TILED, PLANE_SPR, &s->scnd_spr); + opt.tiling, PLANE_SPR, &s->scnd_spr); } static bool set_mode_for_params(struct modeset_params *params) @@ -1241,7 +1243,7 @@ static void init_blue_crc(enum pixel_format format, bool mandatory_sink_crc) create_fb(format, prim_mode_params.mode->hdisplay, prim_mode_params.mode->vdisplay, - LOCAL_I915_FORMAT_MOD_X_TILED, PLANE_PRI, &blue); + opt.tiling, PLANE_PRI, &blue); fill_fb(&blue, COLOR_PRIM_BG); @@ -1276,7 +1278,7 @@ static void init_crcs(enum pixel_format format, for (r = 0; r < pattern->n_rects; r++) create_fb(format, prim_mode_params.mode->hdisplay, prim_mode_params.mode->vdisplay, - LOCAL_I915_FORMAT_MOD_X_TILED, PLANE_PRI, &tmp_fbs[r]); + opt.tiling, PLANE_PRI, &tmp_fbs[r]); for (r = 0; r < pattern->n_rects; r++) fill_fb(&tmp_fbs[r], COLOR_PRIM_BG); @@ -2374,7 +2376,7 @@ static void flip_subtest(const struct test_mode *t) prepare_subtest(t, pattern); create_fb(t->format, params->fb.fb->width, params->fb.fb->height, - LOCAL_I915_FORMAT_MOD_X_TILED, t->plane, &fb2); + opt.tiling, t->plane, &fb2); fill_fb(&fb2, bg_color); orig_fb = params->fb.fb; @@ -2420,7 +2422,7 @@ static void fliptrack_subtest(const struct test_mode *t, enum flip_type type) prepare_subtest(t, pattern); create_fb(t->format, params->fb.fb->width, params->fb.fb->height, - LOCAL_I915_FORMAT_MOD_X_TILED, t->plane, &fb2); + opt.tiling, t->plane, &fb2); fill_fb(&fb2, COLOR_PRIM_BG); orig_fb = params->fb.fb; @@ -2631,7 +2633,7 @@ static void fullscreen_plane_subtest(const struct test_mode *t) prepare_subtest(t, pattern); rect = pattern->get_rect(¶ms->fb, 0); - create_fb(t->format, rect.w, rect.h, LOCAL_I915_FORMAT_MOD_X_TILED, + create_fb(t->format, rect.w, rect.h, opt.tiling, t->plane, &fullscreen_fb); /* Call pick_color() again since PRI and SPR may not support the same * pixel formats. */ @@ -2710,7 +2712,7 @@ static void scaledprimary_subtest(const struct test_mode *t) old_fb = params->fb.fb; create_fb(t->format, params->fb.fb->width, params->fb.fb->height, - LOCAL_I915_FORMAT_MOD_X_TILED, + opt.tiling, t->plane, &new_fb); fill_fb(&new_fb, COLOR_BLUE); @@ -2820,7 +2822,7 @@ static void modesetfrombusy_subtest(const struct test_mode *t) prepare_subtest(t, NULL); create_fb(t->format, params->fb.fb->width, params->fb.fb->height, - LOCAL_I915_FORMAT_MOD_X_TILED, t->plane, &fb2); + opt.tiling, t->plane, &fb2); fill_fb(&fb2, COLOR_PRIM_BG); start_busy_thread(params->fb.fb); @@ -2925,7 +2927,7 @@ static void farfromfence_subtest(const struct test_mode *t) target = pick_target(t, params); create_fb(t->format, params->mode->hdisplay, max_height, - LOCAL_I915_FORMAT_MOD_X_TILED, t->plane, &tall_fb); + opt.tiling, t->plane, &tall_fb); fill_fb(&tall_fb, COLOR_PRIM_BG); @@ -3000,7 +3002,7 @@ static void badstride_subtest(const struct test_mode *t) old_fb = params->fb.fb; create_fb(t->format, params->fb.fb->width + 4096, params->fb.fb->height, - LOCAL_I915_FORMAT_MOD_X_TILED, t->plane, &wide_fb); + opt.tiling, t->plane, &wide_fb); igt_assert(wide_fb.stride > 16384); fill_fb(&wide_fb, COLOR_PRIM_BG); @@ -3067,7 +3069,7 @@ static void stridechange_subtest(const struct test_mode *t) old_fb = params->fb.fb; create_fb(t->format, params->fb.fb->width + 512, params->fb.fb->height, - LOCAL_I915_FORMAT_MOD_X_TILED, t->plane, &new_fb); + opt.tiling, t->plane, &new_fb); fill_fb(&new_fb, COLOR_PRIM_BG); igt_assert(old_fb->stride != new_fb.stride); @@ -3186,7 +3188,7 @@ static void basic_subtest(const struct test_mode *t) prepare_subtest(t, pattern); create_fb(t->format, params->fb.fb->width, params->fb.fb->height, - LOCAL_I915_FORMAT_MOD_X_TILED, t->plane, &fb2); + opt.tiling, t->plane, &fb2); fb1 = params->fb.fb; for (r = 0, method = 0; method < IGT_DRAW_METHOD_COUNT; method++, r++) { @@ -3255,6 +3257,10 @@ static int opt_handler(int option, int option_index, void *data) igt_assert_eq(opt.only_pipes, PIPE_COUNT); opt.only_pipes = PIPE_DUAL; break; + case 'l': + igt_assert_eq(strtol(optarg, NULL, 0), I915_TILING_Y); + opt.tiling = igt_fb_tiling_to_mod((uint64_t)strtol(optarg, NULL, 0)); + break; default: igt_assert(false); } @@ -3274,7 +3280,8 @@ const char *help_str = " --shared-fb-x offset Use 'offset' as the X offset for the shared FB\n" " --shared-fb-y offset Use 'offset' as the Y offset for the shared FB\n" " --1p-only Only run subtests that use 1 pipe\n" -" --2p-only Only run subtests that use 2 pipes\n"; +" --2p-only Only run subtests that use 2 pipes\n" +" --tiling give 2 for y-tiled, default is x-tiled\n"; static const char *pipes_str(int pipes) { @@ -3413,6 +3420,7 @@ int main(int argc, char *argv[]) { "shared-fb-y", 1, 0, 'y'}, { "1p-only", 0, 0, '1'}, { "2p-only", 0, 0, '2'}, + { "tiling", 1, 0, 'l'}, { 0, 0, 0, 0 } };
Allow tests to create Y-tiled bufferes using a separate argument to the test without increasing the number of subtests. Signed-off-by: Praveen Paneri <praveen.paneri@intel.com> --- tests/kms_frontbuffer_tracking.c | 46 +++++++++++++++++++++++----------------- 1 file changed, 27 insertions(+), 19 deletions(-)