Commit Graph

880 Commits

Author SHA1 Message Date
Eric Anholt 4cd552e8f4 Fix accelerated Render transformations.
Previously, we tried to use 2 points instead of 3 to describe the source
rectangles, which mostly just worked for scaling.
2007-01-30 16:34:50 -08:00
Eric Anholt 6a628ae12b Simplify EXA acceleration transform handling. 2007-01-30 16:25:27 -08:00
Keith Packard c8581254cb Merge branch 'modesetting-rotation' into modesetting
This adds reasonably driver-independent rotation support to the common
layer. The piece required in the driver is to allocate and redirect the crtc
to a shadow frame buffer. The driver uses Render to perform the actual
rotation operation (which leaves us free to do fun projective transforms at
some point in the future :-).
2007-01-29 21:25:13 -08:00
Eric Anholt 9da1791eec Restore a few important lines from 89ace3e81f
Typical results were failure to sync, and a black screen.
2007-01-29 17:10:39 -08:00
Eric Anholt 67c6a490e6 Remove dead code to undo the damage of xf86SetModeCrtc() blank limiting. 2007-01-29 09:53:58 -08:00
Eric Anholt 89ace3e81f Bug #9680: Remove bogus blank length limiting in xf86SetModeCrtc().
Our modes typically come from EDID or default modes, and when the monitor
asks for a specific mode, deciding to tweak it usually results in incorrect
display.  And if the user is specifying a mode by hand, tweaking it then is
still pretty rude.

Reviewed by: ajax
2007-01-29 09:43:35 -08:00
Dave Airlie 6eb69e7378 ch7xxx: actually power up the chip around connection detection 2007-01-29 20:27:20 +11:00
Keith Packard d329fa121b Fetch from root window instead of screen pixmap during rotation.
The XAA Composite wrapper doesn't check for sourcing from the root pixmap
when deciding whether to sync the hardware drawing. Fix the rotation code to
reference the root window in IncludeInferiors mode to avoid reading without
correct synchronization.
2007-01-27 18:36:15 -08:00
Keith Packard 20419d664c Paint ARGB cursor data to ARGB cursor memory space in frame buffer.
When converting from global cursor to per-crtc cursor, the ARGB cursor data
was accidentally painted to the wrong location, overwriting some critical
data and causing the hardware to lock up. (along with generating a garbage
cursor image from uninitialized data).
2007-01-27 18:34:12 -08:00
Krzysztof Halasa 00decd3b6c Don't zero out mode structure after setting name field.
Instead of using memset to zero the structure (at the wrong time, no less),
use xcalloc to gather pre-initialized memory.
2007-01-27 12:29:31 -08:00
Keith Packard 7a5f17087b Mark crtc region as damaged when rotation is set.
When shadow frame buffer is allocated for rotation, it needs to be
initialized by copying from the frame buffer. Do this by simply marking the
entire screen as damaged which will force an update.
2007-01-27 00:11:21 -08:00
Keith Packard 2d95cb6f04 Make rotated pixmap size of mode, not rotated mode. Update only damage.
Rotated pixmap should match size of displayed mode, not the rotated version
of that size.

Take damaged region, rotate each box and display them instead of displaying
the whole screen after each damage update. This exposes a bug where the
screen is not correctly damaged after rotation.
2007-01-27 00:04:13 -08:00
Eric Anholt 5c1e27cdd2 Make rotated shadow buffer allocation dynamic.
For EXA, this requires version 2.1 of EXA to do rotation, as the VT switching
issues were too complicated otherwise.
2007-01-25 15:31:22 -08:00
Eric Anholt 83cc4601b2 Fix a possible failure to misalign video allocation in XAA. 2007-01-24 16:52:22 +08:00
Eric Anholt e213324195 Warning fix. 2007-01-24 12:32:38 +08:00
Dave Airlie effe579e69 ch7xxx: fix output detection as per datasheet, have no DVI to test this. 2007-01-23 16:10:53 +11:00
Dave Airlie c68dae2705 fix building with 7.1 server by hiding stuff inside RANDR_12_INTERFACE 2007-01-23 16:10:25 +11:00
Eric Anholt 8eb861fb61 Replace the custom SaveScreen function with a generic function calling DPMS.
With this, additional power saving occurs with the core screensaver, for
example by turning off LVDS backlight.
2007-01-22 15:50:14 +08:00
Wang Zhenyu 7161e824e8 Fix DRI issue when EXA enabled
tell DRI we are smashing the context state.
2007-01-19 15:15:19 +08:00
Eric Anholt 74ebff6732 Allocate separate cursor memory per CRTC and rotate cursors appropriately.
Also, add bind/unbind of the shadow rotate buffers, which was missed in a
previous commit.
2007-01-18 14:26:21 -08:00
Eric Anholt 8759f4d89a Partially deal with cursor rotation.
The remaining issue is having a cursor image per CRTC so that the cursors can
be rotated on the independently rotated CRTCs.
2007-01-18 13:13:46 -08:00
Eric Anholt b296cd9b8f Fix transformation matrices for rotation at 90 and 270 degrees. 2007-01-18 13:02:26 -08:00
Eric Anholt d2ae2e2ccc Update CRTC values first so they can be used by the driver in mode setting.
With this, the screen now gets rotated, though there are major issues.
2007-01-18 11:37:14 -08:00
Eric Anholt 92b0f3d201 Disable the clipping for now, since it won't work. 2007-01-18 11:23:22 -08:00
Eric Anholt 14d265a023 Store fixed values, not integers, in the transformation matrix.
Also, add a bit more error checking.
2007-01-18 11:22:47 -08:00
Eric Anholt cc09dc3efe Merge branch 'modesetting' into modesetting-rotation 2007-01-18 10:20:36 -08:00
Eric Anholt 53e765d1cf Fix broken last-minute change in determining whether we're rotated or not. 2007-01-17 16:56:06 -08:00
Eric Anholt f256243fff Allocate per-crtc rotation buffers and hook up RandR 1.2 per-CRTC rotation.
It currently displays garbage.
2007-01-17 16:05:55 -08:00
Eric Anholt d17c386aee Fix some segfaults: crtc->rotatedPixmap not set and dangling damage pointer. 2007-01-17 16:02:30 -08:00
Eric Anholt 67a152c43c Set all CRTCs' allowable rotations when xf86RandR12SetRotations() is called. 2007-01-17 16:02:30 -08:00
Gary Wong 3094100cdd Bug #9550: Add a quirk for too-high clock from EDID on the EN-7100e. 2007-01-16 13:25:24 -08:00
Eric Anholt 66c6427cc8 Add a settable backlight property for LVDS.
This extends the output funcs to have a callback for when it's time to
configure properties, and another for when the server has changed a property
whose value isn't pending a mode set. (Pending properties are to be picked up
by the driver at mode_set time).
2007-01-16 12:54:29 -08:00
Keith Packard a52df90ffc Merge branch 'modesetting' into modesetting-rotation
Conflicts:

	src/i830_driver.c
	src/i830_randr.c

Just a few sync changes.
2007-01-16 12:20:26 +11:00
Keith Packard 37946c9c8a Interim work on rotation support with new xf86 code.
Yes, there are lots of bits tied together here, and we should split this
patch apart.

Move I830 mode setting to xf86 mode setting.

Make mode setting function also set the base address. This should fix
problems where the base gets set incorrectly at times.

Add driver-independent rotation support, requires driver-specific hooks for
shadow pixmap allocation, otherwise it uses Render for painting.
2007-01-16 12:14:55 +11:00
Keith Packard bfeda3bfc5 Convert I830PipeSetMode to xf86CrtcSetMode. Add rotation structures.
Makes the mode setting logic device independent.
Magic rename hooks allow multiple drivers to provide the
generic code without name conflicts.
Rotation code requires special pixmap creation hook, and uses
Render to perform the actual rotation.
2007-01-15 08:05:32 +11:00
Eric Anholt 45696aa291 EXA: Use PRIM3D_RECTLIST instead of TRIFAN so we don't get diagonal tearing.
A side effect is the reduction in vertex dispatch, which is nice.
2007-01-11 17:19:54 -08:00
Eric Anholt 6874a6f25a Restore legacy overlay size limits, due to card hangs at larger sizes. 2007-01-11 12:38:29 -08:00
Eric Anholt c288aea407 Bug #8845: Unify all our XV ports to 1920x1088 maximum size.
This increases the "legacy" size, but that was checked against the 845
documentation which claims support for 2048x2048 as well.  It decreases the
textured video size, which was running into the limits of the bigrequests
extension.  The new limits should fit within bigrequests while still supporting
HD videos.
2007-01-11 11:04:29 -08:00
Eric Anholt f5d528f8ea Don't limit cachelines to a vertical of 2048, and increase default allocation.
The cachelines are used for two things: XAA pixmap cache and XV memory.
Only XAA pixmap cache is referred to using an offset pointing at the
beginning of the front buffer in rendering, and XAA only uses the 2d BLT
engine, which actually has a vertical limit of 65536.  So, pixmap cache is now
limited to that much vertical.

Additionally, the previous cachelines allocation was too small for our
advertised XV limits, so video at the limits would fail with BadAlloc.  Now,
XAA allocates the same approximate amount of offscreen memory as EXA:
3 times the screen size, plus one packed HD video.
2007-01-11 11:03:13 -08:00
Eric Anholt d13bc016c0 Correct x/y/pitch limitations in several cases, and detail them in i830_exa.c.
This reduces max framebuffer width and increases max framebuffer height on
965, reduces max X/Y on pre-965 EXA (could have caused mis-rendering), and
increases max X/Y on 965 EXA (would have prevented acceleration).
2007-01-11 10:45:21 -08:00
Eric Anholt fa383289ac EXA: Wait for sync before we set up new state in our static state buffers. 2007-01-11 10:45:21 -08:00
Wang Zhenyu 5857b4a169 Formalize sync interface
We should just call i830MarkSync/i830WaitSync in places we need,
which care for both XAA and EXA.
2007-01-10 15:09:47 +08:00
Eric Anholt ee52c0ec4e Correct typo resulting in a crash with ivch. = != ==. 2007-01-08 16:53:07 -08:00
Keith Packard da6a00f787 Move EXA function declarations from source to header.
Several new global functions were not put into the header file leading to
potential mismatches between declaration and definition.
2007-01-08 12:36:54 -08:00
Keith Packard 66546d8a80 Merge branch 'modesetting-origin' into modesetting 2007-01-08 10:14:24 -08:00
Wang Zhenyu 0fd2752f19 minor fix on last exa mem binding commit 2007-01-07 22:47:03 -08:00
Keith Packard 40af0ee6ba Numerous symbol scope issues.
I830EntityIndex is shared between 810 and newer driver.
Move most EXA rendering state into I830 structure.
Declare shared variables in shared header files rather than .c.
2007-01-06 18:19:34 -08:00
Wang Zhenyu 736d82a6b4 Merge branch 'modesetting-origin' into modesetting 2007-01-06 15:06:39 -08:00
Zou Nan hai 53b42f5bc7 support NTSC 480i M-J, PAL 576i for 640x480-1280x1024 sizes
I still have problem with non-interlace mode and Hi Res mode.
also I don't know how to pickup those mode in xorg.conf
2007-01-06 14:59:14 -08:00
Wang Zhenyu 71946bcdc3 [PATCH] Add rotation support for 965. 2007-01-06 14:40:27 -08:00