3335. Clean up compiler warnings in lib/font/bitmap (#3411, Matt Grossman). 3334. TGA fixes, add sync on green (#3410, Matt Grossman). 3333. Fix NULL pointer dereference in libXaw (#3406, Christopher Sekiya). 3332. Add Rage128 support (#3405, Rik Faith, funded by ATI). 3331. Add MTRR support for NetBSD and OpenBSD. Add new NetBSD aperture driver (#3404, Matthieu Herrb). 3330. Xterm patch #121 (#3402, Thomas Dickey). 3329. Rendition driver bugfixes and alpha related cleanups (#3400, Dejan Ilic, Marc Langenbach, Egbert Eich). 3328. Add void input device (#3392, Frederic Lepied). 3327. Changed the Xon serial option to be able to select xon/xoff for input, output or both. Add support for Graphire models. Change wacom init phase to use new Xoff option (#3391, Frederic Lepied). 3326. Change the SwapAxes option to SwapXY in elographics/microtouch driver to match an already existing option in the Dynapro driver. Add a Focus class capability to the elographics driver (#3395, Patrick Lecoanet). 3325. Update mouse rate handling (#3388, Harald Koenig). 3324. Fix NULL pointer dereference in misprite.c (#3380, Edward Wang). 3323. Add FBDev and ShadowFB support to glint driver. Add new option "NoWriteBitmap" (#3383, Michel Daenzer). 3322. Update SuperProbe to handle S3 Savage4, Savage200 and clean up Trio3D/Savage3D detection (#3382,3384 Harald Koenig). 3321. Add new framebuffer code and tiny X DDX architecture (#3379, Keith Packard). 3320. Add DGA2 documentation (#3378, Mark Vojkovich). 3319. Update XFree86 manpage wrt -bpp/-depth/-fbbpp (#3377, Andy Isaacson). 3318. Make SuperProbe check primary cards, only (#3374, Harald Koenig). 3317. Add SilkenMouse to *BSD (#3373, Matthieu Herrb). 3316. Allow SilkenMouse to work if not all drivers of an OS support SIGIO (#3372, Keith Packard). 3315. Fix a few problems in TGA driver and add support for backing store and SilkenMouse (#3371, Matt Grossman). 3314. Add smarter scheduler (#3370, Keith Packard). 3313. Xterm patch #120 (#3369, Thomas Dickey). 3312. Enable xf86SetKbdRate function on Solaris 8 (#3364, David Holland). 3311. Fix some bugs and add acceleration to Rendition server (#3360, Dejan Ilic). 3310. Make raw DDC information available as properties in the root window (#3357, Andrew Aitchison). 3309. Fix for xf86CreateRootWindow (#3355, Andrew Aitchison). 3308. Add manpage for the chips driver (#3353, David Bateman). 3307. Update contact info (#3352, Andrew van der Stock). 3306. Add kbd rate support for Linux (#3363, Harald Koenig). 3305. Update Portuguese XKB map (#3351, Joao Esteves, Francisco Colaco). 3304. Fix text clipping in 3dfx driver (#3349, Henrik Harmsen). 3303. Fix S3 ViRGE hw cursor (#3348, Harald Koenig). 3302. Fix clipping in 3dfx driver (#3342, Daryll Strauss). 3301. Enable SilkenMouse for 3dfx driver (#3341, Henrik Harmsen). 3300. Enable SIGIO support on LynxOS (#3339, Thomas Mueller). 3299. Get TRUE defined in sigio.c. Fix xterm compile problem on ISC (#3338, Michael Rohleder). 3298. Correct DPMS suspend/standby modes for 3dfx driver (#3336, Henrik Harmsen) 3297. Xterm patch #119 (#3335, Thomas Dickey).
184 lines
5.7 KiB
C
184 lines
5.7 KiB
C
/*
|
|
* $Id$
|
|
*
|
|
* Copyright © 1999 Keith Packard
|
|
*
|
|
* Permission to use, copy, modify, distribute, and sell this software and its
|
|
* documentation for any purpose is hereby granted without fee, provided that
|
|
* the above copyright notice appear in all copies and that both that
|
|
* copyright notice and this permission notice appear in supporting
|
|
* documentation, and that the name of Keith Packard not be used in
|
|
* advertising or publicity pertaining to distribution of the software without
|
|
* specific, written prior permission. Keith Packard makes no
|
|
* representations about the suitability of this software for any purpose. It
|
|
* is provided "as is" without express or implied warranty.
|
|
*
|
|
* KEITH PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
|
|
* INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
|
|
* EVENT SHALL KEITH PACKARD BE LIABLE FOR ANY SPECIAL, INDIRECT OR
|
|
* CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
|
|
* DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
|
|
* TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
|
* PERFORMANCE OF THIS SOFTWARE.
|
|
*/
|
|
/* $XFree86: $ */
|
|
|
|
#ifndef _SISDRAW_H_
|
|
#define _SISDRAW_H_
|
|
|
|
#define SetupSis(s) KdScreenPriv(s); \
|
|
sisCardInfo(pScreenPriv); \
|
|
SisPtr sis = sisc->sis
|
|
|
|
#define SIS_CMD_BITBLT (0)
|
|
#define SIS_CMD_COLOR_EXPAND (1)
|
|
#define SIS_CMD_ENH_COLOR_EXPAND (2)
|
|
#define SIS_CMD_MULTI_SCANLINE (3)
|
|
#define SIS_CMD_LINE (4)
|
|
#define SIS_CMD_TRAPEZOID (5)
|
|
#define SIS_CMD_TRANSPARENT_BITBLT (6)
|
|
|
|
#define SIS_CMD_SRC_SCREEN (0 << 4)
|
|
#define SIS_CMD_SRC_CPU (1 << 4)
|
|
|
|
#define SIS_CMD_PAT_FG (0 << 6)
|
|
#define SIS_CMD_PAT_PATTERN (1 << 6)
|
|
#define SIS_CMD_PAT_MONO (2 << 6)
|
|
|
|
/* 8->15 rop */
|
|
|
|
#define SIS_CMD_DEC_X (0 << 16)
|
|
#define SIS_CMD_INC_X (1 << 16)
|
|
|
|
#define SIS_CMD_DEC_Y (0 << 17)
|
|
#define SIS_CMD_INC_Y (1 << 17)
|
|
|
|
#define SIS_CMD_RECT_CLIP_DISABLE (0 << 18)
|
|
#define SIS_CMD_RECT_CLIP_ENABLE (1 << 18)
|
|
|
|
#define SIS_CMD_OPAQUE (0 << 20)
|
|
#define SIS_CMD_TRANSPARENT (1 << 20)
|
|
|
|
#define SIS_CMD_RECT_CLIP_MERGE (0 << 26)
|
|
#define SIS_CMD_RECT_CLIP_DONT_MERGE (1 << 26)
|
|
|
|
#define SIS_STAT_2D_IDLE (1 << 31)
|
|
#define SIS_STAT_3D_IDLE (1 << 30)
|
|
#define SIS_STAT_EMPTY (1 << 29)
|
|
#define SIS_STAT_CPU_BITBLT (0xf << 24)
|
|
#define SIS_STAT_ENH_COLOR_EXPAND (1 << 23)
|
|
#define SIS_STAT_AVAIL (0x1fff)
|
|
|
|
extern CARD8 sisPatRop[16];
|
|
extern CARD8 sisBltRop[16];
|
|
|
|
#define _sisSetSolidRect(sis,pix,alu,cmd) {\
|
|
(sis)->u.general.pattern_fg = (pix); \
|
|
(cmd) = (SIS_CMD_BITBLT | \
|
|
SIS_CMD_SRC_SCREEN | \
|
|
SIS_CMD_PAT_FG | \
|
|
(sisPatRop[alu] << 8) | \
|
|
SIS_CMD_INC_X | \
|
|
SIS_CMD_INC_Y | \
|
|
SIS_CMD_RECT_CLIP_DISABLE | \
|
|
SIS_CMD_OPAQUE | \
|
|
SIS_CMD_RECT_CLIP_DONT_MERGE); \
|
|
}
|
|
|
|
#define _sisClip(sis,x1,y1,x2,y2) { \
|
|
(sis)->u.general.clip_left = (x1); \
|
|
(sis)->u.general.clip_top = (y1); \
|
|
(sis)->u.general.clip_right = (x2); \
|
|
(sis)->u.general.clip_bottom = (y2); \
|
|
}
|
|
|
|
#define _sisRect(sis,x,y,w,h,cmd) { \
|
|
(sis)->u.general.dst_x = (x); \
|
|
(sis)->u.general.dst_y = (y); \
|
|
(sis)->u.general.rect_width = (w); \
|
|
(sis)->u.general.rect_height = (h); \
|
|
(sis)->u.general.command = (cmd); \
|
|
}
|
|
|
|
#define _sisSetTransparentPlaneBlt(sis, alu, fg, cmd) { \
|
|
(sis)->u.general.src_fg = (fg); \
|
|
(cmd) = (SIS_CMD_ENH_COLOR_EXPAND | \
|
|
SIS_CMD_SRC_CPU | \
|
|
SIS_CMD_PAT_FG | \
|
|
(sisBltRop[alu] << 8) | \
|
|
SIS_CMD_INC_X | \
|
|
SIS_CMD_INC_Y | \
|
|
SIS_CMD_RECT_CLIP_DISABLE | \
|
|
SIS_CMD_TRANSPARENT | \
|
|
SIS_CMD_RECT_CLIP_DONT_MERGE); \
|
|
}
|
|
|
|
#define _sisSetOpaquePlaneBlt(sis, alu, fg, bg, cmd) { \
|
|
(sis)->u.general.src_fg = (fg); \
|
|
(sis)->u.general.src_bg = (bg); \
|
|
(cmd) = (SIS_CMD_ENH_COLOR_EXPAND | \
|
|
SIS_CMD_SRC_CPU | \
|
|
SIS_CMD_PAT_FG | \
|
|
(sisBltRop[alu] << 8) | \
|
|
SIS_CMD_INC_X | \
|
|
SIS_CMD_INC_Y | \
|
|
SIS_CMD_RECT_CLIP_DISABLE | \
|
|
SIS_CMD_OPAQUE | \
|
|
SIS_CMD_RECT_CLIP_DONT_MERGE); \
|
|
}
|
|
|
|
#define _sisPlaneBlt(sis,x,y,w,h,cmd) _sisSolidRect(sis,x,y,w,h,cmd)
|
|
|
|
#define _sisSetBlt(sis,alu,cmd) { \
|
|
(sis)->u.general.src_base = (sis)->u.general.dst_base; \
|
|
(sis)->u.general.src_pitch = (sis)->u.general.dst_pitch; \
|
|
(cmd) = (SIS_CMD_RECT_CLIP_DONT_MERGE |\
|
|
(sisBltRop[alu] << 8) |\
|
|
SIS_CMD_PAT_FG |\
|
|
SIS_CMD_SRC_SCREEN |\
|
|
SIS_CMD_BITBLT); \
|
|
}
|
|
|
|
#define _sisBlt(sis,sx,sy,dx,dy,w,h,cmd) { \
|
|
(sis)->u.general.src_x = (sx); \
|
|
(sis)->u.general.src_y = (sy); \
|
|
(sis)->u.general.dst_x = (dx); \
|
|
(sis)->u.general.dst_y = (dy); \
|
|
(sis)->u.general.rect_width = (w); \
|
|
(sis)->u.general.rect_height = (h); \
|
|
(sis)->u.general.command = (cmd); \
|
|
}
|
|
|
|
#define SIS_IE (SIS_STAT_2D_IDLE|SIS_STAT_EMPTY)
|
|
|
|
#define _sisWaitIdleEmpty(sis) \
|
|
while (((sis)->u.general.status & SIS_IE) != SIS_IE)
|
|
|
|
/*
|
|
* Ok, so the Sis530 is broken -- it expects bitmaps to come MSB bit order,
|
|
* but it's willing to take them in LSB byte order. These macros
|
|
* flip bits around without flipping bytes. Instead of using a table
|
|
* and burning memory bandwidth, do them in place with the CPU.
|
|
*/
|
|
|
|
/* The MIPS compiler automatically places these constants in registers */
|
|
#define SisInvertBits32(v) { \
|
|
v = ((v & 0x55555555) << 1) | ((v >> 1) & 0x55555555); \
|
|
v = ((v & 0x33333333) << 2) | ((v >> 2) & 0x33333333); \
|
|
v = ((v & 0x0f0f0f0f) << 4) | ((v >> 4) & 0x0f0f0f0f); \
|
|
}
|
|
|
|
#define SisInvertBits16(v) { \
|
|
v = ((v & 0x5555) << 1) | ((v >> 1) & 0x5555); \
|
|
v = ((v & 0x3333) << 2) | ((v >> 2) & 0x3333); \
|
|
v = ((v & 0x0f0f) << 4) | ((v >> 4) & 0x0f0f); \
|
|
}
|
|
|
|
#define SisInvertBits8(v) { \
|
|
v = ((v & 0x55) << 1) | ((v >> 1) & 0x55); \
|
|
v = ((v & 0x33) << 2) | ((v >> 2) & 0x33); \
|
|
v = ((v & 0x0f) << 4) | ((v >> 4) & 0x0f); \
|
|
}
|
|
|
|
#endif
|