http://bugs.winehq.org/show_bug.cgi?id=14717
--- Comment #80 from Raymond superquad.vortex2@gmail.com 2010-12-27 02:55:56 CST --- The answer is quite simple , the only wine audio driver which assign non-zero value to DSACPS is wineoss.drv ,
but ALSA 's kernel OSS emulation does not enable DSP_CAP_MULTI and emu10k1 does not work with wineoss any more after snd-emu10k1 need to use "front" device for playback to route the stereo to "front" jack
845 #ifdef DSP_CAP_MULTI /* not every oss has this */ 846 /* check for hardware secondary buffer support (multi open) */ 847 if ((arg & DSP_CAP_MULTI) && 848 (ossdev->out_caps.dwSupport & WAVECAPS_DIRECTSOUND)) { 849 TRACE("hardware secondary buffer support available\n"); 850 851 ossdev->ds_caps.dwMaxHwMixingAllBuffers = 16; 852 ossdev->ds_caps.dwMaxHwMixingStaticBuffers = 0; 853 ossdev->ds_caps.dwMaxHwMixingStreamingBuffers = 16; 854 855 ossdev->ds_caps.dwFreeHwMixingAllBuffers = 16; 856 ossdev->ds_caps.dwFreeHwMixingStaticBuffers = 0; 857 ossdev->ds_caps.dwFreeHwMixingStreamingBuffers = 16; 858 } 859 #endif
The value provided by winealsa in DSCAPS is all zero, so dxdiag only play with software buffers and does not play with hardware buffers.
even when you set hardware accelearion to full ( I am not sure why wine developer believe that hardware acclearation is related to mmap , may be alsa 's dmix need mmap support )
every sound cards using winealsa/wineoss are still practically remained in emulated mode since it just inform all dsound application that there is no Free HwMixing Streaming Buffers or Hw 3D buffers
so all dsound application have to use software secondary buffers