*BSD News Article 28381


Return to BSD News archive

Xref: sserve comp.os.386bsd.apps:1027 comp.os.linux.misc:10859
Path: sserve!newshost.anu.edu.au!munnari.oz.au!bunyip.cc.uq.oz.au!harbinger.cc.monash.edu.au!msuinfo!agate!howland.reston.ans.net!pipex!sunic!EU.net!news.eunet.fi!news.funet.fi!nntp.hut.fi!nntp!sja
From: sja@snakemail.hut.fi (Sakari Jalovaara)
Newsgroups: comp.os.386bsd.apps,comp.os.linux.misc
Subject: Re: DOOM for X
Date: 12 Mar 94 15:47:12 GMT
Organization: Helsinki University of Technology, Finland
Lines: 28
Distribution: inet
Message-ID: <SJA.94Mar12174713@gamma.hut.fi>
References: <2lkpg5$8hn@Tut.MsState.Edu> <hastyCMEw58.FMr@netcom.com> <1994Mar10.123047.15912@swan.pyr> <hastyCMGpA7.Gu5@netcom.com> <2lo4m0$sdt@bosnia.pop.psu.edu>
NNTP-Posting-Host: gamma.hut.fi
In-reply-to: barr@pop.psu.edu's message of 10 Mar 1994 16:49:52 -0500

> I agree that X the wrong platform for doing high-speed and
> time-critical graphics applications like video-style games.  There are
> extensions (not SHM) that help a little, but there are lots of
> advantages to taking direct control of the hardware.  The result is
> _not_ client-server.

To get high speed graphics on X you just need to re-write the server:

	- At program startup, map the X server code into the application
	  program memory space (e.g. as a shared library).
	- In every Xlib call, check if the display to be accessed is local.
	  If not, send a network X request as usual.
	- For local displays, call the appropriate routine in the server.
	  The server code should be extended to do appripriate locking
	  for its global data and display hardware.

No network delays, no network packet building, no copying of images
between processes, no process context switches.  Of course, a badly
behaving process can screw your display - but that's life (cf. xmelt.)

So your video hardware has commands that don't map well to Xlib
functions?  You may want to define extensions for them.  And perhaps
implement slower emulation routines for programs that want to be
portable.

Now, whether this still qualifies as "client-server" is something of
a philosophical question.
									++sja