[FFmpeg-devel] Does i686 have MMX?
Fri Aug 27 10:26:14 CEST 2010
On 08/26/2010 08:29 PM, Jason Garrett-Glaser wrote:
> The issue is simple:
> 1. People use --cpu on x86 to mean "it should run on at least this
> CPU, and contain optimizations for all better CPUs". --cpu=i686 is
> widely used in order to enable CMOV on normal builds. Even if this is
> wrong, this is what people do. We cannot silently go and break what
> everyone currently does, it's just not reasonable.
Your target "Everyone" might be using the release branch so they will
read the changelog item once a 0.7 will appear...
> 2. This patch SILENTLY DISABLES MMX on almost all ffmpeg builds in
> the world. This is bad. I don't care if it's right, it's bad.
I'd rather have you substantiate this claim.
> 3. MMX should NEVER EVER be disabled unless --disable-mmx is passed.
> End of story.
arm and powerpc might have something to say, but I'm digressing...
> Possible solutions:
> 1. Revert the emms change.
Why it had been made?
> 2. By policy, make ffmpeg require MMX to run by default. Add a
> runtime check, just in case. Any --cpu that doesn't support MMX will
> error out unless the user specifies --disable-mmx too.
That looks a worse timebomb.
> Benefits: --cpu still makes logical sense, keeps the emms change, and
> we can enable CMOV by default too (i.e. if --cpu isn't set).
> Possible problems: this still breaks everyone's build scripts, but at
> least it'll break them loudly, so people will fix them.
"Everyone" got it's build script broken by other stuff already many
times and hardly complained.
> 3. By policy, make ffmpeg require MMX to run by default. Add a
> runtime check, just in case, telling the user to recompile without MMX
> if they're on an unsupported CPU. Don't check the user's --cpu option
> when it comes to validating this. This is what x264 does.
I'm not sure why MMX must be special...
> Benefits: simple, doesn't break build scripts, and x264 showed that it worked.
> Possible problems: --cpu doesn't do quite what it implies -- adds
> runtime failure instead of compile-time.
Good to know.
> 4. Modify the emms change to take an argument instead of using a
> global variable.
> Benefits: no behavioral changes, everything works just as before,
> except with no global.
> Possible problems: ugly.
> I will revert any patch that silently disables mmx on any CPU.
stay clear of arm, powerpc and whatever, YOU BARBARIAN. =P
lu - the world isn't just x86 and your "Everyone" looks a small group.
More information about the ffmpeg-devel