DDraw issues, etc.

Lionel Ulmer lionel.ulmer at free.fr
Sun Apr 4 03:58:44 CDT 2004


> And that it does :/ It seems not to update the screen properly, but then
> again, it could be something not completely implemented in Wine, or the game
> engine.

Well, if it asks for multiple clipping rectangles, and from what I found out
in the MSDN, they should not overlap.

So you should just have to loop over all the rectangles and do the
'copy_on_screen' as many times as there are rectangles.

Of course, if they overlap, this method will still work except that we would
're-Blit' some parts multiple times (we would just need to do the
optimisations later on).

See these pages :

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/gdi/regions_6702.asp
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/gdi/regions_9kky.asp

> According to M$ DX7 Documentation, DirectDrawSurface::Blt() should only
> bit to areas that are in the clip list. And apparently 98% of the time that
> it's trying to blit to a rect that it's not putting in the clip list, it's
> almost identical to the RGNDATA.rcBound value, so i'm guessing it's for some
> type of back-buffer used by the engine :P

You mean that it's trying to blit to a zone that is not at all in the clip
list (ie all of the intersections of the destination rectangles with the
rectangles in the clip list are empty) ? It may well be that it's not a bug
(why use clip lists if you still need to check in the engine code if you are
completely in or not from the lists).

> Yeah, that is unless the current DD code was rewritten to use GL and also
> assuming that the person running it had Direct Rendering, but then again,
> that would take a lot of time to do, and could possibly be horridly slow if
> the person happened not to have direct rendering :P

Well, it's in my plans to do the GL 'port'... It could even be done pretty
easily (as almost all of the code already exists in the D3D part of the
code). It would be mightily hacky, but well, it may even work :-)

What's blocking me is that my 'target' applications is COMI and it uses 8
bit graphics (so I need a GFX card supported paletted textures to really see
if I can get a nice speed-up).

> I'm also looking at some of the wave driver stuff. WineX's wave driver (at
> least the OSS driver) does the sound for the game perfectly whereas Wine's
> wave output sounds rather odd, crackling, and it seems not to flush the
> buffer properly. :P

For that, Robert and Eric are the experts...

            Lionel

-- 
		 Lionel Ulmer - http://www.bbrox.org/



More information about the wine-devel mailing list