[Bug 90842] sna driver ignores DisplaySize setting in xorg.conf

bugzilla-daemon at freedesktop.org bugzilla-daemon at freedesktop.org
Thu Jun 4 03:18:27 PDT 2015


https://bugs.freedesktop.org/show_bug.cgi?id=90842

--- Comment #5 from Chris Wilson <chris at chris-wilson.co.uk> ---
Individual output sizes are reported via RandR. Screen in X parlance refers to
a single surface that may be split across multiple monitors.

The message you are quoting is from:

xf86RandR12CreateScreenResources():
        /*
         * Compute physical size of screen
         */
        if (monitorResolution) {
            mmWidth = width * 25.4 / monitorResolution;
            mmHeight = height * 25.4 / monitorResolution;
        }
        else {
            xf86OutputPtr output = xf86CompatOutput(pScrn);

            if (output &&
                output->conf_monitor &&
                (output->conf_monitor->mon_width > 0 && 
                 output->conf_monitor->mon_height > 0)) {
                /*
                 * Prefer user configured DisplaySize
                 */
                mmWidth = output->conf_monitor->mon_width;
                mmHeight = output->conf_monitor->mon_height;
            }
            else {
                /*
                 * Otherwise, just set the screen to DEFAULT_DPI
                 */
                mmWidth = width * 25.4 / DEFAULT_DPI;
                mmHeight = height * 25.4 / DEFAULT_DPI;
            }
        }
        xf86DrvMsg(pScrn->scrnIndex, X_INFO,
                   "Setting screen physical size to %d x %d\n",
                   mmWidth, mmHeight);

so yes, you can indeed only set it once and only if you guess what X chooses to
use for the backwards compatible output. And screen dpi is just a fake number,
and there is a very long and heated bug about that.

When output->conf_monitor is set we get

    if (output->conf_monitor) {
        xf86DrvMsg(output->scrn->scrnIndex, X_INFO,
                   "Output %s using monitor section %s\n",
                   output->name, output->conf_monitor->mon_identifier);
        xf86ProcessOptions(output->scrn->scrnIndex,
                           output->conf_monitor->mon_option_lst,
                           output->options);
    }
    else
        xf86DrvMsg(output->scrn->scrnIndex, X_INFO,
                   "Output %s has no monitor section\n", output->name);

i.e. [     9.527] (II) intel(0): Output LVDS1 using monitor section
Notebook-Display

Since xf86CompatOutput() should never return NULL, the implication has to be
that it is using a different CompatOutput. We set things up such that it should
always choose the panel as the CompatOutput....

-- 
You are receiving this mail because:
You are the QA Contact for the bug.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freedesktop.org/archives/intel-gfx-bugs/attachments/20150604/dbdca0ac/attachment-0001.html>


More information about the intel-gfx-bugs mailing list