[FFmpeg-devel] Does i686 have MMX?

Jason Garrett-Glaser darkshikari
Sat Aug 28 05:05:47 CEST 2010


2010/8/27 M?ns Rullg?rd <mans at mansr.com>:
> Jason Garrett-Glaser <darkshikari at gmail.com> writes:
>
>> On Fri, Aug 27, 2010 at 4:26 AM, Luca Barbato <lu_zero at gentoo.org> wrote:
>>> 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...
>>
>> You missed the earlier discussion where we agreed that it was.
>
> I agree that it _is_ treated specially, and I think it's about time
> that stopped.

If we inline emms, we are treating MMX specially.  That is, for
MMX2/SSE/SSE2/etc/etc, it's all autoloaded, but for MMX, it's inlined.

Thus, the emms change made MMX "treated specially" when it didn't used to be.

Dark Shikari



More information about the ffmpeg-devel mailing list