[Intel-gfx] [PATCH v2 6/7] igt/kms_frontbuffer_tracking: Add Y-tiling support
Praveen Paneri
praveen.paneri at intel.com
Fri Jul 14 10:15:21 UTC 2017
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 at 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(¶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. */
>> @@ -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 }
>> };
>>
More information about the Intel-gfx
mailing list