Commit Graph

1670 Commits

Author SHA1 Message Date
Luc Verhaegen
244e960bb0 XAA PixmapOps: Sync before accessing unwrapped callbacks.
When using any XAAPixmapOps, we call into unknown but freshly
unwrapped callbacks (like fb ones). Unlike the XAA*Fallback calls,
we did so without syncing first, exposing us to all kinds of
synchronisation issues.

I believe that the rendering errors appeared now because *PaintWindow
vanished (e4d11e58), and we just use miPaintWindow instead. This
takes a less direct route to the hw and ends up at
PolyFillRectPixmap, which very often left drawing artifacts.

We now sync accordingly, and no longer get the rendering artifacts i
was methodically reproducing on radeonhd, radeon, unichrome...

Also, in order to allow driver authors to remove extensive syncing
or flushing to hide this issue, create XAA_VERSION_ defines, put
them in xaa.h and bump the patchlevel.

(novell bug #435791)
(cherry picked from commit 59f9fb4b8c)
2008-12-16 14:05:54 -05:00
Julien Cristau
bfe5a13499 xfree86: xf86SetDepthBpp needs to respect the driver's depth24flags
When setting the depth to 24, leave bpp unset so the logic to pick
a supported value is used instead of ignoring the driver's preference
and forcing 32 bpp.
(cherry picked from commit 991c88b754)
2008-12-16 14:05:43 -05:00
Egbert Eich
38e0a542fc int10: Do an mprotect(..,PROT_EXEC) on shmat()ed memory ranges.
When the linux kernel sets the NX bit vm86 segfaults when it tries to execute
code in memory that is not marked EXEC. Such code gets called whenever
we return from a VBIOS call to signal the calling program that the call
is actually finished and that we are not trapping for other reasons (like
IO accesses).
Use mprotect(2) to set these memory ranges PROT_EXEC.
(cherry picked from commit a9e20306fb)
2008-12-16 14:04:30 -05:00
Julien Cristau
b0c2d00985 xfree86: fix compiler warnings in DoModalias()
The precedence of == is higher than that of &, so that code was
probably buggy.

xf86Init.c: In function 'DoModalias':
xf86Init.c:300: warning: suggest parentheses around comparison in operand of &
xf86Init.c:304: warning: suggest parentheses around comparison in operand of &
xf86Init.c:308: warning: suggest parentheses around comparison in operand of &
(cherry picked from commit ffaaa1a198)
2008-11-05 14:41:11 -05:00
Nathaniel McCallum
a311fdc040 Xorg: add -modalias option
This scans the installed video drivers and prints a Linux-style modalias
listing of the devices each driver claims to support.
2008-11-05 14:40:59 -05:00
Adam Jackson
377712dbfc linux: Drain the console fd of data when using evdev for keyboards
Works around a silly bug in the kernel that causes wakeup storms after
too many keypresses.  Should fix the kernel bug too, but this at least
keeps the idle wakeup count below 1000/sec.
(cherry picked from commit 446d9443ce)
2008-11-05 13:37:36 -05:00
Peter Hutterer
3245bf1136 xfree86: If AEI is on, disable "kbd" and "mouse" devices.
This consists of two parts:
In the implicit server layout, ignore those drivers when looking for a core
device.

And after finishing the server layout, run through the list of devices and
remove any that use mouse or kbd.

AEI is mutually exclusive with the kbd and mouse drivers, so pick either - or.

Signed-off-by: Peter Hutterer <peter.hutterer@redhat.com>
(cherry picked from commit c264826da9)
2008-11-05 13:36:42 -05:00
Peter Hutterer
58e6d6afe0 xfree86: if AllowEmptyInput is true, enable RAW mode on the console.
Usually, the console is set to RAW in the kbd driver. If we hotplug all input
devices (i.e. the evdev driver for keyboards) and the console is left as-is.
As a result, the evdev driver must put an EVIOCGRAB on the device to avoid
characters leaking onto the console. This again breaks many things, amongst
them lirc, in-kernel mouse button emulation and HAL.

This patch sets the console to RAW if AllowEmptyInput is on.

Use-cases:
1. AEI is off
  1.1. Only kbd driver is used - behaviour as-is.
  1.2. kbd and evdev driver is used: if evdev does not grab the device,
       duplicate events are generated.
2. AEI is on
  2.1. Only evdev driver is used - behaviour as-is, but evdev does not need
       to grab the device anymore.
  2.2. evdev and kbd are used: duplicate key events are generated if evdev
       does not grab the device.

1.2 is a marginal use-case that can be fixed by adding a "grab" option to the
evdev driver (update of xorg.conf is needed).

2.2 is an issue. If we have no ServerLayout section, AEI is on, but devices
specified in the xorg.conf are still added [1], resulting in duplicate events.
This is a common configuration and needs sorting out.

[1] 2eaed4a10f

Signed-off-by: Peter Hutterer <peter.hutterer@redhat.com>
Signed-off-by: Adam Jackson <ajax@redhat.com>
(cherry picked from commit d936a4235c)
2008-11-05 13:35:26 -05:00
Rémi Cardona
b28c25b5ae Force LC_ALL=C when building xf86DefModeSet.c
Fixes build in not-quite-latin locales.
2008-11-05 11:49:49 -05:00
Maarten Maathuis
ec5046ca75 dri: don't set the dixPrivate key to NULL, as this is a staticly set variable.
- This breaks on the 2nd server generation.
- No other subsystem seems to NULL their key.
- This should fix bug 17982.
(cherry picked from commit 5b336585a4)
2008-10-27 09:47:45 -04:00
Adam Jackson
7df5e93cf5 Move xorg_backtrace() up to the OS level so we can call it from DIX.
(cherry picked from commit 94ed0ba1b5)
2008-10-27 09:46:28 -04:00
Adam Jackson
aa548b0a9b EDID: Catch even more cases of encoding aspect as size.
Very cute, Samsung, not only do you claim to be 16cm by 9cm in the
global size record, you also claim to be 160mm by 90mm in the detailed
timings.  Grrr.
(cherry picked from commit bd9c6b3a4d)
2008-10-27 09:46:22 -04:00
Adam Jackson
75504517a3 EDID: Catch monitors that encode aspect ratio for physical size.
This is not legal in either EDID 1.3 or 1.4, but hey, when did a little
thing like legality stop anyone.
(cherry picked from commit 0660dd9d70)
2008-10-10 14:12:57 -04:00
Luc Verhaegen
8337c9aa3d DGA: Fix ProcXF86DGASetViewPort for missing support in driver.
Fixes a segfault when trying to activate a DGA mode without checking
whether DGA modesetting is at all possible.
(cherry picked from commit 1feb69eb63)
2008-10-08 11:21:49 -04:00
Zhenyu Wang
4e6cbd3238 Check nextEnabledOutput()'s return in bestModeForAspect()
In case no enabled outputs, we will reference wrong index of
output array.
(cherry picked from commit 56c615368c)
2008-10-08 11:21:39 -04:00
Adam Jackson
43e3af9cac int10: Fix a nasty memory leak.
(cherry picked from commit 94919480d8)
2008-10-08 11:16:56 -04:00
Adam Jackson
00ac80a0c4 int10: Don't warn when scanning for devices we don't have.
Some BIOSes (hi XGI!) will attempt to enumerate the PCI bus by asking
for the config space of every possible device number.  This despite
perfectly functional BIOS methods to enumerate the bus exactly.
(cherry picked from commit a57b2f172c)
2008-10-08 11:16:52 -04:00
Adam Jackson
c6ce2f6b3f int10: Remove useless check.
If you have more than one PCI device with the same d/b/d/f, you're
already in trouble.
(cherry picked from commit a65e36a873)
2008-10-08 11:16:48 -04:00
Adam Jackson
f385303cd0 Fix strict-aliasing silliness in XAA.
(cherry picked from commit 613ce09550)
2008-09-03 18:58:43 -04:00
Thomas Bodzar
62524d9d76 Xorg.man: typo (the the).
(cherry picked from commit 229e60db8f)
2008-09-02 17:57:46 -04:00
Maarten Maathuis
48744d20b1 xf86Crtc: Set mode to NULL, so nothing bad happens if crtc == NULL.
- Fix is courtesy of math_b.
2008-08-31 18:14:57 +02:00
Xavier Bestel
580e96d6d4 Cosmetic fix to EDID decoding.
(cherry picked from commit bb2cacd33e)
2008-08-29 14:48:40 -04:00
Julien Cristau
db918ea2b0 xfree86: use xorg.conf input devices if there is no ServerLayout
If xorg.conf has no ServerLayout section, use the first mouse and
keyboard sections as core devices, even with AllowEmptyInput.
(cherry picked from commit 2eaed4a10f)
2008-08-06 10:34:35 +09:30
Peter Hutterer
d199d800a4 xfree86: warn some more about potential missing input devices.
Put out a warning if xorg.conf has InputDevice sections, but these aren't
referenced in the used ServerLayout. This is only performed if AllowEmptyInput
is enabled.
The reason behind this is that the server used to auto-add the first
mouse/keyboard sections if none where referenced. Now, with HAL and AEI
enabled by default, setups that relied on this auto-adding break and are left
without input devices. The least we can do is warn them.
(cherry picked from commit 47160edec7)
2008-07-29 10:03:07 +09:30
Peter Hutterer
538942cc65 xfree86: if AllowEmptyInput is on, warn the user that we rely on HAL now.
(cherry picked from commit f30b0823db)
2008-07-29 10:03:07 +09:30
Eamon Walsh
ceffece78b Fix "warning: passing argument 1 of `modeIsPresent' from incompatible pointer type".
(cherry picked from commit 95d4ede538)
2008-07-21 17:13:59 -04:00
Dave Airlie
7f542ab37f 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.
(cherry picked from commit 0b9ef835a0)
2008-07-21 17:08:07 -04:00
Peter Hutterer
5cb38a3fca xfree86: don't free the config-file related information in DIDR. #15645
In DeleteInputDeviceRequest, leave the conf_idev (which is shared with
xf86ConfigLayout.input) alone for devices that were specified in the
ServerLayout section of the config file. This way, in the next server
generation we are left with what was the original config and can thus re-init
the devices.

This is an addon to 6d22a9615a, an attempt to
fix Bug 14418.

X.Org Bug 15645 <https://bugs.freedesktop.org/show_bug.cgi?id=15645>
X.Org Bug 14418 <https://bugs.freedesktop.org/show_bug.cgi?id=15645>
(cherry picked from commit 9ab4e2fd8e)
2008-07-16 10:32:46 +09:30
Julien Cristau
2b3faf2a75 Bug #16674: Make sure RANDR reports refresh as 0 if pixel clock is 0.
(cherry picked from commit 9111944b29)
2008-07-15 10:37:31 -04:00
Peter Hutterer
5b546f1c49 xfree86: append, not prepent, new input devices to xf86InputDevs.
If devices are prepended to the list, their wake-up order on resume is not the
same as the original initialisation order. Hot-plugged devices, originally
inited last, are re-enabled before the xorg.conf devices and in some cases may
steal the device files. Result: we have different devices before and after
suspend/resume.

RedHat Bug 439386 <https://bugzilla.redhat.com/show_bug.cgi?id=439386>
(cherry picked from commit 11ee0ae939)
2008-07-14 12:53:28 +09:30
Sascha Hlusiak
c30f36c8c1 xfree86: AllowEmptyInput is now enabled by default if hotplugging is enabled.
Remove AEI check from configImpliedLayout as the setting isn't actually parsed
at this point anyway.

Set AllowEmptyInput to enabled by default if hotplugging is enabled.
2008-07-03 21:42:10 +02:00
Dave Airlie
793ff6754e 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.
(cherry picked from commit 1771edcb44)
2008-07-03 19:01:44 +10:00
Dave Airlie
e9f83740e3 cursor: don't dereference NULL pointer is devPrivates not yet set.
This fixes a bug on server recycle with ati zaphod.
2008-07-03 18:46:38 +10:00
Julien Cristau
81e6ab4851 autoconfig: don't call closedir() when opendir() failed
If opendir() fails, return from matchDriverFromFiles() immediately.
Ubuntu bug 217647.
(cherry picked from commit fbad87f2ae)
2008-07-01 13:27:54 -04:00
Aaron Plattner
75b5e999f0 Work around the DIX losing mmWidth/mmHeight for RandR 1.1 DDXen.
RandR 1.1 has a physical size for each mode.  It used to be that the DIX would
remember these modes and pass them back up to the DDX when changing the screen
configuration.  The DDX uses RR_GET_MODE_MM to query the driver for the physical
dimensions of the screen, allowing it to preserve the DPI.

With RandR 1.2, the physical dimensions are stored as part of the output, rather
than per mode.  The DIX only uses the sizes passed in from the DDX to select the
mode pool for the "default" output, and forgets the physical sizes.  Then, when
reconfiguring the screen, it makes up a new RRScreenSizeRec using the dimensions
from the output, screwing up the DPI.

This change works around this problem by ignoring the DIX and querying the real
size from the driver.
(cherry picked from commit 2e8daee053)
2008-07-01 09:08:36 -07:00
Adam Jackson
9ab88bb9b1 Don't try to load DRI2 if built without it.
(cherry picked from commit e2bbf2d248)
2008-07-01 12:02:18 -04:00
Adam Jackson
bee463bd8a XInput ABI is 2.1, not 3.1.
(cherry picked from commit 76576c87b0)
2008-06-30 16:11:04 -04:00
Adam Jackson
6e8ed1398d Bump ABI minor numbers for the devPrivate ABI functions.
(cherry picked from commit 211e2bdcc6)
2008-06-30 10:31:55 -04:00
George Sapountzis
90f2a82ba5 glx: fix forgotten swrast -> SWRast
(cherry picked from commit 21a8052fdc)
2008-06-26 16:14:52 -04:00
George Sapountzis
6e278e3944 glx: missing swrast is fatal
(cherry picked from commit 877e6c35ff)
2008-06-26 16:14:52 -04:00
Kristian Høgsberg
0234d3d48f Get out of the mesa symlinking business.
This copies over the files generated from mesa/src/mesa/glapi.  There's
a corresponding mesa commit that makes it easy to generate the glapi files
straight into the xserver tree when the XML definitions change.

The only few files that are copied from mesa but aren't generated are
glapi.[ch] and glthread.[ch].  Everything in there is technically DRI
driver API and the whole setup is still a bit fragile, but it's not a new
problem.

The --with-mesa-source configure option is still around since other
parts of the server (XGL and DMX - grep for MESA_SOURCE) need that,
but for common case of building with GLX and AIGLX support, that
option is no longer needed.
(cherry picked from commit e5aad4bc08)
2008-06-26 16:14:51 -04:00
Dan Nicholson
d3a2e060bf Fix up paths for GL/glx -> glx renaming
(cherry picked from commit c76fddeea2)
2008-06-26 16:14:51 -04:00
Kristian Høgsberg
bd81faff8c Drop glcore GLX provider.
Obsoleted by the DRI swrast driver.
(cherry picked from commit 77ff8fd507)
2008-06-26 16:14:51 -04:00
George Sapountzis
988b1b8df3 Add loader for the swrast dri driver.
(cherry picked from commit 6ff6465931)
2008-06-26 16:14:51 -04:00
George Sapountzis
1efc0329b1 glcore: drop GLcore (files)
(cherry picked from commit a88c6b6646)
2008-06-26 16:14:50 -04:00
George Sapountzis
9b4d5b6521 glcore: drop GLcore (build system)
(cherry picked from commit dd7a53f8f2)
2008-06-26 16:14:50 -04:00
George Sapountzis
1ea2e69cfc glcore: build from mesa, dlopen from xorg
* The GLcore interface is disposable
* GLcore is installed in DRI_DRIVER_INSTALL_DIR which is overloaded for
  GLX_PROVIDER_INSTALL_DIR
(cherry picked from commit 567d389d47)
2008-06-26 16:14:50 -04:00
Adam Jackson
429b2a97a0 Bug #11842: Fix emulation of int1A PCI BIOS services.
Use only %di to name the PCI register to read/write, rather than %edi.
DOS is only expecting the base PCI config space anyway, and the BIOS
might be using the high bits of %edi.
(cherry picked from commit 9e5b3deafb)
2008-06-24 14:10:12 -04:00
Paul Bender
2334ff9bb2 Bug #15665: Fix building without Composite.
(cherry picked from commit 4c4e06af79)
2008-06-24 10:45:16 -04:00
Adam Jackson
85e598cc62 Remove some default modes that really shouldn't be in the default set.
(cherry picked from commit 59510a7643)
2008-06-24 10:41:27 -04:00