-hwaccel cuda ←CUDAを使ってデコード処理を行う事を明示する
-hwaccel_output_format cuda ←デコード処理の結果のデータをGPUのCUDAメモリ(=VRAM)に出力する事を明示する
-vf scale_cuda、yadif_cuda、scale_npp ←CUDAを使ってフィルタ処理をする、HWエンコーダと違って明示的にCUDAメモリにデータが存在しないと処理できない(多分)
-vf hwdownload ←結果をCUDAメモリからメインメモリ(RAM)にムーブする、CUDAメモリにデータがある場合、CPUフィルタやSWエンコーダに渡す前にこれを付ける
-vf hwupload_cuda ←結果をRAMからCUDAメモリにムーヴする、RAMにデータがある場合、CUDAフィルタに渡す前にこれを付ける
-c:v h264_nvenc、hevc_nvenc ←NVENCでエンコードする、RAM・CUDAメモリのどちらにデータがあっても自動でNVENCで処理してくれる

ってのが基本のはずだから不要なところで-hwupload_cuda付けてるんじゃない?