Commit graph

261 commits

Author SHA1 Message Date
Keith Packard
fc31f76b6f Re-fix DGA removal.
Removing DGA ended up breaking any drivers calling into the old
xf86DiDGAInit function as it tried to see if DGA was already enabled
and ended up crashing if the VT wasn't completely initialized. Oops.

Also, if the driver initializes DGA itself, have the DiDGA
initialization overwrite that information as the DiDGA code will call
ReInit on mode detect.

Signed-off-by: Keith Packard <keithp@keithp.com>
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
(cherry picked from commit db98b26ee1)
2009-09-30 22:21:05 -07:00
Keith Packard
507e57381f xfree86/modes: Remove all framebuffer support from DGA
This removes all rendering and mapping code from xf86DiDGA, leaving
just mode setting and raw input device access. The mapping code didn't
have the offset within /dev/mem for the frame buffer and the pixmap
support assumed that the framebuffer was never reallocated.
(cherry picked from 0b7c6c728c)

Signed-off-by: Keith Packard <keithp@keithp.com>
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2009-09-22 12:17:09 -07:00
Keith Packard
76a1839b0a Ensure that rotation updates happen frequently
The smart scheduler is designed to minimize scheduler overhead by
increasing the interval between WaitForSomething calls when a single
client is running. However, the software rotation code depends on
its BlockHandler being invoked for screen updates; the long delays
caused by the smart scheduler optimizations means that screen updates
can be delayed a long time as well.

The change is simple -- prevent the smart scheduler from increasing
the scheduling interval while any screen is using software rotation.
(cherry picked from commit e7dd1efef4)

Signed-off-by: Keith Packard <keithp@keithp.com>
2009-08-25 20:12:17 -07:00
Keith Packard
31dc4fe0be Perform rotation redisplay before calling driver block handler (which may flush rendering)
The rotation block handler uses regular driver rendering functions to
repaint the screen, if those functions queue commands in the driver,
it's important that the driver block handler be invoked after the
rotated image is drawn.

Signed-off-by: Keith Packard <keithp@keithp.com>
(cherry picked from commit 1740cda7a3)
2009-08-25 20:12:17 -07:00
Keith Packard
cebc0a7aa7 xf86_reload_cursors: fix cursor position to eliminate jumping after mode set
xf86_reload_cursors restores the cursor to the correct position, but
that must adjust for cursor hot spot and frame before calling down to
the hardware function, otherwise the cursor jumps to the wrong
position until it is repositioned by the user.

Signed-off-by: Keith Packard <keithp@keithp.com>
(cherry picked from commit 4aab05e3b3)
2009-08-25 20:12:17 -07:00
Ben Skeggs
d0875154f4 quirk: use first detailed timing as preferred for PEA prod 9003 (rh#492359)
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
(cherry picked from commit 048697ccfa)
2009-07-29 15:49:52 -07:00
Dave Airlie
87900645c2 xfree86: move didLock assignment down to where the function pointer is valid.
crtc->funcs->lock is NULL, so it's no use calling it here. Move it down so
it's actually defined before we use it.

Introduced with 6f59a81600.

Tested-by: Peter Hutterer <peter.hutterer@who-t.net>
(cherry picked from commit 0de58c88ab)

Signed-off-by: Keith Packard <keithp@keithp.com>
2009-07-26 13:56:57 -07:00
Benjamin Defnet
7f95d18397 hw/xf86/modes: Set crtc mode/rotation/transform before calling set_mode_major
This moves code out of each implementation of set_mode_major and back into
the X server. The real feature here is that the transform is now available
in the crtc for use by either xf86CrtcRotate or whatever the driver wants to
do. Without this change, the transform was lost for drivers providing the
set_mode_major interface.

Note that users of this API will want to stop smashing the transformPresent
field, and could also stop setting mode/x/y/rotation for new enough X servers,
but there's no reason to make that change as it will break things when
running against older X servers.

Signed-off-by: Keith Packard <keithp@keithp.com>
Acked-by: Daniel Stone <daniel@fooishbar.org>
(cherry picked from commit 6f59a81600)

Signed-off-by: Keith Packard <keithp@keithp.com>
2009-07-26 13:56:57 -07:00
Matthias Hopf
abc89e2c48 randr: Nuke broken set_origin shortcut
Shortcut is impossible to implement this way, because we don't know for sure
whether the crtc of an output has changed or not.
(cherry picked from commit cadf65a6e1)

Signed-off-by: Keith Packard <keithp@keithp.com>
2009-07-26 13:56:57 -07:00
Adam Jackson
db61eff891 EDID: Add modes from Established Timings III descriptor to mode pool
EDID 1.4, section 3.10.3.9
(cherry picked from commit 99e22b86c5)
2009-06-11 15:22:00 -04:00
Dave Airlie
7cd596e0dd randr12: looking up these bits if randr isn't initialised is bad.
When xinerama is enabled we don't get randr protocol, but the
driver might still want randr internals
(cherry picked from commit faf7dfa099)

Signed-off-by: Keith Packard <keithp@keithp.com>
2009-05-08 22:49:55 -07:00
Jesse Barnes
fdbb6fd3d3 Don't prepare outputs & crtcs if set_mode_major is present
A driver with this hook will take care of preparing the outputs & crtcs,
so calling the prepare functions will just cause unnecessary flicker.

Fixes bug #21077
(cherry picked from commit 94648bb797)

Signed-off-by: Keith Packard <keithp@keithp.com>
2009-05-08 12:35:03 -07:00
Julien Cristau
eac2b3658a Bug#21324: Add quirk for Iiyama Vision Master 450
Reported-by: Jeremy Henty <onepoint@starurchin.org>
Signed-off-by: Julien Cristau <jcristau@debian.org>
(cherry picked from commit 0dfb97f15f)

Signed-off-by: Keith Packard <keithp@keithp.com>
2009-05-08 12:34:12 -07:00
Tormod Volden
b3c42e6450 xfree86: edid quirk for Philips LCD LP154W01-TLAJ
This panel reports its vertical size in cm.

X.Org bug#21000 <http://bugs.freedesktop.org/show_bug.cgi?id=21000>

Signed-off-by: Tormod Volden <debian.tormod@gmail.com>
Signed-off-by: Julien Cristau <jcristau@debian.org>
(cherry picked from commit b1dab580bd)

Signed-off-by: Keith Packard <keithp@keithp.com>
2009-05-08 12:34:00 -07:00
Adam Jackson
667865b9eb randr: Fix thinko in xf86TargetPreferred
The only-one-output case would only work right if that also happened to
be the zeroth output.  Oops.
(cherry picked from commit 8a6ed44a8b)
2009-03-20 16:58:06 -07:00
Keith Packard
ae7991b16d Pre-clip panning coordinates to keep crtc within panning region
There is a separate panning region check, but that doesn't work under
transformation, so just pre-clip the mouse coordinates when computing the
panning offsets. This leaves the case where panning constants are changing
unresolved.

Signed-off-by: Keith Packard <keithp@keithp.com>
(cherry pick from commit c090f5514d)
2009-02-25 11:27:15 -08:00
Keith Packard
9a59e7f304 xf86CrtcShadowClear is unused.
Remove this now that clearing is done by repainting with appropriate extend
modes.
Signed-off-by: Keith Packard <keithp@keithp.com>
(cherry picked from commit 60a4f1368785d26a49a3ef6df829723ca154c154)

Signed-off-by: Keith Packard <keithp@keithp.com>
2009-02-19 20:55:53 -08:00
Keith Packard
369d7b22a9 Make panning+transform be correctly driven by mouse
Figuring out how to adjust the crtc origin to keep the mouse pointer within
the crtc is a bit of a trick

Signed-off-by: Keith Packard <keithp@keithp.com>
(cherry picked from commit 63810aca31b962c93be4796883bde6ccb653e3a9)

Signed-off-by: Keith Packard <keithp@keithp.com>
2009-02-19 20:55:25 -08:00
Keith Packard
a86dd529e9 Eliminate the shadow clear on transform change
When the crtc transformation changes, the entire crtc must be repainted.
This was being done by clearing the shadow and then painting the rectangle
containing the screen image; the clear being required as the screen image
may not fill the crtc. When changing the transform rapidly, this leads to
flashing. Eliminate the clear by painting the entire crtc instead of just
the screen rectangle.

(cherry picked fom commit 5394b7e662)

Signed-off-by: Keith Packard <keithp@keithp.com>
2009-02-17 21:41:42 -08:00
Keith Packard
4302a32391 Make crtc_notify wrap/unwrap code do nothing unless mode code is inuse
Drivers not using the new hw/xfree86/modes code would crash in DRI due to
that code trying to monitor CRTC changes.

(cherry picked from commit ea309e4745)

Signed-off-by: Keith Packard <keithp@keithp.com>
2009-02-17 19:07:13 -08:00
Keith Packard
536748aa88 Merge branch 'panning-for-server-1.6' into server-1.6-branch 2009-02-17 18:52:04 -08:00
Keith Packard
791c6eccee Handle the combination of panning and crtc transforms
This patch gets the shadow scanout buffer repainted on panning area changes.
It does not, however, track the mouse correctly.

Signed-off-by: Keith Packard <keithp@keithp.com>
(cherry picked from commit 7968823cbc)

Signed-off-by: Keith Packard <keithp@keithp.com>
2009-02-17 14:43:25 -08:00
Keith Packard
099d74a127 Damage re-used shadow scanout buffer using new transforms.
When the shadow scanout buffer can be re-used, the underlying framebuffer
area must be damaged so that the scanout will be repainted. This patch
delays the addition of that damaged area until after the transform in the
crtc has been updated, otherwise the old transform would have been used and
the wrong area repainted.

Signed-off-by: Keith Packard <keithp@keithp.com>
(cherry picked from commit 763df9eec7)

Signed-off-by: Keith Packard <keithp@keithp.com>
2009-02-17 14:43:25 -08:00
Xiang, Haihao
ef796a95dd avoid a potential endless loop.
Previously it is possible that creating rotation data, then cleaning
up and creating again so that pScreen->BlockHandler and
xf86_config->BlockHandler all point to xf86RotateBlockHandler.
See bug #19343.
(cherry picked from commit 5f3188228e)
2009-01-30 16:56:09 -08:00
Maarten Maathuis
ffdf013905 randr/xfree86: Fix a one off error in the panning calculations.
- Example: mode 1280x1024, panned area 1281x1024
           panned_area.x2 = 1281
           mode.width = 1280
  If you substract 1280 from 1281, then that leaves you with one.
  Which is the one pixel that you need to move to actually see the last pixel collumn.
  Substracting 1 from this will consistently prevent you from seeing the right and bottom edge.
(cherry picked from commit aedd2f566d)
2009-01-09 10:59:05 -08:00
Cooper Yuan
75bad86992 Fix typo in xf86PickCrtcs()
(cherry picked from commit 2a61397d17)
2008-12-16 12:03:05 -08:00
Keith Packard
09039fb89f Patch brown-bag fix for bug 19017 (scrn->virtualX/virtualY 0 before PreInit)
When a driver uses a crtc during device detection, the scrn has not yet been
configured and virtualX/virtualY are still zero. This caused the X server
to try and allocate a shadow frame buffer, which couldn't work.

Detect this by checking for zero virtualX/virtualY values.

Signed-off-by: Keith Packard <keithp@keithp.com>
(cherry picked from commit 063eb6743c)
2008-12-15 20:12:33 -08:00
Keith Packard
ae2cbbff9f Use scrn->virtualX/virtualY in xf86CrtcFitsScreen. Fix bug 19017.
pScreen->width/height are not initialized when doing initial mode setting,
which makes this function incorrectly fail. Using scrn->virtualX should work
in all cases though.

Bug 19017 reports a crash in xf86CrtcSetModeTransform when doing a modeset
for output probing, long before the screen array is initialized; that was
caused by a work-around to set pScreen->width/height so that xf86CrtcFitsScreen
could find the right values.

Signed-off-by: Keith Packard <keithp@keithp.com>
(cherry picked from commit fde2f96103)
2008-12-15 11:47:57 -08:00
Keith Packard
8f17a31aa7 Clean up rotation data when crtc is turned off
The shadow frame buffer and other data used for rotation need to be freed
when the crtc is disabled, not just when rotation is disabled.

Signed-off-by: Keith Packard <keithp@keithp.com>
(cherry picked from commit 1ba4cbb159)
2008-12-15 11:46:47 -08:00
Matthias Hopf
be21199f55 randr: Fix initial panning border copy
Thanks to Julien Cristau for finding this.
2008-12-12 11:01:59 +01:00
Matthias Hopf
ab56607a08 randr: Update initial screen size if panning information is present 2008-12-12 11:01:53 +01:00
Matthias Hopf
657d963a66 randr: Fix error message for bad panning config 2008-12-12 11:01:32 +01:00
Matthias Hopf
44b89dc0a5 randr: Add monitor option "Panning" for initial panning configuration 2008-12-12 11:01:04 +01:00
Matthias Hopf
798a4878a4 randr: Allow panning to be disabled per axis
(cherry picked from commit e5ab9e6662)

Signed-off-by: Keith Packard <keithp@keithp.com>
2008-12-09 20:57:13 -08:00
Matthias Hopf
5fa2cce83c randr: Rework panning area verification
(cherry picked from commit bad118ace6)

Signed-off-by: Keith Packard <keithp@keithp.com>
2008-12-09 20:57:05 -08:00
Matthias Hopf
97e8a75ce3 randr: Don't change panning parameters if verification fails.
(cherry picked from commit 219c26ce0c)

Signed-off-by: Keith Packard <keithp@keithp.com>
2008-12-09 20:56:57 -08:00
Matthias Hopf
6189f0832e randr: Rename pan() to set_origin(), and xf86CrtcPan() to xf86CrtcSetOrigin()
(cherry picked from commit 18a8bac1a1)

Signed-off-by: Keith Packard <keithp@keithp.com>
2008-12-09 20:56:47 -08:00
Matthias Hopf
bc05471d11 randr: Panning support
(cherry picked from commit b929d721ef)

Signed-off-by: Keith Packard <keithp@keithp.com>
2008-12-09 20:56:17 -08:00
Matthias Hopf
f7e2fee8fe randr: Crtc interface update for panning support.
(cherry picked from commit 834cbc16f3)

Signed-off-by: Keith Packard <keithp@keithp.com>
2008-12-09 20:55:57 -08:00
Matthias Hopf
27ca32eb05 randr: Weird enough, crtc->version was never set upon creation. Fix that.
(cherry picked from commit a475eb9fee)

Signed-off-by: Keith Packard <keithp@keithp.com>
2008-12-09 20:55:48 -08:00
Maarten Maathuis
991f0be6e2 randr: Avoid needlessly creating a shadow framebuffer.
- pScreen->width and height were zero, so it didn't "fit" the screen.
(cherry picked from commit ffb484f7ef)

Signed-off-by: Keith Packard <keithp@keithp.com>
2008-12-09 20:41:50 -08:00
Stuart Bennett
0d902b05ad 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>
(cherry picked from commit 0b8f8b24f7)
2008-12-02 23:08:01 -08: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