So, PulseAudio removed timer scheduling for drivers with SNDRV_PCM_INFO_BATCH, and released 5.0. Meanwhile, USB drivers still have SNDRV_PCM_INFO_BATCH, so this leads to performance regressions for USB sound cards.
The question remains - what does SNDRV_PCM_INFO_BATCH really mean?
In the documentation, we have this: "int snd_pcm_hw_params_is_batch (const snd_pcm_hw_params_t *params) Check, if hardware does double buffering for data transfers for given configuration."
What PulseAudio was looking for was more something like "what accuracy does the pointer callback give us". When we asked this question at the latest audio meeting, SNDRV_PCM_INFO_BATCH was given as the answer, i e, if this flag is set, pointer callback have no more accuracy than period boundaries. At least that's how I understood it.
So, either the documentation for snd_pcm_hw_params_is_batch is correct, in which case PulseAudio should revert the tsched patch. Or the answer given at the audio meeting was correct, in which case we need to fix the USB driver to stop sending the SNDRV_PCM_INFO_BATCH flag.