Poor performance on Directx10 cards

Archives Forums/Blitz3D SDK Programming/Poor performance on Directx10 cards

DrMark(Posted 2008) [#1]
I'm in the final stages of BETA testing my 2d game. Everything was going fine until I got a couple of slowdown reports. The odd thing was they were very high spec machines. Further digging revealed the problems were all on directx10 video cards. As an example Nvidias 8600 GTS.

I have since been told that direct draw is emulated via these cards. This would explain the slow down. Apparently it affects ATI cards too. I dont know if this applies to all DX10 cards. Anyone know anything?

Directx10 cards are fairly cheap now and I suspect many people will be upgrading. This is a big problem and pretty much means I have to find an alternative to this SDK and discard a lot of work.

Can anyone shed any light on this?


Beaker(Posted 2008) [#2]
Have you considered using the SDK but doing 2D in 3D (ie. replicating the existing 2D commands)?


Who was John Galt?(Posted 2008) [#3]
Good idea beaker. That sounds like the way forward. There was definitely some 2D in 3D code in the archives that you should be able to plug in with minimal effort. As a bonus, you'll get real-time alpha, colouring and rotation if you want it.


DrMark(Posted 2008) [#4]
Thanks for the replies. I had this 3D solution in the back of my mind but as 3D is something I kind of avoided until now and as I'm on a very tight deadline I thought it may be too much of a learning curve for the time being as I have never had anything to do with 3D! But I guess directDraw has finally had it's day with DX10.

I did locate a 2D > 3D thread but it is 6 years old now and sounds fairly incomplete. Still, as blitzSdk is based on Blitz3D I'm guessing it is still fairly relevant: http://www.blitzbasic.com/codearcs/codearcs.php?code=150

Are there any issues to bear in mind when replacing the directDraw (blitz image) surface with 3D components? For example. I load a LOT of bitmaps into memory at the start of the applications. I have many bitmap fonts, many sprites and other bits. Thousands of surfaces. Is there much of a memory/performance overhead doing it the 3D way?

Also, I'm guessing the 3D route would kind of reverse the current problem I have (good on old machines but bad on new (dx10) machines) and result in players with older machines having performance issues? This is not a major problem. I could distribute two versions. One 2D and the other 2D in 3D.

So if anyone has done this already (especially in BlitzSdk) the any advice/pointers will be appreciated.

PS. It would be very nice if Blitz could offer a 2D>3D options. Maybe at the initialization point so all the image related functions could do this behind the scenes if required. Maybe calling bbGraphics3D instead of plain bbGraphics would change the way images are delt with... But maybe I'm dreaming there. It would certainly help everyone who has written 2D games.

Thanks,

Mark


Dreamora(Posted 2008) [#5]
1. Textures must be square power of 2
2. Users with old hardware shouldn't have large problems unless you overdue it (you can not put 100-200 sprites onto the screen especially not on low end systems). For low end users, a fallback to 2d might be an alternative.


SLotman(Posted 2008) [#6]
I may be completly mistaken, but I think those newer DX10 card dont support DX7 anymore, so it falls back to the reference software driver, which is slow as hell.

The last I heard was ATI did that (removed DX7 part from their drivers to gain speed on DX9/DX10) - and I read somewhere that nVidia would stop supporting DX7 too.

Can someone confirm this? Would be pretty bad for B3D/B3D SDK, since both only works on DX7. BMax would be more safe since it can work on OpenGL (unless you're on an Intel GMA chipset...)


Gabriel(Posted 2008) [#7]
You are mistaken, it's exactly what was said above. It's DirectDraw which isn't (properly) supported in DX10, and so it only affects pure2D, which you don't really want to be doing with B3D anyway. I mean it's nice that it's there for debugging stuff, but you really want to be doing 3D accelerated 2D wherever possible these days.


Dreamora(Posted 2008) [#8]
ATI has DX7 support. Its omega trash that has cut DX7 and that long time ago.
As for NVIDIA: don't believe so, otherwise they wouldn't have solved the issues they had in 100 - 168.x in 169.21. They just had some very massive problems with the pure shader drivers for the 8000 series.


ziggy(Posted 2008) [#9]
BMax would be more safe since it can work on OpenGL (unless you're on an Intel GMA chipset...)

This has been properly solved on latests intel driver updates, about a month ago, so no problem to use OpenGL on intel cards anymore. I own one of this cards and I'm enjoying a lot miniB3D with BlitzMax (I would suggest you to take a look to this configuration: BLIde + BlitzMax compiler + MiniB3D). Just tell your customers they need to have latest drivers installed, wich usually is a non-issue as this intel updates have come due regular Windows Update.


Dreamora(Posted 2008) [#10]
Regular users = brick head = disables automatic windows update without doing it regularily himself.