* [RFC] checking drm_framebuffer against config width/height
@ 2019-09-19 3:30 jsanka-sgV2jX0FEOL9JmXXK+q4OQ
2019-09-19 6:44 ` Neil Armstrong
0 siblings, 1 reply; 3+ messages in thread
From: jsanka-sgV2jX0FEOL9JmXXK+q4OQ @ 2019-09-19 3:30 UTC (permalink / raw)
To: dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW,
freedreno-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW,
linux-arm-msm-u79uwXL29TY76Z2rM5mHXA
Cc: sean-p7yTbzM4H96eqtR555YLDQ, 'Rob Clark',
'Sean Paul'
[-- Attachment #1.1: Type: text/plain, Size: 1869 bytes --]
Hello All,
I bumped into the below check [1] enforced in drm_framebuffer creation which
checks the requested framebuffer width/height parameters against the drm
mode config width/height limits. As I understand, drm_mode_config: min/max
width/height indicate the upper and lower bounds of the display panel
(drm_connector) resolutions the DRM device can support. But the pixel
processing pipeline can apply cropping/scaling transformations on much
larger input framebuffers and flip the buffers within the display
resolution. Such configurations are very common and the final resolution
will be still within drm_mode_config bounds. So I believe the checks should
be relaxed / removed from the drm_framebuffer creation api's.
If my understanding is incorrect, could somehow explain the motivation
behind having these checks here?
Thanks and Regards,
Jeykumar S.
[1]
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/driv
ers/gpu/drm/drm_framebuffer.c?h=v5.3#n303
struct drm_framebuffer *
drm_internal_framebuffer_create(struct drm_device *dev,
const struct drm_mode_fb_cmd2 *r,
struct drm_file *file_priv)
{
/* snip */
if ((config->min_width > r->width) || (r->width >
config->max_width)) {
DRM_DEBUG_KMS("bad framebuffer width %d, should be >= %d &&
<= %d\n",
r->width, config->min_width, config->max_width);
return ERR_PTR(-EINVAL);
}
if ((config->min_height > r->height) || (r->height >
config->max_height)) {
DRM_DEBUG_KMS("bad framebuffer height %d, should be >= %d &&
<= %d\n",
r->height, config->min_height, config->max_height);
return ERR_PTR(-EINVAL);
}
/* snip */
}
[-- Attachment #1.2: Type: text/html, Size: 10149 bytes --]
[-- Attachment #2: Type: text/plain, Size: 159 bytes --]
_______________________________________________
Freedreno mailing list
Freedreno@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/freedreno
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [RFC] checking drm_framebuffer against config width/height
2019-09-19 3:30 [RFC] checking drm_framebuffer against config width/height jsanka-sgV2jX0FEOL9JmXXK+q4OQ
@ 2019-09-19 6:44 ` Neil Armstrong
0 siblings, 0 replies; 3+ messages in thread
From: Neil Armstrong @ 2019-09-19 6:44 UTC (permalink / raw)
To: jsanka, dri-devel, freedreno, linux-arm-msm; +Cc: sean, 'Sean Paul'
Hi,
On 19/09/2019 05:30, jsanka@codeaurora.org wrote:
> Hello All,
>
> I bumped into the below check [1] enforced in drm_framebuffer creation which checks the requested framebuffer width/height parameters against the drm mode config width/height limits. As I understand, drm_mode_config: min/max width/height indicate the upper and lower bounds of the display panel (drm_connector) resolutions the DRM device can support. But the pixel processing pipeline can apply cropping/scaling transformations on much larger input framebuffers and flip the buffers within the display resolution. Such configurations are very common and the final resolution will be still within drm_mode_config bounds. So I believe the checks should be relaxed / removed from the drm_framebuffer creation api’s.
>
>
>
> If my understanding is incorrect, could somehow explain the motivation behind having these checks here?
I already reported this a few months ago, here is the log of the discussion :
https://patchwork.kernel.org/patch/10625707/
TL;DR it should be removed but these checks should be moved to control max screen size
in atomic_commit paths.
I planned to fix this, but haven't found time yet...
Neil
>
>
>
> Thanks and Regards,
>
> Jeykumar S.
>
>
>
> [1] https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/drivers/gpu/drm/drm_framebuffer.c?h=v5.3#n303
>
>
>
> *struct*drm_framebuffer *
>
> *drm_internal_framebuffer_create*(*struct*drm_device *dev,
>
> *const**struct*drm_mode_fb_cmd2 *r,
>
> *struct*drm_file *file_priv)
>
> {
>
> /* snip */
>
>
>
> *if*((config->min_width > r->width) || (r->width > config->max_width)) {
>
> DRM_DEBUG_KMS("bad framebuffer width %d, should be >= %d && <= %d\n",
>
> r->width, config->min_width, config->max_width);
>
> *return*ERR_PTR(-EINVAL);
>
> }
>
> *if*((config->min_height > r->height) || (r->height > config->max_height)) {
>
> DRM_DEBUG_KMS("bad framebuffer height %d, should be >= %d && <= %d\n",
>
> r->height, config->min_height, config->max_height);
>
> *return*ERR_PTR(-EINVAL);
>
> }
>
> /* snip */
>
> }
>
>
>
>
> _______________________________________________
> dri-devel mailing list
> dri-devel@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/dri-devel
>
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [RFC] checking drm_framebuffer against config width/height
@ 2019-09-19 6:44 ` Neil Armstrong
0 siblings, 0 replies; 3+ messages in thread
From: Neil Armstrong @ 2019-09-19 6:44 UTC (permalink / raw)
To: jsanka-sgV2jX0FEOL9JmXXK+q4OQ,
dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW,
freedreno-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW,
linux-arm-msm-u79uwXL29TY76Z2rM5mHXA
Cc: 'Sean Paul', sean-p7yTbzM4H96eqtR555YLDQ
Hi,
On 19/09/2019 05:30, jsanka@codeaurora.org wrote:
> Hello All,
>
> I bumped into the below check [1] enforced in drm_framebuffer creation which checks the requested framebuffer width/height parameters against the drm mode config width/height limits. As I understand, drm_mode_config: min/max width/height indicate the upper and lower bounds of the display panel (drm_connector) resolutions the DRM device can support. But the pixel processing pipeline can apply cropping/scaling transformations on much larger input framebuffers and flip the buffers within the display resolution. Such configurations are very common and the final resolution will be still within drm_mode_config bounds. So I believe the checks should be relaxed / removed from the drm_framebuffer creation api’s.
>
>
>
> If my understanding is incorrect, could somehow explain the motivation behind having these checks here?
I already reported this a few months ago, here is the log of the discussion :
https://patchwork.kernel.org/patch/10625707/
TL;DR it should be removed but these checks should be moved to control max screen size
in atomic_commit paths.
I planned to fix this, but haven't found time yet...
Neil
>
>
>
> Thanks and Regards,
>
> Jeykumar S.
>
>
>
> [1] https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/drivers/gpu/drm/drm_framebuffer.c?h=v5.3#n303
>
>
>
> *struct*drm_framebuffer *
>
> *drm_internal_framebuffer_create*(*struct*drm_device *dev,
>
> *const**struct*drm_mode_fb_cmd2 *r,
>
> *struct*drm_file *file_priv)
>
> {
>
> /* snip */
>
>
>
> *if*((config->min_width > r->width) || (r->width > config->max_width)) {
>
> DRM_DEBUG_KMS("bad framebuffer width %d, should be >= %d && <= %d\n",
>
> r->width, config->min_width, config->max_width);
>
> *return*ERR_PTR(-EINVAL);
>
> }
>
> *if*((config->min_height > r->height) || (r->height > config->max_height)) {
>
> DRM_DEBUG_KMS("bad framebuffer height %d, should be >= %d && <= %d\n",
>
> r->height, config->min_height, config->max_height);
>
> *return*ERR_PTR(-EINVAL);
>
> }
>
> /* snip */
>
> }
>
>
>
>
> _______________________________________________
> dri-devel mailing list
> dri-devel@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/dri-devel
>
_______________________________________________
Freedreno mailing list
Freedreno@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/freedreno
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2019-09-19 6:44 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2019-09-19 3:30 [RFC] checking drm_framebuffer against config width/height jsanka-sgV2jX0FEOL9JmXXK+q4OQ
2019-09-19 6:44 ` Neil Armstrong
2019-09-19 6:44 ` Neil Armstrong
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.