It is very hardware dependent. So you have to get ~lucky with your machine and then you're set, basically. (Though it's a weighted distribution; ex. ThinkPads have better than average odds)
NVIDIA GPUs definitely make things more difficult, at least in the suspend-then-hibernate case. Here's where I reported a hacky workaround:
https://forums.developer.nvidia.com/t/systemds-suspend-then-...
See also:
https://github.com/systemd/systemd/issues/27559
NVIDIA kinda sorta just doesn't give a shit, unfortunately.