From: Maxime Ripard <maxime.ripard@bootlin.com>
To: igt-dev@lists.freedesktop.org
Cc: Petri Latvala <petri.latvala@intel.com>,
eben@raspberrypi.org,
Thomas Petazzoni <thomas.petazzoni@bootlin.com>
Subject: [igt-dev] [PATCH i-g-t v2 01/13] igt: fb: Add subsampling parameters to the formats
Date: Tue, 8 Jan 2019 16:19:47 +0100 [thread overview]
Message-ID: <20190108152001.5367-1-maxime.ripard@bootlin.com> (raw)
In-Reply-To: <cover.58d25323616120b55c27ab28cdac25877a37bd78.1546960696.git-series.maxime.ripard@bootlin.com>
In order to improve the YUV support, let's add the horizontal and vertical
subsampling parameters to the IGT formats.
Signed-off-by: Maxime Ripard <maxime.ripard@bootlin.com>
---
lib/igt_fb.c | 35 +++++++++++++++++++++++++++++------
1 file changed, 29 insertions(+), 6 deletions(-)
diff --git a/lib/igt_fb.c b/lib/igt_fb.c
index 8244e5176a6f..00db2ee57cad 100644
--- a/lib/igt_fb.c
+++ b/lib/igt_fb.c
@@ -71,85 +71,104 @@ static const struct format_desc_struct {
int depth;
int num_planes;
int plane_bpp[4];
+ uint8_t hsub;
+ uint8_t vsub;
} format_desc[] = {
{ .name = "ARGB1555", .depth = -1, .drm_id = DRM_FORMAT_ARGB1555,
.cairo_id = CAIRO_FORMAT_INVALID,
.pixman_id = PIXMAN_a1r5g5b5,
.num_planes = 1, .plane_bpp = { 16, },
+ .hsub = 1, .vsub = 1,
},
{ .name = "XRGB1555", .depth = -1, .drm_id = DRM_FORMAT_XRGB1555,
.cairo_id = CAIRO_FORMAT_INVALID,
.pixman_id = PIXMAN_x1r5g5b5,
.num_planes = 1, .plane_bpp = { 16, },
+ .hsub = 1, .vsub = 1,
},
{ .name = "RGB565", .depth = 16, .drm_id = DRM_FORMAT_RGB565,
.cairo_id = CAIRO_FORMAT_RGB16_565,
.pixman_id = PIXMAN_r5g6b5,
.num_planes = 1, .plane_bpp = { 16, },
+ .hsub = 1, .vsub = 1,
},
{ .name = "BGR565", .depth = -1, .drm_id = DRM_FORMAT_BGR565,
.cairo_id = CAIRO_FORMAT_INVALID,
.pixman_id = PIXMAN_b5g6r5,
.num_planes = 1, .plane_bpp = { 16, },
+ .hsub = 1, .vsub = 1,
},
{ .name = "BGR888", .depth = -1, .drm_id = DRM_FORMAT_BGR888,
.cairo_id = CAIRO_FORMAT_INVALID,
.pixman_id = PIXMAN_b8g8r8,
.num_planes = 1, .plane_bpp = { 24, },
+ .hsub = 1, .vsub = 1,
},
{ .name = "RGB888", .depth = -1, .drm_id = DRM_FORMAT_RGB888,
.cairo_id = CAIRO_FORMAT_INVALID,
.pixman_id = PIXMAN_r8g8b8,
.num_planes = 1, .plane_bpp = { 24, },
+ .hsub = 1, .vsub = 1,
},
{ .name = "XYUV8888", .depth = -1, .drm_id = DRM_FORMAT_XYUV8888,
.cairo_id = CAIRO_FORMAT_RGB24,
.num_planes = 1, .plane_bpp = { 32, },
+ .hsub = 1, .vsub = 1,
},
{ .name = "XRGB8888", .depth = 24, .drm_id = DRM_FORMAT_XRGB8888,
.cairo_id = CAIRO_FORMAT_RGB24,
.pixman_id = PIXMAN_x8r8g8b8,
.num_planes = 1, .plane_bpp = { 32, },
+ .hsub = 1, .vsub = 1,
},
{ .name = "XBGR8888", .depth = -1, .drm_id = DRM_FORMAT_XBGR8888,
.cairo_id = CAIRO_FORMAT_INVALID,
.pixman_id = PIXMAN_x8b8g8r8,
.num_planes = 1, .plane_bpp = { 32, },
+ .hsub = 1, .vsub = 1,
},
{ .name = "XRGB2101010", .depth = 30, .drm_id = DRM_FORMAT_XRGB2101010,
.cairo_id = CAIRO_FORMAT_RGB30,
.pixman_id = PIXMAN_x2r10g10b10,
.num_planes = 1, .plane_bpp = { 32, },
+ .hsub = 1, .vsub = 1,
},
{ .name = "ARGB8888", .depth = 32, .drm_id = DRM_FORMAT_ARGB8888,
.cairo_id = CAIRO_FORMAT_ARGB32,
.pixman_id = PIXMAN_a8r8g8b8,
.num_planes = 1, .plane_bpp = { 32, },
+ .hsub = 1, .vsub = 1,
},
{ .name = "ABGR8888", .depth = -1, .drm_id = DRM_FORMAT_ABGR8888,
.cairo_id = CAIRO_FORMAT_INVALID,
.pixman_id = PIXMAN_a8b8g8r8,
.num_planes = 1, .plane_bpp = { 32, },
+ .hsub = 1, .vsub = 1,
},
{ .name = "NV12", .depth = -1, .drm_id = DRM_FORMAT_NV12,
.cairo_id = CAIRO_FORMAT_RGB24,
.num_planes = 2, .plane_bpp = { 8, 16, },
+ .hsub = 2, .vsub = 2,
},
{ .name = "YUYV", .depth = -1, .drm_id = DRM_FORMAT_YUYV,
.cairo_id = CAIRO_FORMAT_RGB24,
.num_planes = 1, .plane_bpp = { 16, },
+ .hsub = 2, .vsub = 1,
},
{ .name = "YVYU", .depth = -1, .drm_id = DRM_FORMAT_YVYU,
.cairo_id = CAIRO_FORMAT_RGB24,
.num_planes = 1, .plane_bpp = { 16, },
+ .hsub = 2, .vsub = 1,
},
{ .name = "UYVY", .depth = -1, .drm_id = DRM_FORMAT_UYVY,
.cairo_id = CAIRO_FORMAT_RGB24,
.num_planes = 1, .plane_bpp = { 16, },
+ .hsub = 2, .vsub = 1,
},
{ .name = "VYUY", .depth = -1, .drm_id = DRM_FORMAT_VYUY,
.cairo_id = CAIRO_FORMAT_RGB24,
.num_planes = 1, .plane_bpp = { 16, },
+ .hsub = 2, .vsub = 1,
},
};
#define for_each_format(f) \
@@ -239,10 +258,12 @@ void igt_get_fb_tile_size(int fd, uint64_t tiling, int fb_bpp,
static unsigned fb_plane_width(const struct igt_fb *fb, int plane)
{
- if (fb->drm_format == DRM_FORMAT_NV12 && plane == 1)
- return DIV_ROUND_UP(fb->width, 2);
+ const struct format_desc_struct *format = lookup_drm_format(fb->drm_format);
- return fb->width;
+ if (plane == 0)
+ return fb->width;
+
+ return DIV_ROUND_UP(fb->width, format->hsub);
}
static unsigned fb_plane_bpp(const struct igt_fb *fb, int plane)
@@ -254,10 +275,12 @@ static unsigned fb_plane_bpp(const struct igt_fb *fb, int plane)
static unsigned fb_plane_height(const struct igt_fb *fb, int plane)
{
- if (fb->drm_format == DRM_FORMAT_NV12 && plane == 1)
- return DIV_ROUND_UP(fb->height, 2);
+ const struct format_desc_struct *format = lookup_drm_format(fb->drm_format);
- return fb->height;
+ if (plane == 0)
+ return fb->height;
+
+ return DIV_ROUND_UP(fb->height, format->vsub);
}
static int fb_num_planes(const struct igt_fb *fb)
--
2.20.1
_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev
next prev parent reply other threads:[~2019-01-08 15:20 UTC|newest]
Thread overview: 36+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-01-08 15:19 [igt-dev] [PATCH i-g-t v2 00/13] igt: chamelium: Test YUV buffers using the Chamelium Maxime Ripard
2019-01-08 15:19 ` Maxime Ripard [this message]
2019-01-10 9:59 ` [igt-dev] [PATCH i-g-t v2 01/13] igt: fb: Add subsampling parameters to the formats Paul Kocialkowski
2019-01-08 15:19 ` [igt-dev] [PATCH i-g-t v2 02/13] igt: fb: Reduce tile size alignment for non intel platforms Maxime Ripard
2019-01-10 9:59 ` Paul Kocialkowski
2019-01-08 15:19 ` [igt-dev] [PATCH i-g-t v2 03/13] igt: fb: generic YUV convertion function Maxime Ripard
2019-01-10 10:07 ` Paul Kocialkowski
2019-01-08 15:19 ` [igt-dev] [PATCH i-g-t v2 04/13] igt: fb: Move i915 YUV buffer clearing code to a function Maxime Ripard
2019-01-10 10:10 ` Paul Kocialkowski
2019-01-10 14:38 ` Ville Syrjälä
2019-01-14 15:13 ` Paul Kocialkowski
2019-01-14 16:40 ` Ville Syrjälä
2019-01-15 16:15 ` Paul Kocialkowski
2019-01-08 15:19 ` [igt-dev] [PATCH i-g-t v2 05/13] igt: fb: Move size computation to the common path Maxime Ripard
2019-01-10 10:10 ` Paul Kocialkowski
2019-01-10 10:43 ` Paul Kocialkowski
2019-01-08 15:19 ` [igt-dev] [PATCH i-g-t v2 06/13] igt: fb: Refactor dumb buffer allocation path Maxime Ripard
2019-01-10 10:11 ` Paul Kocialkowski
2019-01-08 15:19 ` [igt-dev] [PATCH i-g-t v2 07/13] igt: fb: Account for all planes bpp Maxime Ripard
2019-01-10 10:21 ` Paul Kocialkowski
2019-01-21 13:10 ` Maxime Ripard
2019-01-08 15:19 ` [igt-dev] [PATCH i-g-t v2 08/13] igt: fb: Clear YUV dumb buffers Maxime Ripard
2019-01-10 10:27 ` Paul Kocialkowski
2019-01-08 15:19 ` [igt-dev] [PATCH i-g-t v2 09/13] igt: fb: Rework YUV i915 allocation path Maxime Ripard
2019-01-08 15:19 ` [igt-dev] [PATCH i-g-t v2 10/13] igt: fb: Add a bunch of new YUV formats Maxime Ripard
2019-01-10 10:45 ` Paul Kocialkowski
2019-01-08 15:19 ` [igt-dev] [PATCH i-g-t v2 11/13] igt: tests: chamelium: Start to unify tests Maxime Ripard
2019-01-10 10:50 ` Paul Kocialkowski
2019-01-21 13:17 ` Maxime Ripard
2019-01-08 15:19 ` [igt-dev] [PATCH i-g-t v2 12/13] igt: tests: chamelium: Convert VGA tests to do_test_display Maxime Ripard
2019-01-10 10:50 ` Paul Kocialkowski
2019-01-08 15:19 ` [igt-dev] [PATCH i-g-t v2 13/13] igt: tests: chamelium: Add YUV formats tests Maxime Ripard
2019-01-10 10:54 ` Paul Kocialkowski
2019-01-08 15:31 ` [igt-dev] ✗ Fi.CI.BAT: failure for igt: chamelium: Test YUV buffers using the Chamelium (rev3) Patchwork
2019-01-08 17:59 ` [igt-dev] ✓ Fi.CI.BAT: success for igt: chamelium: Test YUV buffers using the Chamelium (rev4) Patchwork
2019-01-09 3:11 ` [igt-dev] ✓ Fi.CI.IGT: " Patchwork
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20190108152001.5367-1-maxime.ripard@bootlin.com \
--to=maxime.ripard@bootlin.com \
--cc=eben@raspberrypi.org \
--cc=igt-dev@lists.freedesktop.org \
--cc=petri.latvala@intel.com \
--cc=thomas.petazzoni@bootlin.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.