Graphics workloads leave the GPU with quite a lot of spare cycles. If these are used for compute, you effectively get them for free.
Only if they consistently leave the gpu with spare cycles every frame, which doesn't happen because when it does then the graphics programmers quickly munch up that remaining alu anyways. Realistically the amount of spare alu bounces around in your typical game from frame to frame but you have to account for worse case scenario to maintain stable framerate. So if there is 3ms free on one frame then you can't just assume you will have 3ms of gpu to use for gpgpu every frame because in a few frames the gpu may suddenly be maxed out again,.Gpgpu just means that the graphics coder guys will now have to share alu with the non graphics coders whereas in the past we greedily had them all to ourselves.
EDIT: I think part of the confusion could be from the 360 days where you could slot various workloads on it's gpu free if they were non competing workloads. So on alu heavy shaders we could shove workloads that were sampler heavy and get some stuff almost free. Hence why I would combine an alu heavy post process step with a sampler heavy post process step into the same shader together and they would live in relative harmony on the gpu. In this case though gpgpu and resolution are both heavily competing for the same resource, namely alu, which is why they clash.
Last edited by a moderator: