Quick answer: Unity URP post-process chain stalling the GPU on Vulkan? Manual blits via cmd.Blit force a pipeline barrier - use the Render Graph API or BlitCameraTexture for blit batching.

Frame timing on Vulkan: 4ms of GPU time spent in transitions between post-process passes. Each cmd.Blit is its own barrier.

Migrate to Render Graph

URP 14+ ships the Render Graph API. Replace cmd.Blit with graph.AddRenderPass. The compiler merges compatible passes and elides redundant barriers.

Or use BlitCameraTexture

Blitter.BlitCameraTexture(cmd, src, dst, material, pass). The helper batches blit ops and uses the correct backend-specific path.

Avoid Texture2D.GetTemporary

Each temporary allocation barriers the queue. Pre-allocate persistent RTs sized for your screen, reuse across frames.

“Every blit on Vulkan is a hazard. Batching is the path to performance.”

On Vulkan, GPU pipelines are state machines. Bugs and perf both come from forcing them to flush more than necessary.