Age | Commit message (Collapse) | Author | Files | Lines |
|
FSF addresses used in PA sources are no longer valid and rpmlint
generates numerous warnings during packaging because of this.
This patch changes all FSF addresses to FSF web page according to
the GPL how-to: https://www.gnu.org/licenses/gpl-howto.en.html
Done automatically by sed-ing through sources.
|
|
Because debian does not run with the freebsd libc, but rather uses the
GNU one, it chose to not define __FreeBSD__, but rather __FreeBSD_kernel__.
Use the alternative when the functionality tested is for kernel
features, and keep the __FreeBSD__ one when using freebsd libc
headers.
If this patch is applied, debian could drop all the current patches when
importing 6.0 :)
|
|
Don't try to compile this code on 32-bit FreeBSD, it will error out complain
about registers only being available in 64-bit mode.
|
|
It tests only x86 architecture right now.
|
|
volumes do not change, the samples get scaled
Signed-off-by: Peter Meerwald <p.meerwald@bct-electronic.com>
|
|
assuming RAND_MAX is around 1<<31, rand() >> 1 generates large numbers as
random volume data; these likely causes saturated sample values after
applying the volume function -- not a good test
|
|
From d8b81d5393df36085009bf9f69d41fa85e2ae58a Mon Sep 17 00:00:00 2001
From: Nitin A Kamble <nitin.a.kamble@intel.com>
Date: Sat, 10 Dec 2011 09:09:06 +0100
Make assembly syntax compatible to the X32 toolchain and fix the
following kind of compilations errors with X32 gcc.
| pulsecore/svolume_mmx.c: Assembler messages:
| pulsecore/svolume_mmx.c:107: Error: `(%esi,%rdi,4)' is not a valid base/index expression
| pulsecore/svolume_mmx.c:135: Error: `(%esi,%rdi,4)' is not a valid base/index expression
| pulsecore/svolume_mmx.c:161: Error: `(%esi,%rdi,4)' is not a valid base/index expression
| pulsecore/svolume_mmx.c:162: Error: `8(%esi,%rdi,4)' is not a valid base/index expression
| pulsecore/svolume_mmx.c:180: Error: `(%esi,%rdi,4)' is not a valid base/index expression
| pulsecore/svolume_mmx.c:210: Error: `(%esi,%rdi,4)' is not a valid base/index expression
| pulsecore/svolume_mmx.c:244: Error: `(%esi,%rdi,4)' is not a valid base/index expression
| pulsecore/svolume_mmx.c:245: Error: `8(%esi,%rdi,4)' is not a valid base/index expression
| make[3]: *** [libpulsecore_1.1_la-svolume_mmx.lo] Error 1
Originally these assembly lines were written for x86_64 ABI, now they
are also compatible with X32 ABI [3][4].
The patch was submitted to the OpenEmbedded-Core list [1][2].
[1] http://lists.linuxtogo.org/pipermail/openembedded-core/2011-December/014189.html
[2] http://git.yoctoproject.org/cgit.cgi/poky-contrib/commit/?h=nitin/x32&id=2d8eec54f755c51f2eff600390f5a4b3cc2a7662
[3] https://wiki.yoctoproject.org/wiki/X32_abi
[4] http://en.wikipedia.org/wiki/X32_ABI
|
|
The casts are not supported there.
|
|
|
|
I was looking at a log, and noticed the following lines:
I [pulseaudio] svolume_mmx.c: Initialising MMX optimized functions.
I [pulseaudio] remap_mmx.c: Initialising MMX optimized remappers.
I [pulseaudio] svolume_sse.c: Initialising SSE2 optimized functions.
I [pulseaudio] remap_sse.c: Initialising SSE2 optimized remappers.
I [pulseaudio] sconv_sse.c: Initialising SSE2 optimized conversions.
It seemed odd that some messages were somewhat precise in
what functionality was initialized, while the svolume
messages told me that they had initialized just "functions".
So I made the svolume log messages more precise to match the
sconv and remap messages.
|
|
|
|
The "rm" basm constraint doesn't work with my version of gcc (4.5.2),
not even in a simple example. Since we usually only have 5 registers
available on i386, force it to be memory on that architecture.
Signed-off-by: David Henningsson <david.henningsson@canonical.com>
|
|
This makes the volume tests run in two loops and print the minimum,
maximum and standard deviation of readings from the inner loop. This
makes it easier to reason out performance drops (i.e. algorithmic
problems vs. other system issues such as processor contention).
|
|
This fixes the checking of supported compiler flags and the following error message for svolume_mmx:
pulsecore/svolume_mmx.c:157:76: error: invalid use of a cast in a inline asm context requiring an l-value:
remove the cast or build with -fheinous-gnu-extensions
: "+r" (samples), "+r" (volumes), "+r" (length), "=D" ((pa_reg_x86)channel), "=&r" (temp)
~~~~~~~~~~~~^~~~~~~
|
|
Use #include "header.h" if functionality of header.h is implemented
and #include <header.h> if functionality of header.h is used.
|
|
Only whitespace changes in here
|
|
Somewhere in the history of the MMX tests, the number of channels was
changed from 1 to 2, but the number of samples was not increased to make
it even (multiple of the frame size).
|
|
|
|
In the assembly optimized versions of SSE, a noise could occur when the
number of channels were 3,5,6 or 7. For MMX and ARM, this could occur
when the number of channels were 3.
Signed-off-by: David Henningsson <david.henningsson@canonical.com>
|
|
http://pulseaudio.org/ticket/776
|
|
We need to sign extend the lower part of the multiplication before adding it to
the higher part. Makes -1 * 0xffff work again.
|
|
|
|
This was reported as Gentoo bug #287391 by Torsten Kaiser, and the fix was
suggested by Mike Frysinger.
|
|
Tweak the constraints a little so that register starved 32bit systems
can select a stack variable for the channel paramter instead of reusing one of
the registers we're using in the code.
|
|
|
|
We can reorder the algortihm a bit like we do for sse so that we
don't need the contants and masking instructions. Saves 2 instructions
for the mmx code.
|
|
|
|
Use PA_MAX
Use pa_rtclock_now() for benchmarks
|
|
|
|
|
|
Mark code that should only be compiled on x86 CPUs with proper defines.
|
|
We don't need the compare because the sub operation already set the right flags
for us.
|
|
|
|
|
|
MMX is about 6x faster, SSE around 15x on my machine.
|
|
|
|
Add CPU detection code to activate the various optimisations.
Move some method definitions around.
Use compatibility macros when we can.
|
|
|
|
|
|
Add code for an mmx optimized version of s16ne volume scaling. Install the
custom function.
|