Commit Graph

424 Commits

Author SHA1 Message Date
Stuart Bennett
0b8f8b24f7 xf86Cursors: xf86_reload_cursors shouldn't unconditionally show hwcursor (#14820)
Also, no need to call ShowCursor when SetCursorPosition already does it
Based on a previous patch by Maarten Maathuis

Signed-off-by: Keith Packard <keithp@keithp.com>
2008-12-02 22:54:18 -08:00
Kristian Høgsberg
09df7cc5ad Avoid dereferencing NULL pScreen in xf86CrtcSetModeTransform().
We can get there during PreInit as we set a mode for load detection.
At that time there's no pScreen anywhere, so just skip the optimization
then.
2008-12-01 12:41:10 -05:00
Paulo Cesar Pereira de Andrade
d6cbd4511e Export symbols defined in the sdk.
This is the biggest "visibility" patch. Instead of doing a "export"
symbol on demand, export everything in the sdk, so that if some module
fails due to an unresolved symbol, it is because it is using a symbol
not in the sdk.

  Most exported symbols shouldn't really be made visible, neither
advertised in the sdk, as they are only used by a single shared object.

  Symbols in the sdk (or referenced in sdk macros), but not defined
anywhere include:
XkbBuildCoreState()
XkbInitialMap
XkbXIUnsupported
XkbCheckActionVMods()
XkbSendCompatNotify()
XkbDDXFakePointerButton()
XkbDDXApplyConfig()
_XkbStrCaseCmp()
_XkbErrMessages[]
_XkbErrCode
_XkbErrLocation
_XkbErrData
XkbAccessXDetailText()
XkbNKNDetailMaskText()
XkbLookupGroupAndLevel()
XkbInitAtoms()
XkbGetOrderedDrawables()
XkbFreeOrderedDrawables()
XkbConvertXkbComponents()
XkbWriteXKBSemantics()
XkbWriteXKBLayout()
XkbWriteXKBKeymap()
XkbWriteXKBFile()
XkbWriteCFile()
XkbWriteXKMFile()
XkbWriteToServer()
XkbMergeFile()
XkmFindTOCEntry()
XkmReadFileSection()
XkmReadFileSectionName()
InitExtInput()
xf86CheckButton()
xf86SwitchCoreDevice()
RamDacSetGamma()
RamDacRestoreDACValues()
xf86Bpp
xf86ConfigPix24
xf86MouseCflags[]
xf86SupportedMouseTypes[]
xf86NumMouseTypes
xf86ChangeBusIndex()
xf86EntityEnter()
xf86EntityLeave()
xf86WrapperInit()
xf86RingBell()
xf86findOptionBoolean()
xf86debugListOptions()
LoadSubModuleLocal()
LoaderSymbolLocal()
getInt10Rec()
xf86CurrentScreen
xf86ReallocatePciResources()
xf86NewSerialNumber()
xf86RandRSetInitialMode()
fbCompositeSolidMask_nx1xn
fbCompositeSolidMask_nx8888x0565C
fbCompositeSolidMask_nx8888x8888C
fbCompositeSolidMask_nx8x0565
fbCompositeSolidMask_nx8x0888
fbCompositeSolidMask_nx8x8888
fbCompositeSrc_0565x0565
fbCompositeSrc_8888x0565
fbCompositeSrc_8888x0888
fbCompositeSrc_8888x8888
fbCompositeSrcAdd_1000x1000
fbCompositeSrcAdd_8000x8000
fbCompositeSrcAdd_8888x8888
fbGeneration
fbIn
fbOver
fbOver24
fbOverlayGeneration
fbRasterizeEdges
fbRestoreAreas
fbSaveAreas
composeFunctions
VBEBuildVbeModeList()
VBECalcVbeModeIndex()
TIramdac3030CalculateMNPForClock()
shadowBufPtr
shadowFindBuf()
miRRGetScreenInfo()
RRSetScreenConfig()
RRModePruneUnused()
PixmanImageFromPicture()
extern int miPointerGetMotionEvents()
miClipPicture()
miRasterizeTriangle()
fbPush1toN()
fbInitializeBackingStore()
ddxBeforeReset()
SetupSprite()
InitSprite()
DGADeliverEvent()

  SPECIAL CASES
o defined as _X_INTERNAL
	xf86NewInputDevice()
o defined as static
	fbGCPrivateKey
	fbOverlayScreenPrivateKey
	fbScreenPrivateKey
	fbWinPrivateKey
o defined in libXfont.so, but declared in xorg/dixfont.h
	GetGlyphs()
	QueryGlyphExtents()
	QueryTextExtents()
	ParseGlyphCachingMode()
	InitGlyphCaching()
	SetGlyphCachingMode()
2008-11-29 23:56:06 -02:00
Maarten Maathuis
ffb484f7ef randr: Avoid needlessly creating a shadow framebuffer.
- pScreen->width and height were zero, so it didn't "fit" the screen.
2008-11-29 14:30:55 +01:00
Paulo Cesar Pereira de Andrade
31285d063e Make visible symbols required by xorg modules.
This patch exports all symbols required by the compilable
(in a x86 linux computer) xorg/driver/* modules.
  Still missing symbols worth mentioning are:

sunleo
	miFindMaxBand no longer available

intel	(uxa/uxa-accel.c)
	fbShmPutImage no longer available (and should have been static)

mga
	MGAGetClientPointer (should come from matrox's libhal)

  This is not a definitive "visibility" patch, as all it does is to
export missing symbols, but the modules that current don't compile,
may require more symbols once fixed, and third party drivers should
also require more symbols exported.
  A "definitive" patch should export symbols defined in the sdk.
2008-11-28 01:55:11 -02:00
Keith Packard
4715f079b9 Merge commit 'origin/master' 2008-11-25 22:19:08 -08:00
Keith Packard
9ffc671939 Move matrix operations from X server to pixman 0.13.2
pixman 0.13.2 now holds all of the matrix operations. This leaves
the protocol conversion routines and some ABI stubs in place

Signed-off-by: Keith Packard <keithp@keithp.com>
2008-11-25 22:17:58 -08:00
Alan Coopersmith
d5f9a131a2 Fix const-mismatch warnings for DisplayModePtr's
Includes fixes for:
"xf86Config.c", line 2434: warning: argument #1 is incompatible with prototype:
	prototype: pointer to struct _DisplayModeRec: "xf86.h", line 351
	argument : pointer to const struct _DisplayModeRec

"xf86EdidModes.c", line 312: warning: argument #1 is incompatible with prototype:
	prototype: pointer to struct _DisplayModeRec: "../../../hw/xfree86/common/xf86.h", line 351
	argument : pointer to const struct _DisplayModeRec

"xf86EdidModes.c", line 438: warning: assignment type mismatch:
	pointer to struct _DisplayModeRec "=" pointer to const struct _DisplayModeRec

"xf86Modes.c", line 701: warning: assignment type mismatch:
	pointer to struct _DisplayModeRec "=" pointer to const struct _DisplayModeRec
2008-11-25 15:51:17 -08:00
Keith Packard
c4b9ab6bf5 Handle transform failure when computing shadow damage area.
PictureTransformBounds can fail, when this happens, damage the entire screen
so that the shadow gets repainted correctly.
2008-11-24 13:24:41 -08:00
Keith Packard
7236fd9dd4 Be careful about copying transforms around; they have allocated memory. 2008-11-24 13:24:41 -08:00
Keith Packard
7e69e364d2 Fix rotated/reflected cursor positions.
Doing projective transforms required repositioning the cursor using the
hotspot, but that requires relocating the upper left corner in terms of said
hotspot.
2008-11-24 13:24:40 -08:00
Keith Packard
7c61db66a4 Create rrtransform.[ch]. Add RRTransform argument to RRCrtcNotify.
Instead of using a separate function to notify DIX about transform changes,
add the transform to RRCrtcNotify so that the whole Crtc state changes
atomically.
2008-11-24 13:24:40 -08:00
Keith Packard
6fe9c15731 Allow drivers to set crtc transforms.
Track curent transform down in the mode setting code so that it may be set
separately from RandR.
2008-11-24 13:24:40 -08:00
Keith Packard
49db14e4ac Handle RandR transform matrices in floating point.
RandR matrix computations lose too much precision in fixed point;
computations using the inverted matrix can be as much as 10 pixels off.
Convert them to double precision values and pass those around. These API
changes are fairly heavyweight; the official Render interface remains fixed
point, so the fixed point matrix comes along for the ride everywhere.
2008-11-24 13:24:40 -08:00
Keith Packard
197aa78469 Report whether transforms are support from driver through extension to client
Add APIs to xf86RandR12 support and randr extension to record whether the
driver supports transforms, report that value in the RRGetCrtcTransform
reply.
2008-11-24 13:24:39 -08:00
Keith Packard
e86c34663e Clear shadow pixmaps before using them.
This eliminates some ugly flashing, as well as clearing the borders when the
shadow will not be completely painted.
2008-11-24 13:24:39 -08:00
Keith Packard
8fd82c88e3 Adjust transformed cursor position to account for hotspot 2008-11-24 13:24:38 -08:00
Keith Packard
eb222e6412 Actually use filter kernel size to expand transform redisplay box 2008-11-24 13:24:37 -08:00
Keith Packard
ee6326a6b8 Handle filter widths in xf86Rotate 2008-11-24 13:24:37 -08:00
Keith Packard
ddc8466137 Initialize and cleanup new filter fields in xf86Crtc. 2008-11-24 13:24:37 -08:00
Keith Packard
f50349e193 [RANDR] Support filters in CRTC transforms.
Create new RRTransform datatype to hold all of the transform related
information, use that in lots of places to pass filters around.
2008-11-24 13:24:36 -08:00
Keith Packard
e3d6f279d5 Wire up RandR CRTC transform protocol, bump server to RandR 1.3
This involved removing a pile of matrix code from the DDX,
as well as moving a bit of transform logic from DDX to DIX.
2008-11-24 13:24:36 -08:00
Keith Packard
e063162e80 Add projective transforms to RandR DIX/DDX API.
New RRCrtcGetTransform function in DIX that DDX can use to get the pending
transform. The DDX code should be complete; the DIX code is just a stub at
this point.
2008-11-24 13:24:35 -08:00
Keith Packard
9c7ac47b87 Notify DRI when crtc regions change
Drivers that care about crtc positions on the screen to ensure that vblank
works correctly need to be notified when crtcs are changed.

Provide a hook in the mode setting code that is invoked whenever any
configuration is done to the screen.

Use this new hook in the DRI code so that DRI clients are notified and
receive updated information.

Signed-off-by: Keith Packard <keithp@keithp.com>
2008-11-24 13:24:35 -08:00
Alex Deucher
81fd17f5f4 Only add default modes if EDID supports continuous-frequency
When an EDID is present, only add the default mode pool if the
continuous-frequency bit is set in the EDID.  Should fix bugs
like 18512.
2008-11-13 15:00:30 -05:00
Adam Jackson
c232f3d673 xf86TargetExact should try harder if there's only one monitor attached.
If there's no preferred mode, but only one monitor, pick the
biggest mode for its aspect ratio, assuming one exists.
2008-11-13 14:58:21 -05:00
Egbert Eich
9a874a71a7 DDX/RandR: When positioning outputs assume width/height = 0 if no modes exist.
When a user specifies the position of an output for which no modes exist
(for whatever reason) assume that the width and height of this output
is 0. The result will be the same as if this output isn't taken into
consideration at all and thus should be sane. It will prevent a segfault
when trying to determine the width and height of a non-existent mode.
2008-11-04 21:31:27 +01:00
Zhenyu Wang
56c615368c Check nextEnabledOutput()'s return in bestModeForAspect()
In case no enabled outputs, we will reference wrong index of
output array.
2008-10-08 13:33:55 +08:00
Maarten Maathuis
881bd15f44 xf86Crtc: Set mode to NULL, so nothing bad happens if crtc == NULL.
- Fix is courtesy of math_b.
2008-08-31 18:07:22 +02:00
Maarten Maathuis
f4e9a1a98f damage: choose less ambiguous function names 2008-08-31 17:46:26 +02:00
Maarten Maathuis
1861250cd7 {damage,exa}: sanitise damage
- Redo damage naming for more consistency.
- Call post submission functions only where appropriate.
- EXA can now live without it's odd damage workarounds.
2008-08-29 22:15:23 +02:00
Tomas Carnecky
ebea78cdba Prepare for array-index based devPrivates.
TODO: static indices can be made just an int; some indices
can be combined.
2008-08-28 18:05:40 -04:00
Eamon Walsh
ec7907f8fa Add an array of integers for use as per-screen cursor private keys.
Replaces the use of the screen pointer itself as the key, which was
nice but won't work now that an array index is being stored.
2008-08-27 19:27:13 -04:00
Adam Jackson
41bd8d5dfe EDID: Build fix. 2008-08-25 11:27:26 -04:00
Adam Jackson
5724f7fb5b EDID: Publish the whole block in the RANDR property if we've got it. 2008-08-25 10:40:17 -04:00
Adam Jackson
d692e1a63e Build fix. 2008-07-22 10:21:22 -04:00
Adam Jackson
8c8c4fdf34 EDID: Various reduced blanking fixes.
- Use a single common function to compute reducedness.
- Call it from both the old-school and new-school mode validation paths.
- Define monitor reduced-blanking support in accord with EDID 1.4.
- Attempt to filter RB DMT modes away from the "standard" EDID pool if
  the monitor doesn't claim RB support.
2008-07-21 16:49:17 -04:00
Adam Jackson
e8cd77e14d EDID: For standard timing blocks, prefer DMT timings if they exist. 2008-07-21 16:49:17 -04:00
Adam Jackson
6ba70091e2 EDID: Correct DDCEstablishedModes to conform to DMT. 2008-07-21 16:49:17 -04:00
Adam Jackson
c74ddc87c9 EDID: Add quirk to clamp max pixel clock to single DVI link speed.
On some panels you end up with all of:
- No range descriptor
- No description of physical connectivity
- Native panel size mode in standard timings list

In principle you're supposed to use the timings for that mode from the DMT
spec, but in practice the DMT spec has timings for both 1920x1200 normal
and 1920x1200RB, and the standard timing field gives you no way to
distinguish.  And, of course, the non-RB timings don't fit in a single
DVI link.
2008-07-21 15:10:20 -04:00
Tiago Vignatti
d78bebb20a Remove unused function and variables. 2008-07-04 04:04:19 -03:00
Dave Airlie
0b9ef835a0 modes: fix initial xorg.conf mode selection.
This was all kinds of broken, we ignored user preferred modes for multiple
monitors and also for side-by-side configurations.
2008-07-04 07:29:32 +10:00
Dave Airlie
1771edcb44 modes: check the crtc is valid before using its desired modes.
this fixes a crash I was getting on radeon rotate when gnome is running.
I'm sure g-s-d was doing something bad, but really not crashing ftw.
2008-07-03 19:05:26 +10:00
Adam Jackson
bed12dd3df Do EEDID in RANDR 1.2. 2008-06-30 16:04:54 -04:00
Matthieu Herrb
c0d7ad9c88 Let code build with gcc 2.95 2008-06-19 16:51:18 +02:00
Dave Airlie
c37a93b485 modes: make aspect choosing work on single output case.
In the single output enabled case we never enter the loop and test
never gets set and so we fail to match a good mode.

This was causing my 2560x1600 to end up at 2048x1536.
2008-06-12 14:55:16 +10:00
Peter Hutterer
26c1958c32 Merge branch 'master' into mpx 2008-05-26 17:37:31 +09:30
Alan Coopersmith
925e895b86 Restore return type on xf86SetScrnInfoModes
Seems to have been accidentally lost by commit 	76943fec86
2008-05-19 18:43:29 -07:00
Peter Hutterer
99d28c3ef3 Merge branch 'master' into mpx
Conflicts:

	Xext/xprint.c (removed in master)
	config/hal.c
	dix/main.c
	hw/kdrive/ati/ati_cursor.c (removed in master)
	hw/kdrive/i810/i810_cursor.c (removed in master)
	hw/xprint/ddxInit.c (removed in master)
	xkb/ddxLoad.c
2008-05-20 10:20:14 +09:30
Adam Jackson
0178b6a4ab Fix reduced-blanking mode filtering in RANDR 1.2.
If the monitor isn't reduced-blanking (either through EDID logic, or
config file setting), then remove RB modes from the default pool.  Any
RB modes from the driver and config file pools will stick around though;
you asked for them, you got them.
2008-05-19 11:22:19 -04:00
Julien Cristau
82c4075d4b xfree86: fix initial output positions with Above or LeftOf and rotation
The fix in fa19e84714 was incomplete,
as it was still using the wrong output's initial rotation to compute
the position.
2008-05-19 03:27:12 +02:00
Dave Airlie
7dca84f3ee cursor: don't dereference NULL pointer is devPrivates not yet set.
This fixes a bug on server recycle with ati zaphod.
2008-05-19 11:16:08 +10:00
Adam Jackson
aad1c37b09 RANDR 1.1 compat: remove senseless comparison against the virtual size. 2008-05-16 11:10:33 -04:00
Adam Jackson
14726b776d xf86SetDesiredModes(): Skip disabled CRTCs first thing. 2008-05-16 11:10:33 -04:00
Adam Jackson
459f34b089 Fix initial mode selection even harder.
The first guess used to be "is the preferred mode for one output the
preferred mode on all outputs".  Instead, do "find the largest mode that's
preferred for at least one output and available on all outputs".
2008-05-16 11:10:33 -04:00
Adam Jackson
96111c1547 Redo RANDR compatibility output selection.
Old logic was just the first one that happened to have an associated
CRTC.  The new logic tries to find one that's definitely connected, has
probed modes, and has the largest candidate mode.
2008-05-16 11:10:32 -04:00
Adam Jackson
a4bbe1c8bc Re-add sync range inference from legacy setup to RANDR 1.2. 2008-05-16 11:10:32 -04:00
Dave Airlie
e4ebfed178 xf86edid: fix typo in debug output 2008-05-06 16:47:18 +10:00
Peter Hutterer
6f63724b28 xfree86: don't try to repaint the cursor before cursors exist. 2008-05-02 14:56:58 +09:30
Peter Hutterer
3344569529 Merge branch 'master' into mpx
Conflicts:

	Xi/exevents.c
	dix/devices.c
2008-05-02 11:00:14 +09:30
Hong Liu
f65a1a62f9 Keep rotation wrappers in place while transforms are in use
LeaveVT/EnterVT cycles will free/realloc shadow frame buffers. Because of
this, the presense/absence of that data is insufficient to know whether
the screen function wrappers are necessary. Instead, the 'transform_in_use'
flag should be used.

This patch also adds 'xf86RotateFreeShadow' for drivers to use at LeaveVT
time to free the rotation data; it will be reallocated on EnterVT.
2008-04-29 09:00:11 -07:00
Peter Hutterer
8190ef8754 Merge branch 'master' into mpx
Conflicts:

	Xext/EVI.c
	Xext/appgroup.c
	Xext/cup.c
	Xext/mitmisc.c
	Xext/sampleEVI.c
	dix/window.c
2008-04-22 18:04:05 +09:30
Dave Airlie
b19027fbae quirk: add quirk for ACR 640x350 default mode is wrong
RH #440186
2008-04-09 14:34:11 +10:00
Peter Hutterer
fd06e8f8c1 Merge branch 'master' into dcdc_rework
Conflicts:

	Xext/xevie.c
	dix/dispatch.c
2008-04-07 07:56:41 +09:30
Dave Airlie
f0915fb3c4 quirk: add quirk for ACER EDID 2008-04-04 09:59:40 +10:00
Hong Liu
ebc56aca8b Bug #15160: quirk Proview AY765C
prefer first detailed timing
2008-04-02 10:46:03 +08:00
Dave Airlie
c747030a49 quirk: fix LPL monitors properly.
no point having a h cm fix when we really want to copy the sizes from the
other place.

RH BZ 435216
2008-03-27 15:19:52 +10:00
Michel Dänzer
da973e962d Fix RandR 1.2 driver interface conversion of two colour cursors to ARGB
This patch (and not setting HARDWARE_CURSOR_BIT_ORDER_MSBFIRST on big endian
platforms) fixes it for me with the radeon driver and doesn't break intel.

Correct patch this time :)
2008-03-20 09:18:29 -04:00
Alex Deucher
f8c1eb29e2 Revert "Fix RandR 1.2 driver interface conversion of two colour cursors to ARGB"
This reverts commit 2673525796.

Pushed the wrong patch.
2008-03-20 09:14:41 -04:00
Michel Dänzer
2673525796 Fix RandR 1.2 driver interface conversion of two colour cursors to ARGB
See bug 11796
2008-03-19 19:12:37 -04:00
Jesse Barnes
afd7428690 Cleanup logic in xf86PrepareOutputs
Should have done this in the first place.  Since we're checking for the absence
of the get_crtc callback in the first place, we'll short circuit the later call
and disable the output, so the ugly "continue" block is unnecesary.
2008-03-17 14:55:44 -07:00
Jesse Barnes
ba85caacb5 Make xf86SetDesiredModes aware of current output configuration
By adding a new output callback, ->get_crtc, xf86SetDesiredModes is able to
avoid turning off outputs & CRTCs if the current output<->CRTC mappings are the
same as the desired configuration.  This helps avoid flickering displays at
startup time, which speeds things up a little and looks better.
2008-03-17 14:13:09 -07:00
Jesse Barnes
bee2ddf35f Fail CRTC configuration if !vtSema
Unless we check for vtSema before calling into the CRTC and output callbacks,
we may end up trying to access video memory that no longer exists, leading to a
crash.  So if we don't have vtSema, return FALSE to the caller, indicating that
we didn't do anything.

Fixes #14444.
2008-03-17 08:33:01 -07:00
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
Peter Hutterer
4f2cd0ed96 Merge branch 'master' into mpx
This merge reverts Magnus' device coorindate scaling changes. MPX core event
generation is very different, so we can't scale in GetPointerEvents.

Conflicts:

	Xi/opendev.c
	dix/devices.c
	dix/dixfonts.c
	dix/getevents.c
	dix/resource.c
	dix/window.c
	hw/xfree86/common/xf86Xinput.c
	mi/mipointer.c
	xkb/ddxBeep.c
	xkb/ddxCtrls.c
	xkb/ddxKeyClick.c
	xkb/ddxList.c
	xkb/ddxLoad.c
	xkb/xkb.c
	xkb/xkbAccessX.c
	xkb/xkbEvents.c
	xkb/xkbInit.c
	xkb/xkbPrKeyEv.c
	xkb/xkbUtils.c
2008-03-04 18:11:10 +10:30
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
Peter Hutterer
0ac1755977 Merge branch 'master' into mpx
Conflicts:

	Xext/sampleEVI.c
2008-01-26 13:55:07 +10:30
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
Peter Hutterer
38bf01bd1c Merge branch 'master' into mpx 2008-01-10 13:38:46 +10:30
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
Peter Hutterer
8da83836b6 Merge branch 'master' into mpx
Conflicts:

	XTrap/xtrapddmi.c
	Xext/security.c
	Xext/xprint.c
	Xext/xtest.c
	Xext/xvdisp.c
	Xi/exevents.c
	Xi/grabdevb.c
	Xi/grabdevk.c
	Xi/opendev.c
	Xi/ungrdev.c
	Xi/ungrdevb.c
	Xi/ungrdevk.c
	dix/cursor.c
	dix/devices.c
	dix/dixutils.c
	dix/events.c
	dix/getevents.c
	dix/main.c
	dix/window.c
	hw/xfree86/ramdac/xf86Cursor.c
	include/dix.h
	include/input.h
	include/inputstr.h
	mi/midispcur.c
	mi/miinitext.c
	mi/misprite.c
	render/animcur.c
	xfixes/cursor.c
	xkb/xkbAccessX.c
2008-01-03 17:04:54 +10:30
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
Tormod Volden
ee2d4626dc Bug #12932: Use DEFAULT_DPI in randr1.2 instead of hardcoded 96. 2007-11-18 11:56:31 -05:00
Peter Hutterer
0b729051c0 Merge branch 'master' into mpx
Conflicts:

	Xi/extinit.c
	Xi/grabdev.c
	Xi/setmode.c
	Xi/ungrdev.c
	dix/devices.c
	dix/events.c
	dix/getevents.c
	include/dix.h
	mi/midispcur.c
	mi/misprite.c
	xkb/xkbActions.c
	xkb/xkbEvents.c
	xkb/xkbPrKeyEv.c
2007-11-07 15:37:23 +10:30
Eamon Walsh
a52c9b2a59 Merge branch 'master' into XACE-SELINUX
Conflicts:

	dix/dispatch.c
	dix/property.c
	hw/xfree86/common/xf86VidMode.c
	include/xkbsrv.h
	render/glyph.c
	xkb/xkbActions.c
2007-11-05 19:08:36 -05:00
Daniel Stone
733d42065f XFree86: Remove usage of alloca
Replace with heap allocations.
2007-11-05 14:34:42 +00:00
Matthias Hopf
4d0f35c81d Always duplicate mode name when duplicating a mode.
If the originating mode didn't have a name, we would end up with the name of
the original mode being setup correctly, but with the name of the copy still
being NULL.
2007-11-02 19:27:32 +01:00
Matthias Hopf
27b13eeb56 Nuke superfluous ",", added missing include for xf86i2c.h. 2007-10-26 13:15:07 +02:00
Eamon Walsh
b633d54b94 Merge branch 'master' into XACE-SELINUX
Conflicts:

	GL/glx/glxscreens.c
	hw/xnest/Screen.c
	render/glyph.c
	render/glyphstr.h
	render/render.c
2007-10-25 12:19:30 -04:00
Matthias Hopf
48ca5961ca Prefer configured DisplaySize to probed DDC data, if available.
Based on patch by Hong Liu <hong.liu@intel.com>.
2007-10-24 20:31:51 +02:00
Keith Packard
29e0e18072 Leave hardware-specified preferred modes alone when user preference exists.
Instead of removing the preference bit marking the hardware declared mode
preference, leave it in place and just move the user preferred mode to the
front of the list while marking it with the USERPREF bit which will cause it
to be selected by the initial mode selection code.
2007-10-22 13:38:16 -07:00
Eric Anholt
ab4bce02a9 Add a quirk for Philips 107P5 which lacks the preferred bit on detailed timing.
Also fix the prefer-large-75 quirk if the prefer-first-detailed bit was set,
though it's not the case for the existing prefer-large-75 consumer.
2007-10-18 15:22:42 -07:00
Eamon Walsh
c3f7b86255 Merge branch 'master' into XACE-SELINUX
Conflicts:

	os/access.c
2007-10-17 15:00:54 -04:00
Keith Packard
feac075952 Make config file preferred mode override monitor preferred mode.
Add a new even-more-preferred bit to each mode which is used to make config
file preferences selected instead of the monitor preferred mode.
2007-10-17 11:42:28 +08:00
Eric Anholt
fc092334ac Bug #10304,12784,11603: Add quirks for several physical size issues.
A lot of EDID writers apparently end up stuffing centimeters (like the
maximum image size field) into the detailed timings, instead of millimeters.
Some of them only get it wrong in one direction.  Also, add a quirk to let
us mark the largest 75hz mode as preferred, which will often be used for
EDID 1.0 CRTs.
2007-10-11 16:55:44 -07:00
Matthias Hopf
45cc03726b Make mode checking more tolerant like in pre-RandR times. 2007-10-11 18:59:39 +02:00
Eamon Walsh
27612748e0 Merge branch 'master' into XACE-SELINUX
Conflicts:

	dix/devices.c
2007-09-26 07:47:29 -04:00
Alex Deucher
e1860f241b Document xf86_crtc_clip_video_helper better. 2007-09-22 17:54:51 -04:00
Alex Deucher
19d30c1c77 Revert "Fix possible crash if Xv window is outside of either crtc"
This reverts commit 9235531410.

This changes ABI.  False means there was a memory failure of some kind,
not that the video shouldn't be displayed
2007-09-22 17:51:27 -04:00
Michel Dänzer
9235531410 Fix possible crash if Xv window is outside of either crtc 2007-09-22 14:25:02 -04:00
Eamon Walsh
47ab4d648b devPrivates rework: convert CursorRec and CursorBits over to new interface. 2007-08-30 11:40:39 -04:00
Eamon Walsh
4017d31902 devPrivates rework: since API is already broken, switch everything
over to new system.

Need to update documentation and address some remaining vestiges of
old system such as CursorRec structure, fb "offman" structure, and
FontRec privates.
2007-08-28 09:28:25 -04:00
Dave Airlie
76bf3cd7b8 randr: fixup crtc and output destroy
if you are moving pointers, you want to move the pointers not just a byte
2007-08-23 16:22:03 +10:00
Alex Deucher
81f8b652d9 Add _X_EXPORT to exported functions in hw/xfree86/modes/*
Also add missing exports to hw/xfree86/loader/xf86sym.c
2007-08-22 19:26:34 -04:00
Keith Packard
265a633cf1 Screen size changing should leave FB alone when X is inactive.
xf86RandR12ScreenSetSize must protect calls to EnableDisableFBAccess with
suitable vtSema checks to avoid invoking driver code while the X server is
inactive.
2007-08-20 23:24:22 -07:00
Keith Packard
7dc8531548 Ref count cursors used in hw/xfree86/modes code.
The multi-crtc cursor code in hw/xfree86/modes holds a reference to the
current cursor. This reference must be correctly ref counted so the cursor
is not freed out from underneath this code.
2007-08-20 23:24:12 -07:00
Alex Deucher
53c04351c4 move intel crtc xv clipping helper to the xserver
The code is generic and can be used by any overlay-based card when
adding randr 1.2 support.  Tested on radeon.
2007-08-20 19:47:55 -04:00
Peter Hutterer
f367285fd5 Merge branch 'master' into mpx
Conflicts:

	Xi/exevents.c
	dix/devices.c
	dix/getevents.c
	include/dix.h
	mi/mieq.c
2007-08-12 15:31:10 +09:30
Eric Anholt
ff4bd3addb Fix the swapped decode of the EDID DTD h/v sync polarity fields.
As a result, we can remove the quirks that existed to flip the bits back around
for us.  This is not confirmed in all cases due to lack of bugs containing EDID
blocks associated with the quirks, but is likely true.
2007-08-08 14:39:27 -07:00
Gustavo Pichorim Boiko
2926cf1da7 [PATCH] Allocate the right number of entries for saving crtcs 2007-08-08 12:31:11 -07:00
Dave Airlie
722d73a0ef Revert "Fix RandR 1.2 conversion of two colour to ARGB cursor on MSB first platforms."
This reverts commit 0f057ebb27.

This screws my cursor up just starting a bare X server on Intel,
I get the X more like <> than ><..
2007-07-31 10:34:56 +10:00
Aaron Plattner
cec793ef7a Include picturestr.h in xf86Crtc.h to pick up definition of PictTransform. 2007-07-26 11:49:46 -07:00
Michel Dänzer
0f057ebb27 Fix RandR 1.2 conversion of two colour to ARGB cursor on MSB first platforms.
Doesn't seem necessary to do anything here...
2007-07-25 17:04:04 +02:00
Gustavo Pichorim Boiko
5b424b562e Set the crtc before the output change is notified
Set the new randr crtc of the output before the output change notification is
delivered to the clients.
Remove RROutputSetCrtc as it is not really necessary. All we have to do is set
the output's crtc on RRCrtcNotify
2007-07-23 14:47:45 -07:00
Keith Packard
dc9c519628 Make PreferredMode option in config file override EDID mode preferences.
When the PreferredMode option is selected in the config file, remove the
M_T_PREFERRED bit from all other preferred modes to force the config file
mode to be selected.
2007-07-19 13:31:07 -07:00
Keith Packard
73a93c5a6b Query modes on disabled (but not ignored) outputs.
Code that disabled mode detection on disabled outputs would confuse
applications by listing said outputs as connected but without any modes.
This makes the disabled state in the config file affect only the initial
configuration and not subsequent modifications by RandR.
2007-07-19 13:31:00 -07:00
Keith Packard
9fc36a391c Make pending property changes trigger mode setting.
The DDX code was ignoring pending properties for computing when mode setting
was required. This meant that configurations differing only in property
values would not cause the mode to be set.
2007-07-19 13:30:51 -07:00
Keith Packard
ac979c1651 MakeAtom needs length without trailing NUL. sizeof("string") includes NUL.
I made a mistake in some new code using MakeAtom, passing the size of the
string instead of the length of the string. Figuring there might be other
such mistakes, I reviewed the server code and found four bugs of the same
form.
2007-07-14 12:13:17 -07:00
Keith Packard
393171034c Add RandR reflection support.
Replace the ad-hoc transformation mechanisms with matrices.
Prepares for more general transformation as well.
2007-07-14 09:03:47 -07:00
Adam Jackson
e316fa59fe Add per-monitor config file option for maximum pixel clock. 2007-07-10 14:20:55 -04:00
Gero Mudersbach
00e8295b7e Bug #10814: Add needed quirk for Samsung 225BW like the 226BW. 2007-07-02 11:40:11 -07:00
Eric Anholt
667e95f2e8 Correct the xf86EdidModes.c file description. 2007-07-02 11:36:11 -07:00
Adam Jackson
4d76075dbb Death to RCS tags. 2007-06-29 14:06:52 -04:00
Keith Packard
d2177c8091 Skip driver mode detection/configuration when !vtSema.
When the server is not active, make sure the driver functions related to
mode setting are not called.
2007-06-22 02:12:58 +01:00
Peter Hutterer
1f97a76476 Merge branch 'master' into mpx
Conflicts:

	dix/devices.c
	hw/xfree86/common/xf86Xinput.c
	hw/xfree86/loader/xf86sym.c
	mi/mieq.c
2007-06-19 17:20:52 +09:30
Daniel Ciocea
c079cce9d8 Fix sync polarity on Samsung SyncMaster 205BW monitor.
need to use standard VESA sync polarity instead of the
EDID provided -hsync -vsync values.
2007-06-08 18:12:21 -07:00
Alan Hourihane
fa877d7ff2 Fix mode validation against the maximum X/Y values configured
at server startup, and not against the virtual X/Y parameters
as they can change.

This fixes an issue when canGrow is TRUE and modes get dropped
when using the virtual X/Y parameters.
2007-05-30 13:06:45 +01:00
Keith Packard
076d070e18 Use Screen block handler for rotation to draw under DRI lock.
DRI uses a non-screen block/wakeup handler which will be executed after the
screen block handler finishes. To ensure that the rotation block handler is
executed under the DRI lock, dynamically wrap the screen block handler for
rotation.
2007-05-17 20:24:18 -07:00
Keith Packard
915563eba5 Disable all outputs and crtcs at startup.
Leaving devices enabled during server startup can cause problems during the
initial mode setting in the server, especially when they are used for
different purposes by the X server than by the BIOS. Disabling all of them
before any mode setting is attempted provides a stable base upon which the
remaining mode setting operations can be built.
2007-05-17 20:22:43 -07:00
Peter Hutterer
f28eea0647 Merge branch 'master' into mpx
Conflicts:

	dix/devices.c
	dix/events.c
2007-04-27 16:34:36 +09:30
Aaron Plattner
3ba1e8ab6d Include xf86Rename.h in xf86RandR12.h. 2007-04-24 17:20:14 -07:00
Aaron Plattner
38d14e8589 Adjust the screen pixmap's dimensions in xf86RandR12ScreenSetSize. 2007-04-22 18:04:27 -07:00
Aaron Plattner
39bc8bb0fd Don't call xf86RandR12TellChanged if it doesn't exist. Add some exports to xf86Rename.h. 2007-04-20 14:23:38 -07:00
Keith Packard
96ef0f7843 Disable SourceValidate in rotation to capture cursor.
SourceValidate is used exclusively by the software cursor code to pull the
cursor off of the screen before using the screen as a source operand. This
eliminates the software cursor from the frame buffer while painting the
rotated image though. Disabling this function by temporarily setting the
screen function pointer to NULL causes the cursor image to be captured.
(cherry picked from commit 05e1c45ade)
2007-04-19 17:49:55 -07:00
Keith Packard
7ca4baffb5 Was accidentally disabling rotation updates in mode set.
Setting a mode on an unrotated CRTC was causing all of the rotation updates
to be disabled; the loop looking for active rotation wasn't actually looking
at each crtc, it was looking at the modified crtc many times.
(cherry picked from commit 8b217dee3a)
2007-04-19 17:49:48 -07:00
Keith Packard
806a537e64 Revert "Suppress software cursor removal during rotated shadow buffer drawing."
This reverts commit 999b681cf3.
Replacing this with simpler code that just disables SourceValidate
during rotation redisplay.
2007-04-19 17:49:34 -07:00
Eric Anholt
999b681cf3 Suppress software cursor removal during rotated shadow buffer drawing. 2007-04-18 14:33:27 -07:00
Erik Andrén
53fb42e65c Syncmaster 226 monitor needs 60Hz refresh (#10545).
I've managed to solve my own bug (#10545) by applying the following
patch to the xserver.

Please apply.

<Conspiracy mode on>
This monitor is "Vista Certified". I wonder if this is a pure coincidence...
<Conspiracy mode off>

With kind regards
Erik Andrén
(cherry picked from commit a63704f14a)
2007-04-17 21:38:10 -07:00
Keith Packard
fc162c6cfa Allow outputs to be explicitly enabled in config, overriding detect.
Option "Enable" "True" will force the server to enable an output at startup
time, even if the output is not connected. This also causes the default
modes to be added for this output, allowing even sync ranges to be used to
pick out standard modes.
(cherry picked from commit a3d73ba2cb)
2007-04-16 11:52:59 -07:00
Keith Packard
c41e3bd713 Use default screen monitor for one of the outputs.
By default, use the screen monitor section for output 0, however, a driver
can change which output gets the screen monitor by calling
xf86OutputUseScreenMonitor.
(cherry picked from commit f4a8e54caf)
2007-04-16 11:52:58 -07:00
Keith Packard
cc4eb1c7ea Add quirk for Acer AL1706 monitor to force 60hz refresh.
This Acer monitor reports support for 75hz refresh via EDID, and yet when
that rate is delivered, the monitor does not sync and reports out of range.
Use the existing 60hz quirk for this monitor.
(cherry picked from commit 1328a288e9)
2007-04-16 08:11:30 -03:00
Peter Hutterer
d4dad6f84f Merge branch 'master' into mpx
Conflicts:

	configure.ac
	dix/events.c
	hw/xfree86/common/xf86Xinput.c
2007-04-12 11:11:03 +09:30
Keith Packard
bcf17df69a Disable CRTC when SetSingleMode has no matching mode. Update RandR as well.
xf86SetSingleMode tries to resize all crtcs to match the selected mode. When
a CRTC has no matching mode, it now disables the CRTC (instead of crashing).

Also, poke the RandR extension when xf86SetSingleMode is done so that
appropriate events can be delivered, and so that future RandR queries return
correct information.
(cherry picked from commit dc6c4f6989)
2007-04-10 12:36:45 -07:00
Keith Packard
a39f297ada Don't erase current crtc for outputs on CloseScreen
Erasing this variable causes some outputs (SDVO on intel) to fail
to be correctly reset at server reset time.
(cherry picked from commit 56262a4ee9)
2007-04-02 19:12:44 -07:00
Eric Anholt
11797ffdcc Move modes/ debugging output under Option "ModeDebug" in the Device section. 2007-04-02 18:21:58 -07:00
Peter Hutterer
e8777a91f3 Merge branch 'master' into mpx
Conflicts:

	Xi/closedev.c
	Xi/exevents.c
	Xi/extinit.c
	Xi/listdev.c
	dix/window.c
	hw/xfree86/common/xf86Xinput.c
	include/extinit.h
	mi/mipointer.c
2007-04-02 15:36:26 +09:30
Adam Jackson
5ba4d9eedf Refuse to create tiny modes from EDID detailed timing. 2007-03-28 12:03:19 -04:00
Keith Packard
804080a709 Make pending properties force mode set. And, remove AttachScreen calls.
Yes, two changes in one commit. Sorry 'bout that.

The first change ensures that when pending property values have been
changed, a mode set to the current mode will actually do something, rather
than being identified as a no-op. In addition, the driver no longer needs to
manage the migration of pending to current values, that is handled both
within the xf86 mode setting code (to deal with non-RandR changes) as well
as within the RandR extension itself.

The second change eliminates the two-call Create/AttachScreen stuff that was
done in a failed attempt to create RandR resources before the screen
structures were allocated. Merging these back into the Create function is
cleaner.
(cherry picked from commit 57e87e0d00)

Conflicts:

	randr/randrstr.h
	randr/rrcrtc.c

I think master and server-1.3-branch are more in sync now.
2007-03-24 00:01:47 -07:00
Keith Packard
1f77120775 Ensure that crtc desired values track most recent mode.
desiredX and desiredY were not recorded during xf86InitialConfiguration.
desiredX, desiredY and desiredRotation were not recorded during
xf86SetSingleMode.
(cherry picked from commit 36e5227215)
2007-03-23 23:44:34 -07:00
Keith Packard
7093367c39 Fix Pending property API, adding RRPostPendingProperty.
Pending Properties take effect when the driver says they do, so provide an
API to tell DIX when a property effect is made. Also, allow driver
to reject property values in RRChangeOutputProperty.
(cherry picked from commit 8eb288fbd6)
2007-03-23 01:32:34 -07:00
Keith Packard
510eaa346e Clean up xf86CrtcRec and xf86OutputRec objects at CloseScreen.
Erase pointers to structures which are freed at server reset time.
(cherry picked from commit 492c768065)
2007-03-23 01:30:24 -07:00
Keith Packard
b63e0d2545 Clean up Rotate state on server reset.
The rotation state is stored in the xf86_config structure which is not
re-initialized at server reset time. Clean it up at CloseScreen time.
(cherry picked from commit f8db7665dc)
2007-03-23 01:30:00 -07:00
Peter Hutterer
015d728bcd Merge branch 'master' into mpx
Conflicts:

	dix/devices.c
	dix/events.c
	mi/misprite.c
2007-03-19 09:42:56 +10:30
Keith Packard
9d0c3b52f2 Eliminate RRModeRec devPrivate field.
The xf86 mode setting code was mis-using this field to try and store a
pointer to a DisplayModeRec, however, each output has its own copy of every
DisplayModeRec leaving the one in in the RRModeRec devPrivate field pointing
at a random DisplayModeRec.

Instead of attempting to rectify this, eliminating the devPrivate entirely
turned out to be very easy; the DDX code now accepts an arbitrary RRModeRec
structure and set that to the hardware, converting it on the fly to a
DisplayModeRec as needed.
(cherry picked from commit 3506b9376c)
2007-03-17 23:34:58 -07:00
Keith Packard
2c93083edd Add support for user-defined modelines in RandR.
The RandR protocol spec has several requests in support of user-defined
modes, but the implementation was stubbed out inside the X server. Fill out
the DIX portion and start on the xf86 DDX portion. It might be necessary to
add more code to the DDX to insert the user-defined modes into the output
mode list.
(cherry picked from commit 63cc2a51ef)

Conflicts:

	randr/randrstr.h

Updated code to work in master with recent security API changes.
2007-03-17 23:20:07 -07:00
Keith Packard
3bffb28126 Don't wedge when rotating more than one CRTC.
Rotation block handler was re-registering the rotation damage structure,
creating an infinite loop in the damage code. Track registration of the
damage structure to avoid this.
(cherry picked from commit b14f003b0e)
2007-03-15 19:32:58 -07:00
Keith Packard
9562b6abe1 Allow xf86_reload_cursors during server init.
xf86_reload_cursors is supposed to be called from the crtc mode setting
commit hook; as that happens during server initialization, check for this
case.
(cherry picked from commit 5b77bf2d02)
2007-03-15 19:32:48 -07:00
Keith Packard
ae75019ccf Create driver-independent CRTC-based cursor layer.
This moves most of the cursor management code out of the intel driver and
into the general server code. Of course, the hope is that this code will be
useful for other driver writers as well.

Check out xf86Crtc.h for the usage information, making sure you add the
needed hooks to the crtc funcs structure for your driver.
(cherry picked from commit 4d81c99a46)
2007-03-15 00:02:40 -07:00
Keith Packard
40ae4f246d Remove stale monitor data when output becomes disconnected.
Remove parsed EDID and EDID property from disconnected outputs.
(cherry picked from commit ae9d5aa479)
2007-03-07 20:53:16 -08:00
Keith Packard
72a23d88d7 Add xf86CrtcScreenInit to share initialization across drivers.
xf86CrtcScreenInit performs initialization that needs to happen at
ScreenInit time.
(cherry picked from commit 558a4f5588)
2007-03-06 23:20:59 -08:00
Keith Packard
9b6bb06f13 Allow relative positions to use output names or monitor identifiers.
Previous version used monitor identifiers if present, otherwise output
names. That caused existing working configurations to break when additional
information was added to the configuration file.
(cherry picked from commit 3f5cedf00a)
2007-03-05 23:50:37 -08:00
Keith Packard
bed76caa6c Use EDID data to set screen physical size at server startup.
Screen physical size is set to a random value before the RandR code gets
control, override that and reset it to a value based on the compat_output
physical size (if available). If that output has no physical size, just use
96dpi as the default resolution and set the physical size as appropriate.
(cherry picked from commit 843077f23a)
2007-03-05 23:37:11 -08:00
Keith Packard
47f8361c3a Add xf86SetDesiredModes to apply desired modes to crtcs.
xf86SetDesiredModes applies the desired modes to each crtc (as selected by
xf86InitialConfiguration initially and modified by successful mode settings
afterwards). For crtcs without a desired mode, pScrn->currentMode is used to
select something workable.
(cherry picked from commit bcade98cca)
2007-03-05 22:23:19 -08:00
Keith Packard
33d2cf93fb Move xf86SetSingleMode into X server from intel driver.
This function applies a single mode to the screen (as from RandR 1.1,
XFree86-VidModeExtension or XFree86-DGA) using a policy that selects one
output to reconfigure to the requested mode and then makes all other outputs
fit within that size.
(cherry picked from commit 5a595c1f76)
2007-03-05 20:18:56 -08:00
Dave Airlie
8ba5e8d820 add a standard connector type and name for us as an output property 2007-03-05 13:46:41 +11:00
Dave Airlie
2e31872e05 modes: add commit/prepare hooks 2007-03-05 13:44:21 +11:00
Peter Hutterer
1f0075786f Merge branch 'master' into mpx
Conflicts:

	configure.ac
	dix/getevents.c
	hw/xfree86/ramdac/xf86Cursor.c
	mi/mipointer.c
	xkb/xkbUtils.c
2007-03-05 12:37:17 +10:30
Keith Packard
06b01186f6 Remove debugging ErrorF from rotation code.
(cherry picked from commit e6af7569f2)
2007-03-04 17:35:04 -08:00
Keith Packard
c14507b683 Handle non-zero origin rotated crtc. Damage crtc area on re-rotate.
Box transformation from source to dest area was broken, leaving the wrong
areas painted when the crtc origin was non-zero.

When rotating from left to right, the pixmap doesn't get reallocated, and so
no damage was left in the pixmap from xf86RotatePrepare. Separately damage
the whole crtc area when this occurs to repaint the area.
(cherry picked from commit 2a50ca2160)
2007-03-04 17:34:54 -08:00
Aaron Plattner
ea1a72946d Add a canGrow argument to xf86InitialConfiguration.
canGrow indicates to the DDX that the driver can enlarge the desktop via the
xf86_config->funcs->resize hook.  If so, xf86InitialConfiguration will set
virtual[XY] to match the configuration it chooses and will leave the crtc config
size ranges alone.  If FALSE, it will bloat the screen to fit the largest probed
mode and also set the crtc config max size to limit the desktop to the initial
virtual[XY] size.
2007-03-02 12:06:54 -08:00
Aaron Plattner
04d15da95d Add a screen resize hook to xf86CrtcConfigRec.
This hook is called when the DDX needs to resize the screen.  The driver is
responsible for changing virtualX and virtualY, along with any other related
screen properties (devPrivate.ptr, devKind, displayWidth, etc.).

Use the size range from the crtc config instead of randrp->virtual[XY] when
reporting the min and max screen sizes to the DDX.
2007-03-02 12:06:54 -08:00
Keith Packard
5631a67f64 Don't set subpixel order during startup; the screen won't be ready.
in xf86CrtcSetMode, scrn->pScreen will be NULL during server startup time,
so don't try to set the subpixel order. subpixel order will be set in the
randr initialization anyways.
(cherry picked from commit 5f6f8616d8)
2007-02-17 17:40:35 -08:00
Keith Packard
096965ec9c Ensure drivers can use new modes header files.
New modes header files required a few minor changes to be used by external
drivers, the most notable of which is the publication of the config file
parser header files.
2007-02-17 15:16:44 -08:00
Keith Packard
55797dd252 Respect rotation in initial screen size computation. 2007-02-17 15:16:34 -08:00
Keith Packard
e4507825bf Enable startup-time rotation; change rotation pixmap creation API.
Add monitor "Rotate" option taking one of "normal", "left", "inverted" or
"right". However, because initial mode selection is made before the screen
is completely initialized, we cannot create the shadow pixmap object at this
point. Pend the shadow pixmap creation until the block handler.

Note that this code is not completely functional yet.
2007-02-17 15:16:20 -08:00
Keith Packard
f350909d16 Kludge around duplicate code added in hw/xfree86/modes.
Code added in hw/xfree86/modes came from the server-1.3-branch.
Portions of this code had previously been integrated into xf86Mode.c
and edid_modes.c.

To preserve hw/xfree86/modes as much as possible, the duplicate code from
the other files has been disabled; a more careful review would figure out
where that code actually belonged.
2007-02-15 21:50:48 -08:00
Keith Packard
258beebc77 Report correct RandR 1.0 sizeID. Report correct subpixel order.
RandR 1.0 sizeID must be computed the same way every time, so when reporting
it in the ScreenChangeNotify event, just construct the usual 1.0 data block
and use that.

subpixel geometry information can be computed by looking at the connected
outputs and finding any with subpixel geometry and using one of those for
the global screen subpixel geometry. This might be improved by reporting
None if more than one screen has information and they conflict.
2007-02-15 20:37:44 -08:00
Keith Packard
ef6b1235fd Allow new modes code to build inside drivers as well as server.
Use config.h for driver builds where xorg-config.h isn't available.
2007-02-15 20:37:19 -08:00
Keith Packard
d4eb4d0650 Merge crtc/output-based mode selection code.
This code comes from the intel driver, so there's no history in this tree.

As the crtc/output-based mode selection code uses ddc, the ddc and i2c
modules have been merged into the server. Attempts to load them are safely
ignored now.
2007-02-15 20:36:20 -08:00