Commit Graph

125 Commits

Author SHA1 Message Date
Edward Sheldrake f4bbbd1dfe Fix man page formatting
Two option sections were not starting at the beginning of a new line.
2011-08-01 15:37:29 +01:00
Chris Wilson 7538be3315 dri: Enable triple-bufferred pageflips
By popular demand.

Triple-buffering trade-offs output latency versus jitter. By having a
pre-rendered frame ready to swap in following a pageflip, we avoid the
scenario where the latency between receiving the flip complete signal
from the kernel, waking up the vsynced application, it render the new
frame and then for the server to process the swap request is greater
than the frame interval, causing us to miss the vblank. The result is
that application can become frame-locked to 30fps. Instead, we report to
the application that the first frame swap is immediately completed,
supply a new back buffer (or else the rendering would be blocked on
waiting for the front-buffer to be swapped away from the scanout) and
let them proceed to render the second frame. The second frame is added
to the swap queue, and the client throttled to vrefresh. (If the client
missed the vblank, the swap queue is empty and the client is immediately
woken again, whilst the pageflip is pending.)

Note, for practical reasons this only applies to page-flipping, for
example, calls to glXSwapBuffer() on fullscreen applications.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2011-07-11 22:13:01 +01:00
Chris Wilson 265d94e0aa sna: Add zaphod support
Zaphod support is a rudimentary method for creating an Xserver with
multiple screens from a single device. The Device is instantiated, with
a duplication of its resources, as many as required up to a maximum of
the number of its outputs, and each instance is attached to a Screen
and added to the ServerLayout. A Device can be bound to a selection of
outputs using a comma separated list of RandR names.

Note: in general, this is not the preferred solution! And will be
superseded by per-crtc-pixmaps in RandR-1.4.

For example, the following xorg.conf fragment creates an XServer with
two screens, one attached to the LVDS panel on the laptop, and the other
to any external output:

Section "Device"
	Identifier "Intel0"
	Driver     "intel"
	BusID	   "PCI:0:2:0"
	Option     "ZaphodHeads" "LVDS1"
	Screen     0
EndSection

Section "Device"
	Identifier "Intel1"
	Driver     "intel"
	BusID	   "PCI:0:2:0"
	Option     "ZaphodHeads" "DVI1,VGA1"
	Screen     1
EndSection

Section "Screen"
	Identifier "Screen0"
	Device     "Intel0"
EndSection

Section "Screen"
	Identifier "Screen1"
	Device     "Intel1"
EndSection

Section "ServerLayout"
	Identifier "default"
	Screen     "Screen0"
	Screen     "Screen1"
EndSection

Based on a patch by Ben Skegs <bskeggs@redhat.com>

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2011-06-07 16:54:57 +01:00
Chris Wilson bcef98af56 sna: Introduce a new acceleration model.
The premise is that switching between rings (i.e. the BLT and
RENDER rings) on SandyBridge imposes a large latency overhead whilst
rendering. The cause is that in order to switch rings, we need to split
the batch earlier than is desired and to add serialisation between the
rings. Both of which incur large overhead.

By switching to using a pure 3D blit engine (ok, not so pure as the BLT
engine still has uses for the core drawing model which can not be easily
represented without a combinatorial explosion of shaders) we can take
advantage of additional efficiencies, such as relative relocations, that
have been incorporated into recent hardware advances. However, even
older hardware performs better from avoiding the implicit context
switches and from the batching efficiency of the 3D pipeline...

But this is X, and PolyGlyphBlt still exists and remains in use. So for
the operations that are not worth accelerating in hardware, we introduce a
shadow buffer mechanism through out and reintroduce pixmap migration.
Doing this efficiently is the cornerstone of ensuring that we do exploit
the increased potential of recent hardware for running old applications and
environments (i.e. so that the latest and greatest chip is actually faster
than gen2!)

For the curious, sna is SandyBridge's New Acceleration. If you are
running older chipsets and welcome the performance increase offered by
this patch, then you may choose to call it Snazzy instead.

Speedups
========
 gen3           firefox-fishtank  1203584.56 (1203842.75 0.01%) -> 85561.71 (125146.44 14.87%): 14.07x speedup
 gen5             grads-heat-map  3385.42 (3489.73 1.44%) -> 350.29 (350.75 0.18%):  9.66x speedup
 gen3          xfce4-terminal-a1  4179.02 (4180.09 0.06%) -> 503.90 (531.88 4.48%):  8.29x speedup
 gen4             grads-heat-map  2458.66 (2826.34 4.64%) -> 348.82 (349.20 0.29%):  7.05x speedup
 gen3             grads-heat-map  1443.33 (1445.32 0.09%) -> 298.55 (298.76 0.05%):  4.83x speedup
 gen3             swfdec-youtube  3836.14 (3894.14 0.95%) -> 889.84 (979.56 5.99%):  4.31x speedup
 gen6             grads-heat-map  742.11 (744.44 0.15%) -> 172.51 (172.93 0.20%):  4.30x speedup
 gen3          firefox-talos-svg  71740.44 (72370.13 0.59%) -> 21959.29 (21995.09 0.68%):  3.27x speedup
 gen5                       gvim  8045.51 (8071.47 0.17%) -> 2589.38 (3246.78 10.74%):  3.11x speedup
 gen6                    poppler  3800.78 (3817.92 0.24%) -> 1227.36 (1230.12 0.30%):  3.10x speedup
 gen6         gnome-terminal-vim  9106.84 (9111.56 0.03%) -> 3459.49 (3478.52 0.25%):  2.63x speedup
 gen5              midori-zoomed  9564.53 (9586.58 0.17%) -> 3677.73 (3837.02 2.02%):  2.60x speedup
 gen5         gnome-terminal-vim  38167.25 (38215.82 0.08%) -> 14901.09 (14902.28 0.01%):  2.56x speedup
 gen5                    poppler  13575.66 (13605.04 0.16%) -> 5554.27 (5555.84 0.01%):  2.44x speedup
 gen5         swfdec-giant-steps  8941.61 (8988.72 0.52%) -> 3851.98 (3871.01 0.93%):  2.32x speedup
 gen5          xfce4-terminal-a1  18956.60 (18986.90 0.07%) -> 8362.75 (8365.70 0.01%):  2.27x speedup
 gen5           firefox-fishtank  88750.31 (88858.23 0.14%) -> 39164.57 (39835.54 0.80%):  2.27x speedup
 gen3              midori-zoomed  2392.13 (2397.82 0.14%) -> 1109.96 (1303.10 30.35%):  2.16x speedup
 gen6                       gvim  2510.34 (2513.34 0.20%) -> 1200.76 (1204.30 0.22%):  2.09x speedup
 gen5       firefox-planet-gnome  40478.16 (40565.68 0.09%) -> 19606.22 (19648.79 0.16%):  2.06x speedup
 gen5       gnome-system-monitor  10344.47 (10385.62 0.29%) -> 5136.69 (5256.85 1.15%):  2.01x speedup
 gen3                    poppler  2595.23 (2603.10 0.17%) -> 1297.56 (1302.42 0.61%):  2.00x speedup
 gen6          firefox-talos-gfx  7184.03 (7194.97 0.13%) -> 3806.31 (3811.66 0.06%):  1.89x speedup
 gen5                  evolution  8739.25 (8766.12 0.27%) -> 4817.54 (5050.96 1.54%):  1.81x speedup
 gen3                  evolution  1684.06 (1696.88 0.35%) -> 1004.99 (1008.55 0.85%):  1.68x speedup
 gen3         gnome-terminal-vim  4285.13 (4287.68 0.04%) -> 2715.97 (3202.17 13.52%):  1.58x speedup
 gen5             swfdec-youtube  5843.94 (5951.07 0.91%) -> 3810.86 (3826.04 1.32%):  1.53x speedup
 gen4                    poppler  7496.72 (7558.83 0.58%) -> 5125.08 (5247.65 1.44%):  1.46x speedup
 gen4         gnome-terminal-vim  21126.24 (21292.08 0.85%) -> 14590.25 (15066.33 1.80%):  1.45x speedup
 gen5          firefox-talos-svg  99873.69 (100300.95 0.37%) -> 70745.66 (70818.86 0.05%):  1.41x speedup
 gen4       firefox-planet-gnome  28205.10 (28304.45 0.27%) -> 19996.11 (20081.44 0.56%):  1.41x speedup
 gen5          firefox-talos-gfx  93070.85 (93194.72 0.10%) -> 67687.93 (70374.37 1.30%):  1.37x speedup
 gen4                  evolution  6696.25 (6854.14 0.85%) -> 4958.62 (5027.73 0.85%):  1.35x speedup
 gen3         swfdec-giant-steps  2538.03 (2539.30 0.04%) -> 1895.71 (2050.62 62.43%):  1.34x speedup
 gen4                       gvim  4356.18 (4422.78 0.70%) -> 3276.31 (3281.69 0.13%):  1.33x speedup
 gen6                  evolution  1242.13 (1245.44 0.72%) -> 953.76 (954.54 0.07%):  1.30x speedup
 gen6       firefox-planet-gnome  4554.23 (4560.69 0.08%) -> 3758.76 (3768.97 0.28%):  1.21x speedup
 gen3          firefox-talos-gfx  6264.13 (6284.65 0.30%) -> 5261.56 (5370.87 1.28%):  1.19x speedup
 gen4              midori-zoomed  4771.13 (4809.90 0.73%) -> 4037.03 (4118.93 0.85%):  1.18x speedup
 gen6         swfdec-giant-steps  1557.06 (1560.13 0.12%) -> 1336.34 (1341.29 0.32%):  1.17x speedup
 gen4          firefox-talos-gfx  80767.28 (80986.31 0.17%) -> 69629.08 (69721.71 0.06%):  1.16x speedup
 gen6              midori-zoomed  1463.70 (1463.76 0.08%) -> 1331.45 (1336.56 0.22%):  1.10x speedup
Slowdowns
=========
 gen6          xfce4-terminal-a1  2030.25 (2036.23 0.25%) -> 2144.60 (2240.31 4.29%):  1.06x slowdown
 gen4             swfdec-youtube  3580.00 (3597.23 3.92%) -> 3826.90 (3862.24 0.91%):  1.07x slowdown
 gen4          firefox-talos-svg  66112.25 (66256.51 0.11%) -> 71433.40 (71584.31 0.14%):  1.08x slowdown
 gen4       gnome-system-monitor  5691.60 (5724.03 0.56%) -> 6707.56 (6747.83 0.33%):  1.18x slowdown
 gen3                  ocitysmap  3494.05 (3502.44 0.20%) -> 4321.99 (4524.42 2.78%):  1.24x slowdown
 gen4                  ocitysmap  3628.42 (3641.66 9.37%) -> 5177.16 (5828.74 8.38%):  1.43x slowdown
 gen5                  ocitysmap  4027.77 (4068.11 0.80%) -> 5748.26 (6282.25 7.38%):  1.43x slowdown
 gen6                  ocitysmap  1401.61 (1402.24 0.40%) -> 2365.74 (2379.14 4.12%):  1.69x slowdown

[Note the performance regression for ocitysmap comes from that we now
attempt to support rendering to and (more importantly) from large
surfaces. By enabling such operations is the only way to one day be
faster than purely using the CPU, in the meantime we suffer regression
due to the increased migration and aperture thrashing. The other couple
of regressions will be eliminated with improved span and shader support,
now that the framework for such is in place.]

The performance increase for Cairo completely overlooks the other
critical aspects of the architecture:

World of Padman:
gen3 (800x600):   57.5 ->  96.2
gen4 (800x600):   47.8 ->  74.6
gen6 (1366x768): 100.4 -> 140.3 [F15]
                 144.3 -> 146.4 [drm-intel-next]

x11perf (gen6);
aa10text:     3.47 -> 14.3 Mglyphs/s [unthrottled!]
copywinwin10: 1.66 -> 1.99 Mops/s
copywinpix10: 2.28 -> 2.98 Mops/s

And we do not have a good measure for how much improvement the reworking
of the fallback paths give, except that xterm is now over 4x faster...

PS: This depends upon the Xorg patchset "Remove the cacheing of the last
scratch PixmapRec" for correct invalidations of scratch Pixmaps (used by
the dix to implement SHM operations, used by chromium and gtk+ pixbufs.

PPS: ./configure --enable-sna

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2011-06-04 09:19:46 +01:00
Chris Wilson 686018f283 Turn relaxed-fencing off by default for older (pre-G33) chipsets
There are still too many unresolved bugs, typically GPU hangs, that are
related to using relaxed fencing (i.e. only allocating the minimal
amount of memory required for a buffer) on older hardware, so turn off
the feature by default for the release.

Reported-and-tested-by: Knut Petersen <Knut_Petersen@t-online.de>
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=36147
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Acked-by: Daniel Vetter <daniel.vetter@ffwll.ch>
2011-04-12 09:03:01 +01:00
Chris Wilson 049ce4397d Give each user of tiling separate xorg.conf options
So that you can indeed allocate a linear framebuffer if you so desire
without breaking mesa.

Adds:

Section "Driver"
  Option "LinearFramebuffer" "False|True" # default false
EndSection

to xorg.conf

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2011-03-09 08:37:02 +00:00
Adam Jackson b066ddda31 intel: Listen for hotplug uevents (V3)
This connects the kernel uevent indicating monitor hotplugging to the
RandR notification events so that X applications can be notified
automatically when monitors are connected or disconnected.

This also adds a configuration option to disable hotplug events.

V2: missed a #ifdef HAVE_UDEV around some udev-specific declarations

V3: document Hotplug option in man page

Signed-off-by: Keith Packard <keithp@keithp.com>
2010-10-22 08:35:29 -07:00
Chris Wilson 2b96c18165 Enable a shadow buffer and disable GPU acceleration.
An attempt to workaround the incoherency in gen2 chipsets, we avoid
using dynamic reallocation as much as possible.

The first step is to disable allocation of pixmaps using GEM and simply
create them in system memory without a backing buffer object. This
forces all rendering to use S/W fallbacks.

The second step is to allocate a shadow front buffer and assign that to
the Screen pixmap. This ensure that the front buffer remains in the GTT
and pinned for scanout. The shadow buffer will be rendered to in the
normal fashion via the Screen pixmap, and be marked dirty. In the block
handler, the dirty shadow buffer is then blitted (using the GPU) over
the front buffer. This should completely avoid having to move pages
around in the GTT and avoid incurring the wrath of those early chipsets.
Secondly, performance should be reasonable as we avoid the ping-pong
caused by the small aperture and weak GPU forcing software fallbacks.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2010-09-08 13:33:37 +01:00
Gaetan Nadon 2d85efaa36 config: upgrade to util-macros 1.8 for additional man page support
Use MAN_SUBST now supplied in XORG_MANPAGE_SECTIONS
The value of MAN_SUBST is the same for all X.Org packages.
2010-07-22 15:22:10 -04:00
Carl Worth f206816154 man: Update list of available 'sclaing mode' property values.
Include the names from the current kernel driver along with accurate
descriptions of each. Indicate how to use the values with:

	xrandr --output output --set property value

and point the user to "xrandr --prop" for an accurate list of
currently available values.

Closes bug:

	xf86-video-intel manpage needs update for KMS xrandr properties
	http://bugs.freedesktop.org/show_bug.cgi?id=25606
2010-03-22 14:16:25 -07:00
Alan Coopersmith 6e61de896b Update Sun license notices to current X.Org standard form
Signed-off-by: Alan Coopersmith <alan.coopersmith@sun.com>
2010-01-15 15:51:28 -08:00
Zhenyu Wang e966bca3a9 Take note for Pineview support in README and manpage
Signed-off-by: Zhenyu Wang <zhenyuw@linux.intel.com>
2010-01-04 14:15:41 -08:00
Carl Worth 6137791e9f man page: Remove section describing BACKLIGHT_CONTROL property.
This apparently no longer exists in a KMS world, so remove it from the
documentation.
2010-01-04 14:11:48 -08:00
Carl Worth 7f36a43924 man page: Rename PANEL_FITTING to "scaling mode".
The old UMS name was PANEL_FITTING while the new KMS name is "scaling mode".

Fixes bug #25606.
2010-01-04 14:11:18 -08:00
Carl Worth a6fb71e6e2 man page: Add additional indentation for some output configuration options.
The BACKLIGHT_CONTROL and PANEL_FITTING options appear in a list, and
then each contain a sub-list of sub-options. Use indentation to make
this structure more apparent to the reader.
2010-01-04 14:05:27 -08:00
Carl Worth 88b2209a75 Document the DebugFlushBatches, DebugFlushCaches, and DebugWait options.
These were added in 3c0815abf2 . The
documentation added here comes straight from that commit message.
2009-12-10 14:52:46 -08:00
Jesse Barnes c439207ec0 Update man page to reflect currently available options
Many have been removed or are obsolete now that UMS is gone.  And some
are only available on i810/i815 or i830+, so move them to the
appropriate section.

Signed-off-by: Jesse Barnes <jbarnes@virtuousgeek.org>
2009-12-02 14:44:11 -08:00
Eric Anholt b9b159c498 Remove UMS support.
At this point, the only remaining feature regressions should be the lack of
overlay support (about to land), and the need to update the XVMC code to work
in the presence of KMS.

Acked-by: Keith Packard <keithp@keithp.com> (in principle)
Acked-by: Carl Worth <cworth@cworth.org> (in principle)
2009-10-06 16:22:31 -07:00
Keith Packard 33d6e7a235 intel.man: Mark NoAccel option as i810/i815 only
The NoAccel option is not valid for other chips.

Signed-off-by: Keith Packard <keithp@keithp.com>
2009-07-11 22:53:11 -07:00
Jesse Barnes 1eec83a203 Add option to control swapbuffers behavior
Until we get triple buffering, we'll want this so users can avoid taking a
performance hit on apps that render slower than the refresh rate.

Fixes fdo bug #22234.

Signed-off-by: Jesse Barnes <jbarnes@virtuousgeek.org>
2009-06-23 15:05:03 -07:00
Eric Anholt fa81ae1637 Remove EXA support.
UXA has completely replaced EXA at this point.  UXA is the same rendering
core as EXA, but relying on kernel memory management or a fake bufmgr instead
of trying to manage memory in the X Server.
2009-04-27 17:05:59 -07:00
Eric Anholt 1b10745a25 Remove XAA support.
While EXA/UXA aren't completely good replacements (see bugzilla for
performance and stability problems), we are pretty sure at this point that
it's the right way to go and that having multiple acceleration architectures
is getting in the way of producing a stable codebase.
2009-04-27 17:05:59 -07:00
Carl Worth 506c810f8f Clarify that the default acceleration is UXA if KMS is available.
Stale documentation considered harmful of course.
2009-04-15 16:10:52 -07:00
Ma Ling 053432991c update manpage for BROADCAST_RGB property 2009-04-13 14:31:06 +08:00
Carl Worth 3d4ee3cac1 Remove support for 'auto'(-1) value of XV_SYNC_TO_VBLANK
We previously had a heurstic here where we would only sync to vblank
for windows that covered more than 25% of the screen. We don't need
this anymore since the new approach to sync, (WAIT_FOR_SCANLINE_WINDOW),
is not excessively costly for small windows.
2009-04-06 11:31:20 -07:00
Rémi Cardona b345b4e6ad clean up man page generation and remove all traces of the i810 driver
The i810 compatibility symlink has been broken since libpciaccess, so just
let it die.
2009-03-20 16:31:11 -07:00
Zhenyu Wang 4e95327323 TV: force TV as connected with TV_Connector option
In order to bypass failure in TV load detect, TV_Connector option
will always force TV as connected with user specified connector type.
2009-03-16 15:15:26 +08:00
Kristian Høgsberg 73db44e7ac Drop Legacy3D option, only use fixed texture space with non-gem.
With this change, we always expect the 3D driver to use GEM textures
when the 2D driver uses GEM.  When GEM is not available or disabled,
we fall back to legacy fixed textures.
2009-03-11 11:36:57 -04:00
Xiang, Haihao 646e12a978 typo in intel.man 2009-03-09 10:59:36 +08:00
Eric Anholt abb213d933 Document the UXA AccelMethod.
Signed-off-by: Eric Anholt <eric@anholt.net>
2009-03-06 14:34:24 -08:00
Dan Nicholson c3a747cb54 man: Put option defaults on separate indented line
The groff .IP macro is used to put the option defaults in a new indented
paragraph so they are separated from the explanations.

Signed-off-by: Dan Nicholson <dbn.lists@gmail.com>
[anholt: hand-applied due to conflicts.  mistakes are my own]
Signed-off-by: Eric Anholt <eric@anholt.net>
2009-03-06 13:39:14 -08:00
Eric Anholt d2af21a66d Remove configurable support for disabling XV.
google shows one instance of this being used a year and a half ago.
2009-03-06 13:29:09 -08:00
Eric Anholt 755757669f Remove configured SW cursor support.
Any time we actually need SW cursors, it gets enabled automatically.
2009-03-06 13:26:10 -08:00
Xiang, Haihao 67fef27f4b Xv: free tearing on textured video
Add an Xv attribute XV_SYNC_TO_VBLANK which has three values -1(auto), 0(off)
and 1(on) to control whether textured adapter synchronizes the screen
update to the vblank. The default value is -1(auto).
2009-03-06 09:40:07 +08:00
Zhenyu Wang 42e34e90e2 TV: add property control for TV attributes
This is based on Jesse's origin patch for bug #12763.
But export integer range to user instead of hardware float
point format, and fix different real format on 965G and 945G
for contrast and saturation.
2009-03-03 22:55:35 +08:00
Zhenyu Wang aa9da5e393 TV: add option to set TV connector type
This can let user override non-stable driver TV load detect,
and set connector type manually, e.g for s-video to component
converter, this patch seems must needed to use HD modes.
2009-03-03 20:43:39 +08:00
Zhenyu Wang 48445d2e93 SDVO: remove ForceSDVODetect option
Which is just a hack to hide our SDVO detect drawback,
we will have SDVO/HDMI detect fix later.
2009-02-13 11:11:18 +08:00
Owain G. Ainsworth c7db320110 Remove the pageflipping infrastructure.
It was broken on current kernels, and deprecated anyway.
2009-01-20 12:11:01 -05:00
Owain G. Ainsworth c82adfd016 Remove triple-buffering support
It never worked with any upstream linux kernel, and is quite heavily
deprecated. A new solution based around DRI2 will probably be
forthcoming. Pageflipping itself is next.
2009-01-20 12:11:01 -05:00
Alan Coopersmith f1e9ca4e4f Remove xorgconfig & xorgcfg from See Also list in man page 2009-01-09 16:30:15 -08:00
Robert Lowery 07f5a82231 TV: add support to set TV margins in xorg.conf 2008-12-03 09:48:23 +08:00
Eric Anholt 801f0eac4f Make I830FALLBACK debugging a runtime instead of compile-time option. 2008-11-05 17:22:00 -08:00
Maxim Levitsky d828b0802c Add an option to make the overlay be the first XV adaptor. 2008-11-05 13:51:19 -08:00
Eric Anholt 55cb65c6fd Enable Option "Legacy3D" for 965 as well, and clarify both the docs and code.
Signed-off-by: Eric Anholt <eric@anholt.net>
Acked-by: Keith Packard <keithp@keithp.com>
2008-10-19 21:53:16 -07:00
Zhenyu Wang 11d304e99c Bug #16631: add option for SDVO force detect
Some ADD2 card doesn't get SDVO detect status setup right,
which disabled outputs on those cards. This adds a new
option "ForceSDVODetect" to probe all SDVO ports anyway.
2008-09-28 10:08:26 +08:00
Jesse Barnes a428892b76 Update supported hardware list 2008-09-23 12:36:11 -07:00
Fabio 57ad9cc689 Man page patch to clarify meaning of VideoRam option with i810/i815 2008-09-01 13:33:50 +08:00
Alan Coopersmith 27e9506fda Man page typo fixes 2008-07-31 20:02:21 -07:00
Jesse Barnes da2eb83fb9 Update man page
Add example dual head config, add info on bug reporting.
2008-07-31 19:21:36 -07:00
Mike Isely 9f32486043 Implement option to ignore external fixed mode settings
The Intel xorg driver tries mightily to determine the native fixed
panel mode settings for the LVDS output.  It does this through various
means, including scanning video BIOS tables, and noticing if the pipe
in question has already been set up by somebody else (and adopting
those timings).  This strategy works well for say a laptop where the
LCD panel is an integral part of the machine.  But for other
applications where the display is unrelated to the system's BIOS or
other software, then the BIOS will likely have no clue how to
configure the LVDS output.  Worse still, the BIOS can simply "get it
wrong", leaving the pipe misconfigured.  Unfortunately the Intel
driver can potentially notice this, adopt the same settings, leaving a
messed up display.

All of this complexity normally happens independently, behind the
scenes, from the mode timings that might otherwise be specified by the
user.  This driver has a concept of fixed, i.e. "native" mode, and
then user-specified mode.  If the corresponding resolutions between
those concepts don't match, then the driver in theory will arrange for
scaling to take place while adhering to the actual native mode of the
panel.  Said another way, if the user says 800x600 but the driver
mistakenly (see above) thinks the native mode is 640x480, then 640x480
is the mode set with scaling to an 800x600 frame buffer.  If the
driver gets the wrong native mode, then the result is a miserable mess
with no way for the user to override what the driver thinks is right.

This patch provides a means to override the driver.  This implements a
new driver option, "LVDSFixedMode" which defaults to true (the normal,
probe-what-I-need behavior).  However when set to false, then all the
guessing is skipped and the driver will assume no fixed, i.e. "native"
mode for the display device.  Instead with this option set to false,
the driver will directly set the timings specified by the user,
providing an escape hatch for situations where the driver can't
correctly figure out the right mode.

Under most scenarios of course, this option should not be needed.  But
in situations where the Intel video BIOS is hopelessly fouled up
related to the LVDS output, this option provides the escape hatch for
the user to get a working display in spite of the BIOS situation.

Signed-off-by: Mike Isely <isely@pobox.com>
2008-05-08 10:00:17 +08:00