[alsa-devel] Specifying the default buffer-size for snd-hda-intel
Hi,
this was a feature requested some time ago: changing the default buffer size of driver, specifically HD-audio. Now I applied the patch below as a start, found in topic/hda and master branches of sound git tree. In future, we may increase the default size once when all distros set larger values than now.
Together with this change, I changed alsa-driver-build.git for allowing an integer kconfig option via --with-card-options. You can pass like --with-card-options=hda-prealloc-size=2048
Takashi
--- From: Takashi Iwai tiwai@suse.de Subject: [PATCH] ALSA: hda - Add Kconfig for the default buffer size
Add a Kconfig entry to specify the default buffer size. Distros using PulseAudio can choose a larger value here.
Signed-off-by: Takashi Iwai tiwai@suse.de --- sound/pci/hda/Kconfig | 13 +++++++++++++ sound/pci/hda/hda_intel.c | 8 +++++++- 2 files changed, 20 insertions(+), 1 deletions(-)
diff --git a/sound/pci/hda/Kconfig b/sound/pci/hda/Kconfig index 70762fc..1f1a4ae 100644 --- a/sound/pci/hda/Kconfig +++ b/sound/pci/hda/Kconfig @@ -14,6 +14,19 @@ menuconfig SND_HDA_INTEL
if SND_HDA_INTEL
+config SND_HDA_PREALLOC_SIZE + int "Pre-allocated buffer size for HD-audio driver" + range 0 32768 + default 64 + help + Speficies the default pre-allocated buffer-size in kB for + HD-audio driver. A larger buffer (e.g. 2048) is preferred + for systems with PulseAudio. The default 64 is chosen just + from the compatibility reason. + + Note that the pre-allocation size can be changed dynamically + via a proc file (/proc/asound/card*/pcm*/sub*/prealloc), too. + config SND_HDA_HWDEP bool "Build hwdep interface for HD-audio driver" select SND_HWDEP diff --git a/sound/pci/hda/hda_intel.c b/sound/pci/hda/hda_intel.c index 25619cd..5ce9531 100644 --- a/sound/pci/hda/hda_intel.c +++ b/sound/pci/hda/hda_intel.c @@ -2075,6 +2075,8 @@ static void azx_pcm_free(struct snd_pcm *pcm) } }
+#define MAX_PREALLOC_SIZE (32 * 1024 * 1024) + static int azx_attach_pcm_stream(struct hda_bus *bus, struct hda_codec *codec, struct hda_pcm *cpcm) @@ -2083,6 +2085,7 @@ azx_attach_pcm_stream(struct hda_bus *bus, struct hda_codec *codec, struct snd_pcm *pcm; struct azx_pcm *apcm; int pcm_dev = cpcm->device; + unsigned int size; int s, err;
if (pcm_dev >= HDA_MAX_PCMS) { @@ -2118,9 +2121,12 @@ azx_attach_pcm_stream(struct hda_bus *bus, struct hda_codec *codec, snd_pcm_set_ops(pcm, s, &azx_pcm_ops); } /* buffer pre-allocation */ + size = CONFIG_SND_HDA_PREALLOC_SIZE * 1024; + if (size > MAX_PREALLOC_SIZE) + size = MAX_PREALLOC_SIZE; snd_pcm_lib_preallocate_pages_for_all(pcm, SNDRV_DMA_TYPE_DEV_SG, snd_dma_pci_data(chip->pci), - 1024 * 64, 32 * 1024 * 1024); + size, MAX_PREALLOC_SIZE); return 0; }
Date: Tue, 12 Jul 2011 19:53:56 +0200
This commit is a fix up for commit acfa634f.
commit acfa634f7e199193ec28282e82a5a6dd8edebcb7 Author: Takashi Iwai tiwai@suse.de Date: Tue Jul 12 17:27:46 2011 +0200
ALSA: hda - Add Kconfig for the default buffer size
Signed-off-by: Paul Menzel paulepanter@users.sourceforge.net --- I am not sure about the singular and plural wording for »driver« and »reasons«. --- sound/pci/hda/Kconfig | 6 +++--- 1 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/sound/pci/hda/Kconfig b/sound/pci/hda/Kconfig index 1f1a4ae..7489b46 100644 --- a/sound/pci/hda/Kconfig +++ b/sound/pci/hda/Kconfig @@ -19,10 +19,10 @@ config SND_HDA_PREALLOC_SIZE range 0 32768 default 64 help - Speficies the default pre-allocated buffer-size in kB for + Specifies the default pre-allocated buffer-size in kB for the HD-audio driver. A larger buffer (e.g. 2048) is preferred - for systems with PulseAudio. The default 64 is chosen just - from the compatibility reason. + for systems using PulseAudio. The default 64 is chosen just + for compatibility reasons.
Note that the pre-allocation size can be changed dynamically via a proc file (/proc/asound/card*/pcm*/sub*/prealloc), too.
At Tue, 12 Jul 2011 20:00:47 +0200, Paul Menzel wrote:
Date: Tue, 12 Jul 2011 19:53:56 +0200
This commit is a fix up for commit acfa634f.
commit acfa634f7e199193ec28282e82a5a6dd8edebcb7 Author: Takashi Iwai tiwai@suse.de Date: Tue Jul 12 17:27:46 2011 +0200
ALSA: hda - Add Kconfig for the default buffer size
Signed-off-by: Paul Menzel paulepanter@users.sourceforge.net
Thanks, applied now.
I am not sure about the singular and plural wording for »driver« and »reasons«.
I leave such things to native speakers...
Takashi
participants (2)
-
Paul Menzel
-
Takashi Iwai