From: Paul Kocialkowski <paul.kocialkowski@bootlin.com>
To: igt-dev@lists.freedesktop.org
Subject: [igt-dev] [PATCH RESEND i-g-t v6 03/22] lib/igt_fb: Refactor create_bo_for_fb to prepare for VC4 support
Date: Fri, 22 Feb 2019 12:25:24 +0100 [thread overview]
Message-ID: <20190222112543.6885-4-paul.kocialkowski@bootlin.com> (raw)
In-Reply-To: <20190222112543.6885-1-paul.kocialkowski@bootlin.com>
The current create_bo_for_fb uses a device-specific BO instead of dumb
allocation when dumb allocation is not appropriate and the driver is
Intel. Then, it will assert that the parameters are appropriate for
dumb allocation.
The conditions related to tiling, size and stride are sufficient for
needing a device-specific BO and they are not specific to Intel.
However, a device-specific BO for YUV is only needed for Intel.
Change the conditions accordingly and set a device_bo variable. This
variable allows making fb->size calculation common between the
device-specific and dumb paths. Use the variable after that and
distinguish between the device types for allocating and error out if
it's not supported.
This makes the extra checks that dumb allocation is valid redundant,
since these cases will always fall under device-specific allocation
and potentially error out then.
Signed-off-by: Paul Kocialkowski <paul.kocialkowski@bootlin.com>
Reviewed-by: Maxime Ripard <maxime.ripard@bootlin.com>
Reviewed-by: Lyude Paul <lyude@redhat.com>
---
lib/igt_fb.c | 45 +++++++++++++++++++++++++--------------------
1 file changed, 25 insertions(+), 20 deletions(-)
diff --git a/lib/igt_fb.c b/lib/igt_fb.c
index 058cfab604b8..1178dddf2337 100644
--- a/lib/igt_fb.c
+++ b/lib/igt_fb.c
@@ -610,36 +610,41 @@ static int create_bo_for_fb(struct igt_fb *fb)
unsigned int bpp = 0;
unsigned int plane;
unsigned *strides = &fb->strides[0];
+ bool device_bo = false;
int fd = fb->fd;
+ uint64_t size;
- if (is_i915_device(fd) &&
- (fb->tiling || fb->size || fb->strides[0] || igt_format_is_yuv(fb->drm_format))) {
- uint64_t size;
+ /*
+ * The current dumb buffer allocation API doesn't really allow to
+ * specify a custom size or stride. Yet the caller is free to specify
+ * them, so we need to make sure to use a device BO then.
+ */
+ if (fb->tiling || fb->size || fb->strides[0] ||
+ (is_i915_device(fd) && igt_format_is_yuv(fb->drm_format)))
+ device_bo = true;
- size = calc_fb_size(fb);
+ /* Sets offets and stride if necessary. */
+ size = calc_fb_size(fb);
- /* respect the size requested by the caller */
- if (fb->size == 0)
- fb->size = size;
+ /* Respect the size requested by the caller. */
+ if (fb->size == 0)
+ fb->size = size;
+ if (device_bo) {
fb->is_dumb = false;
- fb->gem_handle = gem_create(fd, fb->size);
- gem_set_tiling(fd, fb->gem_handle,
- igt_fb_mod_to_tiling(fb->tiling),
- fb->strides[0]);
+
+ if (is_i915_device(fd)) {
+ fb->gem_handle = gem_create(fd, fb->size);
+ gem_set_tiling(fd, fb->gem_handle,
+ igt_fb_mod_to_tiling(fb->tiling),
+ fb->strides[0]);
+ } else {
+ igt_assert(false);
+ }
goto out;
}
- /*
- * The current dumb buffer allocation API doesn't really allow to
- * specify a custom size or stride. Yet the caller is free to specify
- * them, so we need to make sure to error out in this case.
- */
- igt_assert(fb->size == 0);
- igt_assert(fb->strides[0] == 0);
-
- fb->size = calc_fb_size(fb);
for (plane = 0; plane < fb->num_planes; plane++)
bpp += DIV_ROUND_UP(fb->plane_bpp[plane],
plane ? fmt->hsub * fmt->vsub : 1);
--
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-02-22 11:26 UTC|newest]
Thread overview: 25+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-02-22 11:25 [igt-dev] [PATCH RESEND i-g-t v6 00/22] Chamelium VC4 plane fuzzy testing, with SAND and T-tiled mode Paul Kocialkowski
2019-02-22 11:25 ` [igt-dev] [PATCH RESEND i-g-t v6 01/22] lib: drmtest: Add helpers to check and require the VC4 driver Paul Kocialkowski
2019-02-22 11:25 ` [igt-dev] [PATCH RESEND i-g-t v6 02/22] lib/igt_fb: Add checks on i915 for i915-specific tiled buffer allocation Paul Kocialkowski
2019-02-22 11:25 ` Paul Kocialkowski [this message]
2019-02-22 11:25 ` [igt-dev] [PATCH RESEND i-g-t v6 04/22] lib/igt_fb: Add support for allocating T-tiled VC4 buffers Paul Kocialkowski
2019-02-22 11:25 ` [igt-dev] [PATCH RESEND i-g-t v6 05/22] lib/igt_fb: Add support for VC4 SAND tiling modes Paul Kocialkowski
2019-02-22 11:25 ` [igt-dev] [PATCH RESEND i-g-t v6 06/22] lib/igt_fb: Allow interpreting the tile height as a stride equivalent Paul Kocialkowski
2019-02-22 11:25 ` [igt-dev] [PATCH RESEND i-g-t v6 07/22] lib/igt_fb: Add a stride-provisioned fashion of igt_fb_convert Paul Kocialkowski
2019-02-22 11:25 ` [igt-dev] [PATCH RESEND i-g-t v6 08/22] lib/igt_fb: Add a helper to retreive the plane bpp for a given format Paul Kocialkowski
2019-02-22 11:25 ` [igt-dev] [PATCH RESEND i-g-t v6 09/22] lib/igt_fb: Add a helper to fill-in the available DRM formats Paul Kocialkowski
2019-02-22 11:25 ` [igt-dev] [PATCH RESEND i-g-t v6 10/22] lib/igt_vc4: Add helpers for converting linear to T-tiled RGB buffers Paul Kocialkowski
2019-02-22 11:25 ` [igt-dev] [PATCH RESEND i-g-t v6 11/22] lib/igt_vc4: Add helpers for converting linear to SAND-tiled buffers Paul Kocialkowski
2019-02-22 11:25 ` [igt-dev] [PATCH RESEND i-g-t v6 12/22] lib/igt_fb: Pass the modifier to igt_fb_convert helpers Paul Kocialkowski
2019-02-22 11:25 ` [igt-dev] [PATCH RESEND i-g-t v6 13/22] lib/igt_fb: Support converting to VC4 modifiers in igt_fb_convert Paul Kocialkowski
2019-02-22 11:25 ` [igt-dev] [PATCH RESEND i-g-t v6 14/22] lib/igt_kms: Add helpers to count and iterate planes from pipe Paul Kocialkowski
2019-02-22 11:25 ` [igt-dev] [PATCH RESEND i-g-t v6 15/22] lib/igt_kms: Add helpers to count and iterate planes from output Paul Kocialkowski
2019-02-22 11:25 ` [igt-dev] [PATCH RESEND i-g-t v6 16/22] lib/igt_chamelium: Fixup resources liberation in comparison helpers Paul Kocialkowski
2019-02-22 11:25 ` [igt-dev] [PATCH RESEND i-g-t v6 17/22] lib/igt_chamelium: Split frames dump logic and rework surroundings Paul Kocialkowski
2019-02-22 11:25 ` [igt-dev] [PATCH RESEND i-g-t v6 18/22] lib/igt_chamelium: Generalize the frame match helper with check type Paul Kocialkowski
2019-02-22 11:25 ` [igt-dev] [PATCH RESEND i-g-t v6 19/22] lib/igt_frame: Add a checkerboard frame comparison method Paul Kocialkowski
2019-02-22 11:25 ` [igt-dev] [PATCH RESEND i-g-t v6 20/22] lib/igt_chamelium: Hook-in checkerboard comparison method in helpers Paul Kocialkowski
2019-02-22 11:25 ` [igt-dev] [PATCH RESEND i-g-t v6 21/22] chamelium: Move the YUV tests over to the checkerboard checking method Paul Kocialkowski
2019-02-22 11:25 ` [igt-dev] [PATCH RESEND i-g-t v6 22/22] chamelium: Add a display test for randomized planes Paul Kocialkowski
2019-02-22 12:09 ` [igt-dev] ✓ Fi.CI.BAT: success for Chamelium VC4 plane fuzzy testing, with SAND and T-tiled mode Patchwork
2019-02-22 21:12 ` [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=20190222112543.6885-4-paul.kocialkowski@bootlin.com \
--to=paul.kocialkowski@bootlin.com \
--cc=igt-dev@lists.freedesktop.org \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox