Commit Graph

73 Commits

Author SHA1 Message Date
Eric Anholt e4d11e58ce Remove the PaintWindow optimization.
This was an attempt to avoid scratch gc creation and validation for paintwin
because that was expensive.  This is not the case in current servers, and the
danger of failure to implement it correctly (as seen in all previous
implementations) is high enough to justify removing it.  No performance
difference detected with x11perf -create -move -resize -circulate on Xvfb.
Leave the screen hooks for PaintWindow* in for now to avoid ABI change.
2007-09-13 00:08:53 +00:00
Adam Jackson ae7f71a8b3 Implement core protocol backing store exclusively in terms of Composite.
Composite's automatic redirection is a more general mechanism than the
ad-hoc BS machinery, so it's much prettier to implement the one in terms
of the other.  Composite now wraps ChangeWindowAttributes and activates
automatic redirection for windows with backing store requested.  The old
backing store infrastructure is completely gutted: ABI-visible structures
retain the function pointers, but they never get called, and all the
open-coded conditionals throughout the DIX layer to implement BS are gone.

Note that this is still not a strictly complete implementation of backing
store, since Composite will throw the bits away on unmap and therefore
WhenMapped and Always hints are equivalent.
2007-08-25 15:08:20 -04:00
Tiago Vignatti ab3f601149 Updates some piece of the dead mouse evdev code under the new hotplug scheme.
I exported the evdev driver to Xephyr server. I'm running it using something
like:
    $ ./hw/kdrive/ephyr/Xephyr :1 -mouse evdev,,device=/dev/input/event4 -keybd \
    evdev,,device=/dev/input/event1,xkbmodel=abnt2,xkblayout=br

It also closes /#5668.
2007-08-07 23:17:32 -03:00
Tiago Vignatti 7a5eb3e96b Let xkb options be passed through command line in kdrive servers. I start my
Xephyr using something like:

    ./hw/kdrive/ephyr/Xephyr :1 -fp /usr/share/fonts/X11/misc/ -mouse ephyr -keybd ephyr,,xkblayout=br,xkbmodel=abnt2
2007-08-07 02:16:44 -03:00
Adam Jackson bcb2352742 Clean up unused #ifdefs from fb. 2007-07-05 15:56:25 -04:00
Adam Jackson 4d76075dbb Death to RCS tags. 2007-06-29 14:06:52 -04:00
Daniel Stone 3df454719f kdrive: add KdRingBell prototype 2006-11-01 23:02:57 +02:00
Daniel Stone 738d2e8817 kdrive: move bell ringing into an OS function
Move the bell into an OS function, and use that if it's declared; else,
fall back to using the driver's function.
Remove the Linux keyboard bell function; just move it into the OS layer.
Use named initialisers when converting the old structures, and eliminate
unused functions.
2006-10-29 03:48:02 +03:00
Daniel Stone a7c2d9a15d kdrive: numerous warning fixes 2006-10-23 06:08:27 +03:00
Daniel Stone a6dc629052 kdrive/os: add KdOsAddInputDrivers
Add KdOsAddInputDrivers, which adds all relevant input drivers.

Could possibly be refactored to KdAddInputDrivers, which called through
OsFuncs to a new function, if it existed.
2006-10-23 02:54:59 +03:00
Daniel Stone 9b7ecbd1dd kdrive: prevent overrun in map
We actually need n + 1 elements for the mouse button map, not n.
2006-08-07 21:09:32 +03:00
Daniel Stone eb6e8d4042 kdrive: increase maximum number of buttons
Increase KD_MAX_BUTTONS to 32.
2006-08-07 21:05:37 +03:00
Daniel Stone 02d0910511 new KDrive input world order
Convert KDrive to GPE/GKE interface.
Add first-class drivers and enumerate every device separately through
Xi, instead of lamely attempting to aggregate them.
Add XKB support to the Linux keyboard driver.
Add 'thumb button' support to the tslib driver.
Rejig InitInput, so each DDX has to add a list of drivers it supports.
Support NewInputDeviceRequest, et al.
2006-07-21 15:19:51 -04: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 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
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
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 b467673528 Remove duplicate protos in kdrive.h. 2004-07-08 06:57:58 +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 b9d920f3dc Fix SYNC_ALWAYS (debugging) code to use mach64WaitIdle instead of
KdCheckSync -- the boolean used in the latter won't be set yet.
Oops. == instead of =.
Must sync hardware before rasterizing trapezoids in case the mask is in
    off-screen memory and has just been erased. Yes, it is silly to place
    masks in off-screen memory. That's a separate issue.
2004-05-20 05:27:03 +00:00
Keith Packard 94648799c8 Pin header-only pixmaps in memory.
Off-screen reallocation could have used a stale pointer.
Separate framebuffer mapping computation from actual frame buffer mapping.
    Now map the frame buffer from vesaEnable so that VT switch shares the
    same mapping code. This makes sure any shadow framebuffer is allocated
    again.
2004-05-20 02:42:20 +00:00
Eric Anholt 85f46e0bcd Add new CheckComposite hook. This allows a driver to avoid the migration of
pixmaps for a Composite operation if the operation can't be supported.
    This hook is optional.
2004-05-17 07:14:23 +00:00
Eric Anholt 74b2a76947 Add new flag, KAA_OFFSCREEN_ALIGN_POT, which tells KAA to align pixmap
pitches to a power-of-two number of bytes. Useful for Render
    acceleration on older cards.
2004-05-14 00:34:28 +00:00
Jaymz Julian bd20c8d340 Polling input mode for the kdrive os layer. And a moose! 2004-02-05 09:09:51 +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 1e1a35e20c Actually align the offset of allocated offscreen areas. 2004-01-03 11:17:44 +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 9cdd6fd9e3 - Add fbdev mode-setting backend to Xati. It and vesa are compiled in when
available, with fbdev being used by default.
- Use depth 16 by default when vesa backend is used.
- Add MMIO defines for PowerPC (should be in a common location).
Many thanks for Michel Daenzer for much of this code.
2003-12-01 04:33:36 +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
Seth W. Klein f333581b7b Added infrastructure for driver specific usage messages and added vesa
usage message.
2003-11-18 04:53:16 +00:00
Keith Packard 003e87717c Recompute winSize/borderSize to fix them when changing redirection.
Sufficient, but not always necessary.
Add borderClip to damage on creation so that clients needn't guess.
Fix API to FbDots functions to make PolyPoint work with screen_x/screen_y
    offsets
Add debugging code to make sure no pictures are left pointing at freed
    pixmaps. "Can't" happen, but it did once.
Change KdOffscreenArea structure to eliminate separate private structure,
    eliminate the ScreenPtr, change from doubly linked to singly linked
    list.
Don't damage BackgroundNone windows on PW_BACKGROUND. Re-clip damage to
    borderClip in DamageSubtract.
2003-11-17 22:09:12 +00:00
Keith Packard 5378236aa6 merge xfixes_2_branch back to HEAD 2003-11-02 19:56:10 +00:00
Keith Packard 16b2ea64e7 Discard/reconstruct list of offscreen areas on VT switch so no allocations
can occur while switched away.
Set type of off_screen_areas member to actual type instead of pointer
2003-10-16 08:03:25 +00:00
Anders Carlsson f4bcd36a38 Add a memory_base variable and use it. 2003-10-15 05:34:54 +00:00
Keith Packard cb46169759 Use same assumptions as layergc about what layer kind is approprate for
unwrapping pixmap operations. This makes sure the accelerated code gets
    invoked for pixmaps
Add pixmap migration support to kaa. Can't quite automatically migrate
    pixmaps off-screen, but soon we will. Can kick objects out of video
    memory. Move per-screen linked list pointers to pixmap private. Wrap
    Composite in preparation for migrating pixmaps. Have kasync ignore
    drawable type so that pixmaps trigger sync Add KdOffscreenFini to
    cleanup on server reset. Switch off screen area to have only a 'save'
    function; moving objects to off screen memory is done by saving then
    freeing the area.
2003-10-14 21:10:53 +00:00
Keith Packard 4b844cafb2 Check for off-screen pixmap support in KaaDrawableIsOffscreenPixmap. -Wall
fixes. Allocate pixmap private space only for screens with off-screen
    pixmap support
2003-10-14 05:07:39 +00:00
Anders Carlsson 44f2e82f1b Use pixmaps instead of drawables in the kaa functions. Have the mga server
support accelerated operations on offscreen pixmaps.
2003-10-13 02:19:47 +00:00
Anders Carlsson 47a9fab5e2 Add support for offscreen pixmaps. 2003-10-13 01:19:37 +00:00
Anders Carlsson a50438b470 Add offscreen memory manager and update the servers to reflect the name
change for the kaa structure.
2003-10-13 00:19:58 +00:00
Keith Packard aae3e6dcb3 configure.ac Makefile.am os/oscolor.c Xext/saver.c Xext/Makefile.am
hw/kdrive/linux/ts.c hw/kdrive/src/Makefile.am hw/kdrive/src/kdrive.h
    hw/kdrive/src/kinput.c hw/kdrive/src/kmap.c Autodetect VM86 (for vesa),
    AGPGART, APM, MTRR, tslib and handhelds.org touch screen. Add
    USE_RGB_BUILTIN and code for fileless RGB database. Add
    MIT-SCREEN-SAVER
2003-10-04 02:43:16 +00:00
Keith Packard 918a8273ee hw/kdrive/src/kdrive.c
hw/kdrive/src/kdrive.h Add -switchCmd option to set command that is
    executed whenever the VT is enabled or disabled. This permits input
    device to be customized by external apps when switching to X.
2003-09-24 21:07:06 +00:00
Anders Carlsson 514ab46ce3 Start autoifying everything. 2003-09-11 00:47:36 +00:00
Keith Packard 283a7f32c4 Update RCS tags, fix keyboard hang on VT switch, fix scroll wheel mice, add
-rawcoord option to not transform mice on rotate, fix mtrr to use
    power-of-two size, add a few vesa options
2003-07-07 19:13:03 +00:00
Keith Packard 7827fce0b5 Allow input devices to be closed while the VT is switched away (needs
per-driver support)
2002-11-13 16:37:39 +00:00
Keith Packard 612e82053d Clean up touch screen hacks for controlling pointer on alternate screen 2002-11-05 05:28:34 +00:00
Keith Packard 7d214e2e2a Fix additions of RandR support in kmode.c 2002-10-18 06:08:10 +00:00
Keith Packard e1c304e22b Add refresh rates to RandR (v1.1) 2002-10-14 18:01:42 +00:00
Keith Packard b5d1c53862 Add vtxx option to kdrive servers 2002-10-08 21:28:05 +00:00
Keith Packard a80e1e5aed Update kdrive servers to support reflection 2002-10-03 22:09:04 +00:00