Hi again,
In my other e-mail, I touched on the possibility of exporting the
drawing functions to userspace. Actually, I was delving a little on
that. I added 3 IOCTLS (FBIO_DOACCEL, FBIO_GETCAPABILITIES, and
FBIOSYNC) to the fb API (2.5.19) whose main functions are to describe
the drawing capability of the driver and making them accessible to
userland. To test that, I added XAA and DGA to XFree86 fbdev and
fbdevhw driver. Here's a part of the XFree86 log:
<<< cut >>>
(**) FBDEV(0): Enabling Acceleration
(II) Loading sub module "xaa"
(II) LoadModule: "xaa"
(II) Loading /usr/X11R6/lib/modules/libxaa.a
(II) Module xaa: vendor="The XFree86 Project"
compiled for 4.2.0, module version = 1.0.0
ABI class: XFree86 Video Driver, version 0.5
(II) FBDEV(0): Using fillrect for SolidFill.
(II) FBDEV(0): Using copyarea for ScreenToScreenCopy.
(II) FBDEV(0): Using imageblit for Mono8x8PatternFill.
(II) FBDEV(0): Using XFree86 Acceleration Architecture (XAA)
Screen to screen bit blits
Solid filled rectangles
8x8 mono pattern filled rectangles
Solid Horizontal and Vertical Lines
<<< cut >>>
I'm not really going to push for this since I already recognize a few
difficulties. Firstly, making the drawing functions accessible will
increase the likelihood of crashing the kernel. Secondly, people might
not remain contented and add more functionality increasing kernel bloat.
Anyways, any thoughts on this?
Tony
---------------------------------------------------------------------
PS: A few benchmarks...
XFBDev - no accel
=================
36000 reps @ 0.1407 msec ( 7110.0/sec): 100x100 rectangle
18000 reps @ 0.3206 msec ( 3120.0/sec): 100x100 opaque stippled
rectangle (8x8 stipple)
32000 reps @ 0.1713 msec ( 5840.0/sec): Copy 100x100 from window to
window
XFBDev - accel
==============
144000 reps @ 0.0422 msec ( 23700.0/sec): 100x100 rectangle
18000 reps @ 0.3010 msec ( 3320.0/sec): 100x100 opaque stippled
rectangle (8x8 stipple)
80000 reps @ 0.1026 msec ( 9750.0/sec): Copy 100x100 from window to
window
native i810_drv
===============
144000 reps @ 0.0428 msec ( 23300.0/sec): 100x100 rectangle
144000 reps @ 0.0429 msec ( 23300.0/sec): 100x100 opaque stippled
rectangle (8x8 stipple)
80000 reps @ 0.1060 msec ( 9430.0/sec): Copy 100x100 from window to
window
|