mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: Neil Armstrong <narmstrong@baylibre.com>
To: tomba@kernel.org
Cc: linux-omap@vger.kernel.org, dri-devel@lists.freedesktop.org,
	linux-kernel@vger.kernel.org, khilman@baylibre.com,
	Neil Armstrong <narmstrong@baylibre.com>,
	Benoit Parrot <bparrot@ti.com>
Subject: [PATCH v6 1/9] drm/omap: add sanity plane state check
Date: Mon, 18 Oct 2021 16:28:34 +0200	[thread overview]
Message-ID: <20211018142842.2511200-2-narmstrong@baylibre.com> (raw)
In-Reply-To: <20211018142842.2511200-1-narmstrong@baylibre.com>

Call drm_atomic_helper_check_plane_state() from the plane
atomic_check() callback in order to add plane state sanity
checking.

It will permit filtering out totally bad scaling factors, even
if the real check are done later in the atomic commit.

Signed-off-by: Benoit Parrot <bparrot@ti.com>
Signed-off-by: Neil Armstrong <narmstrong@baylibre.com>
---
 drivers/gpu/drm/omapdrm/omap_plane.c | 15 +++++++++++++++
 1 file changed, 15 insertions(+)

diff --git a/drivers/gpu/drm/omapdrm/omap_plane.c b/drivers/gpu/drm/omapdrm/omap_plane.c
index 512af976b7e9..c3de4f339387 100644
--- a/drivers/gpu/drm/omapdrm/omap_plane.c
+++ b/drivers/gpu/drm/omapdrm/omap_plane.c
@@ -104,12 +104,15 @@ static void omap_plane_atomic_disable(struct drm_plane *plane,
 	dispc_ovl_enable(priv->dispc, omap_plane->id, false);
 }
 
+#define FRAC_16_16(mult, div)    (((mult) << 16) / (div))
+
 static int omap_plane_atomic_check(struct drm_plane *plane,
 				   struct drm_atomic_state *state)
 {
 	struct drm_plane_state *new_plane_state = drm_atomic_get_new_plane_state(state,
 										 plane);
 	struct drm_crtc_state *crtc_state;
+	int ret;
 
 	if (!new_plane_state->fb)
 		return 0;
@@ -127,6 +130,18 @@ static int omap_plane_atomic_check(struct drm_plane *plane,
 	if (!crtc_state->enable)
 		return 0;
 
+	/*
+	 * Note: these are just sanity checks to filter out totally bad scaling
+	 * factors. The real limits must be calculated case by case, and
+	 * unfortunately we currently do those checks only at the commit
+	 * phase in dispc.
+	 */
+	ret = drm_atomic_helper_check_plane_state(new_plane_state, crtc_state,
+						  FRAC_16_16(1, 8), FRAC_16_16(8, 1),
+						  true, true);
+	if (ret)
+		return ret;
+
 	if (new_plane_state->crtc_x < 0 || new_plane_state->crtc_y < 0)
 		return -EINVAL;
 
-- 
2.25.1


  reply	other threads:[~2021-10-18 14:28 UTC|newest]

Thread overview: 21+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-10-18 14:28 [PATCH v6 0/9] drm/omap: Add virtual-planes support Neil Armstrong
2021-10-18 14:28 ` Neil Armstrong [this message]
2021-10-27  8:29   ` [PATCH v6 1/9] drm/omap: add sanity plane state check Tomi Valkeinen
2021-10-27  8:30     ` Tomi Valkeinen
2021-11-09 13:10       ` Neil Armstrong
2021-10-18 14:28 ` [PATCH v6 2/9] drm/omap: Add ability to check if requested plane modes can be supported Neil Armstrong
2021-10-27  8:34   ` Tomi Valkeinen
2021-10-18 14:28 ` [PATCH v6 3/9] drm/omap: Add ovl checking funcs to dispc_ops Neil Armstrong
2021-10-27  8:35   ` Tomi Valkeinen
2021-10-18 14:28 ` [PATCH v6 4/9] drm/omap: introduce omap_hw_overlay Neil Armstrong
2021-10-27 10:50   ` Tomi Valkeinen
2021-10-18 14:28 ` [PATCH v6 5/9] drm/omap: omap_plane: subclass drm_plane_state Neil Armstrong
2021-10-27 10:50   ` Tomi Valkeinen
2021-10-18 14:28 ` [PATCH v6 6/9] drm/omap: Add global state as a private atomic object Neil Armstrong
2021-10-18 14:28 ` [PATCH v6 7/9] drm/omap: dynamically assign hw overlays to planes Neil Armstrong
2021-10-18 14:28 ` [PATCH v6 8/9] drm/omap: add plane_atomic_print_state support Neil Armstrong
2021-10-27 12:23   ` Tomi Valkeinen
2021-10-27 12:46     ` Neil Armstrong
2021-10-18 14:28 ` [PATCH v6 9/9] drm/omap: Add a 'right overlay' to plane state Neil Armstrong
2021-10-27 12:50   ` Tomi Valkeinen
2021-11-09 13:31     ` Neil Armstrong

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=20211018142842.2511200-2-narmstrong@baylibre.com \
    --to=narmstrong@baylibre.com \
    --cc=bparrot@ti.com \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=khilman@baylibre.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-omap@vger.kernel.org \
    --cc=tomba@kernel.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

all inboxes | Powered by JetHome®