[MPlayer-users] via epia nehemiah mmx detection bug
Geoffrey Espin
espin at idiom.com
Sat Oct 18 10:15:39 CEST 2003
Some MMX detect code fails with the new Nehemiah C3-2 (CPUID 693) chip.
Using mencoder to do any reasonable captures, soon results in the dreaded:
video buffer full - dropping frame
...
too bad - dropping audio frame !
...
% cpuid # on Nehemiah 691
eax in eax ebx ecx edx
00000000 00000001 746e6543 736c7561 48727561
00000001 00000691 00000000 00000000 0380b035
80000000 80000009 00000000 00000000 00000000
80000001 00000691 00000000 00000000 1380b035 <-- edx good
80000002 20414956 6568654e 6861696d 00000000
...
% cpuid # on Nehemiah 693
eax in eax ebx ecx edx
00000000 00000001 746e6543 736c7561 48727561
00000001 00000693 00000000 00000000 0380b03d
80000000 80000006 00000000 00000000 00000000
80000001 00000000 00000000 00000000 00000000 <-- edx bad!
80000002 20414956 6568654e 6861696d 00000000
mplayer/libavcodec/i386/cputest.c
...
} else if (ebx == 0x746e6543 &&
edx == 0x48727561 &&
ecx == 0x736c7561) { /* "CentaurHauls" */
/* VIA C3 */
cpuid(0x80000000, eax, ebx, ecx, edx);
if ((unsigned)eax < 0x80000001)
goto inteltest;
cpuid(0x80000001, eax, ebx, ecx, edx);
->> edx = 0x1380b035; // XXX *** broken C3-2 CPUID 693 *** XXX
rval = 0;
if( edx & ( 1 << 31) )
rval |= MM_3DNOW;
if( edx & ( 1 << 23) )
rval |= MM_MMX;
if( edx & ( 1 << 24) )
rval |= MM_MMXEXT;
return rval;
...
Dunno why... I hacked by pretending the edx returns the good value
instead of 0.
Geoff
More information about the MPlayer-users
mailing list