"Ronald S. Bultje" <[email protected]> writes:

>>> +    emms_c(); //FIXME this should not be required but it IS (even for 
>>> non-MMX versions)
>>
>> What's with that FIXME?
>
> Good question. I'm basically not exactly sure what the comment is
> doing there. Which is why I'm keeping it around.
>
> I can remove if preferred.

Leave it, but it should be investigated at some point.  The other one as
well, both look rather suspicious.

>> There's also one more emms instance in that file, at line 761.
>
> Added.
>
> Ronald
>
> From d8af242533a71306b77d2235292811d8e1567f83 Mon Sep 17 00:00:00 2001
> From: Ronald S. Bultje <[email protected]>
> Date: Tue, 24 May 2011 13:04:46 -0400
> Subject: [PATCH 2/5] swscale: use emms_c().
>
> ---
>  libswscale/utils.c                |    6 ++----
>  libswscale/x86/swscale_template.c |    2 +-
>  2 files changed, 3 insertions(+), 5 deletions(-)
>
> diff --git a/libswscale/utils.c b/libswscale/utils.c
> index b49ec89..29fc975 100644
> --- a/libswscale/utils.c
> +++ b/libswscale/utils.c
> @@ -193,8 +193,7 @@ static int initFilter(int16_t **outFilter, int16_t 
> **filterPos, int *outFilterSi
>      const int64_t fone= 1LL<<54;
>      int ret= -1;
>  
> -    if (HAVE_MMX && cpu_flags & AV_CPU_FLAG_MMX)
> -        __asm__ volatile("emms\n\t"::: "memory"); //FIXME this should not be 
> required but it IS (even for non-MMX versions)
> +    emms_c(); //FIXME this should not be required but it IS (even for 
> non-MMX versions)
>  
>      // NOTE: the +1 is for the MMX scaler which reads over the end
>      FF_ALLOC_OR_GOTO(NULL, *filterPos, (dstW+1)*sizeof(int16_t), fail);
> @@ -757,8 +756,7 @@ int sws_init_context(SwsContext *c, SwsFilter *srcFilter, 
> SwsFilter *dstFilter)
>  
>      cpu_flags = av_get_cpu_flags();
>      flags     = c->flags;
> -    if (HAVE_MMX && cpu_flags & AV_CPU_FLAG_MMX)
> -        __asm__ volatile("emms\n\t"::: "memory");
> +    emms_c();
>      if (!rgb15to16) sws_rgb2rgb_init();
>  
>      unscaled = (srcW == dstW && srcH == dstH);
> diff --git a/libswscale/x86/swscale_template.c 
> b/libswscale/x86/swscale_template.c
> index e03fbd4..576e22c 100644
> --- a/libswscale/x86/swscale_template.c
> +++ b/libswscale/x86/swscale_template.c
> @@ -2494,7 +2494,7 @@ static int RENAME(swScale)(SwsContext *c, const 
> uint8_t* src[], int srcStride[],
>          fillPlane(dst[3], dstStride[3], dstW, dstY-lastDstY, lastDstY, 255);
>  
>      if (COMPILE_TEMPLATE_MMX2)      __asm__ volatile("sfence":::"memory");
> -    __asm__ volatile("emms"  :::"memory");
> +    emms_c();
>  
>      /* store changed local vars back in the context */
>      c->dstY= dstY;
> -- 
> 1.7.4.4

Looks OK.

-- 
Måns Rullgård
[email protected]
_______________________________________________
libav-devel mailing list
[email protected]
https://lists.libav.org/mailman/listinfo/libav-devel

Reply via email to