Bläddra i källkod

Fixed building on various versions of GCC - YUV MMX code is disabled for now

Sam Lantinga 7 år sedan
förälder
incheckning
ef54d5a8f0
4 ändrade filer med 38 tillägg och 8 borttagningar
  1. 4 3
      src/render/SDL_yuv_mmx.c
  2. 28 0
      src/render/SDL_yuv_mmx_c.h
  3. 1 5
      src/render/SDL_yuv_sw.c
  4. 5 0
      src/render/SDL_yuv_sw_c.h

+ 4 - 3
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: */

+ 28 - 0
src/render/SDL_yuv_mmx_c.h

@@ -0,0 +1,28 @@
+/*
+  Simple DirectMedia Layer
+  Copyright (C) 1997-2017 Sam Lantinga <slouken@libsdl.org>
+
+  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: */

+ 1 - 5
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,

+ 5 - 0
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: */