summaryrefslogtreecommitdiffstats
path: root/contrib/mpeg2dec/P00-mingw-disable-sse.patch
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/mpeg2dec/P00-mingw-disable-sse.patch')
-rw-r--r--contrib/mpeg2dec/P00-mingw-disable-sse.patch30
1 files changed, 30 insertions, 0 deletions
diff --git a/contrib/mpeg2dec/P00-mingw-disable-sse.patch b/contrib/mpeg2dec/P00-mingw-disable-sse.patch
new file mode 100644
index 000000000..ee23632b9
--- /dev/null
+++ b/contrib/mpeg2dec/P00-mingw-disable-sse.patch
@@ -0,0 +1,30 @@
+Index: libmpeg2/cpu_accel.c
+===================================================================
+--- mpeg2dec/libmpeg2/cpu_accel.c (revision 1205)
++++ mpeg2dec/libmpeg2/cpu_accel.c (working copy)
+@@ -111,7 +111,13 @@
+
+ cpuid (0x80000000, eax, ebx, ecx, edx);
+ if (eax < 0x80000001) /* no extended capabilities */
+- return accel;
++ {
++#if defined(__x86_64__)
++ // SSE code is broken on mingw64, so disable it.
++ accel &= ~(MPEG2_ACCEL_X86_SSE2|MPEG2_ACCEL_X86_SSE3);
++#endif
++ return accel;
++ }
+
+ cpuid (0x80000001, eax, ebx, ecx, edx);
+
+@@ -120,6 +126,10 @@
+
+ if (AMD && (edx & 0x00400000)) /* AMD MMX extensions */
+ accel |= MPEG2_ACCEL_X86_MMXEXT;
++#if defined(__x86_64__)
++ // SSE code is broken on mingw64, so disable it.
++ accel &= ~(MPEG2_ACCEL_X86_SSE2|MPEG2_ACCEL_X86_SSE3);
++#endif
+ }
+ #endif /* ACCEL_DETECT */
+