The break even between hardware encoders and software encoders is the x264 preset "veryfast", which produces about the same as the nvenc hardware encoder of 10xx Nvidia cards. That means, unless you have a CPU that can afford a "better" ("better" means better quality) preset than "veryfast", such as "faster" or "fast", it is better to use nvenc instead of x264. These better x264 presets use much more CPU power, and if you get "encoder overload" messages because of this, you're losing frames, and this makes your video way worse than it got better due to the preset.
Quicksync is not as good for streaming as nvenc, so if you have a CPU that is able to encode "veryfast" with x264 without encoder overload, this will get you the better quality.
Unfortunately, AMF/AMD is even a bit worse than Quicksync, so the same thing applies here.
But even without nvenc, don't hesitate to use a hardware encoder if you have a CPU that isn't able to keep up with encoding x264. Especially Laptops struggle with CPU power. Having no dropped frames and relieving the CPU from encoding work makes every stream way better than any better quality encoder preset. Prefer any hardware encoder if you must tune down x264 to the "ultrafast" preset, because that preset really produces even worse quality for streaming than any hardware encoder.