It sounds like we would benefit from GPU and display manufacturers providing a set of standard low-level control primitives so that people like Carmack who know what they are doing can really play around with the entire pipeline without having to worry about all the things the cards and the displays are doing behind their backs.
For example, a GPU could have a set of standard settings with full buffering and all the other things that "help them win the framerate wars", but a developer should be able to turn all of that off when needed.
It's the same with displays. LCD manufacturers could, I suppose, allow a modern day "CRT Mode 13h" where you just have scan lines mapped to memory buffers and whatever shows up in those buffers gets turned into a pixel as quickly as possible.
Are there technical challenges preventing this from happening, or is it mainly inertia and lack of need from the current market?
3D graphics drivers used to have more debug options and visualization capabilities. However, unscrupulous individuals took advantage of these to cheat in video games so many vendors just ripped them out.
That's why Carmack is able to get modified versions of these drivers directly, but you and I are not.
I don't agree with that approach at all, but it's part of the reality.
>3D graphics drivers used to have more debug options and visualization capabilities. However, unscrupulous individuals took advantage of these to cheat in video games so many vendors just ripped them out.
Why the duck would video card manufactures care if people cheat in video games?
Heck, why would even GAME manufactures care if people cheat in video games?
Can somebody clear up if that is the real reason those debug options etc were taken out?
> Why the duck would video card manufactures care if people cheat in video games?
They care because game makers care. If they want their logo in the pre-game splashes and similar they need to not be a problem to the people who decide what goes there or it'll end up costing more than it would cost the compatetion. Also they certainly don't want someone like EA coming out and explicitly saying they don't recommend their line of graphics systems.
> Heck, why would even GAME manufactures care if people cheat in video games?
Way back when, they didn't. Well they did, but only for the first X weeks after which any sectret and big ending reveals were public knowledge anyway afte3r which they'd leak out cheat codes themselves to increase interest inthe game from more casual players.
Now they care because their customer base cares. The perception that someone might get an advantage by using a particular card will put a lot of people off. Even if it isn't really possible (because the game is well enough designed that such hacks won't really give any advantage) the perseption amongst the general public that it might be is enough to be concerned about.
> Can somebody clear up if that is the real reason those debug options etc were taken out?
Not unlikely: they were probably pig sick of people breaking things and blaming them for the resulting mess (I tweaked X and your card overheated and my computer crashed and I lost three days of unsaved work, waah, waah, waaaaaahhh).
Or people tweaking the settings, making things far worse in some circumstances, and then assuming that the card is crap (and telling everyone) because to does X badly without thinking that their tweaks might have a little to do with that.
Or they were sick of getting many support queries about the options, or having to make an effort to monitor populat forums for people distributing blatently bad advice about them so they can nip the above problems in the bud. Time is money and reputation management can be expensive especially if you are having to do it retroactively.
Or all of the above. Basically people. People are a problem.
I never meant to imply it was the only reason, just that it was one of them. Another is the support considerations; each option you add to the drivers to tweak rendering output is yet another permutation of testing.
In addition, some of the options better fit the old fixed pipeline architecture of the early 2000s; forcing some of the rendering options older drivers used to have isn't really possible in a fully programmable world.
But to expound a bit on the cheating angle, one manufacturer (Asus) even went so far as to specifically market these features as a competitive advantage for customers of their products:
With that said, users that installed the debug versions of the windows DirectX framework (historically) and the various developer tools (such as nVidia insight) have some of the same capabilities that used to be built-in to older drivers.
Developers have combated this by using programs like punkbuster or rolling their own tools (Blizzard wrote "Warden").
Game makers care because if the game experience suffers because of cheaters, griefers and so forth, the customers won't come back. If you want to sell things to players in the game, the players have to want to play.
Anti-cheat is a big deal.
So I would say that undetectable debug features, ones that can be turned on without indicating this to the title (or cheat detection code on the platform) are bad for game economies.
Since card makers want to sell graphics cards, they have the same goal as the title developers. Not surprising they'd turn these off (or at least make them very visible).
> Heck, why would even GAME manufactures care if people cheat in video games?
Singleplayer, maybe. But Multiplayer? Very annoying for everybody involved. Having a multiplayer opponent cheat is like having a singleplayer bug that means you cannot advance in the game.
Game manufacturers care because their customers care, and because the same cheats often are related to copy-protection breaking. If you're going to cheat at videogames, why not do so in games you didn't buy?
Regarding your last point: it's getting better. Modern TVs have "game mode", where latency is minimized. The latest LCD panels use embedded Display Port, eDP. The latest eDP standard introduces a frame buffer on the LCD itself, where you can just write deltas and tell it to "swap". I think this is quite similar to what you're proposing, in concept.
You may already know this, but the "Game Mode" on modern TVs is just turning off the 120Hz/240Hz interpolation that is done to "improve" the picture (or is required for certain 3D systems to work).
The interpolation introduces significant latency that its obvious (and frustrating) during gaming.
I actually run my TV in game mode by default, because the interpolation done in 120/240Hz mode makes everything look like it is slightly unreal and shot on video. Definitely uncanny valley territory.
Is there a detectable (to human) difference between a 24fps screen and a 48fps screen where the image only changes every other frame. I can see how this would work with film based projectors, but my understanding of TVs is that pixels are always on and simply change states between frames, so 'changing' to an identical frame should have no effect.
Having the frame change every second frame would mean that the screen would be changing the picture only half the time, while it normally is always changing the color of some pixel.
I found this [1], which seems to be a good introduction to the new features and also why eDP is poised to replace LVDS (which I, as a non hardware guy, had to deal with in a previous embedded device project and hope to never deal with again).
Carmack has also mentioned in the past we could solve other buffer problem with non-isochronous displays, essentially a display that doesn't run on a fixed hz cycle but rather outputs lines to the screen as it comes down the pipeline at whatever framerate the host system can handle
That's why I think the default should always be "babysitter mode". Unless you give a specific set of commands, the GPU does what it does and the display does its thing.
Regarding people who turn on "expert mode" even when they don't know what they're doing, that doesn't seem to be a good reason for not having it. The Mark Twain quote about censorship being like "telling a grown man he can't have a steak because a baby can't chew it" comes to mind.
Let's say a hardware manufacturer writes a firmware that exposes calls that can degrade or destroy the device if misused, and the OS driver in turn exposes those calls to third party programs.
If a program wreaks the device, who is the end user going to blame -- the program, the driver, the manufacturer, or all three?
Apple attempt to do this sort of "approval" the with apps on the app store and there have been lots of examples of apps which break the rules getting approved (and then being pulled when they got popular). What makes you think graphics card manufacturers would be able to do that with games?
Believe it or not but we have a similar problem with CDROM drives (let alone any drives coming after). You can't disable the cache on most, and on many that claim to, they lie. This slows down accurate ripping by a factor of 40X on some drives.
On the topic of latency I would also love to see a TV that didn't have any of the crummy video processing chips so many have these days. I don't need anything other than big screen, hdmi in, and no freakin' input latency please because I'm trying to play Rock Band and you are really messing things up! (You can admittedly at least disable this in some tvs... often by delving into hidden engineering menus. Sometimes you can't disable them at all!)
> On the topic of latency I would also love to see a TV that didn't have any of the crummy video processing chips so many have these days.
Many modern TV's have a special "game mode" setting that turns off all of this post-processing to reduce display latency. I use it with great success on my Panasonic plasma TV.
"a set of standard low-level control primitives ... Are there technical challenges preventing this from happening, or is it mainly inertia and lack of need from the current market?"
It's easier to iterate faster without having to deal with a standardization committee. See OpenGL history for some context.
Yea that works, until someone realises they can boost performance by changing the semantics of the "I know what I'm doing" call. Then you'll need yet another "no really I know what I'm doing" flag and on and on, or app black/whitelisting and so on.
I don't think that's needed. What's needed is just to let competition work. If one GPU is less laggy in VR than another people will by that GPU for VR. No need to work around the driver, demand will make the drivers better.
For example, a GPU could have a set of standard settings with full buffering and all the other things that "help them win the framerate wars", but a developer should be able to turn all of that off when needed.
It's the same with displays. LCD manufacturers could, I suppose, allow a modern day "CRT Mode 13h" where you just have scan lines mapped to memory buffers and whatever shows up in those buffers gets turned into a pixel as quickly as possible.
Are there technical challenges preventing this from happening, or is it mainly inertia and lack of need from the current market?