configure.ac: Detect and indicate if GCC inline assembly syntax is available.

Original commit message from CVS:
* configure.ac:
Detect and indicate if GCC inline assembly syntax is
available.
* gst/goom/Makefile.am:
* gst/goom/convolve_fx.c:
* gst/goom/flying_stars_fx.c:
* gst/goom/goom_config.h:
* gst/goom/goom_core.c:
* gst/goom/goomsl.c:
* gst/goom/ifs.c:
* gst/goom/mmx.c:
* gst/goom/plugin_info.c:
* gst/goom/xmmx.c:
Fix various GCC-isms, and only build the inline assembly
with compilers that support GCC inline assembly.
Fix a couple of other warnings shown with Forte.
This commit is contained in:
Jan Schmidt 2008-02-26 10:09:38 +00:00
parent c99b95d8cb
commit c34fa140d0
13 changed files with 79 additions and 23 deletions

View file

@ -1,3 +1,24 @@
2008-02-26 Jan Schmidt <jan.schmidt@sun.com>
* configure.ac:
Detect and indicate if GCC inline assembly syntax is
available.
* gst/goom/Makefile.am:
* gst/goom/convolve_fx.c:
* gst/goom/flying_stars_fx.c:
* gst/goom/goom_config.h:
* gst/goom/goom_core.c:
* gst/goom/goomsl.c:
* gst/goom/ifs.c:
* gst/goom/mmx.c:
* gst/goom/plugin_info.c:
* gst/goom/xmmx.c:
Fix various GCC-isms, and only build the inline assembly
with compilers that support GCC inline assembly.
Fix a couple of other warnings shown with Forte.
2008-02-25 Stefan Kost <ensonic@users.sf.net>
* gst/goom/xmmx.c:

2
common

@ -1 +1 @@
Subproject commit 1c5138efc5679d9eaee66c84dcfabdec5b727493
Subproject commit e746d20ef536a73aea9964666c7d5f6d5c9465df

View file

@ -337,6 +337,13 @@ dnl Check for Yacc and Lex for the goom plugin
AG_GST_BISON_CHECK
AG_GST_FLEX_CHECK
AM_PROG_AS
dnl Check if we have GCC inline-asm
AS_GCC_INLINE_ASSEMBLY([HAVE_GCC_ASM=yes], [HAVE_GCC_ASM=no])
if test x$HAVE_GCC_ASM = xyes ; then
AC_DEFINE(HAVE_GCC_ASM, 1,
[Define if compiler supports gcc inline assembly])
fi
AM_CONDITIONAL(HAVE_GCC_ASM, test "x$HAVE_GCC_ASM" = "xyes")
dnl *** sys plug-ins ***

View file

@ -11,7 +11,7 @@ ARCH_FILES = $(PPC_FILES)
endif
if HAVE_CPU_I386
ARCH_FILES = $(MMX_FILES)
ARCH_CFLAGS = -DHAVE_MMX
ARCH_CFLAGS = -DBUILD_MMX
endif
libgstgoom_la_SOURCES = \

View file

@ -340,10 +340,10 @@ VisualFX
convolve_create (void)
{
VisualFX vfx = {
init:convolve_init,
free:convolve_free,
apply:convolve_apply,
fx_data:0
convolve_init,
convolve_free,
convolve_apply,
NULL
};
return vfx;
}

View file

@ -200,8 +200,7 @@ fs_sound_event_occured (VisualFX * _this, PluginInfo * info)
FSData *data = (FSData *) _this->fx_data;
int i;
int max =
(int) ((1.0f + info->sound.goomPower) * goom_irand (info->gRandom,
int max = (int) ((1.0f + info->sound.goomPower) * goom_irand (info->gRandom,
150)) + 100;
float radius =
(1.0f + info->sound.goomPower) * (float) (goom_irand (info->gRandom,
@ -332,10 +331,10 @@ VisualFX
flying_star_create (void)
{
VisualFX vfx = {
init:fs_init,
free:fs_free,
apply:fs_apply,
fx_data:0
fs_init,
fs_free,
fs_apply,
NULL
};
return vfx;
}

View file

@ -26,3 +26,7 @@
#define gint16 signed short int
#define gint32 signed int
#endif
#if defined (BUILD_MMX) && defined (HAVE_GCC_ASM)
#define HAVE_MMX
#endif

View file

@ -11,6 +11,7 @@
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <strings.h>
#include <inttypes.h>
#include "goom.h"
@ -721,8 +722,7 @@ goom_update (PluginInfo * goomInfo, gint16 data[2][512],
goomInfo->update.lineMode--;
if (goomInfo->update.lineMode == -1)
goomInfo->update.lineMode = 0;
} else
if ((goomInfo->cycle % 80 == 0)
} else if ((goomInfo->cycle % 80 == 0)
&& (goom_irand (goomInfo->gRandom, 5) == 0) && goomInfo->update.lineMode)
goomInfo->update.lineMode--;

View file

@ -2,6 +2,7 @@
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <glib.h>
#include "goomsl.h"
#include "goomsl_private.h"
#include "goomsl_yacc.h"
@ -465,7 +466,6 @@ gsl_instr_validate (Instruction * _this)
default:
return VALIDATE_TODO;
}
return VALIDATE_ERROR;
} /* }}} */
/*************/

View file

@ -470,7 +470,7 @@ static void
ifs_update (PluginInfo * goomInfo, Pixel * data, Pixel * back, int increment,
IfsData * fx_data)
{
static int couleur = 0xc0c0c0c0;
static unsigned int couleur = 0xc0c0c0c0;
static int v[4] = { 2, 4, 3, 2 };
static int col[4] = { 2, 4, 3, 2 };
@ -486,7 +486,7 @@ ifs_update (PluginInfo * goomInfo, Pixel * data, Pixel * back, int increment,
IFSPoint *points;
int i;
int couleursl = couleur;
unsigned int couleursl = couleur;
int width = goomInfo->screen.width;
int height = goomInfo->screen.height;

View file

@ -1,6 +1,10 @@
#ifdef HAVE_CONFIG_H
#include "config.h"
#endif
#if defined (HAVE_CPU_I386) || defined (HAVE_CPU_X86_64)
#include "goom_config.h"
#ifdef HAVE_MMX
#define BUFFPOINTNB 16
#define BUFFPOINTMASK 0xffff
@ -252,5 +256,10 @@ end_of_line:
emms ();
/* __asm__ __volatile__ ("emms"); */
}
#endif /* HAVE_CPU_I386 || HAVE_CPU_X86_64 */
#else
int
mmx_supported (void)
{
return (0);
}
#endif /* HAVE_MMX */

View file

@ -1,7 +1,11 @@
#ifdef HAVE_CONFIG_H
#include "config.h"
#endif
#include <gst/gst.h>
#include "goom_config.h"
#include "goom_plugin_info.h"
#include "goom_fx.h"
#include "default_scripts.h"
@ -18,9 +22,9 @@
#endif /* HAVE_CPU_PPC64 || HAVE_CPU_PPC */
#ifdef HAVE_CPU_I386
#ifdef HAVE_MMX
#include "mmx.h"
#endif /* HAVE_CPU_I386 */
#endif /* HAVE_MMX */
#include <liboil/liboil.h>
#include <liboil/liboilfunction.h>
@ -44,6 +48,7 @@ setOptimizedMethods (PluginInfo * p)
/* FIXME: what about HAVE_CPU_X86_64 ? */
#ifdef HAVE_CPU_I386
#ifdef HAVE_MMX
GST_INFO ("have an x86");
if (cpuFlavour & OIL_IMPL_FLAG_MMXEXT) {
GST_INFO ("Extended MMX detected. Using the fastest methods!");
@ -56,6 +61,7 @@ setOptimizedMethods (PluginInfo * p)
} else {
GST_INFO ("Too bad ! No SIMD optimization available for your CPU.");
}
#endif
#endif /* HAVE_CPU_I386 */
#ifdef HAVE_CPU_PPC64

View file

@ -1,3 +1,8 @@
#ifdef HAVE_CONFIG_H
#include "config.h"
#endif
#include "goom_config.h"
#ifdef HAVE_MMX
@ -362,5 +367,10 @@ end_of_line:
/* this was femms, which is AMD 3dnow */
__asm__ __volatile__ ("emms\n");
}
#else
int
xmmx_supported (void)
{
return (0);
}
#endif