Huh? Not saying it's the compiler, but if you have on-demand compilation of shaders as you move along in a level, this is the kind of stuff you could see.rpg.314 said:Can't be that. The code is compiled before it's DMAed over the PCIe bus. If the compiler was an issue (which I think it isn't), you'd see longer level load times, that's all.
Nobody does that. Real time rendering is hard enough without trying to do real time compilation.Huh? Not saying it's the compiler, but if you have on-demand compilation of shaders as you move along in a level, this is the kind of stuff you could see.
That being said: a compiler issue doesn't explain why you spikes on GTX5xx and not on GTX680 for a number of tests, so it maybe memory management is a more likely cause?
I really like the techreport reviews, always go there first. I just wish they would look at more games. It's enough to get a trend, but if you go into gory perf detail like them, 5 games is too small a sample to make broad conclusions.
There seem to be 2 different issues at play: one huge hitch in Arkham and some warmup slowdown in Crysis 2.
(If anyone of TR is reading this: please normalize the horizontal axis? Right now, it's impossible to correlate spikes between different GPUs.)
As far as FP64 is concerned, this is exactly what NVIDIA told me: "In GTX 680 the FP64 execution unit is separate from the CUDA cores (like LD/ST and SFU), with 8 FP64 units per SMX".
Make of that what you will
That doesn't make sense: how does a compiler compile the shaders if it hasn't seen them?rpg.314 said:Nobody does that. Real time rendering is hard enough without trying to do real time compilation.
When you load a level, compile all the shaders you need, load all the textures you need ...That doesn't make sense: how does a compiler compile the shaders if it hasn't seen them?
Read that thread through. That person was using legacy fixed function pipeline and nobody uses that anymore. Changing stuff there will force regeneration/recompilation of shaders.It's up to the application to decide when to present a particular shader program to the GPU (at least for OpenGL it is, see here for example: http://www.opengl.org/discussion_boards/ubbthreads.php?ubb=showflat&Number=279913 ) There is no requirement to list all shaders to be used at the start of the context creation.
Less costly than shader compilation in frame. Not sure if DX offers the option of offline compilation.I'm sure it's more predictable to declare all shaders up front, but in large worlds with many different material shaders, that would be prohibitively costly by itself.
Well, yes, that's what I suggested myself. But it's not an API requirement and nobody prevents you from doing otherwise.rpg.314 said:When you load a level, compile all the shaders you need, load all the textures you need ...
There's the choice to precompile the textual source code into MSFT intermediate format, of course, but I don't know (doubt) if you can precompile the final GPU specific compiled assembly code.Less costly than shader compilation in frame. Not sure if DX offers the option of offline compilation.
DP is to Kepler as x87 is to Sandy Bridge.
It's not required, but it would be dumb not to. Games go to great lengths to avoid touching the driver in frame. Not doing this is just dumb.Well, yes, that's what I suggested myself. But it's not an API requirement and nobody prevents you from doing otherwise.
That's for first shader compilation, not recompilation. Worst case, it affects first frame.See also here, http://developer.amd.com/afds/assets/presentations/2902_2_final.pdf, slide 4: Could happen at any time before “dispatch/draw”
I don't see any other choice.Gathering all shaders and textures of a full world may not be practical.
AFAIK, on DX the driver never sees the shader text, only the IR. May be a DX dev can tell us if there is a way to cache the final GPU specific code.There's the choice to precompile the textual source code into MSFT intermediate format, of course, but I don't know (doubt) if you can precompile the final GPU specific compiled assembly code.
Ok. So we agree there, then.rpg.314 said:It's not required, but it would be dumb not to. Games go to great lengths to avoid touching the driver in frame. Not doing this is just dumb.
AFAIK, there is no restriction about when it can happen. Again, that doesn't make it wise to do it in the middle of things.That's for first shader compilation, not recompilation. Worst case, it affects first frame.
I know for a fact that the OpenGL driver sees the full text, because that's precisely what happens for iPhone code.AFAIK, on DX the driver never sees the shader text, only the IR. May be a DX dev can tell us if there is a way to cache the final GPU specific code.
Really? Where are those numbers being pulled from?VGA second-hand market is flooded with 7970...
I'm quite sure he was joking; there would be no need for someone to buy a 7970 on the first day it was available, and then in two months sell it at a loss, only to buy a 680 on the first day it was available.Really? Where are those numbers being pulled from?
I'm sure there are those itching to get the latest, but I'd almost wait for the big daddy to come out before making a modest hop to the side.