SystemInfo.graphicsMemorySize roughly half of display shared memory reported by dxdiag.exe

How should I interpret SystemInfo.graphicsMemorySize on an integrated PC display adapater that shares memory? SystemInfo.graphicsMemorySize reports half of the shared display memory (880MB) vs dxdiag.exe output:
Card name: Intel(R) HD Graphics Family
Manufacturer: Intel Corporation
Chip type: Intel(R) HD Graphics Family
DAC type: Internal
Display Memory: 1696 MB
Dedicated Memory: 64 MB
Shared Memory: 1632 MB

It’s likely to be the “available” display memory reported; I was hoping for the total possible, to detect minimum required PC specs.

Hi,

that metric is fairly useless. On Windows, OS will grow the shared display memory automatically if it ever gets low. So there’s no such thing as “total possible”, except for the hard limit of the pagefile + RAM size. However, you’ll probably run out of processing power much sooner on such GPU before reaching the limit.

OK. How does Unity measure this Video Memory statistic for Windows standalone player statistics?
http://hwstats.unity3d.com/pc/mem-win.html

It uses dedicated video memory, but if dedicated video memory is 0, it will “guess”, take shared memory and divide it by 2. It’s not very accurate, as you might suspect.

Regarding minimum spec requirement: you should specify the slowest GPU you support, because nowadays the amount of video memory doesn’t mean much. Computational power of the GPU is much more important.

Ah… well, I was hoping to detect if the minimum system requirements were met as well as I could at runtime. I’m not sure how to do this then with SystemInfo, other than having a big database of graphicsDeviceName, which I am not willing to do. I guess the best I can do is to have a minimum graphicsShaderLevel and graphicsMemorySize (512), even if graphicsMemorySize is somewhat worthless…

instead of returning a useless big value like “shared memory and divide it by 2” couldn’t you just turn 0 so we would be able to understand that it is a useless gpu chip. that would be more helpful imo.

1 Like

This is an old thread but, oddly, this is still an issue. For shared memory Apple devices, is there no dynamic way to determine the memory limit that the device allows before crashing the app? It exists in xcode so it must be somewhere.

This is a Windows specific thread. On macOS, we return whatever https://developer.apple.com/documentation/metal/mtldevice/2369280-recommendedmaxworkingsetsize returns.