5
\$\begingroup\$

Here John Carmack claims that PCs are still slower that current gen console hardware because of the overhead.

"A lot of it's driver overhead issues, where there's so much that we do in the game, all of this dynamic texture updating where on the console we say 'alright, we've got a new page of data', we put that page in and update the page table that points to that.

"On the console that may just be a matter of writing it to memory, it's like 'here's the texture, let's calculate exactly where this part of the page table is' and then we just poke it right in there," he explained.

Is the situation really that dire? And are there any features or changes in Windows 8 planed that will improve the current state of the PC Gaming ?

\$\endgroup\$
7
  • 2
    \$\begingroup\$ superuser.com is a better site for computer hardware/software questions. \$\endgroup\$
    – Cyclops
    Commented Aug 18, 2011 at 18:25
  • 2
    \$\begingroup\$ I didn't find him saying PCs are still slower. He is just saying its messy to work with PC, when the same thing is straight forward in console. \$\endgroup\$ Commented Aug 18, 2011 at 18:27
  • 8
    \$\begingroup\$ @Cyclops: I don't agree, at least, not for this question which is focused on video games and driver/hardware interactions. Most superuser users will not be able to answer such a question as they have little to no experience with low level programming. \$\endgroup\$ Commented Aug 18, 2011 at 18:36
  • 2
    \$\begingroup\$ Contradicting Carmack is silly anyways and I guess nobody here knows about Windows 8, so what's the point of this "Question" apart from speculation and discussion? \$\endgroup\$
    – bummzack
    Commented Aug 18, 2011 at 18:38
  • \$\begingroup\$ This is really two separate questions. And as far as I know nobody has access to any Windows 8 information at this point in time, so I'm assuming that would just be speculation. \$\endgroup\$
    – Tetrad
    Commented Aug 18, 2011 at 18:51

4 Answers 4

30
\$\begingroup\$

Console: static hardware that never varies across every single iteration. Home PC: hardware that changes from day to day, with a million different chip designs.

Console: closed system that lives in its own, secure environment from birth to death. Home PC: wild west, barroom brawls and your OS is the sheriff keeping everyone from getting shot.

Carmack: writing a system that depends on slinging around large texture blocks and is apparently sad that he doesn't get to personally write a hardware interface to every single graphics chip and OS variant from the last 5 years. Not to mention that he also apparently wants to give customer support to millions of people, hundreds of thousands of whom will have some kind of compatibility issue that Id must solve for them.

What's there to improve, given that on home PCs you have to support tens of different chipsets that have to work flawlessly against millions of programs written across the past decade or more? Personally I think that it's a miracle that the house of cards keeps standing!

Not much of an answer I know, but PC gaming is actually quite good and easy to develop for outside of certain esoteric optimization issues. A better question might be why are consoles so extremely limited?

\$\endgroup\$
6
  • 1
    \$\begingroup\$ They don't work "flawlessly". Let's take an example, Assassin's Creed on the PC. It may work on your card, but it's only guaranteed on the two latest ATI/Nvidia cards at the time of release. Check Steam's sales terms and conditions if you don't believe this, I noticed yesterday myself :D \$\endgroup\$
    – Kheldar
    Commented Aug 19, 2011 at 15:53
  • 1
    \$\begingroup\$ I'll take those odds, one outlier amongst thousands of game titles. That really is the studio's fault and not the environment, but you're right and I shouldn't use "all or nothing" phrases like that =) \$\endgroup\$ Commented Aug 19, 2011 at 18:50
  • 1
    \$\begingroup\$ I wish console manufactures were more open :( We need an opensource console ;) \$\endgroup\$ Commented Aug 21, 2011 at 9:26
  • 1
    \$\begingroup\$ "sad that he doesn't get to [..] he also apparently wants to" This is a very disingenuous way to characterize what he said. He's simply explaining why you can get more out of console hardware that, on paper, shouldn't be able to touch PC hardware. \$\endgroup\$
    – Mud
    Commented Feb 11, 2013 at 5:09
  • 1
    \$\begingroup\$ @iamcreasy Are you a wizard? ;-) \$\endgroup\$
    – Eric
    Commented Feb 12, 2013 at 11:08
12
\$\begingroup\$

What John Carmack really wants is to write his own graphics drivers. He lived and worked in the pre-Direct3D/OpenGL days, when the game was responsible for talking to every little piece of hardware that existed.

AMD actually made a similar statement, about how APIs are getting in the way of high-end graphics.

I don't know if Carmack's numbers are right, but his general statement is true: performance is being sacrificed on the PC. But what is gained is vendor neutrality to a very great degree. The ability to write the same code that works on different hardware.

There is the potential for some middle ground. Something that is thinner than D3D/OpenGL, but still allows for a reasonable degree of abstraction. The problem is that what a "reasonable degree of abstraction" means changes from hardware generation to hardware generation. A reasonable abstraction for one set of hardware is no longer reasonable for another. And while AMD and NVIDIA have been keeping relatively close to one another in basic graphics functionality, there are still lots of low level differences. And that doesn't even count Intel, who is way behind the both of them in even basic graphics functionality.

I imagine that Intel would jump at the chance to have such an API though, because they are absolutely terrible at implementing drivers. This way, they could just write a thin client.

As to whether Windows 8 will address this, that seems unlikely. Not unless it comes with a Direct3D 12 or some other API that allows lower-level access.


Well, now we have Direct3D 12, Apple's Metal, and Vulkan on the way. So it seems that some form of middle ground was discovered. And with the more low-level memory capabilities of D3D12/Vulkan, Carmack will apparently get his wish.

\$\endgroup\$
1
  • \$\begingroup\$ The only alternative I see to a slightly constricting, unifying API is to go back to the days of having to tweak your CONFIG.SYS file to get DOS apps to run, and setting jumpers on the audio, clock and modem cards to not conflict at boot =( \$\endgroup\$ Commented Aug 19, 2011 at 18:51
6
\$\begingroup\$

It's reasonably safe to assume that Carmack knows what he's talking about, but you need to realise that he's referring to a very specific problem domain which may not even exist outside of the stuff he's currently working on. My understanding is that his current engine uses completely dynamic texturing, so obviously the ability to efficiently update dynamic textures is something of a sticking point for him. The specific capability he's referring to - just being able to grab a pointer to texture memory and write directly to it, instead of having to go through API layers - is what I'll present as evidence for my argument, which is that he's right in the context of the specific problem he's referring to, and may even be right in the general case, but the general case would be to a somewhat significantly lesser degree to his special case.

\$\endgroup\$
2
  • 3
    \$\begingroup\$ It should also be noted that, unlike a console, a PC still has to do other stuff. A PC isn't a dedicated game box; you need to be able to switch out to the OS and back again in reasonable time. The OS needs to be able to manage video memory and GPU resources for multiple applications. What if a user is running another GPU task somewhere at the same time? The OS and the interface on a PC must be able to handle this. \$\endgroup\$ Commented Aug 20, 2011 at 1:21
  • \$\begingroup\$ @nicol-bolas does this also affects shader languages? Like for different graphics cards, there are different hacks for different versions of shaders. \$\endgroup\$ Commented Aug 21, 2011 at 9:29
4
\$\begingroup\$

From this interview, it appears that what he's talking about isn't throughput, it's latency. At 60FPS, ideally you have 16ms to put a frame on the screen which has reacted to user input. This basically means that the user "feels" a lag of 16ms between taking an action and seeing it appear on screen. Because that "lag" is equal to the frame rate, it's about as good as you can get, therefore everything is ideal.

Keep in mind here that LCD monitors & TVs also introduce lag, sometimes more than 16ms on their own. In this case (although not generally, Carmack cares a lot about LCD lag) he's ignoring any effects introduced by the LCD and pretending you're running on a CRT monitor, which has no lag.

Drivers are generally fairly efficient in that they keep the pipes filled, but they generally have latency issues. This means you can render stuff to a much higher quality, but there's a short lag between taking an action and having it appear on screen. This is a notable difference in attitude between Carmack and others: Carmack cares about your user input getting to the screen fast, whereas others care about maximising the pretty. If he's an old fogey, it's purely in that respect, not because he wants old fashioned hardware wrangling.

If you've played games like Battlefield 3 (or even Half Life), some of you will get motion sickness, where you wouldn't from a game like Quake. BF3 uses the full power of your PC efficiently (i.e. high framerates), but it treats your input as a second class citizen (i.e. high lag). Lag is also very important in things like VR or other biometrics. Obviously, from a gaming perspective, you get a much tighter feel for your movement when you have less lag.

This stuff is actually completely fixable in drivers, but it needs far more intricate and well thought out APIs. You can also often trade off efficiency for better latency. What I'm saying is that to dismiss Carmack is obviously a silly thing to do, but you also need to understand what it is he's saying.

\$\endgroup\$

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .