1. Add support to the xmame port for building the GL version. Yet more

reason to get DRI support working (hint hint).

2. While we're at it, add a quick patch from the author to improve
reliability a tiny bit.

Approved by: stijn@win.tue.nl
This commit is contained in:
Nick Sayer 2001-04-03 05:57:04 +00:00
parent caae0f1ff6
commit cb30289b5b
Notes: svn2git 2021-03-31 03:12:20 +00:00
svn path=/head/; revision=40789
5 changed files with 182 additions and 9 deletions

View File

@ -154,8 +154,23 @@ CFLAGS+= -O3 -march=i686 -Wall -Wno-unused -funroll-loops \
-malign-functions=4 -malign-jumps=4 -malign-loops=4
.endif
# SDL extension - enabled by default because x{mame,mess} can run full
# Choose one of several display targets:
# WITH_GL OpenGL based, displays vector games with hardware
# acceleration
# WITH_SDL Uses the SDL library to be able to play fullscreen
# without root rights
# WITH_X11 The standard display target, should work without
# dependancies other than X
#
# WITH_SDL is enabled by default because x{mame,mess} can run full
# screen without having to be setuid root.
.if defined(WITH_GL) && ${WITH_GL} == "yes"
CFLAGS+= ${PTHREAD_CFLAGS}
USE_MESA= yes
DISPLAY_METHOD= xgl
PLIST_SUB+= OPENGL=""
.else
PLIST_SUB+= OPENGL="@comment "
.if !defined(WITH_SDL) || ${WITH_SDL} != "no"
LIB_DEPENDS= SDL-1.1.3:${PORTSDIR}/devel/sdl-devel
SDL_CONFIG?= ${LOCALBASE}/bin/sdl11-config
@ -164,9 +179,12 @@ DISPLAY_METHOD= SDL
pre-everything::
@${ECHO_MSG} "===> If you don't want ${MAMEMESS:U} to be built with SDL support,"
@${ECHO_MSG} " use \"make WITH_SDL=no\""
@${ECHO_MSG} "===> You can also build ${MAMEMESS:U} with OpenGL support."
@${ECHO_MSG} " use \"make WITH_GL=yes\" for this"
.else
DISPLAY_METHOD= x11
.endif
.endif
# The large number of sed regexes here is intended to make this port a whole
# lot easier to maintain - please don't convert them into a patch.
@ -182,10 +200,11 @@ do-configure:
-e "s@= x11@= ${DISPLAY_METHOD}@g" \
-e "s@= mame@= ${MAMEMESS}@g" \
-e "s@# X86_ASM@${ASM_COMMENT}X86_ASM@g" \
-e "s@GLLIBS=.-ldl@GLLIBS= ${PTHREAD_LIBS}@g" \
${WRKSRC}/makefile.unix.sed > ${WRKSRC}/makefile.unix
.if !defined(WITH_SDL) || ${WITH_SDL} != "no"
${PERL} -pi -e 's@SDL/@SDL11/@' ${WRKSRC}/src/unix/video-drivers/SDL.c
.endif
${PERL} -pi -e 's@png.h@../../png.h@' \
${WRKSRC}/src/unix/video-drivers/glexport.c
post-build:
cd ${WRKSRC} && ${SETENV} ${MAKE_ENV} SDL_VIDEODRIVER=aalib \

View File

@ -1,6 +1,11 @@
--- src/unix/unix.mak.orig Sat Mar 24 02:33:38 2001
+++ src/unix/unix.mak Fri Mar 30 09:52:29 2001
@@ -50,14 +50,14 @@
+++ src/unix/unix.mak Mon Apr 2 10:33:48 2001
@@ -46,18 +46,18 @@
LIBS.x11 = $(X11LIB) $(JOY_X11_LIBS) -lX11 -lXext
LIBS.svgalib = $(X11LIB) -lvga -lvgagl
LIBS.ggi = $(X11LIB) -lggi
-LIBS.xgl = $(X11LIB) $(JOY_X11_LIBS) -lX11 -lXext $(GLLIBS) -ljpeg
+LIBS.xgl = $(X11LIB) $(JOY_X11_LIBS) -lX11 -lXext $(GLLIBS) -L/usr/local/lib -ljpeg $(PTHREAD_LIBS)
LIBS.xfx = $(X11LIB) $(JOY_X11_LIBS) -lX11 -lXext -lglide2x
LIBS.svgafx = $(X11LIB) -lvga -lvgagl -lglide2x
LIBS.openstep = -framework AppKit
@ -9,7 +14,8 @@
LIBS.photon2 = -L/usr/lib -lph -lphrender
CFLAGS.x11 = $(X11INC) $(JOY_X11_CFLAGS)
CFLAGS.xgl = $(X11INC) $(JOY_X11_CFLAGS)
-CFLAGS.xgl = $(X11INC) $(JOY_X11_CFLAGS)
+CFLAGS.xgl = $(X11INC) $(JOY_X11_CFLAGS) -I/usr/local/include $(PTHREAD_CFLAGS)
CFLAGS.xfx = $(X11INC) $(JOY_X11_CFLAGS) -I/usr/include/glide
CFLAGS.svgafx = -I/usr/include/glide
-CFLAGS.SDL = -D_REENTRANT

View File

@ -0,0 +1,138 @@
--- src/unix/video-drivers/glxtool.h.orig Sat Mar 24 02:33:38 2001
+++ src/unix/video-drivers/glxtool.h Mon Apr 2 21:40:48 2001
@@ -28,6 +28,8 @@
int accumBlueBits;
int accumAlphaBits;
+ /* internal use only */
+ int gl_supported;
long nativeVisualID;
} GLCapabilities;
--- src/unix/video-drivers/xgl.c.orig Mon Apr 2 13:33:10 2001
+++ src/unix/video-drivers/xgl.c Mon Apr 2 21:42:05 2001
@@ -63,14 +63,14 @@
GLXContext glContext=NULL;
const GLCapabilities glCapsDef = { BUFFER_DOUBLE, COLOR_RGBA, STEREO_OFF,
- 1, 0, 1, 1, 1, 1, 0, 0, 0, 0,
+ 1, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1,
-1
};
GLCapabilities glCaps;
static const char * xgl_version_str =
- "\nGLmame v0.83, by Sven Goethel, http://www.jausoft.com, sgoethel@jausoft.com,\nbased upon GLmame v0.6 driver for xmame, written by Mike Oliphant\n\n";
+ "\nGLmame v0.85, by Sven Goethel, http://www.jausoft.com, sgoethel@jausoft.com,\nbased upon GLmame v0.6 driver for xmame, written by Mike Oliphant\n\n";
struct rc_option display_opts[] = {
/* name, shortname, type, dest, deflt, min, max, func, help */
@@ -237,6 +237,7 @@
glCaps.alphaBits=(alphablending>0)?1:0;
glCaps.buffer =(doublebuffer>0)?BUFFER_DOUBLE:BUFFER_SINGLE;
+ glCaps.gl_supported = 1;
window = RootWindow(display,DefaultScreen( display ));
vgc = findVisualGlX( display, window,
--- src/unix/video-drivers/glxtool.c.orig Fri Mar 23 17:33:38 2001
+++ src/unix/video-drivers/glxtool.c Mon Apr 2 22:31:23 2001
@@ -68,6 +68,7 @@
GLCapabilities *glCaps )
{
int i=0;
+ visualAttribList[i++] = GLX_USE_GL; /* paranoia .. */
visualAttribList[i++] = GLX_RED_SIZE;
visualAttribList[i++] = 1;
visualAttribList[i++] = GLX_GREEN_SIZE;
@@ -134,13 +135,18 @@
int gc_ret = 0;
int ownwin = 0;
+ GLCapabilities _glCaps;
+
/**
* The Visual seeked by Function: findVisualIdByFeature !
*/
XVisualInfo * visualList=NULL; /* the visual list, to be XFree-ed */
+ /* paranoia .. */
+ glCaps->gl_supported = 1;
+
/* backup ... */
- GLCapabilities _glCaps = *glCaps;
+ _glCaps = *glCaps;
if(pOwnWin) ownwin=*pOwnWin;
@@ -214,14 +220,14 @@
if( offscreen && vgc.visual!=NULL)
{
- if(*pix!=0)
+ if(pix!=NULL && *pix!=NULL)
{
XFreePixmap(display, *pix);
}
- if(vgc.visual !=NULL)
+ if(pix!=NULL && vgc.visual !=NULL)
*pix = XCreatePixmap( display, rootWin, width, height,
vgc.visual->depth);
- if(*pix!=0)
+ if(pix!=NULL && *pix!=NULL)
{
*pWin = __glXCreateGLXPixmap( display, vgc.visual, *pix );
if(*pWin==0)
@@ -271,7 +277,7 @@
fflush(stderr);
}
- if(*pix!=0)
+ if(pix!=NULL && *pix!=NULL)
{
XFreePixmap(display, *pix);
*pix=0;
@@ -463,6 +469,16 @@
int iValue2=0;
int iValue3=0;
+ memset(glCaps, 0, sizeof(GLCapabilities));
+
+ if(__glXGetConfig( disp, visual, GLX_USE_GL, &iValue)==0)
+ {
+ glCaps->gl_supported=(iValue==True)?1:0;
+ } else {
+ fprintf(stderr,"GLINFO: fetching GLX_USE_GL state failed\n");
+ fflush(stderr);
+ }
+
if(__glXGetConfig( disp, visual, GLX_DOUBLEBUFFER, &iValue)==0)
{
glCaps->buffer=iValue?BUFFER_DOUBLE:BUFFER_SINGLE;
@@ -530,7 +546,7 @@
fprintf(stderr,"GLINFO: fetching rgba AccumSize states failed\n");
fflush(stderr);
}
- glCaps->nativeVisualID=(long)visual->visualid;
+ glCaps->nativeVisualID=(long) (visual->visualid);
return 1;
}
@@ -541,6 +557,8 @@
GLCapabilities _glCaps;
setGLCapabilities ( display, vi, &_glCaps);
+ if(_glCaps.gl_supported != glCaps->gl_supported) return 0;
+
if(_glCaps.buffer<glCaps->buffer) return 0;
if(_glCaps.color<glCaps->color) return 0;
@@ -635,6 +653,7 @@
void printGLCapabilities ( GLCapabilities *glCaps )
{
+ fprintf(stdout, "\t gl_supported: %d !\n", glCaps->gl_supported);
fprintf(stdout, "\t doubleBuff: %d, ", (int)glCaps->buffer);
fprintf(stdout, " rgba: %d, ", (int)glCaps->color);
fprintf(stdout, " stereo: %d, ", (int)glCaps->stereo);

View File

@ -2,7 +2,7 @@ XMAME is an arcade game machine emulator for UNIX/X11. It will emulate
the hardware, video, sound, and other services, of many classic arcade
game machines.
As of this release, XMAME supports an incredible 2073 arcade games, and
As of this release, XMAME supports an incredible 2843 arcade games, and
the number grows every day! A partial list of the (more popular and
well-known) games currently supported by this emulator include:
@ -20,5 +20,3 @@ have access to a ROM burner, or you don't own one of these video games
you can obtain ROM images for XMAME on the Net.
WWW: http://x.mame.net/
[ Maintained by Jacob A. Hart <c9710216@studentmail.newcastle.edu.au>. ]

View File

@ -36,6 +36,18 @@ share/%%MAMEMESS%%/%%MAMEMESS%%rc
%%PINMAMEONLY%%%%PORTDOCS%%share/doc/xpinmame/keys.txt
%%PINMAMEONLY%%%%PORTDOCS%%share/doc/xpinmame/sounds.dat
%%PORTDOCS%%@dirrm share/doc/%%MAMEMESS%%
%%OPENGL%%share/%%MAMEMESS%%/cab/glmame/cabfront.jpg
%%OPENGL%%share/%%MAMEMESS%%/cab/glmame/cabtitle.jpg
%%OPENGL%%share/%%MAMEMESS%%/cab/glmame/glmame.cab
%%OPENGL%%@dirrm share/%%MAMEMESS%%/cab/glmame
%%OPENGL%%share/%%MAMEMESS%%/cab/glmamejau/cabfront.jpg
%%OPENGL%%share/%%MAMEMESS%%/cab/glmamejau/cabside.jpg
%%OPENGL%%share/%%MAMEMESS%%/cab/glmamejau/cabtitle.jpg
%%OPENGL%%share/%%MAMEMESS%%/cab/glmamejau/glmamejau.cab
%%OPENGL%%@dirrm share/%%MAMEMESS%%/cab/glmamejau
%%OPENGL%%share/%%MAMEMESS%%/cab/trans/trans.cab
%%OPENGL%%@dirrm share/%%MAMEMESS%%/cab/trans
%%OPENGL%%@dirrm share/%%MAMEMESS%%/cab
@dirrm share/%%MAMEMESS%%/roms
@dirrm share/%%MAMEMESS%%
@unexec rmdir %%SPOOLGAMES%%/%%MAMEMESS%% 2>/dev/null || true