From a couple of years back, just this whole talk of Mantle reminded of this: -
==================================================================
In the office (my day job is a graphics programmer) we've been kicking around some thoughts and we've come to the conclusion that unless MS do something the next generation of consoles will, if not kill out right, leave PC gaming for anything outside of MMO, RTS, TBS and 'facebook games' on life support.
Right now the PC has a Mhz and GPU advantage however is suffers from moving hardware targets and a high draw call overhead. The former makes it a pain to dev for (I've spent the last couple of weeks now working around hardware/driver bugs for our game) and the latter we have to soak up and just deal with due to the single thread Mhz advantage PCs still have.
Jump forward 3 years which is when most people seem to think the next consoles will hit/have it; consoles will have more and FASTER cores (and with the Mhz race over PCs wont be out pacing them), DX11+ GPUs as standard and the ability to construct draw lists over multiple threads thus making submission/draw faster meaning more draw calls and more stuff on screen and looking better.
Now, unless MS and the IHVs do something the PC is likely to still be restricted to single threaded draw calls (right now DX11's multi-threaded command list construction either slows things down on AMD hardware or effectively loses you a CPU core on NV hardware) and suddenly regardless of how fast your GPU is the consoles are blowing you out of the water draw call wise meaning the PC can't match a console in 'stuff on screen'.
We are already kinda at this point, the PC is only 'saved' by having the Mhz advantage but unless something changes that advantage will go away pretty quickly.
(Right now MS are blaming the IHVs and the IHVs are blaming MS and there is crazy talk about ditching DX and going 'to the metal' which I don't think anyone has really thought about as hard as they should have done. In short, it's a bit of a mess...)
Quote:
Ah, but the windows user potentially has a LOT better hardware, both in CPU and GPU. If someone has a 5 year old laptop you'd be best off just to shrug and say it's below minimum specs.
What shouldn't be done is deciding that all of the hardware goodness that the PC buyer has available shouldn't be used.
"Potentially" is a key word here; most people still have less cores in their system than a X360 and the PS3's SPUs are another matter completely.
The thing is while CPU tech has advanced it hasn't advanced as much as you might think. In real world terms there is very little difference between the CPU in say the 360 and the one in an i7 and what difference there is get offset by the amount of extra work the PC version has to do in order to do something as simple as a draw call. DX9 on the PC has a much higher overhead than the APIs in use on the 360 (DX9-ish but without the overheads) and PS3 (pretty much direct command line level).
A few months back I was running a test for pure CPU power required for drawing things; a 6 core 3.2Ghz X360 using multi-threaded rendering could throw out 50,000 flat coloured cubes at 60fps. The same test run on an i7 @ 2.6Ghz with a GeForce GTX 275 was struggling to hit 30fps using 7 cores (one had to be reserved for NV's driver to process the concurrent command list generation). Once NV released a driver which had proper support for command list generation is made it back up to 60fps if memory serves.
However this required DX11; most games remain DX9 for compatibility reasons so do not have this ability (and AMD still don't properly support this in drivers so they will be ham strung as well, I'm hoping BF3's release will fix this) and are limited to single threaded draw submission. You can do things to help but it's still no where near as easy to do as with the 360 and PS3 where you are that much closer to the hardware.
GPU wise; again most engines/games are DX9 focused because that was the market. This is shifting and changing now in part because of the power difference and in part because of the need for clever dev houses to learn DX11 based processes in order to apply them to the next console generation.
Quote:
I found this bit fascinating, seriously. What benefits consoles in draw-call capacity?
Fixed hardware is the main thing; this means less layers between the game and the hardware.
On the PC you have to go App -> DX -> driver -> ???? -> hardware.
Talking to some people it would seem that the driver has todo alot of work due to the interface it has with windows; they have todo alot of book keeping etc when doing even simple operations.
All these layers and extra work leads to more CPU cycles being sucked away.
By contrast the XBox has a much thinner layer and can queue up draw calls from multiple threads to be played back on the main device in an optimal way. The PS3 is even thinner, a popular technique to appear in the last couple of years is to use the SPUs to build command buffers (draw call information) in parrallel and feed it directly to the GPU; granted the PS3 is ham strung slightly by poor vertex processing ability but draw calls still cost less.
In construct PCs are limited to effectively one core and a thick layer complicated layer between the game and the hardware.
As stated this gap is only likely to get worse next gen. at which point regardless of how powerful your card is you simply won't get as much stuff drawn.
Quote:
You would be incredibly wrong. There is more than enough proof out there, plus if you paid attention (which you dont) you would know that most publishers and developers are planning on concentrating on PC gaming much more. And many have admitted they do not like developing for the console for lots of reasons.
And have you considered WHY there is going to be more investment in the PC for a while?
It's really very simple; the next generation of hardware will have DX11+ features on the GPU and multi-core CPUs (my own estimate is at least 12 conventional hardware threads) so right now development for PCs is nothing more than practice and experimentation for the next generation so that when the next gen hits we'll hit the ground running.
(This is the arguement I've been making for us supporting DX11 in our next game; practise.)
Quote:
There was a phase there for a while where console gaming took precedence for a lot of developers - not because they liked doing it, but because it's just where things were at the time. Not the case anymore. It's going to slowly move away from that and more towards the PC arena and a lot of developers are publicly voicing this desire and opinion. Along with statements that PC gaming is not dying, nor has it ever been in the state of "dying".
It's funny you should say that because speaking as a developer and based on the developers I've talked to the opinion is that consoles are the prefered platform to develop on.
In fact in my experiance the prefered order would be;
- 360 - best console GPU, most conventional CPU setup, great toolset
- PS3 - weak GPU, SPUs a pain to work with but awesome when they are used right, decent toolset, in some aspects a bit better than the 360's
- PC - urg. Outside of Visual Studio the toolset is a pain to work with, drivers cause problems, requirements to scale - pros being more memory and an out-of-order CPU which covers a multitude of sins.
Personally, at the end of our current project, I had about 4 GPUs pass through my PC so that various PC bugs could be fixed. Most of them however got closed as 'driver issue; can not fix.' and this is from both AMD and NV.
Quote:
Many are also voicing that they dislike DirectX because it has held developers back from fully utilizing the potential of the hardware. Therefore, games on the PC could have been even more impressive than their console counterparts, but DX held them back. At the same time, they like DirectX for other reasons. Even id software's Carmack I believe it was said that he wants to move to DirectX and away from OpenGL now for some reasons, but it's difficult to do some considering his business is setup for OpenGL. It's a win lose sort of thing I guess, but the point is that games could have been even more impressive.
The DX discussion is an intresting one and if anything gives developers MORE recent to move away from the PC rather than towards it.
DX hasn't so much held back GPU ability as it has cost us more CPU side and more time spent CPU side doing draw calls means less time CPU side to do other things.
To give you an idea of the problem right now we have a testbed for our next generation backend which does concurrent display list generation. The test draws 50,000 cubes to the screen with one draw call per cube.
The 360 and the PS3 can run this test, in concurrent mode, at 60fps or 16.6ms per frame.
The PC we are testing on is an 4 core/8 thread, 3.2Ghz Xenon with 6gig ram and a NV 470GTX GPU (aka my development machine); the same test runs at ~30fps, or ~30ms per frame FOR THE SAME WORK LOAD.
In fact, originally the concurrent version was running 5ms/frame SLOWER than the single threaded version until I spotted what was going on and reduced our thread count by one to let NV have a whole core to do the work at which point it was beating the single threaded performance by 1ms.
(I tested it later on my HD5870, i7 rig at home and once again the multi-threaded performance was 5ms slower due to AMD's drivers).
So, today, a console can push more draw calls than a PC.
This is a combination of DX, drivers and windows internals and if it isn't fixed then in X years when the next generation of consoles is released they will simply leave the PC in the dust because it won't be able to match them in draw calls which means less things on the screen, less subtle details and less quality in the game.
Combine that with better tools on the consoles and,well, you can see why people are concerned about the future of PC games.
What happens now is pretty much in the hands of MS, AMD, NV and Intel but I can tell you right now; this is a concern.
Quote:
We all know you're leaving the important details out of this "test" or you didn't realize their were important details that made a difference. Like, I don't know resolution or something. There's no telling. You're going to sit there and tell us that a slower CPU can render faster than a much faster CPU. There are details that you either don't know about or aren't telling.
I explained some time back, but apprently your reading ability has failed.
There are more layers, book keeping and indirection on the PC than the console. So it takes more cycles to do the same amount of rendering work. Combine that with an ability to submit draw calls/build command lists from multiple threads on the consoles and the problem becomes apprent if you have even an small amount of technical skills and understanding of modern OSes and consoles.
Also, I don't appricate being called a lier when it comes to the details. I'm trying to have an honest discussion here to inform people without the technical background about the problems faced in modern game development; trust me when I say that I know full well what details are important and what are no and that nothing 'important' was left out.
But, if you really want to know;
- the same workload was carried out on all platforms
- all platforms split the work load over 5 threads
- all platforms were at 720p
- all platforms executed the same C++ code compiled for release mode
- all platforms did not perform the same
The main problem is that the final submission of the draw calls on is taking ~13ms, with the inital setup of the command lists taking ~7ms, which puts us above the 16.6ms requirement for 60fps, which the consoles can manage with this test setup.
Quote:
470 slower than PS3 and XBOX please... try to throw Crysis DX10 Very High x4aa x4 trssaa x16AF @720p at consoles and see what happens... 470 will cope with it at decent fps, boxes will just die a pathetic death. That consoles "advantage" has to be taken so much out of context that it would win a "greatest spin" award instantly.
It isn't about the graphics card; it is about the CPU cost of performing draw calls.
Right now a console can handle more draw calls than a PC, of course due to them having weaker GPUs we can't do a great deal of shading as the problem switches back to being GPU bound pretty quickly.
What we are talking about however is the future, when the consoles have GPUs on par, or better, than current PC GPUs; at which point they can handle doing all that extra pixel work associated with the extra draw calls they can push.
The PCs of the future might well have GPUs which can handle more pixel processing and push higher resolutions but they WONT be able to handle increased draw call costs without significant changes to the underlaying driver system to remove the CPU overhead.
THAT is where the problem is; the CPU NOT the GPU.
Quote:
I have a belief that the draw call limit if it becomes an issue it will be solved and the fact that it has not been addressed is because it has not been an issue yet. The market will sort it out. I really doubt any of the players involved are just going to flip over their desks on go home calling it the end of the PC performance increases.
Well, yes, hopefully it will be addressed BUT these things take time to sort out both on the windows side and the driver side of things.
If we wait for the next gen of consoles to hit and then say 'oh, by the way PC games are going to have less in the world because we don't have the CPU time to draw stuff, please fix, kthxbye' you are looking at an (optimistic) 18 month lead time at least before things begin to be put into place, at which point if it's not a simple DirectX change you are also waiting on devs to move their rendering interface across to the new API which will probably miss that cycle of games and maybe the next.
All in all if you wait until the day it becomes a problem you are probably looking at around a 3 to 4 year lead time before usage becomes common. Chances are any games in production will stick with DirectX, newer games might not even move across right away until the API has some market share along side DirectX to make the effort of conversion worth it.
So, if you are ok with PC games having less stuff in the world for a few years while consoles steal the march on them... then fine, it isn't an issue and we can wait until it is one.
(It is worth pointing out however that the reason DX11 gained multi-threaded submission ability is because of this very reason. It's just two years on we are still hamstrung by drivers from NV and AMD not doing the business for various reasons.)
Personally I am first and foremost a PC gamer, most of my game time is spent on PC games and when the next project plans at work were first mentioned I very early on made a push for DX11 support. I have no intrest in seeing the PC "die" as a games machine, at the same time on these boards I'm in a reasonably unique position of being able to understand first hand both sides of the problem and the technical issues we have to over come in order to not let PCs slip behind.
It IS a problem now and something needs to be done because otherwise the PC WILL slip behind come the next cycle and will stay there for some time.
Right now I would say we are in a transistion period; AAA PC games will get a bit more love but that's because we are an estimated 12 months away from beta console devkits from MS and Sony which are going to hold DX11+ parts thus the extra PC love is, in part, "practise" for this next generation of hardware. To make a high end PC game these days you need to get your tools, pipelines and renderer into shape, something which will be good for the next generation and, from a company point of view, cut down 'ramp up' time for games in that generation.
Current smart money is on AMD having tied up all the consoles for the coming generation.
In fact, as a graphics coder, I HOPE that's the case because making things work correctly on two different GPUs is a right pain in the arse. If both consoles could come out with simular GPU tech this would make life much easier, rather than the last gen where is seems Sony decided to not spend any real money on the GPU at all... *grumble grumble*
It makes good economic sense at this point in the life cycle to sink engineering effort into doing things The DX11 Way so that, a year from now, when the consoles hit with DX11 hardware they have a working knowledge base to jump off from.
And it's not just the graphics coders; artists have to get use to new techniques as well, both on the hardware side and how they work with it down to working at higher resolutions and what they can do which looks correct in them. For a full on DX11 game the whole art pipeline probably needs looking at, better to take a game to try it out, work out the kinks and learn lessons for the future instead of wait around until the consoles drop and suddenly go '****.. how do we work with this stuff?!?'
Even if the PC version sold 1/8th the copies of the consoles this would still be a good investment from a 'lessons learnt' point of view and is very forward looking from the company.
I argued the same thing when we were planning our next project at work; that we should sack off DX9 and focus on DX11 on the PC so that the rendering team were all up to speed for the next console generation. As it turns out the project never got off the ground but I maintain it is the clever thing to do at this point (edit G.I.-this is referring to the 'plans' for the next OFP after RR I am guessing).
So, yes, 'practise' is the right term because they are laying the ground work for future titles and hardware.
We are probably less than 24 months away from the next generation hitting, we are expecting (although I have no confirmation of this!) beta devkits to be in our hands by this time next year.
=================================================================
Chewing the fat...
EDIT
Copied from a different forum
http://forums.tripwireinteractive.com/showthread.php?t=69260