Commit Graph

440 Commits

Author SHA1 Message Date
Matthew Allum 92b3775ae8 TSLib fixes. Add fullscreen support to ephyr 2005-06-09 16:22:27 +00:00
Eric Anholt 545c082cf9 - Replace the syncAccel hook in the kdrive structure with a pair of hooks
in the kaa structure: markSync and waitMarker. The first, if set,
    returns a hardware-dependent marker number which can then be waited for
    with waitMarker. If markSync is absent (which is the case on all
    drivers currently), waitMarker must wait for idle on any given marker
    number. The intention is to allow for more parallelism when we get
    downloading from framebuffer, or more fine-grained idling.
- Replace the KdMarkSync/KdCheckSync functions with kaaMarkSync and
    kaaWaitSync. These will need to be refined when KAA starts being smart
    about using them. Merge kpict.c into kasync.c since kasyn.c has all the
    rest of these fallback funcs.
- Restructure all drivers to initialize a KaaInfo structure by hand rather
    than statically in dubious order.
- Whack the i810 driver into shape in hopes that it'll work after this
    change (it certainly wouldn't have before this). Doesn't support my
    i845 though.
- Make a new KXV helper to avoid duplicated code to fill the region with
    the necessary color key. Use it in i810 and mach64 (tested).
2005-06-09 10:44:45 +00:00
Keith Packard b4b27e9eaa Force DPMS normal on screen enable
Add placeholder for bit used to redirect input
Add macrovision register defines
2005-02-28 20:45:15 +00:00
Eric Anholt c4b3fcda98 Move the draw tracing supplies into ati_draw.h, and do some touchups on it.
(When tracing drawing, I want to know what I'm drawing to, at a
    minimum).
2005-02-21 03:44:10 +00:00
Eric Anholt de34b0eefc Extend the filter support to R200, and do the check for filter settings in
Check rather than Prepare, to avoid migration of things we won't be
    able to accelerate.
2005-02-21 03:05:55 +00:00
Søren Sandmann Pedersen 35bd81dfec Fri Feb 11 14:28:22 2005 Søren Sandmann <sandmann@redhat.com>
When COMPOSITE is enabled, call CopyWindow even when the pixels "don't
    move" on screen.
Don't reject modes that are not supported by the unused monitor.
2005-02-11 19:38:04 +00:00
Keith Packard aab9a8dd99 Add initial evdev framework 2005-02-09 03:56:35 +00:00
Keith Packard db2c83551c hw/kdrive/ati/radeon_composite.c Support linear filtering
Change how touch screens work -- make them just another 'mouse' device. Add
    unfinished (and unused) code to accelerate tiled fills.
2005-02-08 22:43:54 +00:00
Eric Anholt 5ca5fe7111 Add an OUT_RING_REG macro for use with DMA_PACKET0, which is like OUT_RING
but includes debugging to ensure that the reg being submitted is the
    one that follows in the packet. Convert most uses of OUT_RING to it,
    and convert a couple of OUT_REG sets to DMA_PACKET0/OUT_RING_REG. Also,
    add checking to see if more registers are submitted to a DMA_PACKET0
    than should be, to avoid hangs during stupid mistakes (checking for
    less isn't done).
2005-01-27 05:25:57 +00:00
Eric Anholt 0bd459488b Move the bailing out due to ATIUploadToScreen() being unfinished up
farther, so that the traces aren't as confusing.
2005-01-27 03:52:49 +00:00
Eric Anholt a973af4a9a Remove an unused field. 2005-01-27 03:50:48 +00:00
Keith Packard 8813898ef6 Fix R100 text by forcing the 3d engine to idle before executing more 3d
commands. Add docs for the ISYNC_CNTL register, which doesn't quite do
    what we want.
2005-01-25 06:04:21 +00:00
Eric Anholt 33155b4fd3 Finish converting RB2D_DSTCACHE to RB3D_DSTCACHE. Remove an extra pixel
cache flush in the idle function. Init an extra reg for r200, and
    annotate the TCL_BYPASS better. Also, clean up some style nits from the
    last commit.
2005-01-25 03:37:05 +00:00
Keith Packard 3b1f1508b1 Add tracing. Hack Radeon cache registers to use 3D addresses. Works on M6 2005-01-25 02:39:48 +00:00
Eric Anholt 6eaca06dac Fix a leak of a region when the driver's CheckComposite fails. 2005-01-25 01:40:18 +00:00
Eric Anholt 8a1bee8ea9 Silence a warning about uninitialized variable (though it would be). 2005-01-25 01:38:26 +00:00
Keith Packard d7263b11f0 Reinitialize offscreen memory before enabling cursor on VT switch-to 2005-01-20 20:51:27 +00:00
Eric Anholt 13c6b2f0b6 Add a set of macros for dealing with the repeated code to wait for a while
reading a register/attempting DMA. Now it'll wait for a certain number
    of seconds rather than a certain number of times through the loop
    before deciding that it's timed out and resetting the hardware. Also,
    add more timeout handling, and reset the draw state after resetting the
    engine.
2005-01-20 16:22:04 +00:00
Eric Anholt dbe45c7159 Use RadeonSwitchTo3D() instead of doing the WAIT_UNTIL ourselves (RST3D()
also does DC_FLUSH, which may be important).
2005-01-20 07:28:02 +00:00
Eric Anholt fc43c15494 Add R200 XV support, and make R100 (hopefully) use linear filtering instead
of nearest. Also, use RadeonSwitchTo3D instead of doing the WAIT_UNTIL
    ourselves.
2005-01-20 07:09:00 +00:00
Eric Anholt 7775506534 Make R200 PDMA work -- primary queue sizes are now 9 bits, not 8. 2005-01-20 01:09:48 +00:00
Keith Packard ff433adba3 Prefer 32bpp to 24bpp. Fix 16 color planar mode (!) 2005-01-19 06:35:28 +00:00
Eric Anholt 106703edf6 Back out the previous day's broken R200 "fix" -- the same number of coords
are always emitted. Fix the real problem, which was not enough regs
    being initialized in ati_draw.c. Fix a typo that was resulting in alpha
    coming out as 0 * src or 0 * broken instead of src * 1 or src * mask.
    Assign the blending results to R0, as appears to be necessary. Unbreak
    the dst-alpha-blend-with-no-dst-alpha code. Yow. And set the right DMA
    count for the r200 traps code.
2004-12-22 18:39:41 +00:00
Eric Anholt fa0677ab43 Fix r200 render (for real this time?) by setting tex1_comp_cnt right for
non-mask rendering. Reenable it. Also, R200TexFormats was used instead
    of R100 in one place. Harmless so far, because the formats were in the
    same order.
2004-12-21 09:51:47 +00:00
Eric Anholt 4b0247b9e0 Whitespace nit. 2004-12-21 09:49:30 +00:00
Matthew Allum 47935dd7f0 Xephyr on Xorg fix 2004-12-06 22:29:31 +00:00
Phil Blundell 2620676306 Patch from Florian Boor <florian.boor@kernelconcepts.de>:
Check return value from ts_config. (TslibInit): Likewise.
2004-12-01 19:43:29 +00:00
Phil Blundell df2f2ff5a4 Re-read "fix" structure from kernel after mode selection, in case line
pitch has changed.
2004-11-28 23:20:17 +00:00
Matthew Allum 2b75c19ea2 minor Xephyr fix 2004-11-24 17:50:50 +00:00
Matthew Allum a96254234f XEphyr -parent switch fixes 2004-11-24 17:08:06 +00:00
Phil Blundell 636a9e7868 Don't leave stale pointers hanging around after ts_close(). (TslibFini):
Likewise.
2004-11-13 18:03:16 +00:00
Phil Blundell 36d9e01c0d New global variable. (KdProcessArgument): Set it to TRUE on -nozap switch.
(KdUseMsg): Add help for -nozap and -rgba switches.
Declare.
Honour dontZap flag.
2004-11-13 16:41:00 +00:00
Matthew Allum d7f46f71d8 Xephyr grab fix 2004-11-11 14:55:30 +00:00
Matthew Allum 50cdff7ee2 Xephyr improvements 2004-11-09 11:36:49 +00:00
Matthew Allum 81a3b6fe27 Add support to Xephyr for lower depths than hosts 2004-11-08 22:39:47 +00:00
Phil Blundell e0cc487149 Add epson.
Build Makefile in hw/kdrive/epson.
2004-10-20 18:06:58 +00:00
Phil Blundell 258c9016a0 Block SIGIO before disabling input fds. (KdEnableInput): Unblock it after
enabling them again.
2004-10-20 18:02:32 +00:00
Phil Blundell cbd5fbcb7e Import Epson 13806 driver from Costas Stylianou:
New files.
2004-10-20 08:20:51 +00:00
Eric Anholt b600fcda38 Fix the R200 Render code. Composite and Trapezoids are now supported just
as well as on R100.
2004-09-20 03:12:00 +00:00
Eric Anholt 90ff3688cd Unbreak the AGP DRI case. That was quite a pile of broken code. 2004-09-19 10:57:31 +00:00
Phil Blundell 0d95bdfbab Only set screen parameters if resolution has changed from current values.
Patch from scoony@noos.fr.
2004-09-14 23:08:10 +00:00
Eric Anholt ba3b6fd23b Add proper PCI/AGP detection, based on Mike Harris's code for Radeon, but
using the MMIO mirror of the bits instead of config space.
2004-09-14 06:26:54 +00:00
Eric Anholt 80dc84d067 - Fix a segfault on VT switch with DRI. Still dies due to cursor allocation
troubles.
- Move the RemoveBlockAndWakeupHandlers to match
    RegisterBlockAndWakeupHandlers.
- Enable R100 trapezoid "acceleration" when DRI is working, so that it can
    be exposed and worked on.
2004-09-12 23:22:31 +00:00
Eric Anholt ab50679aab Fix a bad argument missed in the previous commit for ATIDRIDMA* functions. 2004-09-12 23:01:24 +00:00
Eric Anholt 2d069b1d19 Move the RegisterBlockAndWakeupHandlers to before DRI initialization. The
change to use that instead of manual wrapping made the DMA dispatch
    come after the lock had been dropped, causing lots of pain.
2004-09-12 22:21:12 +00:00
Eric Anholt 27b5a65f05 Reset the CCE/CP on engine reset, and make the ATIDRIDMA functions take a
more useful argument.
2004-09-12 20:31:39 +00:00
Eric Anholt fcd52d276f Add missing kaa.h include for kaaInitTrapOffsets. 2004-09-12 20:19:15 +00:00
Eric Anholt b5d406e8c8 Fix handling of is_agp. is_agp is whether the card is actually AGP, while
using_agp should say whether AGP is being used as part of DMA/DRI.
2004-09-12 20:02:10 +00:00
Eric Anholt 7cab70d1cb Improve error handling, especially in the DRI case. Do some FatalErrors
instead of ErrorFs for things that are really bad, and put limits on
    some loops. Now, sometimes instead of hanging the entire system, we
    (mostly-) cleanly drop to console when the card has hung.
2004-09-12 19:52:51 +00:00
Eric Anholt 0cd662ea80 - Add disabled WIP trapezoid code for R128 and R100. The R128 rendering is
not doing an add of 1 per triangle like I hoped, and instead seems to
    be saturating all the pixels or something. The R100 acceleration
    renders pretty well, with some gaps. Note that both are slower than
    software due to lack of DMA to submit vertices.
- Mostly fix R128 and Radeon transform support, including supporting
    bilinear filtering on R128. Subpixel offsets are still probably an
    issue (reported by rendercheck), but I want to make 100% sure about my
    understanding of the protocol before changing everybody, including fb.
- Add support for dst formats without alpha to R128 Composite.
- Remove the R128 Blend code, which has long outlived its usefulness. (I
    kept it around for one reason: It could be useful for the w/h > 1024
    case with no mask and a non-src op. That seems pretty infrequent and
    not worth the trouble).
2004-09-11 09:28:19 +00:00
Eric Anholt 396100dd23 - Don't require Imrecise mode for Trapezoid acceleration. It looks like we
might be able to do Precise in hardware, so leave it up to the driver.
- Add a helper function for computing a set of offsets for smooth trapezoid
    rasterizing using many sharp trapezoids.
2004-09-11 09:23:12 +00:00
Matthew Allum 501dcf37aa cursor fixes 2004-09-08 11:31:49 +00:00
Matthew Allum 20918ab480 avoid ephyr breakage when tslib enabled 2004-09-07 19:00:04 +00:00
Matthew Allum 8bf6ea903b fixes to Xephyr debug mode 2004-09-07 12:44:19 +00:00
Matthew Allum 2753c8e2c8 see changelog 2004-09-01 15:30:58 +00:00
Matthew Allum 7c0aaa53bf '-dpi' fixes for Xephyr 2004-09-01 11:13:36 +00:00
Matthew Allum 16ff3a8727 Actuall select events for -parent option 2004-09-01 08:31:20 +00:00
Matthew Allum 2d065c4c33 Added ephyr server sources 2004-08-31 16:33:05 +00:00
Eric Anholt 6ec9ecd591 Add a set of three hooks for accelerating trapezoids, and use it for the
RasterizeTrapezoid screen function. These hooks will be called for
    imprecise, non-sharp trapezoids with A8 destinations.
Note that the current main consumer of trapezoids, cairo, is requesting
    precise, sharp trapezoids by not changing the default Picture
    attributes, but gets non-sharp effects in software because fb bases its
    choice of sharp/non-sharp on the mask format being A8 vs A1, and cairo
    asks for A8. Follow fb's (poor?) example by ignoring the sharp setting
    and basing the choice off of the mask being A8.
2004-08-30 22:16:46 +00:00
Eric Anholt ccaf332ce3 Rather than initially place pixmaps in framebuffer based on a size
heuristic, delay the decision until the first
    kaaPixmapUse{Screen|Memory}, and put it in framebuffer if UseScreen was
    called. Provides a significant improvement in cairo speeds (100%
    speedup in cairogears here) and is likely to improve text performance
    as well.
2004-08-30 16:43:10 +00:00
Keith Packard f15f881727 Eliminate bogus rate check in fbdevModeSupported. Hmm. Potentially bogus
rate selection necessary for Mac fbdev
Don't know about fb changes to pixmaps, so can't track dirt.
Add Mac specific 1280x854 mode. Warn when requested mode isn't found.
Add ability to soft-boot video cards.
Add region expand request. FIXME: need test cases
2004-07-26 17:14:27 +00:00
Keith Packard c57944cd9a Check for mmio before restoring crtc/crtc2 pitch registers 2004-07-24 17:02:49 +00:00
Keith Packard 9565d9e0cf Correct pitch so that accelerator can run on 1400x1050 screens. Add a few
more register sets for cursors.
2004-07-22 18:17:59 +00:00
Phil Blundell 448e0754e3 Include -lts if appropriate. Patch from pattieja@bentham.ispvip.biz. 2004-07-21 20:33:35 +00:00
Phil Blundell 07e6011106 Select optimized
16bpp shadow copy functions if screen is 16bpp. Select -YX versions for
90 and 270 rotations if architecture is ARM.
2004-07-20 14:33:42 +00:00
Eric Anholt 8853f93318 Add support for a8b8g8r8 and x8b8g8r8 pictures, which showed up frequently
with metacity usage.
2004-07-19 12:07:01 +00:00
Eric Anholt adf4b38f49 Breakage in last commit to this file: pCurPriv->area isn't set up until
Enable, these days.
2004-07-19 11:42:49 +00:00
Eric Anholt d2e74e419d Set the right number of texture coordinates for r200 Render support (still
disabled, needs to be tested).
2004-07-19 11:19:12 +00:00
Eric Anholt cefcb7f123 - Add Radeon picture transform support.
- On R128, don't refer to an old Composite's mask transform when the
    current Composite doesn't have a mask.
- Staticize some global variables in r128_composite.c.
2004-07-19 11:16:13 +00:00
Eric Anholt 9fe216a458 Use the offscreen memory manager as much as possible to do the reservation
of memory at startup. Do some drive-by cleanups while I'm here
    (sorry!).
2004-07-19 07:53:54 +00:00
Eric Anholt e2bb9f38cd Add support for transforms of textures on R128. 2004-07-19 07:20:01 +00:00
Carlos Romero 3e52373fc8 Enable i810. 2004-07-15 09:56:40 +00:00
Eric Anholt aeb78eaa98 Commit the rest of the dirty optimization from 20040703 and add a missing
header include. I don't know how this happened, but I'm going to blame
    a "few" fscks having happened between testing the code and committing
    (due to other driver changes that made me not blame dirty for the
    failures I saw) for disappearance of kasync.c changes. Fixes a lot of
    corruption.
2004-07-08 08:21:25 +00:00
Eric Anholt b467673528 Remove duplicate protos in kdrive.h. 2004-07-08 06:57:58 +00:00
Carlos Romero 764d9e822b missing xkb/[xkb.h, xkbDflts.h] and hw/kdrive/mga/g400_common.h 2004-07-07 20:43:25 +00:00
Carlos Romero f96ef08d48 Initial kdrive XKB/XINPUT support, use --enable-xkb --enable-xinput 2004-07-07 19:21:07 +00:00
Eric Anholt 7c466d64c3 Clean up Rage 128 composite code. Now it composites more operations
correctly and is simpler.
2004-07-03 10:23:03 +00:00
Eric Anholt 0207015669 Add a "dirty" flag to the pixmap private. Clear it when setting up an
offscreen pixmap area, and set it when any rendering occurs. When
    moving a pixmap out of offscreen, don't read data back if it wasn't
    dirtied (compared to the system memory copy).
2004-07-03 09:16:30 +00:00
Phil Blundell fd594b0559 Call ts_read multiple times, to avoid events getting stuck in the pipeline. 2004-07-02 21:30:00 +00:00
Eric Anholt d5db59bd79 Add an offscreen area scoring to improve choosing offscreen areas to kick
out when allocation can't find a free area of the requested size. When
    offscreen pixmaps get used, the offscreen area's score is increased by
    a constant value. Every certain number of increases, all offscreen area
    scores get decreased by a fraction. When choosing a set of areas to
    remove for a new allocation, the set of areas with the smallest total
    score is chosen for removal. While this is not the smartest system, it
    prevents things like always removing the first offscreen area in memory
    (likely the most recent) to be kicked out when doing replacing.
2004-06-29 20:37:51 +00:00
Keith Packard 7ff67f2872 Separate out off-screen allocation from Init. Fix Enable to update
off-screen addresses. Wrap RandR to update off-screen addresses.
Set off_screen_base and memory_size fields correctly.
2004-06-28 00:48:51 +00:00
Keith Packard 5b75aae2cf Add ARGB cursor support for Radeon cards. 2004-06-26 04:13:03 +00:00
Damien Ciabrini da78a4ddd8 Update MGA composite patch commit. (some files were missing in the previous
commit)
2004-06-16 21:36:54 +00:00
Jaymz Julian 580b9a7da1 MGA composite support from Damien Ciabrini - thanks! 2004-06-14 08:43:57 +00:00
Eric Anholt 4ffde8a6b3 - Pass the right pixel mask (all ones) in to PrepareSolid in the
solid-fill-based composite acceleration.
- Use a real pixmap when doing an UploadToScratch (For pDrawable->type ==
    DRAWABLE_WINDOW, you need to get the backing pixmap).
- Pass back the x/y offsets from kaaGetOffscreenPixmap unconditionally,
    because they'll be used in the scratch case.
- Turn on the Render acceleration for Rage 128 and Radeon 100-series at
    last!
2004-06-10 19:22:58 +00:00
Eric Anholt c3bc6dd551 Align scratch area offsets to the offscreen byte alignment. 2004-06-10 09:50:59 +00:00
Eric Anholt cf3f95d216 Oops, testers reported that the last patch actually didn't work (conflicts
occurred), so the R300 PDMA doesn't work. Disable.
2004-06-10 08:37:28 +00:00
Eric Anholt 0b7647ee35 Bug #242: Fix setup of R300 cards, by providing R300 CP code from
volodya-project and initializing PDMA.
2004-06-10 05:57:31 +00:00
Franco Catrin L b3a18ca8b8 Neomagic driver enabled 2004-06-07 05:13:29 +00:00
Franco Catrin L 893ea12559 small fixes. README added 2004-06-07 05:05:10 +00:00
Keith Packard f8a1dd3ce7 Add top-level build support for GL X server (not working yet)
Fix a few allocation bugs with alternate visual ids Allow for non-8/8/8
    alternate visuals
Turn off any existing shadow before enabling it again (avoids
    re-registering existing damage)
Add some validation code to catch re-registered damages
2004-06-04 16:10:50 +00:00
Phil Blundell 6741fadc52 New conditional. (REQUIRED_MODULES): Demand xcalibrateext if building
XCalibrate.
New file.
Add xcalibrate.c.
Read raw events if requested.
2004-06-02 20:49:50 +00:00
Phil Blundell d4d0c8470c Add -lts if using tslib. 2004-05-30 20:40:30 +00:00
Carlos Romero 8124810950 Initialize permedia engine for acceleration to work. 2004-05-30 13:51:18 +00:00
Ralph Thomas ea1bbf8d83 Adding driver for VIA CLE266 graphics chip. Currently it only accelerates
copy and fill operations.
2004-05-29 12:15:46 +00:00
Daniel Stone 6af411b02e Hey, I like devfs.
Try /dev/fb/0 if /dev/fb0 fails.
2004-05-28 04:56:49 +00:00
Carlos Romero f8124d3ef5 Add pm2 to the build 2004-05-25 13:02:44 +00:00
Carlos Romero 32d0920ef9 Initial import of Permedia2 driver 2004-05-24 19:31:41 +00:00
Keith Packard 932efe8e6d Allow for multiple composite-based visuals, then add an RGB24 visual in
addition to the ARGB32 one. This allows 'glitz' to run on top of any X
    server using mesa.
Switch to using 32bpp for depth 24 pixmaps (even when the frame buffer is
    not depth 24).
2004-05-21 03:32:27 +00:00
Keith Packard cde51fd05b Miscomputing pitch in 24bpp modes because of rounding errors. 2004-05-20 19:51:44 +00:00