Quick answer: Vulkan game freezing for 200ms when the player fires the first shot? Pipeline created on demand stalls the present queue - pre-compile pipelines at load time using a manifest.

First grenade explosion freezes the frame. Second is instant. Classic just-in-time pipeline compile.

Pre-compile from manifest

Author a list of pipeline configs the game uses. At load time, create each via vkCreateGraphicsPipelines and store in a cache.

Use VK_EXT_pipeline_creation_cache_control

Allows asynchronous creation. Hide compile cost behind the loading screen.

Combine with pipeline cache

Persist the disk cache. Subsequent launches read pre-compiled binaries; first launch pays once.

“Pipeline creation is not free. It's mostly free if you do it once at the right time.”

Audit pipeline creation count over a play session. Should be 0 after the loading screen. Any creation during gameplay is a stall waiting to happen.