drm/i915: Increase max texture to 16k for gen9+
diff mbox

Message ID 20171207092600.3727-1-alex.tu@canonical.com
State New
Headers show

Commit Message

Alex Tu Dec. 7, 2017, 9:26 a.m. UTC
Rrefer to another patch [1] on mesa to extend width/height to 16384.
For issue :
 - https://bugs.freedesktop.org/show_bug.cgi?id=102508
 - LP: #1714178 Triple monitor display failed with Dell Dock (HiDPI)

[1] https://patchwork.freedesktop.org/patch/124918/

Signed-off-by: Alex Tu <alex.tu@canonical.com>
---
 drivers/gpu/drm/i915/intel_display.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

Comments

Chris Wilson Dec. 7, 2017, 9:32 a.m. UTC | #1
Quoting Alex Tu (2017-12-07 09:26:00)
> Rrefer to another patch [1] on mesa to extend width/height to 16384.
> For issue :
>  - https://bugs.freedesktop.org/show_bug.cgi?id=102508
>  - LP: #1714178 Triple monitor display failed with Dell Dock (HiDPI)
> 
> [1] https://patchwork.freedesktop.org/patch/124918/
> 
> Signed-off-by: Alex Tu <alex.tu@canonical.com>
> ---
>  drivers/gpu/drm/i915/intel_display.c | 6 +++---
>  1 file changed, 3 insertions(+), 3 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
> index 47a2f6acee50..556fa57b18b8 100644
> --- a/drivers/gpu/drm/i915/intel_display.c
> +++ b/drivers/gpu/drm/i915/intel_display.c
> @@ -13905,7 +13905,7 @@ u32 intel_fb_pitch_limit(struct drm_i915_private *dev_priv,
>                 /* "The stride in bytes must not exceed the of the size of 8K
>                  *  pixels and 32K bytes."
>                  */
> -               return min(8192 * cpp, 32768);
> +               return min(16384 * cpp, 65536);
>         } else if (gen >= 5 && !HAS_GMCH_DISPLAY(dev_priv)) {
>                 return 32*1024;
>         } else if (gen >= 4) {
> @@ -14604,8 +14604,8 @@ int intel_modeset_init(struct drm_device *dev)
>                 dev->mode_config.max_width = 4096;
>                 dev->mode_config.max_height = 4096;
>         } else {
> -               dev->mode_config.max_width = 8192;
> -               dev->mode_config.max_height = 8192;
> +               dev->mode_config.max_width = 16384;
> +               dev->mode_config.max_height = 16384;

These are nothing to do with texture size, but single CRTC bounds.
-Chris
Alex Tu Dec. 7, 2017, 10:09 a.m. UTC | #2
Thanks for comment.
I'm not familiar with that, so just followed the patch in mes
https://patchwork.freedesktop.org/patch/124918/a.

How about change subtitle to "drm/i915: Increase max CRTC bounds to 16k for
gen9+"?

On Thu, Dec 7, 2017 at 5:32 PM, Chris Wilson <chris@chris-wilson.co.uk>
wrote:

> Quoting Alex Tu (2017-12-07 09:26:00)
> > Rrefer to another patch [1] on mesa to extend width/height to 16384.
> > For issue :
> >  - https://bugs.freedesktop.org/show_bug.cgi?id=102508
> >  - LP: #1714178 Triple monitor display failed with Dell Dock (HiDPI)
> >
> > [1] https://patchwork.freedesktop.org/patch/124918/
> >
> > Signed-off-by: Alex Tu <alex.tu@canonical.com>
> > ---
> >  drivers/gpu/drm/i915/intel_display.c | 6 +++---
> >  1 file changed, 3 insertions(+), 3 deletions(-)
> >
> > diff --git a/drivers/gpu/drm/i915/intel_display.c
> b/drivers/gpu/drm/i915/intel_display.c
> > index 47a2f6acee50..556fa57b18b8 100644
> > --- a/drivers/gpu/drm/i915/intel_display.c
> > +++ b/drivers/gpu/drm/i915/intel_display.c
> > @@ -13905,7 +13905,7 @@ u32 intel_fb_pitch_limit(struct drm_i915_private
> *dev_priv,
> >                 /* "The stride in bytes must not exceed the of the size
> of 8K
> >                  *  pixels and 32K bytes."
> >                  */
> > -               return min(8192 * cpp, 32768);
> > +               return min(16384 * cpp, 65536);
> >         } else if (gen >= 5 && !HAS_GMCH_DISPLAY(dev_priv)) {
> >                 return 32*1024;
> >         } else if (gen >= 4) {
> > @@ -14604,8 +14604,8 @@ int intel_modeset_init(struct drm_device *dev)
> >                 dev->mode_config.max_width = 4096;
> >                 dev->mode_config.max_height = 4096;
> >         } else {
> > -               dev->mode_config.max_width = 8192;
> > -               dev->mode_config.max_height = 8192;
> > +               dev->mode_config.max_width = 16384;
> > +               dev->mode_config.max_height = 16384;
>
> These are nothing to do with texture size, but single CRTC bounds.
> -Chris
>
Daniel Vetter Dec. 7, 2017, 11:03 a.m. UTC | #3
On Thu, Dec 07, 2017 at 06:09:17PM +0800, Alex Tu wrote:
> Thanks for comment.
> I'm not familiar with that, so just followed the patch in mes
> https://patchwork.freedesktop.org/patch/124918/a.
> 
> How about change subtitle to "drm/i915: Increase max CRTC bounds to 16k for
> gen9+"?

The render side of the gpu has nothing to do with the display side. Just
because render has higher limits doesn't mean the same limits apply to the
display side. We've had plenty of chips where they don't match.

So trying to justify a CRTC limit change with a mesa change is bogus.
-Daniel
 
> On Thu, Dec 7, 2017 at 5:32 PM, Chris Wilson <chris@chris-wilson.co.uk>
> wrote:
> 
> > Quoting Alex Tu (2017-12-07 09:26:00)
> > > Rrefer to another patch [1] on mesa to extend width/height to 16384.
> > > For issue :
> > >  - https://bugs.freedesktop.org/show_bug.cgi?id=102508
> > >  - LP: #1714178 Triple monitor display failed with Dell Dock (HiDPI)
> > >
> > > [1] https://patchwork.freedesktop.org/patch/124918/
> > >
> > > Signed-off-by: Alex Tu <alex.tu@canonical.com>
> > > ---
> > >  drivers/gpu/drm/i915/intel_display.c | 6 +++---
> > >  1 file changed, 3 insertions(+), 3 deletions(-)
> > >
> > > diff --git a/drivers/gpu/drm/i915/intel_display.c
> > b/drivers/gpu/drm/i915/intel_display.c
> > > index 47a2f6acee50..556fa57b18b8 100644
> > > --- a/drivers/gpu/drm/i915/intel_display.c
> > > +++ b/drivers/gpu/drm/i915/intel_display.c
> > > @@ -13905,7 +13905,7 @@ u32 intel_fb_pitch_limit(struct drm_i915_private
> > *dev_priv,
> > >                 /* "The stride in bytes must not exceed the of the size
> > of 8K
> > >                  *  pixels and 32K bytes."
> > >                  */
> > > -               return min(8192 * cpp, 32768);
> > > +               return min(16384 * cpp, 65536);
> > >         } else if (gen >= 5 && !HAS_GMCH_DISPLAY(dev_priv)) {
> > >                 return 32*1024;
> > >         } else if (gen >= 4) {
> > > @@ -14604,8 +14604,8 @@ int intel_modeset_init(struct drm_device *dev)
> > >                 dev->mode_config.max_width = 4096;
> > >                 dev->mode_config.max_height = 4096;
> > >         } else {
> > > -               dev->mode_config.max_width = 8192;
> > > -               dev->mode_config.max_height = 8192;
> > > +               dev->mode_config.max_width = 16384;
> > > +               dev->mode_config.max_height = 16384;
> >
> > These are nothing to do with texture size, but single CRTC bounds.
> > -Chris
> >

> _______________________________________________
> Intel-gfx mailing list
> Intel-gfx@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/intel-gfx
Chris Wilson Dec. 7, 2017, 11:11 a.m. UTC | #4
Quoting Alex Tu (2017-12-07 09:26:00)
> Rrefer to another patch [1] on mesa to extend width/height to 16384.
> For issue :
>  - https://bugs.freedesktop.org/show_bug.cgi?id=102508
>  - LP: #1714178 Triple monitor display failed with Dell Dock (HiDPI)
> 
> [1] https://patchwork.freedesktop.org/patch/124918/
> 
> Signed-off-by: Alex Tu <alex.tu@canonical.com>

For -intel, I just used RandR to split the fb into per-crtc-pixmaps.
However, Kristian has suggested another approach where we carve
per-crtc-pixmaps/-fb out of the global frontbuffer, which allows us to
completely get around the stride limits of scanout and have no
synchronisation penalty. We still have to create new per-crtc-fb for a
flip, just like with RandR but we can avoid the extra blit.

How one feeds such details through gbm into -modesetting, I have no
idea.
-Chris
Joonas Lahtinen Dec. 7, 2017, 1:25 p.m. UTC | #5
+ Ville as Jani is OoO

On Thu, 2017-12-07 at 17:26 +0800, Alex Tu wrote:
> Rrefer to another patch [1] on mesa to extend width/height to 16384.
> For issue :
>  - https://bugs.freedesktop.org/show_bug.cgi?id=102508
>  - LP: #1714178 Triple monitor display failed with Dell Dock (HiDPI)
> 
> [1] https://patchwork.freedesktop.org/patch/124918/
> 
> Signed-off-by: Alex Tu <alex.tu@canonical.com>
> ---
>  drivers/gpu/drm/i915/intel_display.c | 6 +++---
>  1 file changed, 3 insertions(+), 3 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
> index 47a2f6acee50..556fa57b18b8 100644
> --- a/drivers/gpu/drm/i915/intel_display.c
> +++ b/drivers/gpu/drm/i915/intel_display.c
> @@ -13905,7 +13905,7 @@ u32 intel_fb_pitch_limit(struct drm_i915_private *dev_priv,
>  		/* "The stride in bytes must not exceed the of the size of 8K
>  		 *  pixels and 32K bytes."
>  		 */
> -		return min(8192 * cpp, 32768);
> +		return min(16384 * cpp, 65536);
>  	} else if (gen >= 5 && !HAS_GMCH_DISPLAY(dev_priv)) {
>  		return 32*1024;
>  	} else if (gen >= 4) {
> @@ -14604,8 +14604,8 @@ int intel_modeset_init(struct drm_device *dev)
>  		dev->mode_config.max_width = 4096;
>  		dev->mode_config.max_height = 4096;
>  	} else {
> -		dev->mode_config.max_width = 8192;
> -		dev->mode_config.max_height = 8192;
> +		dev->mode_config.max_width = 16384;
> +		dev->mode_config.max_height = 16384;
>  	}
>  
>  	if (IS_I845G(dev_priv) || IS_I865G(dev_priv)) {
Ville Syrjälä Dec. 7, 2017, 3:32 p.m. UTC | #6
On Thu, Dec 07, 2017 at 05:26:00PM +0800, Alex Tu wrote:
> Rrefer to another patch [1] on mesa to extend width/height to 16384.
> For issue :
>  - https://bugs.freedesktop.org/show_bug.cgi?id=102508
>  - LP: #1714178 Triple monitor display failed with Dell Dock (HiDPI)
> 
> [1] https://patchwork.freedesktop.org/patch/124918/
> 
> Signed-off-by: Alex Tu <alex.tu@canonical.com>
> ---
>  drivers/gpu/drm/i915/intel_display.c | 6 +++---
>  1 file changed, 3 insertions(+), 3 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
> index 47a2f6acee50..556fa57b18b8 100644
> --- a/drivers/gpu/drm/i915/intel_display.c
> +++ b/drivers/gpu/drm/i915/intel_display.c
> @@ -13905,7 +13905,7 @@ u32 intel_fb_pitch_limit(struct drm_i915_private *dev_priv,
>  		/* "The stride in bytes must not exceed the of the size of 8K
>  		 *  pixels and 32K bytes."

The spec queote clearly says the patch is wrong. Either that or the spec
quote is outdated.

>  		 */
> -		return min(8192 * cpp, 32768);
> +		return min(16384 * cpp, 65536);
>  	} else if (gen >= 5 && !HAS_GMCH_DISPLAY(dev_priv)) {
>  		return 32*1024;
>  	} else if (gen >= 4) {
> @@ -14604,8 +14604,8 @@ int intel_modeset_init(struct drm_device *dev)
>  		dev->mode_config.max_width = 4096;
>  		dev->mode_config.max_height = 4096;
>  	} else {
> -		dev->mode_config.max_width = 8192;
> -		dev->mode_config.max_height = 8192;
> +		dev->mode_config.max_width = 16384;
> +		dev->mode_config.max_height = 16384;

Even if this would be correct (which it's not for most platforms at
least, not quite sure about the very latest hardware), anyone doing
this should at least do a cursory check of the relevant math in the
driver to make seure we don't end up with integer overflows.

>  	}
>  
>  	if (IS_I845G(dev_priv) || IS_I865G(dev_priv)) {
> -- 
> 2.11.0
> 
> _______________________________________________
> Intel-gfx mailing list
> Intel-gfx@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/intel-gfx
Alex Tu Dec. 8, 2017, 3:24 a.m. UTC | #7
looks it's not that easy as I thought.
This change is for https://bugs.freedesktop.org/show_bug.cgi?id=102508 ,
and the hardware configuration is

* 00:02.0 VGA compatible controller [0300]: Intel Corporation Device
[8086:591d] (rev 04)
* Dell Thunderbolt BME dock :
http://www.dell.com/support/article/us/en/04/sln301105/dell-thunderbolt-dock--tb16--information-and-specifications?lang=en
* internal native monitor is 4K, another 2 4K monitors are plugged behind
BME dock

This patch could let this setting work, but looks it not the correct way.
Not see the the relevant math in original code of commit b321803dfb and
ac484963f9 .
Does someone know how the original value 8192 be calculated out?
So that the way might could be followed for this new change.

Thanks.

On Thu, Dec 7, 2017 at 11:32 PM, Ville Syrjälä <
ville.syrjala@linux.intel.com> wrote:

> On Thu, Dec 07, 2017 at 05:26:00PM +0800, Alex Tu wrote:
> > Rrefer to another patch [1] on mesa to extend width/height to 16384.
> > For issue :
> >  - https://bugs.freedesktop.org/show_bug.cgi?id=102508
> >  - LP: #1714178 Triple monitor display failed with Dell Dock (HiDPI)
> >
> > [1] https://patchwork.freedesktop.org/patch/124918/
> >
> > Signed-off-by: Alex Tu <alex.tu@canonical.com>
> > ---
> >  drivers/gpu/drm/i915/intel_display.c | 6 +++---
> >  1 file changed, 3 insertions(+), 3 deletions(-)
> >
> > diff --git a/drivers/gpu/drm/i915/intel_display.c
> b/drivers/gpu/drm/i915/intel_display.c
> > index 47a2f6acee50..556fa57b18b8 100644
> > --- a/drivers/gpu/drm/i915/intel_display.c
> > +++ b/drivers/gpu/drm/i915/intel_display.c
> > @@ -13905,7 +13905,7 @@ u32 intel_fb_pitch_limit(struct drm_i915_private
> *dev_priv,
> >               /* "The stride in bytes must not exceed the of the size of
> 8K
> >                *  pixels and 32K bytes."
>
> The spec queote clearly says the patch is wrong. Either that or the spec
> quote is outdated.
>
> >                */
> > -             return min(8192 * cpp, 32768);
> > +             return min(16384 * cpp, 65536);
> >       } else if (gen >= 5 && !HAS_GMCH_DISPLAY(dev_priv)) {
> >               return 32*1024;
> >       } else if (gen >= 4) {
> > @@ -14604,8 +14604,8 @@ int intel_modeset_init(struct drm_device *dev)
> >               dev->mode_config.max_width = 4096;
> >               dev->mode_config.max_height = 4096;
> >       } else {
> > -             dev->mode_config.max_width = 8192;
> > -             dev->mode_config.max_height = 8192;
> > +             dev->mode_config.max_width = 16384;
> > +             dev->mode_config.max_height = 16384;
>
> Even if this would be correct (which it's not for most platforms at
> least, not quite sure about the very latest hardware), anyone doing
> this should at least do a cursory check of the relevant math in the
> driver to make seure we don't end up with integer overflows.
>
> >       }
> >
> >       if (IS_I845G(dev_priv) || IS_I865G(dev_priv)) {
> > --
> > 2.11.0
> >
> > _______________________________________________
> > Intel-gfx mailing list
> > Intel-gfx@lists.freedesktop.org
> > https://lists.freedesktop.org/mailman/listinfo/intel-gfx
>
> --
> Ville Syrjälä
> Intel OTC
>

Patch
diff mbox

diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
index 47a2f6acee50..556fa57b18b8 100644
--- a/drivers/gpu/drm/i915/intel_display.c
+++ b/drivers/gpu/drm/i915/intel_display.c
@@ -13905,7 +13905,7 @@  u32 intel_fb_pitch_limit(struct drm_i915_private *dev_priv,
 		/* "The stride in bytes must not exceed the of the size of 8K
 		 *  pixels and 32K bytes."
 		 */
-		return min(8192 * cpp, 32768);
+		return min(16384 * cpp, 65536);
 	} else if (gen >= 5 && !HAS_GMCH_DISPLAY(dev_priv)) {
 		return 32*1024;
 	} else if (gen >= 4) {
@@ -14604,8 +14604,8 @@  int intel_modeset_init(struct drm_device *dev)
 		dev->mode_config.max_width = 4096;
 		dev->mode_config.max_height = 4096;
 	} else {
-		dev->mode_config.max_width = 8192;
-		dev->mode_config.max_height = 8192;
+		dev->mode_config.max_width = 16384;
+		dev->mode_config.max_height = 16384;
 	}
 
 	if (IS_I845G(dev_priv) || IS_I865G(dev_priv)) {