diff mbox

[v2,6/7] igt/kms_frontbuffer_tracking: Add Y-tiling support

Message ID 1493390254-5232-7-git-send-email-praveen.paneri@intel.com (mailing list archive)
State New, archived
Headers show

Commit Message

Praveen Paneri April 28, 2017, 2:37 p.m. UTC
Allow tests to create Y-tiled bufferes using a separate
argument to the test without increasing the number of
subtests.

v2: Changed tiling option to string (Paulo)

Signed-off-by: Praveen Paneri <praveen.paneri@intel.com>
---
 tests/kms_frontbuffer_tracking.c | 48 ++++++++++++++++++++++++----------------
 1 file changed, 29 insertions(+), 19 deletions(-)

Comments

Zanoni, Paulo R July 12, 2017, 8:17 p.m. UTC | #1
Em Sex, 2017-04-28 às 20:07 +0530, Praveen Paneri escreveu:
> Allow tests to create Y-tiled bufferes using a separate
> argument to the test without increasing the number of
> subtests.
> 
> v2: Changed tiling option to string (Paulo)

I had some minor nitpicks for this patch: reshuffling parameters
between lines and the way we handle the new argument and its help
message. Instead of requesting those trivial changes and creating yet
another review round-trip I just went ahead and implemented them as v3.
I hope you're fine with this approach. The patch can be applied without
the rest of the patches in the series, so I applied it & pushed to IGT
with my nitpicks and R-B.


> 
> Signed-off-by: Praveen Paneri <praveen.paneri@intel.com>
> ---
>  tests/kms_frontbuffer_tracking.c | 48 ++++++++++++++++++++++++----
> ------------
>  1 file changed, 29 insertions(+), 19 deletions(-)
> 
> diff --git a/tests/kms_frontbuffer_tracking.c
> b/tests/kms_frontbuffer_tracking.c
> index 7cea4de..62ae33a 100644
> --- a/tests/kms_frontbuffer_tracking.c
> +++ b/tests/kms_frontbuffer_tracking.c
> @@ -252,6 +252,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,
> @@ -264,6 +265,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 {
> @@ -578,7 +580,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);
> @@ -710,7 +712,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);
>  }
>  
> @@ -744,16 +746,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);
>  
> @@ -762,11 +764,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)
> @@ -1252,7 +1254,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);
>  
> @@ -1287,7 +1289,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);
> @@ -2386,7 +2388,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;
>  
> @@ -2432,7 +2434,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;
>  
> @@ -2643,7 +2645,7 @@ static void fullscreen_plane_subtest(const
> struct test_mode *t)
>  	prepare_subtest(t, pattern);
>  
>  	rect = pattern->get_rect(&params->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. */
> @@ -2722,7 +2724,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);
>  
> @@ -2832,7 +2834,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);
> @@ -2937,7 +2939,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);
>  
> @@ -3012,7 +3014,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);
> @@ -3079,7 +3081,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);
> @@ -3198,7 +3200,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++) {
> @@ -3267,6 +3269,12 @@ 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':
> +		if (!strncmp(optarg, "y", 1))
> +			opt.tiling = LOCAL_I915_FORMAT_MOD_Y_TILED;
> +		else
> +			opt.tiling = LOCAL_I915_FORMAT_MOD_X_TILED;
> +		break;
>  	default:
>  		igt_assert(false);
>  	}
> @@ -3286,7 +3294,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                    Select tiling mode-'x' or 'y'\n";
>  
>  static const char *pipes_str(int pipes)
>  {
> @@ -3425,6 +3434,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 }
>  	};
>
Praveen Paneri July 14, 2017, 10:15 a.m. UTC | #2
Hi Paulo,

On Thursday 13 July 2017 01:47 AM, Paulo Zanoni wrote:
> Em Sex, 2017-04-28 às 20:07 +0530, Praveen Paneri escreveu:
>> Allow tests to create Y-tiled bufferes using a separate
>> argument to the test without increasing the number of
>> subtests.
>>
>> v2: Changed tiling option to string (Paulo)
>
> I had some minor nitpicks for this patch: reshuffling parameters
> between lines and the way we handle the new argument and its help
> message. Instead of requesting those trivial changes and creating yet
> another review round-trip I just went ahead and implemented them as v3.
> I hope you're fine with this approach. The patch can be applied without
> the rest of the patches in the series, so I applied it & pushed to IGT
> with my nitpicks and R-B.
>
>
Thank you for your review

Praveen
>>
>> Signed-off-by: Praveen Paneri <praveen.paneri@intel.com>
>> ---
>>  tests/kms_frontbuffer_tracking.c | 48 ++++++++++++++++++++++++----
>> ------------
>>  1 file changed, 29 insertions(+), 19 deletions(-)
>>
>> diff --git a/tests/kms_frontbuffer_tracking.c
>> b/tests/kms_frontbuffer_tracking.c
>> index 7cea4de..62ae33a 100644
>> --- a/tests/kms_frontbuffer_tracking.c
>> +++ b/tests/kms_frontbuffer_tracking.c
>> @@ -252,6 +252,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,
>> @@ -264,6 +265,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 {
>> @@ -578,7 +580,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);
>> @@ -710,7 +712,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);
>>  }
>>
>> @@ -744,16 +746,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);
>>
>> @@ -762,11 +764,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)
>> @@ -1252,7 +1254,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);
>>
>> @@ -1287,7 +1289,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);
>> @@ -2386,7 +2388,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;
>>
>> @@ -2432,7 +2434,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;
>>
>> @@ -2643,7 +2645,7 @@ static void fullscreen_plane_subtest(const
>> struct test_mode *t)
>>  	prepare_subtest(t, pattern);
>>
>>  	rect = pattern->get_rect(&params->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. */
>> @@ -2722,7 +2724,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);
>>
>> @@ -2832,7 +2834,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);
>> @@ -2937,7 +2939,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);
>>
>> @@ -3012,7 +3014,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);
>> @@ -3079,7 +3081,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);
>> @@ -3198,7 +3200,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++) {
>> @@ -3267,6 +3269,12 @@ 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':
>> +		if (!strncmp(optarg, "y", 1))
>> +			opt.tiling = LOCAL_I915_FORMAT_MOD_Y_TILED;
>> +		else
>> +			opt.tiling = LOCAL_I915_FORMAT_MOD_X_TILED;
>> +		break;
>>  	default:
>>  		igt_assert(false);
>>  	}
>> @@ -3286,7 +3294,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                    Select tiling mode-'x' or 'y'\n";
>>
>>  static const char *pipes_str(int pipes)
>>  {
>> @@ -3425,6 +3434,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 mbox

Patch

diff --git a/tests/kms_frontbuffer_tracking.c b/tests/kms_frontbuffer_tracking.c
index 7cea4de..62ae33a 100644
--- a/tests/kms_frontbuffer_tracking.c
+++ b/tests/kms_frontbuffer_tracking.c
@@ -252,6 +252,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,
@@ -264,6 +265,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 {
@@ -578,7 +580,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);
@@ -710,7 +712,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);
 }
 
@@ -744,16 +746,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);
 
@@ -762,11 +764,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)
@@ -1252,7 +1254,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);
 
@@ -1287,7 +1289,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);
@@ -2386,7 +2388,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;
 
@@ -2432,7 +2434,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;
 
@@ -2643,7 +2645,7 @@  static void fullscreen_plane_subtest(const struct test_mode *t)
 	prepare_subtest(t, pattern);
 
 	rect = pattern->get_rect(&params->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. */
@@ -2722,7 +2724,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);
 
@@ -2832,7 +2834,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);
@@ -2937,7 +2939,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);
 
@@ -3012,7 +3014,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);
@@ -3079,7 +3081,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);
@@ -3198,7 +3200,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++) {
@@ -3267,6 +3269,12 @@  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':
+		if (!strncmp(optarg, "y", 1))
+			opt.tiling = LOCAL_I915_FORMAT_MOD_Y_TILED;
+		else
+			opt.tiling = LOCAL_I915_FORMAT_MOD_X_TILED;
+		break;
 	default:
 		igt_assert(false);
 	}
@@ -3286,7 +3294,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                    Select tiling mode-'x' or 'y'\n";
 
 static const char *pipes_str(int pipes)
 {
@@ -3425,6 +3434,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 }
 	};