Use the READ and WRITE macros to wrap memory accesses that could be in video
memory. Add MEMCPY_WRAPPED and MEMSET_WRAPPED macros to wrap memcpy and
memset, respectively.
Pass the size of the data pointed to by src or dst as an argument to
wfb{Read,Write}Memory. This allows one set of macros to be used with any size
pointer. Assumes that sizeof(FbBits) >= sizeof(FbStip).
Create fbPrepareAccess macros to call into the driver to set up the
wfbReadMemory and wfbWriteWemory pointers. Call these from fbGetDrawable and
fbGetStipDrawable.
Add the READ and WRITE macros, which expand to simple memory accesses for fb,
and calls through the function pointers for wfb.
Add fbFinishAccess macro to give the driver an opportunity to clean up. Add
calls to this in the appropriate places.
For now, just #define all of the exported symbols in wfbrename.h. Later,
we should add FBPREFIX() around the exported symbols and use -fvisiblity=hidden
to hide the rest.
Builds fb/* twice, defining FB_ACCESS_WRAPPER for libwfb.la. Define a macro,
FBPREFIX(X) which expands to fbX for libfb.la and wfbX for libwfb.la. Use the
macro on [w]fbModuleData so the new module loads.
Get rid of almost all uses of these definitions. They're still defined for
delinquent out-of-tree drivers, and also for the Mesa build. As well as
for miinitext.c. But largely gone.
Instead, stick the NULL return default case afterwards, so that the compiler can
warn us when we've got unimplemented cases. Removes some unimplemented and
unused 8bpp, depth 4 picture format names.
transforms so we can avoid doing the expensive
64-bit math. Unroll the bilinear interpolation loops for an extra boost. I
tested this with the up/downscaling cairo-benchmarks with Xvfb and saw
a 12% +/- 4% decrease in time taken to run them.
value is being added to multiple pixels. This improves the speed of
rendering wide trapezoids. I tested this with a small set of xlibs
cairo-benchmarks with Xvfb and saw a 4% decrease in time taken to run
them.
- Merge various fb/ bits of COMPOSITE support from xserver, which weren't
necessary before due to cw hiding the issues. Fixes offset calculations
for a number of operations, and may pull some fixes that cairo has
wanted for XAA as well.
- Add a new call, miDisableCompositeWrapper(), which a DDX can call to keep
cw from getting initialized from the damage code. While it would be
cleaner to have each DDX initialize it if it needs it, we don't have
control over all of them (e.g. nvidia).
- Use the miDisableCompositeWrapper() to keep cw from getting set up for
screens using EXA, because EXA is already aware of composite. Avoiding
cw improved performance 0-35% on operations tested by ajax in x11perf.