[PATCH] Re: wrong display size

Steven Newbury steve at snewbury.org.uk
Fri Aug 5 11:07:41 UTC 2016


On Tue, 2016-06-14 at 23:46 -0400, Felix Miata wrote:
> Sebastian Gutzwiller composed on 2016-06-14 11:10 (UTC+0200):
> 
> > I have a LCD display (115 mm x 86 mm) with VGA resolution (640 x
> > 480)
> > connected over LVDS with an Intel Atom N450.
> 
> > After upgrading from Ubuntu 10.04 to 14.04  I only see the upper
> > left
> > detail of the whole screen (see attachment 'display_picture.jpg').
> 
> > The Xorg log (see attachment 'Xubuntu.14.04.4.LTS.Xorg.0.log')
> > reported
> > a physical screen size of 270 mm x 203 mm which is pretty much the
> > size
> > of the whole screen.
> 
> > Any suggestions?
> 
> Something to try (I don't have any Intel Atoms to test on):
> 
> 1.login on a vtty
> 2.sudo apt-get purge xserver-xorg-video-intel
> 3.reboot (or restart X xserver)
> 
> Reason: sometime post-server 1.16.x. the generic modesetting driver
> was moved 
> directly into the server itself. It's supposed to be competent for
> all 
> non-ancient mainstream gfxchips, a substitute for chip-specific
> drivers. If 
> it doesn't help, it's up to you whether to bother reinstalling the
> intel driver.
I made this patch a few years ago, still applies:

--- hw/xfree86/ddc/interpret_edid.c~	2013-10-03 07:25:56.000000000 +0100
+++ hw/xfree86/ddc/interpret_edid.c	2013-10-03 07:48:55.168972224 +0100
@@ -144,6 +144,15 @@
 
         xf86ForEachDetailedBlock(m, handle_detailed_hvsize, &p);
 
+        if ((p.real_hsize != m->features.hsize ) ||
+                (p.real_vsize != m->features.vsize)) {
+            xf86Msg(X_INFO, "Inconsistency in detected Display Size:\n");
+            xf86Msg(X_INFO, "Monitor features physical dimensions %dx%d mm\n",
+                m->features.hsize, m->features.vsize);
+            xf86Msg(X_INFO, "Detailed timings physical dimensions %dx%d mm\n",
+                p.real_hsize, p.real_vsize);
+        }
+
         if (!p.real_hsize || !p.real_vsize) {
             m->features.hsize = m->features.vsize = 0;
         }
--- hw/xfree86/modes/xf86Crtc.c.orig	2013-11-01 16:59:03.904169898 +0000
+++ hw/xfree86/modes/xf86Crtc.c	2013-11-01 17:06:28.387359579 +0000
@@ -3052,8 +3052,15 @@
              (det_mon->section.d_timings.v_size * 12)) &&
             ((det_mon->section.d_timings.v_size * 5) <
              (det_mon->section.d_timings.h_size * 12))) {
-            p->output->mm_width = det_mon->section.d_timings.h_size;
-            p->output->mm_height = det_mon->section.d_timings.v_size;
+            if (!(p->output->conf_monitor &&
+                (p->output->conf_monitor->mon_width > 0 &&
+                    p->output->conf_monitor->mon_height > 0))) {
+                /*
+                 * Do not update size if user configured DisplaySize
+                 */
+                p->output->mm_width = det_mon->section.d_timings.h_size;
+                p->output->mm_height = det_mon->section.d_timings.v_size;
+            }
             p->ret = TRUE;
         } else
             xf86DrvMsg(p->output->scrn->scrnIndex, X_WARNING,
@@ -3109,6 +3116,15 @@
     xf86OutputSetEDIDProperty(output, edid_mon ? edid_mon->rawData : NULL,
                               size);
 #endif
+    if (output->conf_monitor &&
+            (output->conf_monitor->mon_width > 0 &&
+                output->conf_monitor->mon_height > 0)) {
+            /*
+             * Prefer user configured DisplaySize
+             */
+            output->mm_width = output->conf_monitor->mon_width;
+            output->mm_height = output->conf_monitor->mon_height;
+    }
 
     if (edid_mon) {
 
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 181 bytes
Desc: This is a digitally signed message part
URL: <https://lists.x.org/archives/xorg/attachments/20160805/0ec1fe49/attachment.sig>


More information about the xorg mailing list