OpenGL 4.3 - compute shaders and much more

Started by
26 comments, last by przemoli 11 years, 8 months ago

You guys are no fun sad.png. I was having so much fun with compute shaders (actually, still have tongue.png).
gravitational n-body: https://github.com/p...hader_nbody.cpp

well, good for you. I'm still waiting for the AMD drivers as from nvidia I only have a gf8600gt, which doesn't support this. I can't wait to port my tile based deferred renderer to OGL CS. Actually thanks for the sample code :) I'll have to think less on my own :D
Advertisement

The 303.4fps was Win7 + OpenGL, not D3D9. But yes, D3D9's high per batch overhead is old news, what isn't old news is that (nvidias) OpenGL drivers are still good enough to take advantage of this. (Most "recent" games with both OpenGL and D3D9 renderers have gotten far worse performance with OpenGL and it does show that OpenGL performance is "good enough"). As for what OpenGL version they're using it is quite likely that it is 2.x since they didn't make a clean rewrite, (its based on the Mac version afterall).


Ah, my bad - I was short of time when I originally skimmed the article and just recycled my numbers from my original comment on another forum :)

I suspect the GL vs DX9 speed was simply people not finding the GL 'fast path' either due to the API not making it easy or effort not being placed in that area. I don't think there has ever been a question of OpenGL's performance vs D3D9 being anything but 'good enough' - the problem was that for ages D3D9 had features GL did not which were pretty fundimental (hello FBO extension!) and driver quality wasn't that good (ATI, back in the day, I'm looking at you).

They don't mention what they basis it on, reading it seems to imply it was based off the core D3D path just with abstraction layers built in; so it doesn't really answer how they did it.

If anything this result seems to imply that despite 'batch batch batch' being shoved down everyones throats for the past X years Valve are Doing It Wrong ;)

The "problem" faced by OpenGL right now is that;
a) "Everyone" already has a D3D11 path in place and are phasing out D3D9 engines and features
b) D3D11-a-like is the expected API for the XBox
c) The biggest OpenGL market, outside of Windows, is OSX
d) OSX is massively lagging cutting edge GL development (OSX10.7 supporting 3.2; 3 year old spec on a 1 year old machine)
e) Not including Compute or requiring OpenCL interop in the core was also a mistake imo

Between feature lag in the API, an established API and tools path in existance and OSX's lag most AAA studios have no intrest in it right now; however I suspect they will be watching Valve's experiance closely and when the first numbers come out with regards to market share this might change.

(On a personally note, while I once prefered GLSL's way of doing things to HLSL's when it came to declaring inputs and varyings all that 'layout' stuff is just horrible - I'd love to know what they were smoking when they decided on that. HLSL really nails that. Same with providing things like batch ids etc via semantic tagged inputs into the main function vs globals. Really not a fan of 'magic' globals in my shaders these days; prefer to be able to name and require them myself - its the gl<Matrix name> all over again.)

I think people are over-excited about Valve's contribution to all of this. Desura has already been providing a viable portal for Linux games for some time now. I don't see Valve's entry as groundbreaking; rather, they do not want to be left behind. The endorsement of Valve however is good for OpenGL because Desura doesn't have the brand name recognition or pull that Valve has.


It's maybe not groundbreaking, but it's certainly important, as Valve are a major studio with no small measure of influence and Steam is utterly gigantic for content delivery; being something of a de-facto standard in the Windows world.

Direct3D has need of instancing, but we do not. We have plenty of glVertexAttrib calls.

There's not much point over-analysing Valve's L4D profiling results, I wouldn't be distracted by them.
Win7+D9 = 270.6Hz = 3.7ms
Win7+GL = 303.4Hz = 3.3ms
Difference = 0.4ms.

Firstly, if a game is running at >60Hz, then performance has already been achieved. Secondly, 0.4ms is a trivial difference in your renderer's CPU usage. Thirdly D9 is known to have a lot of overhead, so these numbers should be expected.
if two radically different approaches only differ by half a milli, then I'd go with the one that's simpler to write/maintain. If it's critical for you to shave half a milli off your frame times, then you've got bigger problems to deal with![hr]So, uh, Steam for Linux driving GL adoption and GL4.3 catching up to the D11 feature set, cool!

Between feature lag in the API, an established API and tools path in existance and OSX's lag most AAA studios have no intrest in it right now; however I suspect they will be watching Valve's experiance closely and when the first numbers come out with regards to market share this might change.


I don't think valves results will matter for other studios (Linux marketshare is small so reaching out to 1-2% extra customers isn't all that important), Valves move has far more to do with indie game distribution(Linux is a rather big platform for indie sales) than pushing their own games, AAA titles can get noticed by 100% of the Windows gamer market quite easily, Indie games can't (but can quite easily get noticed by 100% of the Linux gamers)
[size="1"]I don't suffer from insanity, I'm enjoying every minute of it.
The voices in my head may not be real, but they have some good ideas!

There's not much point over-analysing Valve's L4D profiling results, I wouldn't be distracted by them.
Win7+D9 = 270.6Hz = 3.7ms
Win7+GL = 303.4Hz = 3.3ms
Difference = 0.4ms.

Firstly, if a game is running at >60Hz, then performance has already been achieved. Secondly, 0.4ms is a trivial difference in your renderer's CPU usage. Thirdly D9 is known to have a lot of overhead, so these numbers should be expected.
if two radically different approaches only differ by half a milli, then I'd go with the one that's simpler to write/maintain. If it's critical for you to shave half a milli off your frame times, then you've got bigger problems to deal with![hr]So, uh, Steam for Linux driving GL adoption and GL4.3 catching up to the D11 feature set, cool!


At this kind of framerate 0.4ms is trivial. If it was averaging around the 60 mark, 0.4ms could be the difference between making or missing a vsync interval.

Direct3D has need of instancing, but we do not. We have plenty of glVertexAttrib calls.


At this kind of framerate 0.4ms is trivial. If it was averaging around the 60 mark, 0.4ms could be the difference between making or missing a vsync interval.
I would say the opposite. At 300Hz it's a huge signal, but at 60Hz it's just noise.
If you're constantly within 0.4ms of your frame-budget, then windows scheduling jitter is going to make you miss it anyway (hence: you've got bigger problems to deal with -- there's probably lower hanging fruit to pick in your optimisation efforts than rewriting your renderer from scratch, and even if that is a valid option, you'd probably get better frame-times with D11).
N.B. also, their stats don't include a properly written D11 port, and the frame-time differences would likely be completely different if they were running a real-world workload that's actually nearing on the 60Hz threshold. That is to say, it's an artificial benchmark, a nice piece of trivia, but never intended to be used as a scientific analysis of GL vs D9...
I installed NVIDIA beta driver 304.32 on Lubuntu 12.04 Linux using the xorg-edgers PPA so that I wouldn't have to fool with .run scripts and turning off X servers. On my laptop I have an old GeForce 8600M GT card, which is OpenGL 3.3 class HW. The NVIDIA OpenGL driver page says, "For OpenGL 3 capable hardware, these new extensions are provided:" and gives a list of 18 extensions. Unfortunately none of them are shown as available by either glxinfo or nvidia-settings.

Anyone have OpenGL 3 class HW that's showing the new extensions, on either Windows or Linux?
gamedesign-l pre-moderated mailing list. Preventing flames since 2000! All opinions welcome.
Cool for my GTX460. I wonder how long it takes AMD/Intel to catch up, foremost on Linux. (I only reboot OSX86 and Vista for cross compiling stuff.) Valve might put
some pression on them to make good drivers.
1) Point to any feature DX3D Compute can perform, OpenGL + OpenCL can not.
2) Point to any feature DX3D11.1 (yes this yet to be released) can perform, OpenGL 4.2 (yes this old one) can not (including OpenCL).

@phantom
Read g-truc.net review. Its quite good, and have info about DSA too. While Linux drivers are good for Nvidia, and AMD, (4.3, and 4.2), Intel have better Win drivers (OGL 4.0 vs OGL 3.0, better perf.), but is improving Lin version faster, and faster. Radeon and Nouveau (FLOSS drivers) benefit from improvements to Intell, so they are chaising.

OpenGL vs DX3D is not over. Recently its old rusty ARB who push out new hw features constantly. That is good for everybody, since competition improve conditions for all of us.

This topic is closed to new replies.

Advertisement