implementation that calls fb to get its work done. The purpose is to
have a trusted EXA driver for use with testing changes to the core of
EXA. However, fakexa has not received much testing yet, lacks offscreen
pixmaps support, and doesn't reliably provide garbage when EXA doesn't
get its syncing right. All of these should be fixed soon.
Attempt to build xeglmodule.c, not xglxmodule.c.
Add xf86Sbus.h to EXTRA_DIST, as _HEADERS doesn't appear to get the same
treatment as _SOURCES in terms of automatically DISTing.
Changed the semantics of the Convolution filter a bit. It now doesn't try
to normalize the filter values but leaves this to the client. This
gives more reasonable behaviour in the limit where the filter
parameters sum up to 0.
implementation. Includes cache flushing to prevent bad first reads of
the framebuffer, fixing blending of many formats, falling back on many
unsupported operations, and falling back early to prevent migration.
Passes all of rendercheck except some of the blend (!) tests.
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).
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.
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).
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.
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.
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.
troubles.
- Move the RemoveBlockAndWakeupHandlers to match
RegisterBlockAndWakeupHandlers.
- Enable R100 trapezoid "acceleration" when DRI is working, so that it can
be exposed and worked on.
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.
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).
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.
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.
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.
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
- 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.
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.
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).
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.
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!
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
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).
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.
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.
- 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.
ati driver, cascading between VESA and FBDEV. We only have init
functions done so far; need to add all of the others. Fixed some
compiler warnings. Whitespace and formatting cleanups (using 4 spaces,
no tabs)
Get rid of all references to SCO.
Change SDK include dir to $(includedir)/xizzle. Add SDK libs where
necessary.
Reformat to be nicer and easier to shuffle around; also, fix lib ordering
so we get so much closer to the elusive final link. Shuffle
common/xf86Init.c into libxizzle.a.
Fix a couple of early snafus - s/BUILDXI/XINPUT/, et al; make the SDK stuff
conditional as needed; fix the SBus includes.
Name library os-support/libxizzleos.a, not os-support/foo/libxizzlefoo.a.
Clean up ARCH_SOURCES so it's always initialised to something.
Move linked libraries to _LIBADD, which somehow escaped my attention. Make
inclusion of drm/libxizzlelinuxdrm.a dependent on DRI.
s/VERSION/VBE_VERSION/;
Axe this redundant dir.
All Xizzle-specific: axe hw/xizzle/Xi, shuffle link order, fix list of
required modules to be vaguely sane, add some pertinent libs/incs.
anyone uses this in production, a big scary monster will eat them. hrm,
perhaps i should make it have a --i-know-what-i'm-doing param that it
doens't start without, heh
- Reserve areas for back/depth/span when USING_DRI && GLXEXT. This would be
better in a TransitionTo3d, but we'd need to work with the offscreen
memory manager for that.
- Misc. fixes to ati_dri.c for DRI+GLX. Needs more work still.
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.
emitting as a tri fan rather than a tri list. A rect list would save an
additional vertex (out of 4) per rectangle, but there's no measurable
speed difference and the tri fan may be useful when transforms come
into play.
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.
functions. Along with making things more readable, it fixes a problem
where the coordinates would get messed up if acceleration failed due to
things like pixmaps being in the wrong locations.
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.
- 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.
the ATI driver. It suffers from hw/sw synchronization problems, it
looks like, but may be good enough to work on Render acceleration
experiments. Committing it as-is so I don't lose it again.
Check window reorigin in PositionWindow and bump pixmap serial numbers to
revalidate GCs.
Fix picture clip region origin in automatic update
Initialize client private 'critical' value
Clean up pixmap bounds checking code to only affect contents allocated by
fb.
Oops. Call SourceValidate for Composite operations.
Add Xchips server (vesa based)
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.
- 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.
- 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).
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.
change, just cleaning up a bit)
Reset the screen->memory_base value when frame buffer is remapped. This
makes sure new off-screen allocations point at the newly mapped region
rather than the old (now unmapped) region.
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.
have redirected subwindows in manual mode. Those clients are marked
Critical and given a significant scheduling boost whenever they receive
a damage notify event. This dramatically improves update frequency.
If the kernel reported a large number of keys, readKernelMapping would walk
off the end of the kdKeysym array.
Fix usage of _IOWR; the 'size' argument is actually a datatype.
drawable pixmap rather than directly into the frame buffer. Rewrite
logic in kdoffscreen to make space for new allocations, now deals
correctly with locked areas.
the server seems to act as before. With RedirectSubwindows (root,
automatic), the server looks just like a regular X server. Now to go
rewrite the (currently lame) compositing manager to get some real
action on the screen.
Some of the fixes here are to make valgrind quiet with various ioctls used
by kdrive/linux.
Also fixed a bug where fbdev initialization was out of order in fbdev.c and
smi.c
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.
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.
Mach64 framebuffer (Marc La France).
135. Make ATI Mach64 FIFO cache integrity testing optional (Marc La
France).
134. Export ATI Mach64 hardware overlay as an XVideo adaptor (derived from
GATOS project, Egbert Eich, Marc La France).
133. Reorganise ATI Mach64 support into separate source files (Marc La
France).
132. Refine atimisc's decoding of the panel mode on server entry in an
attempt to reduce the effect of atyfb bugs (Marc La France).
131. Make Rage128 and Radeon XVideo available even when 2D acceleration is
disabled (Marc La France).
130. There is no longer any need to require hardware cursors during Rage128
and Radeon XVideo displays (Marc La France).
129. Initialise v4l's XVideo adaptors last (Marc La France).
128. Reduce cut&paste effects by adding more helpers to Xv (derived from
#5645, Björn Augustsson, Marc La France).
127. Centralise a region comparison primitive into 'mi' and use it instead
of local definitions throughout the server (Marc La France).
126. DPMSExtension & XvExtension driver cleanups (Marc La France).
may depend on setting done there (Egbert Eich).
318. Several fixes for cross compile environment (Egbert Eich).
317. Added code to allow for building of static only libraries with
-fPIC for platforms which require it (Egbert Eich).
316. Added '-m32' to gcc flags as default for ia32 builds when gcc version
is >= 3.1. This allows building a 32 bit Version of X on 64bit x86-64
(Egbert Eich).
315. Changed direct calls of ld to 'gcc -nostdlib' for Linux (Egbert Eich).
314. Changed calls to as to 'gcc -c -x assembler-with-cpp' for Linux
(Egbert Eich).
313. Added '-fno-strict-aliasing' flag to gcc version >= 3.1 (Egbert Eich).
Strict requires that one address must not contain pointers to different
types - a feature heavily used by X (Egbert Eich).
312. Fixed a core dump problem in libXtt (?) (Egbert Eich).
311. Removed '#pragma pack' from structures that contain function pointers
in x86emu. This causes problems on gcc 3.1 for ia64 (Egbert Eich).
310. Added defines for missing X types to saverproto.h (Egbert Eich).
309. Fixed compiler warings generated by gcc >= 3.1 in mesa drivers (Egbert
Eich).
308. For platforms that allow both 32 and 64 bit libraries to be executed
split Xlib i18n modules path into
<libpath>/X11R6/lib/X11/locale/lib/common and
<libpath>/X11R6/lib/X11/locale/lib64/common. 'lib64' has been defined
to be the default path for 64bit shared libraries on these platforms
(Egbert Eich).
307. Fixed obvious typo in OMlib (Egbert Eich).
306. Fixed code in cfb that didn't comply with C sequence rules. Modern C
compilers tend to be more aggressive on code reordering (Egbert Eich).
305. Changed arguments of NoopDDA() from VarArgs to void. Handling of
VarArgs by gcc isn't compatible with the way it was used on certain
platforms (Egbert Eich).
304. Added support for 32bit pixmaps for 24bit overlay framebuffers in fb
overlay code (Egbert Eich).
303. Fixed kdrive to print a meaningful error message instead of just core
dump when no matching graphics cards is found (Egbert Eich).
302. fixed portability bug in xwd (Andreas Schwab <schwab@suse.de>)
301. fixed X Server crash, which happended each time a proportional
iso10646 font was loaded with xtt backend (Yong Li
<rigel863@yahoo.com>)
300. Added some ARM specific fixes to compiler.h (Uli Hecht).
299. Added a virtual 'dummy' driver (Egbert Eich).
298. Fixed core dump when certain access functions are not set in xf86Bus.c
(Egbert Eich).
297. Fixed problem where SIGIO could be disabled after a server reset.
296. Added configurable list of devices the xf86Misc extension is allowed
to change the mouse device to (Egbert Eich).
295. Changed default mouse type to 'auto' when generating config file with
'-configure' (Egbert Eich).
294. Made sure keyboard modifier settings are consistent after exit from
DGA when the xkb extension is used (Egbert Eich).
293. Disabled keyboard processing when Xserver is suspended by power
management. This allows effective locking of laptops when stolen
(Egbert Eich).
292. Added/improved options for lockfile syncing (Egbert Eich).
291. Added support for backup copy of Xserver logfile (Egbert Eich).
290. Fixed GetTimeInMillis() to use deltas instead of absolute time
returend by gettimeofday(). This ensures time is monotonic in X (Egbert
Eich).
289. Fixed xf86Misc extension to allow modification of Expps2 mice (Egbert
Eich).
288. Made code in xf86MiscExt.c more readable (Egbert Eich).
287. Fixed PCI CardBus bridge handling (Egbert Eich).
286. Added code to reenable PCI bus mastering after coming back from a VT
switch to radeon driver (Charl P. Botha <http://cpbotha.net/>) (Egbert
Eich).
285. Dito for r128 driver (M. Harris).
284. Dito for glint and mga driver (Egbert Eich).
283. Fixed double scan issues for low res modes in C&T driver (Egbert
Eich).
282. Set rgbBits to 8 for all HiQV chips in chips driver (Egbert Eich).
281. Moved initialization of accel funtions past initialization of
offscreen fb manager in chips driver (Egbert Eich).
280. Fixed initialization of video in chips driver (?).
279. Fixed HALlib problem restoring text mode on G550 (Egbert Eich).
278. Restructured and included Matrox's Merged Framebuffer changes to mga
driver (Egbert Eich).
277. G450/550 clockchip programming fixes (Matrox).
276. Fixed HW Cursor for HALlib frame granularity (Egbert Eich).
275. Enabling 2D accel in 24-bit for neomagic 2360 and 2380 (Egbert Eich).
274. Added support for builtin 1024x480 mode of Sony subnotebooks for
Neomagic driver (Egbert Eich).
273. Fixed support for lowRes (320x240) modes in neomagic driver (Egbert
Eich).
272. Fixed RAC function registration in S3 driver (Egbert Eich).
271. Added some voodoo to screen initialization of S3 driver (Egbert Eich).
270. Fixed vbe/int10 support in SMI driver. It used to core dump when BIOS
was not usable (Egbert Eich).
269. Separated BRIGHTNESS and and CAPTURE_BRIGNTESS video attributes in smi
driver: CAPTURE_BRIGHTNESS refers to the capture chip (ie. Philips
SAA7110) while BRIGHTNESS controls the video overlay of the SMI chip
itself (Egbert Eich).
268. Disable automatic loading of DRI when running SUN ffb as this is
inconsistent with other drivers (Thorsten Kukuk).
267. Fixed Gamma/Brightness code in trident driver (Egbert Eich).
266. Added FpDelay debugging option (Egbert Eich).
260. Fixed video support for Trident 9397 (Egbert Eich).
265. Fixed Cursor/VT switch support for vmware driver (Egbert Eich).
264. Fixed Blit problems in vmware driver when running KDE (Egbert Eich).
263. Added RENDER support to vmware driver (Egbert Eich).
262. Added C&T 69030 to extrapci.ids (Egbert Eich).
261. Improved mouse autodetection code (Egbert Eich).
260. Restructured int10 code so that vm86 and x86emu support can be loaded
as modules. Implemented heuristic to try vm86 first and fall back to
x86emu. This allows 32 bit Xservers to run on x86_64 on 64-bit kernel
without vm86 support (Egbert Eich).
259. Restructured elf loader: determine which section to load from
elfheader flags (Egbert Eich).
258. Adding RENDER Support to RAC (Egbert Eich).
257. Using borderClip instead of borderSize region for redisplay function
in miext/shadow code to avoid core dumps when vt switched away (Egbert
Eich).
256. Replacing sprintf() by snprintf() in lbxproxy to eliminate possible
buffer overrun exploits (Egbert Eich).
255. KP_Decimal fixes to Czech and Slovak keybards (Jan Holesovsky
<kendy@suse.cz>) (Egbert Eich).
Snitily).
173. Fix a typo in Xvesa's emulation of instructions forbidden in vm86 mode
(#5184, Juliusz Chroboczek)
172. Fix a bounds check in Xlib's Region code (#5183, Owen Taylor).