ID:695672
 
Not Feasible
Applies to:Dream Seeker
Status: Not Feasible

Implementing this feature is not possible now or in the foreseeable future
I am not sure why we even have both of these? There seem to be pointless inconsistencies between the two methods. It seems like either picking one, or allowing us to force a game to run in a specific mode would be greatly beneficial, or at least allowing us to detect which mode the user has selected so that we can do this ourselves.

As far as I have used them, Software mode seems to outshine Hardware mode in every possible way, and in a lot of cases, Hardware mode literally just fails. Some other developers claim poor performance in Software mode, but I have actually experienced the opposite.

Software mode was free of the massive performance issues plaguing the previous version (technically, the current version) of BYOND, it seems to handle graphics better, it generally performs smoother and more consistently in my experiences, and Hardware mode drops into it when it often crashes anyway. In fact, the only benefit that I have ever noticed from using Hardware mode, is that FRAPS will work with it, which is kind of irrelevant... but for some reason, hardware mode is the non-optional default?
Most users will see the opposite of the results you're seeing. If you have a really good CPU and a really bad GPU (or no GPU), software mode probably has better performance. There shouldn't be a lot of users who fall into this category. If you're seeing bad performance in hardware mode, I'd guess the reason is more likely that BYOND just doesn't work well with your particular GPU, which can probably be fixed.

The only decent reason I've seen for using software mode is that you can stretch icons without making them blurry. If there's a way to control this in DirectX that can be exposed in DM, it makes that irrelevant.
In response to Forum_account
Forum_account wrote:
Most users will see the opposite of the results you're seeing. If you have a really good CPU and a really bad GPU (or no GPU)
I have a great CPU and GPU. I have also done this across several machines and even more different video cards, software mode has pretty much always been better. I wonder if we could do some actual testing on this?

The only decent reason I've seen for using software mode is that you can stretch icons without making them blurry.
I seem to get the exact opposite of that as well?
I had this same question but when discussing with Lummox JR, he said that sw-mode was noticeably slow in rendering high-speed games. I haven't had the performance issues you've mentioned in hw-mode but I do have that same issue with stretching on one of my machines.

One option would be to default with sw-mode (since it has greatest compatibility) but switch when lag is detected. Main downside is that we'd lose some features like translucent maptext and I don't know how it will play with the proposed transformation/rotation feature.

I'd prefer to figure out how to improve hw-mode, as I mentioned in the other thread.
It is pretty much impossible to assess client performance as is, aside from a basic "feel" of how well things are running. Unless there is some massive difference in performance, it probably won't be noticeable at all. Even when running in hardware mode and using FRAPS for a display of the FPS, it isn't a very good representation of how well the client is performing, since BYOND only draws when necessary. Perhaps some sort of client.fps variable could be added? I have heard Lummox mention that the software is already aware of clients "dropping" frames, though I'm not sure if that would be a relevant measure to apply?
Here's what I can relate from my own experience: In software mode, drawing is several times slower than in hardware mode--this is true even if no partially transparent icons are present. (For alpha blending, software should be even slower. But that isn't to say a graphics card with no such hardware support wouldn't be slower still.) I've noticed this in particular with test projects you've put up for bug reports, but also some from Forum_account. I can see the slowdown not only in my CPU report in my task manager, but also in profiler results.

My guess as to the difference is that graphics cards vary by quite a lot (probably quite a lot more than they should) even on the basics. Our code is just checking to see if we should be rendering in one mode or the other; we're not checking GetDeviceCaps() to see which needed features are actually available in hardware. I'm not sure which capabilities are relevant to our drawing though. (Alpha blending is obviously one, but it only matters if alpha icons are in play.) DirectX will always fall back on a software driver for things it can't do in hardware, which will probably tend to be slower than us doing the drawing in software mode. If an operation can be done in the driver by splitting one hardware operation into four, the difference might be trivial; but if it has to dial everything down to GDI, we're probably better off handling it ourselves.

My graphics card is by no means new. It seems odd that a newer card would perform worse though.
Issues with particular GPUs are well known (you aren't the first person to use DirectX to run something on whatever graphics card Falacy has). I wouldn't expect them to cause such performance problems, but if you know what graphics card he has it should be pretty easy to check and see if you're doing something that is known to be a bad idea on that GPU.
Yeah, having the GPU info would help a lot. Since he says the issue is seen on most of his cards, I'd definitely be curious to know which ones they are in order to pin down a common element.
Back when I was using a single core processor and a GeForce 5500 pretty much any game using software rendering was unplayable or at least had significant performance issues.
In response to Forum_account
First off, it seems I need to clarify. It is not necessarily that I get worse "performance" in hardware mode. Both hardware and software mode generally render the games well enough (there are some issues with transparency that may exist in both). The issues are seemingly with BYOND's fail usage of hardware mode, and a ton of issues therein that do not effect software mode. The previous version of BYOND in hardware mode completely locked up whenever HUDs were updated, now (if there wasn't before) there is a 60 FPS limit in hardware mode, which can drastically slow down locally run games, the other issue that I have linked to several times is also a fail for hardware mode, not to mention hardware mode often crashes into software mode on me if I play any real games while a BYOND game is sitting in the background, and etc. Software mode is generally more consistent and reliable, giving it several advantages over hardware mode, if not directly as "performance".

Forum_account wrote:
Issues with particular GPUs are well known (you aren't the first person to use DirectX to run something on whatever graphics card Falacy has). I wouldn't expect them to cause such performance problems, but if you know what graphics card he has it should be pretty easy to check and see if you're doing something that is known to be a bad idea on that GPU.
Lummox JR wrote:
Yeah, having the GPU info would help a lot. Since he says the issue is seen on most of his cards, I'd definitely be curious to know which ones they are in order to pin down a common element.
I currently have a 580. Previously I had a 275 (also some ATI card that I never really used), before that a 9600, before that an 8500, before that a 5500, before that I was just using some on-board card. My current processor is an i7-870, not sure exactly what my previous one was, but it was 2.4ghz quad core, and before that some dual core one, and before that some single core one (each of those processors was a completely different computer).


SuperAntx wrote:
Back when I was using a single core processor and a GeForce 5500 pretty much any game using software rendering was unplayable or at least had significant performance issues.
Well, a single core processor can barely even run Windows, let alone anything else, so that's not really surprising.
Ter13 resolved issue (Not Feasible)