This is the mail archive of the
cygwin-xfree@cygwin.com
mailing list for the Cygwin XFree86 project.
RE: DDraw Blt vs BltFast
- From: "Ralf Habacker" <Ralf dot Habacker at freenet dot de>
- To: "Cygwin-Xfree" <cygwin-xfree at sources dot redhat dot com>
- Date: Tue, 12 Mar 2002 09:30:05 +0100
- Subject: RE: DDraw Blt vs BltFast
>
> On Mon, 11 Mar 2002, Harold Hunt wrote:
>
> > Alexander,
> >
> > Because the following article:
> >
> >
> http://msdn.microsoft.com/library/default.asp?url=
> /library/en-us/wcegmm/htm/
> > ddover_51.asp
> >
> > states that:
> >
> > "BltFast cannot be used on surfaces that have
> an attached clipper."
>
> Ok.
>
> > We use a clipper to account for any other
> Windows window overlaying our
> > window, which would cause a portion of our blit
> destiation to be
> > undrawable... which would mean that we wouldn't
> be allowed to use BltFast.
> >
> > Now... could we use BltFast in DirectDraw
> fullscreen modes?
>
> Not needed. The blitting does not slow down the
> server significantly. I
> think the cygwin socket layer slow much more.
Do you have seen the lmbench results on the cygwin list
http://sources.redhat.com/ml/cygwin/2002-01/msg01719.html
This confirm your statement.
*Local* Communication bandwidths in MB/s - bigger is better
-----------------------------------------------------------
Host OS Pipe AF TCP File Mmap Bcopy
Bcopy Mem Mem
UNIX reread reread (libc)
(hand) read write
--------- ------------- ---- ---- ---- ------ ------ ------
------ ---- -----
BRAMSCHE CYGWIN_NT-5.0 93.9 17.6 40.7 335.0 477.7 145.0
134.0 477. 195.9
BRAMSCHE Linux 2.2.18 343. 235. 64.4 177.7 238.5 71.5
61.4 238. 75.3
I have done some analysing work with this and with the
cygwin daemon (cygserver transport classes) there may be a
way in the future to implement unix domain sockets with
named pipes which speed up unix domain sockets up to 250
MB/s, as I have measured with a quick an dirty sample
implementation. (Unfortunally currently I have no time to
work on)
Another way seems to me in using local connection for the
xtrans layer, but there are two ioctl functions missing in
cygwin I_FDINSERT and I_RECVFD.
I_FDINSERT
Creates a message from specified buffer(s), adds information
about another STREAM, and sends the message downstream.
I_RECVFD
Retrieves the reference to an open file description from a
message written to a STREAMS-based pipe using the I_SENDFD
command, and allocates a new file descriptor in the calling
process that refers to this open file description.
In any case there is some work to do.
Regards
Ralf