summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJuergen Keil <jkeil@users.sourceforge.net>2001-09-03 19:00:28 +0000
committerJuergen Keil <jkeil@users.sourceforge.net>2001-09-03 19:00:28 +0000
commitd42a2b443890118549b17857a03b34b5afe7bfe1 (patch)
tree0c4ea3e7526671835b6f77c5739127d10d88fcb4
parent11506cebde8f9da40586648e9dc0ae452576f907 (diff)
downloadxine-lib-d42a2b443890118549b17857a03b34b5afe7bfe1.tar.gz
xine-lib-d42a2b443890118549b17857a03b34b5afe7bfe1.tar.bz2
Detect x86 SSE extension (for libavcodec/ffmpeg)
CVS patchset: 559 CVS date: 2001/09/03 19:00:28
-rw-r--r--src/xine-engine/cpu_accel.c12
1 files changed, 9 insertions, 3 deletions
diff --git a/src/xine-engine/cpu_accel.c b/src/xine-engine/cpu_accel.c
index d2254084e..8c28d950a 100644
--- a/src/xine-engine/cpu_accel.c
+++ b/src/xine-engine/cpu_accel.c
@@ -70,10 +70,13 @@ static uint32_t x86_accel (void)
cpuid (0x00000001, eax, ebx, ecx, edx);
if (! (edx & 0x00800000)) /* no MMX */
return 0;
-
caps = MM_ACCEL_X86_MMX;
+
if (edx & 0x02000000) /* SSE - identical to AMD MMX extensions */
- caps = MM_ACCEL_X86_MMX | MM_ACCEL_X86_MMXEXT;
+ caps |= MM_ACCEL_X86_SSE | MM_ACCEL_X86_MMXEXT;
+
+ if (edx & 0x04000000) /* SSE2 */
+ caps |= MM_ACCEL_X86_SSE2;
cpuid (0x80000000, eax, ebx, ecx, edx);
if (eax < 0x80000001) /* no extended capabilities */
@@ -81,9 +84,12 @@ static uint32_t x86_accel (void)
cpuid (0x80000001, eax, ebx, ecx, edx);
- if (edx & 0x80000000)
+ if (edx & 0x80000000) /* 3DNOW */
caps |= MM_ACCEL_X86_3DNOW;
+ if (edx & 0x40000000) /* 3DNOWEXT */
+ /*caps |= MM_ACCEL_X86_???*/ ;
+
if (AMD && (edx & 0x00400000)) /* AMD MMX extensions */
caps |= MM_ACCEL_X86_MMXEXT;