Today, Switch::ImpellerLazyShaderMode only allows for lazily setting up PSOs. While this makes it so that only the necessary PSOs are setup, it also pushes the setup into the first frames workload and slows time to first frame.
This issue tracks making only the waits be lazy but the preflight tasks be eagerly submitted for completion on a worker pool.
Once this task is done, we should remove Switch::ImpellerLazyShader mode and make it the default. The fast devices won't notice a difference because PSOs will be ready before the first frame. And the slow device will make maximal use of available device concurrency. Removing switches also makes the renderer less of a choose-your-own-adventure game.
Today,
Switch::ImpellerLazyShaderModeonly allows for lazily setting up PSOs. While this makes it so that only the necessary PSOs are setup, it also pushes the setup into the first frames workload and slows time to first frame.This issue tracks making only the waits be lazy but the preflight tasks be eagerly submitted for completion on a worker pool.
Once this task is done, we should remove
Switch::ImpellerLazyShadermode and make it the default. The fast devices won't notice a difference because PSOs will be ready before the first frame. And the slow device will make maximal use of available device concurrency. Removing switches also makes the renderer less of a choose-your-own-adventure game.