From ef54d5a8f06c74cfe4f122c1a383495e229bfc22 Mon Sep 17 00:00:00 2001 From: Sam Lantinga Date: Mon, 7 Aug 2017 10:28:59 -0700 Subject: [PATCH] Fixed building on various versions of GCC - YUV MMX code is disabled for now --- src/render/SDL_yuv_mmx.c | 7 ++++--- src/render/SDL_yuv_mmx_c.h | 28 ++++++++++++++++++++++++++++ src/render/SDL_yuv_sw.c | 6 +----- src/render/SDL_yuv_sw_c.h | 5 +++++ 4 files changed, 38 insertions(+), 8 deletions(-) create mode 100644 src/render/SDL_yuv_mmx_c.h diff --git a/src/render/SDL_yuv_mmx.c b/src/render/SDL_yuv_mmx.c index 8c21b03367db9..90da9f9b9ffc7 100644 --- a/src/render/SDL_yuv_mmx.c +++ b/src/render/SDL_yuv_mmx.c @@ -20,8 +20,9 @@ */ #include "../SDL_internal.h" -/* !!! FIXME: this broke on Clang (if it wasn't broken _before_) in https://hg.libsdl.org/SDL/rev/2ee7d2fa299b */ -#if (__GNUC__ > 2) && defined(__i386__) && __OPTIMIZE__ && SDL_ASSEMBLY_ROUTINES && !defined(__clang__) +#include "SDL_yuv_mmx_c.h" + +#ifdef USE_MMX_ASSEMBLY #include "SDL_stdinc.h" @@ -403,6 +404,6 @@ void Color565DitherYV12MMX1X( int *colortab, Uint32 *rgb_2_pix, /* *INDENT-ON* */ -#endif /* GCC3 i386 inline assembly */ +#endif /* USE_MMX_ASSEMBLY */ /* vi: set ts=4 sw=4 expandtab: */ diff --git a/src/render/SDL_yuv_mmx_c.h b/src/render/SDL_yuv_mmx_c.h new file mode 100644 index 0000000000000..d175ebf28ff6d --- /dev/null +++ b/src/render/SDL_yuv_mmx_c.h @@ -0,0 +1,28 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2017 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ +#include "../SDL_internal.h" + +/* FIXME: This breaks on various versions of GCC and should be rewritten using intrinsics */ +#if 0 /* (__GNUC__ > 2) && defined(__i386__) && __OPTIMIZE__ && SDL_ASSEMBLY_ROUTINES && !defined(__clang__) */ +#define USE_MMX_ASSEMBLY 1 +#endif + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/src/render/SDL_yuv_sw.c b/src/render/SDL_yuv_sw.c index facab0ef14a2d..9d202e0e7fc1d 100644 --- a/src/render/SDL_yuv_sw.c +++ b/src/render/SDL_yuv_sw.c @@ -86,15 +86,11 @@ #include "SDL_video.h" #include "SDL_cpuinfo.h" #include "SDL_yuv_sw_c.h" +#include "SDL_yuv_mmx_c.h" /* The colorspace conversion functions */ -/* !!! FIXME: this broke on Clang (if it wasn't broken _before_) in https://hg.libsdl.org/SDL/rev/2ee7d2fa299b */ -#if (__GNUC__ > 2) && defined(__i386__) && __OPTIMIZE__ && SDL_ASSEMBLY_ROUTINES && !defined(__clang__) -#define USE_MMX_ASSEMBLY 1 -#endif - #ifdef USE_MMX_ASSEMBLY extern void Color565DitherYV12MMX1X(int *colortab, Uint32 * rgb_2_pix, unsigned char *lum, unsigned char *cr, diff --git a/src/render/SDL_yuv_sw_c.h b/src/render/SDL_yuv_sw_c.h index 477538a6d3739..248dd45e20c26 100644 --- a/src/render/SDL_yuv_sw_c.h +++ b/src/render/SDL_yuv_sw_c.h @@ -69,4 +69,9 @@ int SDL_SW_CopyYUVToRGB(SDL_SW_YUVTexture * swdata, const SDL_Rect * srcrect, int pitch); void SDL_SW_DestroyYUVTexture(SDL_SW_YUVTexture * swdata); +/* FIXME: This breaks on various versions of GCC and should be rewritten using intrinsics */ +#if 0 /* (__GNUC__ > 2) && defined(__i386__) && __OPTIMIZE__ && SDL_ASSEMBLY_ROUTINES && !defined(__clang__) */ +#define USE_MMX_ASSEMBLY 1 +#endif + /* vi: set ts=4 sw=4 expandtab: */