Commit Graph

37 Commits

Author SHA1 Message Date
Adam Jackson
4d76075dbb Death to RCS tags. 2007-06-29 14:06:52 -04:00
Eric Anholt
50e2ff9a25 Remove the waitSync from KdDisableScreen and push it off to drivers'
disableAccel hook, which is more correct anyway. This makes kdrive.c
    not have any knowledge of kaa, opening the way for using exa from
    kdrive.
2006-02-15 03:20:55 +00:00
Adam Jackson
7fd73d2953 Build fixes: XSERVER_LIBS -> KDRIVE_LIBS, config.h -> kdrive-config.h 2005-12-27 08:29:50 +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
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
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
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
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
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
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
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
fcd52d276f Add missing kaa.h include for kaaInitTrapOffsets. 2004-09-12 20:19:15 +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
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
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
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
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
cade317d31 Overhaul of the ATI driver:
- Add monochrome hardware cursor support.
- Try to auto-detect AGP support for DRI on Radeons. And fail. Detect it
    properly on R128.
- Set up card for pseudo-DMA if possible. Convert 2D rendering code to
    prepare DMA packets only. Use generic code to decode DMA packets to
    MMIO if PDMA is unavailable. Add WIP code to support "real" DMA without
    DRM support.
- Dispatch pending DMA commands when the server sleeps. Otherwise some
    things, such as typing in an xterm, wouldn't show up for a time.
- Fix Radeon Composite acceleration in many ways, and add Rage 128
    Composite acceleration. Disable them both due to still-not-understood
    issues they have. They fail with In, Out, AtopReverse, and Xor, and
    text rendering is strange.
- Add textured XV support for R100 and Rage 128. No brightness/sat
    controls, but it does support multiple ports, and cooperates with
    Composite.
- Add WIP code for hostdata uploads.
- Many cleanups and fixes.
2004-05-17 20:18:02 +00:00
Eric Anholt
6c97b277d9 Support 1x1 repeat sources in R128's Blend. 2004-01-11 00:10:34 +00:00
Eric Anholt
9270256565 Change PCI ID information field to be one of r128, r100, r200, r300. This
is all the information we need so far. Put that information into atic,
    and use it correctly in the code (unlike before).
2004-01-09 08:43:48 +00:00
Eric Anholt
6d8001f468 Compile fixes for non-DRI case and for non-C99 compiler. 2004-01-08 20:18:13 +00:00
Eric Anholt
b27729ec88 - Add a new UploadToScratch kaa hook for putting the data for a single
pixmap into temporary offscreen storage. Subsequent UploadToScratch may
    clobber the data of previous ones. This allows hardware acceleration of
    composite operations on glyphs.
- Add a new UploadToScreen kaa hook for doing the actual moving of data to
    framebuffer. This would allow us to do things like hostdata blits or
    memcpy to agp and then blit.
- Add an UploadToScreen on ATI which is just memcpy, but which will be
    replaced with a hostdata blit soon.
- Add UploadToScratch on ATI and reserve 64k of scratch space. This
    provided a 3x speedup of rgb24text on my Radeon.
2004-01-08 08:16:24 +00:00
Eric Anholt
34d1529731 - Correctly set the texture coordinate set source for the second texture
unit.
- Re-enable Radeon's Composite accel now that fonts work again.
2004-01-04 20:47:30 +00:00
Eric Anholt
3db761a17b - Add more Composite operations, including Saturate, to Radeon Composite
accel. I don't 100% trust that the math works for Saturate, but I can't
    tell from existing information.
- Fix texture pitch fallback checks.
- Fallback when src or mask have transforms.
- Disable Radeon Composite accel until the offset thing is fixed.
- Set offscreenPitch to 64 on Radeon thanks to new information and a kaa
    fix. Fixes acceleration at width!=1024.
2004-01-03 11:46:57 +00:00
Eric Anholt
c8eb20a08e - Add new Composite hook for kdrive drivers, which only ensures that the
pixmaps are offscreen and don't have alpha maps. It is the last case
    checked before going to software fallback
- Use the new Composite hook in the ati driver to implement acceleration of
    most Composites that get done in an xcompmgr environment on r100 series
    cards. It is only available when using the DRM. There are still some
    corruption issues, but the DRI is still non-default and I need to get
    this into version control.
2003-12-30 08:23:56 +00:00
Eric Anholt
df03e80ae9 Merge dri-0-1-branch to trunk. Notable changes:
- Add libdrm and libdri. Portions of the DRI extension are stubbed out.
- Use the DRM in the ATI driver when available. This provides a minor
    performance improvement in x11perf, and opens the possibility of using
    the 3d hardware for acceleration in the future.
- Implement solid fill acceleration for Composite in KAA.
- Implement Blend hook for Composite and use it on r128.
- Fix a bug of mine that resulted in overuse of offscreen memory.
- Fix many miscellaneous bugs in ATI driver and add PCI IDs.
2003-12-29 06:24:01 +00:00
Eric Anholt
d221c484f9 Remove sys/io.h inclusion from some files that didn't need it, and change
asm/io.h to sys/io.h in vga.c, which newer Linux complains about.
2003-12-01 01:46:42 +00:00
Eric Anholt
d461855a73 - Fix Radeon offscreen pixmap pitch alignment.
- Remove usleeps from idle and waitavail code, recommended by keithp.
- Add a workaround for apparent broken acceleration with Rage 128 and
    offset alignment with 8-bit acceleration (24-hack and plain 8-bit).
- Minor cleanup of setup code.
2003-11-23 10:12:04 +00:00
Eric Anholt
b3247251fb - Fix a bug in pitch alignment for offscren pixmaps.
- Add 24-bit acceleration for Xati using the 8-bit trick from mach64.
- Add offscreen pixmap support to Xati.
2003-11-20 07:49:46 +00:00
Eric Anholt
41dde24b22 - Fix confusion of depth/bitsPerPixel in ati_draw.c
- Disable acceleration with 24bpp due to apparent broken acceleration.
    Accel at 24bpp was the cause of the crashes when people tried to use
    any depth over 16. XFree86 doesn't support 24 either.
- Disable at < 8bpp, too.
- Add the other Rage 128 PCI IDs.
- Remove unnecessary setting of scissor registers (only default scissor
    gets used).
2003-11-20 00:05:56 +00:00
Eric Anholt
7abbcce422 - Add PCI information (device/vendor id, bus location) to KdCardAttr to
help with ati, and future DRM drivers.
- Add new "ati" kdrive driver. It has ancestry in the r128 driver from
    andersca, but took a detour through being the WIP SiS 300 driver on the
    way. It supports Radeons (tested on QD VIVO and 7500) and Rage 128.
    Current limitations include that it requires depth 16 and that the
    other Rage 128 PCI IDs aren't included yet.
2003-11-19 08:32:38 +00:00