Greetings,
i am thinking about participating in the Summer of Code, and thought it would be interesting to improve DirectDraw such that Command & Conquer Tiberian Sun & Red Alert 2 run faster. Currently, they crash once the mouse is moved in-game when OpenGL rendering is enabled. Thus the project would involve fixing that bug, and then other performance issues/crashes that occur. However, I don't really have much experience with C and Wine. The closest I have gotten is some patches for Wine's WordPad implementation. Would it be feasible to acquire the necessary knowledge and fix the bugs before the end of summer?
Regards,
Alexander N. Sørnes
Am Mittwoch 21 März 2007 20:01 schrieb Alexander Nicolaysen Sørnes:
Greetings,
i am thinking about participating in the Summer of Code, and thought it would be interesting to improve DirectDraw such that Command & Conquer Tiberian Sun & Red Alert 2 run faster. Currently, they crash once the mouse is moved in-game when OpenGL rendering is enabled. Thus the project would involve fixing that bug, and then other performance issues/crashes that occur. However, I don't really have much experience with C and Wine. The closest I have gotten is some patches for Wine's WordPad implementation. Would it be feasible to acquire the necessary knowledge and fix the bugs before the end of summer?
I think learning those things over the summer is feasable. There is not much OpenGL knowledge required, it is mostly about drawing textured quads.
Unfortunately other issues are major: The crash when moving the mouse is because those games draw the mouse from a different thread. My multithreaded opengl patches may fix that. But for real thread safety we have to implement locking of private data. For one part this needs a lot of patience because those patches are tricky to review for Alexandre, and it needs knowledge about thread synchronisation. Overall it is a very tricky task.
The other issue is render target locking. This is essentially something that is not well supported by OpenGL. There are 2 extensions which can help to improve that, one is the pixel buffer objects extension, the other one is a nvidia only extension which does exactly the same as IDirectDrawSurface7::Lock. If neither of those extensions is available, or if pbos turn out to be slow too, we can only play tricks like watching the application's behavior and predict the area it will modify. I have started toying with that, the most important fragment is this: http://stud4.tuwien.ac.at/~e0526822/optimizer.junk
On Wed, 2007-03-21 at 20:32 +0100, Stefan Dösinger wrote:
The other issue is render target locking. This is essentially something that is not well supported by OpenGL. There are 2 extensions which can help to improve that, one is the pixel buffer objects extension, the other one is a nvidia only extension which does exactly the same as IDirectDrawSurface7::Lock. If neither of those extensions is available, or if pbos turn out to be slow too, we can only play tricks like watching the application's behavior and predict the area it will modify. I have started toying with that, the most important fragment is this: http://stud4.tuwien.ac.at/~e0526822/optimizer.junk
If it's the most efficient way to make it work, I see nothing wrong with using an nvidia-only extension and then letting it be known we'd like that extension as part of the OpenGL specification.
We'd likely want to catalog the various vendor-specific extensions we use somewhere, though.
Thanks, Scott Ritchie
Onsdag 21 mars 2007 20:32, skrev du :
Am Mittwoch 21 März 2007 20:01 schrieb Alexander Nicolaysen Sørnes:
Greetings,
i am thinking about participating in the Summer of Code, and thought it would be interesting to improve DirectDraw such that Command & Conquer Tiberian Sun & Red Alert 2 run faster. Currently, they crash once the mouse is moved in-game when OpenGL rendering is enabled. Thus the project would involve fixing that bug, and then other performance issues/crashes that occur. However, I don't really have much experience with C and Wine. The closest I have gotten is some patches for Wine's WordPad implementation. Would it be feasible to acquire the necessary knowledge and fix the bugs before the end of summer?
I think learning those things over the summer is feasable. There is not much OpenGL knowledge required, it is mostly about drawing textured quads.
Unfortunately other issues are major: The crash when moving the mouse is because those games draw the mouse from a different thread. My multithreaded opengl patches may fix that. But for real thread safety we have to implement locking of private data. For one part this needs a lot of patience because those patches are tricky to review for Alexandre, and it needs knowledge about thread synchronisation. Overall it is a very tricky task.
The other issue is render target locking. This is essentially something that is not well supported by OpenGL. There are 2 extensions which can help to improve that, one is the pixel buffer objects extension, the other one is a nvidia only extension which does exactly the same as IDirectDrawSurface7::Lock. If neither of those extensions is available, or if pbos turn out to be slow too, we can only play tricks like watching the application's behavior and predict the area it will modify. I have started toying with that, the most important fragment is this: http://stud4.tuwien.ac.at/~e0526822/optimizer.junk
A pity.
What about fixing Bug #2666, about how the menu text colour is 'lost' in Age of Empires I & II. I know these games are not really playable without a DIB engine, but they won't be properly playable either without the campaign texts etc. I apologize if I seem a bit hasty, but the deadline is fast approaching . . . :)
Alexander N. Sørnes
A pity.
What about fixing Bug #2666, about how the menu text colour is 'lost' in Age of Empires I & II. I know these games are not really playable without a DIB engine, but they won't be properly playable either without the campaign texts etc. I apologize if I seem a bit hasty, but the deadline is fast approaching . . . :)
That one is an easy fix I think. The text works in CrossOver. So all one has to do is to download and compile the crossover wine tree sources, and find out which of the hacks in there fixes the text, clean the hack up and send it to wine-patches