Hi,
I'd like to know ways to profile for thermal. Our game performance is reasonable in a S6 but it overheats in a fews minutes. Is there an api to trottle CPU/GPU or a tool to profile the operations that are contributing more to overheat.
tool to profile the operations that are contributing more to overheat.
On the whole the thermal load is purely a function of workload - every Watt of power into the GPU has to comes out as heat, and if your load is sufficiently high to push up the GPU operating frequency then your voltage goes up (energy efficiency per operation is proportional to V^2) which exacerbates the problem. Also remember that device battery life and heat are basically coupled, so if your game is getting the device really warm then you are also sucking the battery down pretty fast, so reducing load can improve play times between charges.
There are some differences in energy cost - texturing is more expensive than a simple maths operation, for example - but on the whole thermal issues just come down to trying to do too much in a mobile form factor (GPUs inside sealed boxes with no airflow are in a pretty unforgiving thermal environment). Things to consider:
HTH, Pete
Hi mcgeagh and peterharris,
Thanks for this insightful reply. +1 for the reference to the optimisation guide.
Just out of curiosity.
1) Oculus VR api allows to set cpu/gpu levels. How does it do?2) As long as I use mipmapping, texture resolution won't matter for bandwidth ok? (since the lower resolution mips will account to improve memory access locality). The problem with large texture would be the space they would take in VRAM memory. is that correct?
1) Oculus VR api allows to set cpu/gpu levels. How does it do?
There is no standard API for GPU frequency control (i.e. nothing like CPUFreq on Linux), so presumably this is a platform specific part of their stack which must be ported to target a specific device.
2) As long as I use mipmapping, texture resolution won't matter for bandwidth ok? (since the lower resolution mips will account to improve memory access locality). The problem with large texture would be the space they would take in VRAM memory. is that correct?
It's certainly a "good thing" to use mipmaps - both for bandwidth and visual quality - but your choice of largest level can impact bandwidth especially if you are rendering on devices with very high resolutions - i.e. the mipmap selection is impacted by the ratio of texel size to pixel size, so smaller pixels mean you need smaller texels.
If a game has a mipmap chain which is 512x512, 256x256, .... then it may well be lower bandwidth than a mipmap chain which is 1024x1024, 512x512, .... simply because that 1024x1024 level may get used in places where the 512x512 level was used in the original case and will be 4x the bandwidth cost. For pixels which are using samples from L1 or below (256x256) in the original case, then you are correct - it won't make any difference.