From 42359edda12e5ebf715f2a978944a18baaba6490 Mon Sep 17 00:00:00 2001 From: Ville Syrjälä Date: Tue, 17 Jul 2018 18:50:13 +0300 Subject: lib/kms: Pass strides[] to __kms_addfb MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Make __kms_addfb() usable with planar formats by passing in the stride for each plane. v2: Handle strides[1] for planar formats in kms_available_modes_crc Signed-off-by: Ville Syrjälä Reviewed-by: Paulo Zanoni --- tests/kms_available_modes_crc.c | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) (limited to 'tests/kms_available_modes_crc.c') diff --git a/tests/kms_available_modes_crc.c b/tests/kms_available_modes_crc.c index b67b4f83..e77bd80f 100644 --- a/tests/kms_available_modes_crc.c +++ b/tests/kms_available_modes_crc.c @@ -253,7 +253,8 @@ static bool setup_fb(data_t *data, igt_output_t *output, igt_plane_t *plane, drmModeModeInfo *mode; uint64_t w, h; signed ret, gemsize = 0; - unsigned tile_width, tile_height, stride; + unsigned tile_width, tile_height; + uint32_t strides[4] = {}; uint32_t offsets[4] = {}; uint64_t tiling; int bpp = 0; @@ -294,24 +295,24 @@ static bool setup_fb(data_t *data, igt_output_t *output, igt_plane_t *plane, igt_get_fb_tile_size(data->gfx_fd, tiling, bpp, &tile_width, &tile_height); - stride = ALIGN(w * bpp / 8, tile_width); - gemsize = data->size = stride * ALIGN(h, tile_height); + strides[0] = ALIGN(w * bpp / 8, tile_width); + gemsize = data->size = strides[0] * ALIGN(h, tile_height); if (fillers[i].bpp == P010 || fillers[i].bpp == NV12) { offsets[1] = data->size; + strides[1] = strides[0]; gemsize = data->size * 2; } data->gem_handle = gem_create(data->gfx_fd, gemsize); ret = __gem_set_tiling(data->gfx_fd, data->gem_handle, - igt_fb_mod_to_tiling(tiling), stride); + igt_fb_mod_to_tiling(tiling), strides[0]); igt_assert_eq(ret, 0); ret = __kms_addfb(data->gfx_fd, data->gem_handle, w, h, - stride, format, tiling, - offsets, LOCAL_DRM_MODE_FB_MODIFIERS, - &data->fb.fb_id); + format, tiling, strides, offsets, + LOCAL_DRM_MODE_FB_MODIFIERS, &data->fb.fb_id); if(ret < 0) { igt_info("Creating fb for format %s failed, return code %d\n", -- cgit v1.2.3