From: Philippe Cornu <philippe.cornu@st.com> To: Yannick Fertre <yannick.fertre@st.com>, Philippe Cornu <philippe.cornu@st.com>, Benjamin Gaignard <benjamin.gaignard@linaro.org>, Vincent Abriou <vincent.abriou@st.com>, David Airlie <airlied@linux.ie>, <dri-devel@lists.freedesktop.org>, <linux-kernel@vger.kernel.org>, "Archit Taneja" <architt@codeaurora.org>, Andrzej Hajda <a.hajda@samsung.com>, "Laurent Pinchart" <Laurent.pinchart@ideasonboard.com> Cc: Fabien Dessenne <fabien.dessenne@st.com>, Mickael Reulier <mickael.reulier@st.com>, Ludovic Barre <ludovic.barre@st.com>, "Alexandre Torgue" <alexandre.torgue@st.com>, Maxime Coquelin <mcoquelin.stm32@gmail.com> Subject: [PATCH v2] drm/stm: drv: Improve data transfers Date: Tue, 30 Jan 2018 11:42:00 +0100 [thread overview] Message-ID: <20180130104200.21602-1-philippe.cornu@st.com> (raw) To optimize data transfers, align pitch on 128 bytes & height on 4 bytes. This optimization is not applicable on hw without MMU. Signed-off-by: Yannick Fertre <yannick.fertre@st.com> Signed-off-by: Vincent Abriou <vincent.abriou@st.com> Signed-off-by: Philippe Cornu <philippe.cornu@st.com> --- Changes in v2: Rename stm_dumb_create() to stm_gem_cma_dumb_create() and move CONFIG_MMU inside the function following comments from Benjamin Gaignard. drivers/gpu/drm/stm/drv.c | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/drivers/gpu/drm/stm/drv.c b/drivers/gpu/drm/stm/drv.c index 8fe954c27fba..8bc7e8418b8d 100644 --- a/drivers/gpu/drm/stm/drv.c +++ b/drivers/gpu/drm/stm/drv.c @@ -31,6 +31,24 @@ static const struct drm_mode_config_funcs drv_mode_config_funcs = { .atomic_commit = drm_atomic_helper_commit, }; +static int stm_gem_cma_dumb_create(struct drm_file *file, + struct drm_device *dev, + struct drm_mode_create_dumb *args) +{ +#ifdef CONFIG_MMU + unsigned int min_pitch = DIV_ROUND_UP(args->width * args->bpp, 8); + + /* + * in order to optimize data transfer, pitch is aligned on + * 128 bytes, height is aligned on 4 bytes + */ + args->pitch = roundup(min_pitch, 128); + args->height = roundup(args->height, 4); +#endif + + return drm_gem_cma_dumb_create_internal(file, dev, args); +} + DEFINE_DRM_GEM_CMA_FOPS(drv_driver_fops); static struct drm_driver drv_driver = { @@ -44,7 +62,7 @@ static struct drm_driver drv_driver = { .minor = 0, .patchlevel = 0, .fops = &drv_driver_fops, - .dumb_create = drm_gem_cma_dumb_create, + .dumb_create = stm_gem_cma_dumb_create, .prime_handle_to_fd = drm_gem_prime_handle_to_fd, .prime_fd_to_handle = drm_gem_prime_fd_to_handle, .gem_free_object_unlocked = drm_gem_cma_free_object, -- 2.15.1
WARNING: multiple messages have this Message-ID (diff)
From: Philippe Cornu <philippe.cornu@st.com> To: Yannick Fertre <yannick.fertre@st.com>, Philippe Cornu <philippe.cornu@st.com>, Benjamin Gaignard <benjamin.gaignard@linaro.org>, Vincent Abriou <vincent.abriou@st.com>, David Airlie <airlied@linux.ie>, dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, Archit Taneja <architt@codeaurora.org>, Andrzej Hajda <a.hajda@samsung.com>, Laurent Pinchart <Laurent.pinchart@ideasonboard.com> Cc: Maxime Coquelin <mcoquelin.stm32@gmail.com>, Mickael Reulier <mickael.reulier@st.com>, Ludovic Barre <ludovic.barre@st.com>, Fabien Dessenne <fabien.dessenne@st.com>, Alexandre Torgue <alexandre.torgue@st.com> Subject: [PATCH v2] drm/stm: drv: Improve data transfers Date: Tue, 30 Jan 2018 11:42:00 +0100 [thread overview] Message-ID: <20180130104200.21602-1-philippe.cornu@st.com> (raw) To optimize data transfers, align pitch on 128 bytes & height on 4 bytes. This optimization is not applicable on hw without MMU. Signed-off-by: Yannick Fertre <yannick.fertre@st.com> Signed-off-by: Vincent Abriou <vincent.abriou@st.com> Signed-off-by: Philippe Cornu <philippe.cornu@st.com> --- Changes in v2: Rename stm_dumb_create() to stm_gem_cma_dumb_create() and move CONFIG_MMU inside the function following comments from Benjamin Gaignard. drivers/gpu/drm/stm/drv.c | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/drivers/gpu/drm/stm/drv.c b/drivers/gpu/drm/stm/drv.c index 8fe954c27fba..8bc7e8418b8d 100644 --- a/drivers/gpu/drm/stm/drv.c +++ b/drivers/gpu/drm/stm/drv.c @@ -31,6 +31,24 @@ static const struct drm_mode_config_funcs drv_mode_config_funcs = { .atomic_commit = drm_atomic_helper_commit, }; +static int stm_gem_cma_dumb_create(struct drm_file *file, + struct drm_device *dev, + struct drm_mode_create_dumb *args) +{ +#ifdef CONFIG_MMU + unsigned int min_pitch = DIV_ROUND_UP(args->width * args->bpp, 8); + + /* + * in order to optimize data transfer, pitch is aligned on + * 128 bytes, height is aligned on 4 bytes + */ + args->pitch = roundup(min_pitch, 128); + args->height = roundup(args->height, 4); +#endif + + return drm_gem_cma_dumb_create_internal(file, dev, args); +} + DEFINE_DRM_GEM_CMA_FOPS(drv_driver_fops); static struct drm_driver drv_driver = { @@ -44,7 +62,7 @@ static struct drm_driver drv_driver = { .minor = 0, .patchlevel = 0, .fops = &drv_driver_fops, - .dumb_create = drm_gem_cma_dumb_create, + .dumb_create = stm_gem_cma_dumb_create, .prime_handle_to_fd = drm_gem_prime_handle_to_fd, .prime_fd_to_handle = drm_gem_prime_fd_to_handle, .gem_free_object_unlocked = drm_gem_cma_free_object, -- 2.15.1 _______________________________________________ dri-devel mailing list dri-devel@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/dri-devel
next reply other threads:[~2018-01-30 10:42 UTC|newest] Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top 2018-01-30 10:42 Philippe Cornu [this message] 2018-01-30 10:42 ` [PATCH v2] drm/stm: drv: Improve data transfers Philippe Cornu 2018-01-30 10:51 ` Benjamin Gaignard 2018-01-30 10:51 ` Benjamin Gaignard 2018-01-30 15:01 ` Laurent Pinchart 2018-01-30 15:01 ` Laurent Pinchart 2018-01-30 15:28 ` Jani Nikula 2018-01-30 15:28 ` Jani Nikula 2018-01-30 14:58 ` Laurent Pinchart 2018-01-30 14:58 ` Laurent Pinchart 2018-01-30 15:08 ` Benjamin Gaignard 2018-01-30 15:10 ` Laurent Pinchart
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=20180130104200.21602-1-philippe.cornu@st.com \ --to=philippe.cornu@st.com \ --cc=Laurent.pinchart@ideasonboard.com \ --cc=a.hajda@samsung.com \ --cc=airlied@linux.ie \ --cc=alexandre.torgue@st.com \ --cc=architt@codeaurora.org \ --cc=benjamin.gaignard@linaro.org \ --cc=dri-devel@lists.freedesktop.org \ --cc=fabien.dessenne@st.com \ --cc=linux-kernel@vger.kernel.org \ --cc=ludovic.barre@st.com \ --cc=mcoquelin.stm32@gmail.com \ --cc=mickael.reulier@st.com \ --cc=vincent.abriou@st.com \ --cc=yannick.fertre@st.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: linkBe 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.