Bug 5180

Summary: EXA support for via
Product: xorg Reporter: Thomas Hellström <thomas>
Component: Driver/ViaAssignee: Thomas Hellström <thomas>
Status: RESOLVED FIXED QA Contact:
Severity: enhancement    
Priority: high CC: alexdeucher
Version: git   
Hardware: x86 (IA32)   
OS: Linux (All)   
Whiteboard:
i915 platform: i915 features:
Attachments:
Description Flags
Patch to add EXA support and clean up accel.
none
Patch to add EXA and render accel none

Description Thomas Hellström 2005-11-27 22:34:05 UTC
EXA support and accel cleanup for via.
Comment 1 Thomas Hellström 2005-11-27 22:38:41 UTC
Created attachment 3919 [details] [review]
Patch to add EXA support and clean up accel.

This patch adds EXA support and cleans up acceleration for via.
EXA support does not yet include hardware composite acceleration, but includes
hardware upload to and download from screen if a CVS via drm is installed.
DGA interoperability is implemented but untested.
XAA works around the 2047x2047 hw blitter limit and gets a new memory layout.
Some XAA bugfixes (mainly clipping) are in as well.
Xv still works in the absence of acceleration.
Comment 2 Adam Jackson 2005-12-01 11:36:09 UTC
- need to put exaGetPixmap{Offset,Pitch} in exaSymbols
- you check the planemask correctly in PrepareCopy but not in PrepareSolid.  do
via chips really not have planemask blit support?
Comment 3 Thomas Hellström 2005-12-01 17:50:57 UTC
(In reply to comment #2)
> - need to put exaGetPixmap{Offset,Pitch} in exaSymbols
> - you check the planemask correctly in PrepareCopy but not in PrepareSolid.  do
> via chips really not have planemask blit support?

Thanks. I'll fix item 1 up.
For item 2, Yes they do but it wasn't evident from the XAA implementation.
According to the docs they support a planemask as a multiple of 8 bits in 32bpp
mode. 

/Thomas


Comment 4 Thomas Hellström 2006-01-13 10:14:17 UTC
Comment on attachment 3919 [details] [review]
Patch to add EXA support and clean up accel.

Made obsolete by the next patch
Comment 5 Thomas Hellström 2006-01-13 10:23:53 UTC
Created attachment 4337 [details] [review]
Patch to add EXA and render accel

This patch cleans up xaa acceleration and adds render accel through EXA.

Actually small composite operations are done faster in software, but big
things, like translucent windows are quite nicely accelerated. There is
actually a composite size constant below which the driver refuses to do hw
composite. This constant is set to 1 byte ATM to make rendering bugs etc.
visible. May be adjusted in the future.

All composite options may not have been taken care of in the
viaExaCheckComposite() function, and some size guards may have to be added.

If a composite manager is run, The video memory should really be set to 64MB.

Works with or without DRI, and cooperates nicely with other dri clients, except
the usual stuff that DRI in general doesn't play well with composite. DGA is
taken care of but not tested.

Exa Composite is accelerated using 3D engine multitexturing, and the 3D engine
has been abstracted to something looking mostly like a C++ class. The idea is
to be able to use 3D acceleration also for Xv in the future.

/Thomas
Comment 6 Adam Jackson 2006-01-14 06:19:19 UTC
- viaOpCodes and viaFormats look like they should be const
- still no exaGetPixmap{Offset,Pitch} in exaSymbols (which is admittedly cosmetic)

the optimizations for ->Composite should probably be factored up to the exa core
some day, but i don't see any glaring problems.
Comment 7 Thomas Hellström 2006-02-23 04:38:14 UTC
Commited + fixups to xf86-vide-via (7.X)

Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.