This is the mail archive of the cygwin-xfree@sourceware.cygnus.com mailing list for the Cygwin project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Additions to new Beta X Server README.



I forgot to attach a copy of Dr. Busch message.  It contains some very
useful
information and suggestions for developers who wish to extend the
functionality of
the Display Driver.

Please append it to README file.

Thanks

Suhaib

----------------

Dear Suhaib,
Thanks for reply. Here are first code parts.

Encouraged by your reply I would like to pursue my proposition 2 of my
last mail.
In order to avoid problems with the release of parts of my original code
I decided to
write a new virtual NT graphics driver.
This first version of the driver (called xfddx) provides framebuffer
mapping,
stub code for the kernel GCops calls and dynamic load/unload support of
extension
modules..
In its current form it may be used to output-enable a framebuffer based
X server.

Anyone who wants to extend its functionality can either fill the  GCops
stubs or write
an Extension Driver which provides specific GC support.
I decided to support dynamically runtime-loadable extension drivers to
enhance
flexibility, extensibility and to speed up the development cycles.

The xfddx.tgz archieve contains the driver, its sources and a small
README file which
describes the xfddx module, its design extension drivers in more detail.

The rest of the code is for demo / testing purposes only.

I messed around a simple output-only version of an xvfb-based
framebuffer
server which uses the xfddx functionality.
It is built from the X11R6.4 code tree with the cygwinb19 package. In
its current form
it works correctly only in 256 color mode due to some limitations of in
the module it uses
to call the xfddx driver mapping functionality.
It passed my tests, espacially the xbench and the xieperf test.
This demonstrator uses the xfddx driver via a gcc-generated library
(get_surf) to which the
xvfb statically links. The get_surf library (libget_surf.a) links
dynamically to a MSVC
generated Dll (ntux_ddx) which provides frame buffer mapping by calling
the xfddx driver via
the Win32 ExtEscape call.
(The raison d'etre for the MSVC generated module is the fact that the
framebuffer mapping
is invalidated on each desktop switch (screen saver activation, switch
to the, logon desktop)
and should be restored automatically if access to the mapped frame
buffer raises an access
violation via a __try / __except based exception handler wich requires
the MSVC compiler).

There is also a small test application (I took no effort to make it
nice), called maptest for the
test of the xfddx functions. It shows how to map the framebuffer, to
call the GC functions in
the xfddx driver and how to load extension modules (a simple dummy
driver (nt2xv.dll) is
included, it must be copied to the <WIN_DIR>/system32 directotry).

I append the following archieves to this mail

xfddx.tgz :  contains the xfddx virtual display driver

maptest.tgz : simple test code for the xfddx driver

ntux_ddx.tgz : Win32 Dll wrapper for the gcc-generated get_surf library

xvfb_8_bit_only.tgz : cygwinb19 X11R6.4 framebuffer server sources in
                                 xc/programs/XServer/hw/vfb

x_binaries.tgz : binaries and misc stuff for testing purposes



P.S.:
Some code parts of xfddx are from a collegue, Jürgen David. Therefore
Jürgens name appears in some of the source files

Best regards
 Peter


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]