Commit Graph

139 Commits

Author SHA1 Message Date
Adam Jackson
8248537722 RANDR 1.2: Fix initial mode aspect ratio match in a corner case.
Actually more like in the mainline case, where the ideal mode happens to
be the very first aspect match on the first monitor.  But let's not
split hairs.
2008-03-14 14:24:21 -04:00
Adam Jackson
5d7437c29e RANDR 1.2: Fix the RANDR 1.1 screen size estimation to approach reality.
While the ScreenRec's notion of size in millimeters would get updates,
the RANDR 1.1 notion wouldn't, so your screen would appear to be square
and probably at some ludicrous DPI.
2008-03-13 17:37:12 -04:00
Adam Jackson
61c3f63a75 RANDR 1.2: Don't report a square resolution to RANDR 1.1 clients.
It can't possibly do anything useful, and older versions of Gnome (and
proably others) get very confused by it.  So do the drivers, for that
matter.
2008-03-13 17:34:54 -04:00
Matthias Hopf
2036851125 Return randr interface version in xf86CrtcScreenInit()
Necessary to allow drivers to be run-time backwards compatible when using the
modes/ functions w/o providing their own copy.
2008-03-12 11:37:28 +01:00
Adam Jackson
3bf7ff7032 Size xf86DefaultModes explicitly.
i.e., don't check for the end of the list by ->name == NULL, since that
won't work now.  Fix the consumers of xf86DefaultModes to use the new
explicit size as well.
2008-03-07 09:25:06 -05:00
Adam Jackson
3fcb6445dc Fix segfault when a monitor exists but has no modes.
Thanks to Zhenyu Wang for finding this.
2008-03-07 08:30:19 -05:00
Aaron Plattner
a8d760f567 Get modes code building with old X servers again.
This change uses XORG_VERSION_CURRENT < 7.0 to mean "server newer than 1.2"
since XORG_VERSION current went backwards at some point.
2008-03-06 14:42:00 -08:00
Jesse Barnes
ca616b902b Allow RandR get output property to call into drivers
In order to report accurate values to users of the RandR property interface,
it's sometimes necessary to ask the driver to update the value (for example
when backlight brightness changes without the server's knowledge, due to hotkey
events or direct sysfs banging).

This patch wires up the core server code with a new xf86CrtcFuncs callback,
get_property, to allow for this.

The new code is available under the RANDR_13_INTERFACE define, which in turn
depends on the RANDR_12_INTERFACE code.
2008-03-06 13:50:58 -08:00
Adam Jackson
27e7dacbf7 Make xf86InitialConfiguration slightly smarter.
Old heuristic was to find the first monitor that expressed a preference,
then attempt to get all other monitors to agree.  This doesn't work
particularly well when the two sets of modes don't precisely intersect,
you get overlapping-but-not-identical output geometry and things go wrong.

New heuristic is:
- Exact user preference, if given
- Exact output preference, if the same for all outputs
- Best (largest) mode of modes common to all outputs:
  - with the same aspect ratio as all outputs (may be NULL)
  - with 4:3 aspect ratio
- Then the old heuristic to try to get something lit

Note that it is simply not doable to have a reliable initial output guess if
you insist on trying to clone all outputs together.  It's far too easy to
end up with displays that simply don't have modes in common.  We need to
switch to right-of placement someday, once we're not limited to CRTC size
limits and we have working multi-GPU in RANDR.
2008-03-04 11:38:34 -05:00
Adam Jackson
708f07753f RANDR 1.2: Inherit PreferredMode from the global configuration, if any.
If you don't do this, then Modes "800x600" in the Display subsection will
be dutifully ignored and the driver will start at whatever resolution it
feels like.
2008-03-03 15:49:48 -05:00
Adam Jackson
3b73d62791 xf86DDCMonitorSet: Honor the DisplaySize from the config file.
We honor sync ranges and pixel clock settings from the config here, no
reason to ignore DisplaySize.
2008-03-03 15:43:22 -05:00
Maarten Maathuis
8af2c39bcc Fix big mistake in commit fd41f46ac6.
- When a mode is deleted, the name pointer is also free()'ed.
- This leaves other modes with an invalid pointer.
2008-03-01 16:54:01 +01:00
Adam Jackson
d1c48955f8 Fix CVT abuse in DDCModesFromStandardTiming.
CVT is enough different from GTF that it should not be used on monitors
that aren't expecting it.  This brings us closer to what the spec says
the correct behaviour is.
2008-02-29 16:01:15 -05:00
Adam Jackson
ca5625b911 Add xf86GTFMode().
This should probably be shared like xf86CVTMode().
2008-02-29 16:01:15 -05:00
Adam Jackson
4cb4817c10 Remove the duplicate copy of xf86cvt.c 2008-02-29 16:01:15 -05:00
Adam Jackson
e65e51a99b Constify the built-in mode tables. 2008-02-29 16:01:14 -05:00
Adam Jackson
6828d8fc2b Clean up DisplayModeRec handling in many places.
Use xf86DuplicateMode() instead of rolling our own, and change
malloc+memset to calloc.
2008-02-29 16:01:14 -05:00
Adam Jackson
fd41f46ac6 Allow xf86DuplicateMode() to work correctly on read-only modes.
Before this it was meaningless to try to mark DisplayModeRec tables
const, since the mode name would be emitted as a pointer to an
anonymous string constant, and therefore would have to be fixed up by
ld.so and so couldn't live in .rodata.  With this change the standard
mode lists can live in .rodata, and modes duplicated from them will
have their names filled in on the fly.
2008-02-29 16:01:14 -05:00
Adam Jackson
8ac19d16a0 Add several comments documenting our EDID failures. 2008-02-29 16:01:14 -05:00
Tiago Vignatti
aebd9dc252 Oops, there's one more parenthesis. 2008-02-28 01:22:31 -03:00
Dave Airlie
08afc70513 quirks: another LPL panel with the cm/mm wrong 2008-02-28 10:45:41 +10:00
Dave Airlie
d12b7b6632 xf86Crtc: add higher level modesetting entry point.
For kernel modesetting work we need a bigger stick to beat the modesetting path
2008-02-27 07:09:14 +10:00
Tiago Vignatti
9727db88d5 No more "-scanpci" given that we already have it in libpciaccess.
(Yeah, lets nuke dead code!)
2008-02-25 17:08:07 -03:00
Maarten Maathuis
a48cc88ea2 Fix rotation for multi-monitor situation.
- The (x,y)-coordinates of the crtc were not being passed as xFixed values, which made it an obscure bug to find.
- Fix bug #13787.
2008-02-17 18:47:28 +01:00
liuhong
d3c36fe721 validate mode clock for probed modes
Some modes claimed in monitor EDID data may not be supported by
the monitor. So also validating the max clock for probed modes.
2008-02-05 12:45:27 -08:00
liuhong
4b5b6e7baa fix max clock unit
max clock from EDID data is in MHz, while we need KHz to validate modes.
2008-02-05 12:45:16 -08:00
Hong Liu
734e115871 Bug #12439: add a quirk to use +hsync +vsync for the probed detailed mode.
Samsung 205BW quirk is somehow reworked.
2008-01-23 21:24:09 +08:00
Dave Airlie
1f83f40525 xf86Cursors: fix memset for non-square cursors 2008-01-15 10:21:17 +10:00
Alex Deucher
20eb26f9d1 Fix potential crasher in xf86CrtcRotate()
xf86CrtcRotate() is called by randr 1.2 drivers via xf86CrtcSetMode() or xf86SetDesiredModes()
during ScreenInit() at which point pScrn->pScreen is not set. If a user specifies a rotation
in their config file pScrn->pScreen is dereferenced and boom.
2008-01-03 22:53:36 -05:00
Adam Jackson
312b30cb03 EDID 1.4: First detailed mode is always preferred.
... so act like it in the modelist generator, not just the parser.
2007-12-28 17:38:51 -05:00
Adam Jackson
a948216dcc EDID 1.4: Decode CVT 3-byte codes and add them to the mode pool.
Section 3.10.3.8: CVT 3 Byte Code Descriptor Definition.
2007-12-28 16:53:16 -05:00
Adam Jackson
938da5ee38 Add HDMI and DisplayPort connector types. 2007-12-28 12:23:44 -05:00
Eamon Walsh
86b2e59bfb Merge branch 'master' into XACE-SELINUX
Conflicts:

	configure.ac

This is the last pull before merging to master.
2007-12-14 00:32:24 -05:00
Eamon Walsh
c8feb73f58 Merge branch 'master' into XACE-SELINUX
Conflicts:

	Xext/EVI.c
	Xext/bigreq.c
	Xext/cup.c
	Xext/dpms.c
	Xext/fontcache.c
	Xext/mitmisc.c
	Xext/xcmisc.c
	Xext/xf86bigfont.c
	Xext/xtest.c
	configure.ac
	dbe/dbe.c
	hw/darwin/darwin.h
	hw/darwin/darwinEvents.c
	hw/darwin/iokit/xfIOKit.h
	hw/darwin/iokit/xfIOKitCursor.c
	hw/darwin/quartz/fullscreen/fullscreen.c
	hw/darwin/quartz/fullscreen/quartzCursor.c
	hw/darwin/quartz/quartz.c
	hw/darwin/quartz/quartzCommon.h
	hw/darwin/quartz/quartzCursor.c
	hw/darwin/quartz/xpr/dri.c
	hw/darwin/quartz/xpr/dristruct.h
	hw/darwin/quartz/xpr/xprCursor.c
	hw/darwin/quartz/xpr/xprFrame.c
	hw/xfree86/modes/xf86RandR12.c
	include/cursor.h
	miext/rootless/rootlessCommon.h
	miext/rootless/rootlessScreen.c
	miext/rootless/rootlessWindow.c
	render/picturestr.h

Trying to pick up the pieces from the darwin churn here...
2007-12-13 18:38:25 -05:00
Adam Jackson
efcdc0d701 Correct the documentation comments in xf86Modes.c
Most of those functions do not, in fact, work with circular mode lists,
and by this point the API isn't really "proposed" anymore.
2007-12-13 15:38:41 -05:00
Adam Jackson
1768af38c7 Add infrastructure for validating modes by memory bandwidth. 2007-12-13 15:06:18 -05:00
Adam Jackson
4359193aaa Explain a confusing #ifdef. 2007-12-13 10:59:48 -05:00
Hong Liu
c6cfcd408d Bug 13308: Verify and reject obviously broken modes. 2007-12-05 17:48:28 +01:00
Dave Airlie
678f786715 xf86crtc: oh mon could be NULL, so check before quirks 2007-12-04 12:24:47 +11:00
Dave Airlie
a9df4bb555 xf86Crtc: pass correct parameter.
quite how this has worked I've no idea.
2007-12-04 12:17:29 +11:00
Dave Airlie
f30abe30c5 edid quirk for MAX 0x77e monitor
From RH bugzilla 306441
2007-11-30 13:53:21 +10:00
Dave Airlie
89c3dfe41e modes: use xf86RandR12Index to stop illegal access
xf86RandR12Index set to -1, and if initialised it gets 0 or higher.
This allows the server to start with xinerama turned on with only one head
2007-11-29 19:57:24 +11:00
Dave Airlie
725710fd0b randr: make randr code not segfault when xinerama set 2007-11-29 19:40:53 +11:00
Adam Jackson
23b8ca8a37 RANDR 1.2: Only enable unknown outputs if there are no connected outputs.
Otherwise you end up with a confusing initial geometry, and xscreensaver
and friends get very angry.
2007-11-27 13:20:40 -05:00
Matthias Hopf
c6c284e64b Initialize Mode with 0 in xf86RandRModeConvert.
Asking for trouble if non-initialized values contain random data.
2007-11-26 15:39:42 +01:00
Matthias Hopf
f6401f944d Don't segfault if referring to a relative output where no modes survived. 2007-11-23 16:14:48 +01:00
Matthias Hopf
fa19e84714 Fix initial placement of LeftOf and Above. 2007-11-23 16:14:48 +01:00
Matthias Hopf
184e571957 Adjust offsets of modes that do not fit virtual screen size.
Fixes memory corruption if a too small "Virtual" was specified in xorg.conf
for the selected multi-monitor configuration.
2007-11-23 16:14:48 +01:00
Eamon Walsh
2d17f47cc7 Merge branch 'master' into XACE-SELINUX
Conflicts:

	hw/xnest/Pixmap.c
	include/dix.h
2007-11-19 18:10:46 -05:00
Michel Dänzer
ea9c63e93b DEFAULT_DPI was undefined here. 2007-11-19 15:53:49 +01:00