summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-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;