From: "Ville Syrjälä" <ville.syrjala@linux.intel.com>
To: Maxime Ripard <maxime.ripard@bootlin.com>
Cc: Petri Latvala <petri.latvala@intel.com>,
eben@raspberrypi.org, igt-dev@lists.freedesktop.org,
Thomas Petazzoni <thomas.petazzoni@bootlin.com>
Subject: Re: [igt-dev] [PATCH i-g-t 7/8] igt: fb: Fallback on KMS dumb buffer allocation for YUV buffers
Date: Tue, 4 Dec 2018 21:32:05 +0200 [thread overview]
Message-ID: <20181204193205.GP9144@intel.com> (raw)
In-Reply-To: <20181204100826.15522-7-maxime.ripard@bootlin.com>
On Tue, Dec 04, 2018 at 11:08:22AM +0100, Maxime Ripard wrote:
> The current YUV buffer allocation only works on the i915 driver, since
> it uses some private ioctl. However, we can to use that code on other
> drivers that implement only KMS, so if the driver is something else
> than the i915 driver, let's allocate a dumb buffer.
>
> Signed-off-by: Maxime Ripard <maxime.ripard@bootlin.com>
> ---
> lib/igt_fb.c | 35 +++++++++++++++++++++++++++++++++--
> 1 file changed, 33 insertions(+), 2 deletions(-)
>
> diff --git a/lib/igt_fb.c b/lib/igt_fb.c
> index d6242a6652f1..f2e6c89f3884 100644
> --- a/lib/igt_fb.c
> +++ b/lib/igt_fb.c
> @@ -501,6 +501,8 @@ static int i915_create_gem_for_fb(struct igt_fb *fb)
>
> static int create_yuv_bo_for_fb(struct igt_fb *fb)
> {
> + unsigned int virtual_height;
> + unsigned int bpp;
> uint64_t size = calc_fb_size(fb);
> int fd = fb->fd;
>
> @@ -511,8 +513,37 @@ static int create_yuv_bo_for_fb(struct igt_fb *fb)
> if (is_i915_device(fd))
> return i915_create_gem_for_fb(fb);
>
> - /* We cannot allocate any other buffer type */
> - igt_assert(true);
> + switch (fb->drm_format) {
> + case DRM_FORMAT_NV12:
> + bpp = 8;
> + break;
> +
> + case DRM_FORMAT_UYVY:
> + case DRM_FORMAT_VYUY:
> + case DRM_FORMAT_YUYV:
> + case DRM_FORMAT_YVYU:
> + bpp = 16;
> + break;
> +
> + default:
> + igt_assert_f(false, "Unsupported YUV format\n");
> + }
> +
> + switch (fb->drm_format) {
> + case DRM_FORMAT_NV12:
> + virtual_height = fb->height * 3 / 2;
> + break;
A bit of a hack. The main problem with this is that the kernel won't
know anything about any stride alignment limitations etc. If we do use
this hack I guess it would be more technically correct to write it as
DIV_ROUND_UP(fb->size, fb->stride[0]), or something along those lines.
Which also brings me to the other issue we have. calc_plane_stride()
and calc_plane_size() are somewhat i915 specific. We should probably
do something about that.
> +
> + default:
> + virtual_height = fb->height;
> + break;
> + }
> +
> + fb->is_dumb = true;
> + fb->gem_handle = kmstest_dumb_create(fd, fb->width, virtual_height,
> + bpp, NULL, &fb->size);
> +
> + return fb->gem_handle;
> }
>
> /* helpers to create nice-looking framebuffers */
> --
> 2.19.1
--
Ville Syrjälä
Intel
_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev
next prev parent reply other threads:[~2018-12-04 19:32 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-12-04 10:08 [igt-dev] [PATCH i-g-t 0/8] igt: chamelium: Test YUV buffers using the Chamelium Maxime Ripard
2018-12-04 10:08 ` [igt-dev] [PATCH i-g-t 1/8] chamelium: Fix inverted xr24 pattern paint dimensions Maxime Ripard
2018-12-04 10:08 ` [igt-dev] [PATCH i-g-t 2/8] chamelium: Pass and use stride for xr24 pattern paint Maxime Ripard
2018-12-04 10:08 ` [igt-dev] [PATCH i-g-t 3/8] igt: tests: chamelium: Start to unify tests Maxime Ripard
2018-12-04 10:08 ` [igt-dev] [PATCH i-g-t 4/8] igt: tests: chamelium: Convert VGA tests to do_test_display Maxime Ripard
2018-12-04 10:08 ` [igt-dev] [PATCH " Maxime Ripard
2018-12-04 10:08 ` [igt-dev] [PATCH 5/8] igt: fb: Move i915 buffer allocation to a function of its own Maxime Ripard
2018-12-04 19:28 ` Ville Syrjälä
2018-12-04 10:08 ` [igt-dev] [PATCH i-g-t " Maxime Ripard
2018-12-04 10:08 ` [igt-dev] [PATCH i-g-t 6/8] igt: fb: Separate YUV allocation from the rest Maxime Ripard
2018-12-04 10:08 ` [igt-dev] [PATCH i-g-t 7/8] igt: fb: Fallback on KMS dumb buffer allocation for YUV buffers Maxime Ripard
2018-12-04 19:32 ` Ville Syrjälä [this message]
2018-12-07 15:29 ` Maxime Ripard
2018-12-07 17:39 ` Ville Syrjälä
2018-12-04 10:08 ` [igt-dev] [PATCH " Maxime Ripard
2018-12-04 10:08 ` [igt-dev] [PATCH i-g-t 8/8] igt: tests: chamelium: Add NV12 format Maxime Ripard
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=20181204193205.GP9144@intel.com \
--to=ville.syrjala@linux.intel.com \
--cc=eben@raspberrypi.org \
--cc=igt-dev@lists.freedesktop.org \
--cc=maxime.ripard@bootlin.com \
--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.