mirror of
https://github.com/joel16/SDL2.git
synced 2024-12-11 04:54:05 +00:00
Final touches to OSMesa OpenGL support on Atari, using loadable libraries. Hope SDL 1.2.8 is out soon.
--HG-- extra : convert_revision : svn%3Ac70aab31-4412-0410-b14c-859654838e24/trunk%40992
This commit is contained in:
parent
154c8f584c
commit
a9ce9ef9a9
20
configure.in
20
configure.in
@ -1133,20 +1133,34 @@ dnl Check for Mesa offscreen rendering
|
|||||||
CheckAtariOSMesa()
|
CheckAtariOSMesa()
|
||||||
{
|
{
|
||||||
if test "x$enable_video" = "xyes" -a "x$enable_video_opengl" = "xyes"; then
|
if test "x$enable_video" = "xyes" -a "x$enable_video_opengl" = "xyes"; then
|
||||||
|
AC_CHECK_HEADER(GL/osmesa.h, have_osmesa_hdr=yes)
|
||||||
|
AC_CHECK_LIB(OSMesa, OSMesaCreateContext, have_osmesa_lib=yes, have_osmesa_lib=no, -lm)
|
||||||
|
|
||||||
|
# Static linking to -lOSMesa
|
||||||
AC_PATH_PROG(OSMESA_CONFIG, osmesa-config, no)
|
AC_PATH_PROG(OSMESA_CONFIG, osmesa-config, no)
|
||||||
if test "x$OSMESA_CONFIG" = "xno" -o "x$enable_atari_ldg" = "xno"; then
|
if test "x$OSMESA_CONFIG" = "xno" -o "x$enable_atari_ldg" = "xno"; then
|
||||||
AC_CHECK_HEADER(GL/osmesa.h, have_osmesa_hdr=yes)
|
# -lOSMesa is really the static library
|
||||||
AC_CHECK_LIB(OSMesa, OSMesaCreateContext, have_osmesa_lib=yes, have_osmesa_lib=no, -lm)
|
|
||||||
if test "x$have_osmesa_hdr" = "xyes" -a "x$have_osmesa_lib" = "xyes"; then
|
if test "x$have_osmesa_hdr" = "xyes" -a "x$have_osmesa_lib" = "xyes"; then
|
||||||
CFLAGS="$CFLAGS -DHAVE_OPENGL"
|
CFLAGS="$CFLAGS -DHAVE_OPENGL"
|
||||||
SYSTEM_LIBS="$SYSTEM_LIBS -lOSMesa"
|
SYSTEM_LIBS="$SYSTEM_LIBS -lOSMesa"
|
||||||
fi
|
fi
|
||||||
else
|
else
|
||||||
|
# -lOSMesa is a loader for OSMesa.ldg
|
||||||
OSMESA_CFLAGS=`$OSMESA_CONFIG --cflags`
|
OSMESA_CFLAGS=`$OSMESA_CONFIG --cflags`
|
||||||
OSMESA_LIBS=`$OSMESA_CONFIG --libs`
|
OSMESA_LIBS=`$OSMESA_CONFIG --libs`
|
||||||
CFLAGS="$CFLAGS -DHAVE_OPENGL $OSMESA_CFLAGS"
|
CFLAGS="$CFLAGS -DHAVE_OPENGL $OSMESA_CFLAGS"
|
||||||
SYSTEM_LIBS="$SYSTEM_LIBS $OSMESA_LIBS"
|
SYSTEM_LIBS="$SYSTEM_LIBS $OSMESA_LIBS"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
AC_ARG_ENABLE(osmesa-shared,
|
||||||
|
[ --enable-osmesa-shared dynamically load OSMesa OpenGL support [default=yes]],
|
||||||
|
, enable_osmesa_shared=yes)
|
||||||
|
if test "x$enable_osmesa_shared" = "xyes" -a "x$enable_atari_ldg" = "xyes"; then
|
||||||
|
# Dynamic linking
|
||||||
|
if test "x$have_osmesa_hdr" = "xyes"; then
|
||||||
|
CFLAGS="$CFLAGS -DENABLE_OSMESA_SHARED"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -24,125 +24,198 @@
|
|||||||
|
|
||||||
/*--- Includes ---*/
|
/*--- Includes ---*/
|
||||||
|
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <string.h>
|
||||||
#ifdef HAVE_OPENGL
|
#ifdef HAVE_OPENGL
|
||||||
#include <GL/osmesa.h>
|
#include <GL/osmesa.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#include <mint/osbind.h>
|
||||||
|
|
||||||
#include "SDL_video.h"
|
#include "SDL_video.h"
|
||||||
#include "SDL_error.h"
|
#include "SDL_error.h"
|
||||||
#include "SDL_endian.h"
|
#include "SDL_endian.h"
|
||||||
#include "SDL_atarigl_c.h"
|
#include "SDL_atarigl_c.h"
|
||||||
|
#ifdef ENABLE_OSMESA_SHARED
|
||||||
|
#include "SDL_loadso.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
/*--- Variables ---*/
|
/*--- Defines ---*/
|
||||||
|
|
||||||
|
#define PATH_OSMESA_LDG "osmesa.ldg"
|
||||||
|
#define PATH_MESAGL_LDG "mesa_gl.ldg"
|
||||||
|
#define PATH_TINYGL_LDG "tiny_gl.ldg"
|
||||||
|
|
||||||
/*--- Functions prototypes ---*/
|
/*--- Functions prototypes ---*/
|
||||||
|
|
||||||
static void ConvertNull(SDL_Surface *surface);
|
static void SDL_AtariGL_UnloadLibrary(_THIS);
|
||||||
static void Convert565To555be(SDL_Surface *surface);
|
|
||||||
static void Convert565To555le(SDL_Surface *surface);
|
static void CopyShadowNull(_THIS, SDL_Surface *surface);
|
||||||
static void Convert565le(SDL_Surface *surface);
|
static void CopyShadowDirect(_THIS, SDL_Surface *surface);
|
||||||
static void ConvertBGRAToABGR(SDL_Surface *surface);
|
static void CopyShadow8888To555(_THIS, SDL_Surface *surface);
|
||||||
|
static void CopyShadow8888To565(_THIS, SDL_Surface *surface);
|
||||||
|
|
||||||
|
static void ConvertNull(_THIS, SDL_Surface *surface);
|
||||||
|
static void Convert565To555be(_THIS, SDL_Surface *surface);
|
||||||
|
static void Convert565To555le(_THIS, SDL_Surface *surface);
|
||||||
|
static void Convert565le(_THIS, SDL_Surface *surface);
|
||||||
|
static void ConvertBGRAToABGR(_THIS, SDL_Surface *surface);
|
||||||
|
|
||||||
|
static int InitNew(_THIS, SDL_Surface *current);
|
||||||
|
static int InitOld(_THIS, SDL_Surface *current);
|
||||||
|
|
||||||
/*--- Public functions ---*/
|
/*--- Public functions ---*/
|
||||||
|
|
||||||
int SDL_AtariGL_Init(_THIS, SDL_Surface *current)
|
int SDL_AtariGL_Init(_THIS, SDL_Surface *current)
|
||||||
{
|
{
|
||||||
#ifdef HAVE_OPENGL
|
#ifdef HAVE_OPENGL
|
||||||
GLenum osmesa_format;
|
if (gl_oldmesa) {
|
||||||
SDL_PixelFormat *pixel_format;
|
gl_active = InitOld(this, current);
|
||||||
Uint32 redmask;
|
} else {
|
||||||
|
gl_active = InitNew(this, current);
|
||||||
SDL_AtariGL_Quit(this); /* Destroy previous context if exist */
|
|
||||||
|
|
||||||
/* Init OpenGL context using OSMesa */
|
|
||||||
gl_convert = ConvertNull;
|
|
||||||
|
|
||||||
pixel_format = current->format;
|
|
||||||
redmask = pixel_format->Rmask;
|
|
||||||
switch (pixel_format->BitsPerPixel) {
|
|
||||||
case 15:
|
|
||||||
/* 1555, big and little endian, unsupported */
|
|
||||||
osmesa_format = OSMESA_RGB_565;
|
|
||||||
if (redmask == 31<<10) {
|
|
||||||
gl_convert = Convert565To555be;
|
|
||||||
} else {
|
|
||||||
gl_convert = Convert565To555le;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case 16:
|
|
||||||
if (redmask == 31<<11) {
|
|
||||||
osmesa_format = OSMESA_RGB_565;
|
|
||||||
} else {
|
|
||||||
/* 565, little endian, unsupported */
|
|
||||||
osmesa_format = OSMESA_RGB_565;
|
|
||||||
gl_convert = Convert565le;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case 24:
|
|
||||||
if (redmask == 255<<16) {
|
|
||||||
osmesa_format = OSMESA_RGB;
|
|
||||||
} else {
|
|
||||||
osmesa_format = OSMESA_BGR;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case 32:
|
|
||||||
if (redmask == 255<<16) {
|
|
||||||
osmesa_format = OSMESA_ARGB;
|
|
||||||
} else if (redmask == 255<<8) {
|
|
||||||
osmesa_format = OSMESA_BGRA;
|
|
||||||
} else if (redmask == 255<<24) {
|
|
||||||
osmesa_format = OSMESA_RGBA;
|
|
||||||
} else {
|
|
||||||
/* ABGR format unsupported */
|
|
||||||
osmesa_format = OSMESA_BGRA;
|
|
||||||
gl_convert = ConvertBGRAToABGR;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
osmesa_format = OSMESA_COLOR_INDEX;
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
gl_ctx = OSMesaCreateContextExt( osmesa_format, this->gl_config.depth_size,
|
|
||||||
this->gl_config.stencil_size, this->gl_config.accum_red_size +
|
|
||||||
this->gl_config.accum_green_size + this->gl_config.accum_blue_size +
|
|
||||||
this->gl_config.accum_alpha_size, NULL );
|
|
||||||
|
|
||||||
gl_active = (gl_ctx != NULL);
|
|
||||||
return (gl_active);
|
|
||||||
#else
|
|
||||||
return 0;
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
return (gl_active);
|
||||||
}
|
}
|
||||||
|
|
||||||
void SDL_AtariGL_Quit(_THIS)
|
void SDL_AtariGL_Quit(_THIS)
|
||||||
{
|
{
|
||||||
#ifdef HAVE_OPENGL
|
#ifdef HAVE_OPENGL
|
||||||
/* Shutdown OpenGL context */
|
if (!gl_active) {
|
||||||
if (gl_ctx) {
|
return;
|
||||||
OSMesaDestroyContext(gl_ctx);
|
|
||||||
gl_ctx = NULL;
|
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
|
if (gl_oldmesa) {
|
||||||
|
/* Old mesa implementations */
|
||||||
|
if (this->gl_data->OSMesaDestroyLDG) {
|
||||||
|
this->gl_data->OSMesaDestroyLDG();
|
||||||
|
}
|
||||||
|
if (gl_shadow) {
|
||||||
|
Mfree(gl_shadow);
|
||||||
|
gl_shadow = NULL;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
/* New mesa implementation */
|
||||||
|
if (gl_ctx) {
|
||||||
|
if (this->gl_data->OSMesaDestroyContext) {
|
||||||
|
this->gl_data->OSMesaDestroyContext(gl_ctx);
|
||||||
|
}
|
||||||
|
gl_ctx = NULL;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
SDL_AtariGL_UnloadLibrary(this);
|
||||||
|
|
||||||
|
#endif /* HAVE_OPENGL */
|
||||||
gl_active = 0;
|
gl_active = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int SDL_AtariGL_LoadLibrary(_THIS, const char *path)
|
int SDL_AtariGL_LoadLibrary(_THIS, const char *path)
|
||||||
{
|
{
|
||||||
#ifdef HAVE_OPENGL
|
#ifdef HAVE_OPENGL
|
||||||
/* Library is always opened */
|
|
||||||
this->gl_config.driver_loaded = 1;
|
#ifdef ENABLE_OSMESA_SHARED
|
||||||
|
void *handle;
|
||||||
|
|
||||||
|
if (gl_active) {
|
||||||
|
SDL_SetError("OpenGL context already created");
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Unload previous driver */
|
||||||
|
SDL_AtariGL_UnloadLibrary(this);
|
||||||
|
|
||||||
|
/* Load library given by path */
|
||||||
|
handle = SDL_LoadObject(path);
|
||||||
|
if (handle == NULL) {
|
||||||
|
/* Try to load another one */
|
||||||
|
path = getenv("SDL_VIDEO_GL_DRIVER");
|
||||||
|
if ( path != NULL ) {
|
||||||
|
handle = SDL_LoadObject(path);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* If it does not work, try some other */
|
||||||
|
if (handle == NULL) {
|
||||||
|
path = PATH_OSMESA_LDG;
|
||||||
|
handle = SDL_LoadObject(path);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (handle == NULL) {
|
||||||
|
path = PATH_MESAGL_LDG;
|
||||||
|
handle = SDL_LoadObject(path);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (handle == NULL) {
|
||||||
|
path = PATH_TINYGL_LDG;
|
||||||
|
handle = SDL_LoadObject(path);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (handle == NULL) {
|
||||||
|
SDL_SetError("Could not load OpenGL library");
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Load functions pointers (osmesa.ldg) */
|
||||||
|
this->gl_data->OSMesaCreateContextExt = SDL_LoadFunction(handle, "OSMesaCreateContextExt");
|
||||||
|
this->gl_data->OSMesaDestroyContext = SDL_LoadFunction(handle, "OSMesaDestroyContext");
|
||||||
|
this->gl_data->OSMesaMakeCurrent = SDL_LoadFunction(handle, "OSMesaMakeCurrent");
|
||||||
|
this->gl_data->OSMesaPixelStore = SDL_LoadFunction(handle, "OSMesaPixelStore");
|
||||||
|
this->gl_data->OSMesaGetProcAddress = SDL_LoadFunction(handle, "OSMesaGetProcAddress");
|
||||||
|
this->gl_data->glGetIntegerv = SDL_LoadFunction(handle, "glGetIntegerv");
|
||||||
|
|
||||||
|
/* Load old functions pointers (mesa_gl.ldg, tiny_gl.ldg) */
|
||||||
|
this->gl_data->OSMesaCreateLDG = SDL_LoadFunction(handle, "OSMesaCreateLDG");
|
||||||
|
this->gl_data->OSMesaDestroyLDG = SDL_LoadFunction(handle, "OSMesaDestroyLDG");
|
||||||
|
|
||||||
|
gl_oldmesa = 0;
|
||||||
|
|
||||||
|
if ( (this->gl_data->OSMesaCreateContextExt == NULL) ||
|
||||||
|
(this->gl_data->OSMesaDestroyContext == NULL) ||
|
||||||
|
(this->gl_data->OSMesaMakeCurrent == NULL) ||
|
||||||
|
(this->gl_data->OSMesaPixelStore == NULL) ||
|
||||||
|
(this->gl_data->glGetIntegerv == NULL) ||
|
||||||
|
(this->gl_data->OSMesaGetProcAddress == NULL)) {
|
||||||
|
/* Hum, maybe old library ? */
|
||||||
|
if ( (this->gl_data->OSMesaCreateLDG == NULL) ||
|
||||||
|
(this->gl_data->OSMesaDestroyLDG == NULL)) {
|
||||||
|
SDL_SetError("Could not retrieve OpenGL functions");
|
||||||
|
return -1;
|
||||||
|
} else {
|
||||||
|
gl_oldmesa = 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
this->gl_config.dll_handle = handle;
|
||||||
|
if ( path ) {
|
||||||
|
strncpy(this->gl_config.driver_path, path,
|
||||||
|
sizeof(this->gl_config.driver_path)-1);
|
||||||
|
} else {
|
||||||
|
strcpy(this->gl_config.driver_path, "");
|
||||||
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
this->gl_config.driver_loaded = 1;
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
#else
|
||||||
|
return -1;
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
void *SDL_AtariGL_GetProcAddress(_THIS, const char *proc)
|
void *SDL_AtariGL_GetProcAddress(_THIS, const char *proc)
|
||||||
{
|
{
|
||||||
void *func = NULL;
|
void *func = NULL;
|
||||||
#ifdef HAVE_OPENGL
|
#ifdef HAVE_OPENGL
|
||||||
if (gl_ctx != NULL) {
|
|
||||||
func = OSMesaGetProcAddress(proc);
|
if (this->gl_config.dll_handle) {
|
||||||
|
func = SDL_LoadFunction(this->gl_config.dll_handle, (void *)proc);
|
||||||
|
} else if (this->gl_data->OSMesaGetProcAddress) {
|
||||||
|
func = this->gl_data->OSMesaGetProcAddress(proc);
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
return func;
|
return func;
|
||||||
}
|
}
|
||||||
@ -153,7 +226,13 @@ int SDL_AtariGL_GetAttribute(_THIS, SDL_GLattr attrib, int* value)
|
|||||||
GLenum mesa_attrib;
|
GLenum mesa_attrib;
|
||||||
SDL_Surface *surface;
|
SDL_Surface *surface;
|
||||||
|
|
||||||
if (gl_ctx == NULL) {
|
if (this->gl_config.dll_handle) {
|
||||||
|
if (this->gl_data->glGetIntegerv == NULL) {
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!gl_active) {
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -196,7 +275,7 @@ int SDL_AtariGL_GetAttribute(_THIS, SDL_GLattr attrib, int* value)
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
glGetIntegerv(mesa_attrib, value);
|
this->gl_data->glGetIntegerv(mesa_attrib, value);
|
||||||
return 0;
|
return 0;
|
||||||
#else
|
#else
|
||||||
return -1;
|
return -1;
|
||||||
@ -209,7 +288,18 @@ int SDL_AtariGL_MakeCurrent(_THIS)
|
|||||||
SDL_Surface *surface;
|
SDL_Surface *surface;
|
||||||
GLenum type;
|
GLenum type;
|
||||||
|
|
||||||
if (gl_ctx == NULL) {
|
if (gl_oldmesa && gl_active) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (this->gl_config.dll_handle) {
|
||||||
|
if ((this->gl_data->OSMesaMakeCurrent == NULL) ||
|
||||||
|
(this->gl_data->OSMesaPixelStore == NULL)) {
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!gl_active) {
|
||||||
SDL_SetError("Invalid OpenGL context");
|
SDL_SetError("Invalid OpenGL context");
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
@ -222,13 +312,13 @@ int SDL_AtariGL_MakeCurrent(_THIS)
|
|||||||
type = GL_UNSIGNED_BYTE;
|
type = GL_UNSIGNED_BYTE;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!OSMesaMakeCurrent(gl_ctx, surface->pixels, type, surface->w, surface->h)) {
|
if (!(this->gl_data->OSMesaMakeCurrent(gl_ctx, surface->pixels, type, surface->w, surface->h))) {
|
||||||
SDL_SetError("Can not make OpenGL context current");
|
SDL_SetError("Can not make OpenGL context current");
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* OSMesa draws upside down */
|
/* OSMesa draws upside down */
|
||||||
OSMesaPixelStore(OSMESA_Y_UP, 0);
|
this->gl_data->OSMesaPixelStore(OSMESA_Y_UP, 0);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
#else
|
#else
|
||||||
@ -239,21 +329,296 @@ int SDL_AtariGL_MakeCurrent(_THIS)
|
|||||||
void SDL_AtariGL_SwapBuffers(_THIS)
|
void SDL_AtariGL_SwapBuffers(_THIS)
|
||||||
{
|
{
|
||||||
#ifdef HAVE_OPENGL
|
#ifdef HAVE_OPENGL
|
||||||
if (gl_ctx == NULL) {
|
if (gl_active) {
|
||||||
return;
|
gl_copyshadow(this, this->screen);
|
||||||
|
gl_convert(this, this->screen);
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
gl_convert(this->screen);
|
void SDL_AtariGL_InitPointers(_THIS)
|
||||||
|
{
|
||||||
|
#if defined(HAVE_OPENGL)
|
||||||
|
this->gl_data->OSMesaCreateContextExt = OSMesaCreateContextExt;
|
||||||
|
this->gl_data->OSMesaDestroyContext = OSMesaDestroyContext;
|
||||||
|
this->gl_data->OSMesaMakeCurrent = OSMesaMakeCurrent;
|
||||||
|
this->gl_data->OSMesaPixelStore = OSMesaPixelStore;
|
||||||
|
this->gl_data->OSMesaGetProcAddress = OSMesaGetProcAddress;
|
||||||
|
this->gl_data->glGetIntegerv = glGetIntegerv;
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
/*--- Private functions ---*/
|
/*--- Private functions ---*/
|
||||||
|
|
||||||
static void ConvertNull(SDL_Surface *surface)
|
static void SDL_AtariGL_UnloadLibrary(_THIS)
|
||||||
|
{
|
||||||
|
#if defined(HAVE_OPENGL)
|
||||||
|
if (this->gl_config.dll_handle) {
|
||||||
|
SDL_UnloadObject(this->gl_config.dll_handle);
|
||||||
|
this->gl_config.dll_handle = NULL;
|
||||||
|
|
||||||
|
/* Restore pointers to static library */
|
||||||
|
this->gl_data->OSMesaCreateContextExt = OSMesaCreateContextExt;
|
||||||
|
this->gl_data->OSMesaDestroyContext = OSMesaDestroyContext;
|
||||||
|
this->gl_data->OSMesaMakeCurrent = OSMesaMakeCurrent;
|
||||||
|
this->gl_data->OSMesaPixelStore = OSMesaPixelStore;
|
||||||
|
this->gl_data->OSMesaGetProcAddress = OSMesaGetProcAddress;
|
||||||
|
this->gl_data->glGetIntegerv = glGetIntegerv;
|
||||||
|
|
||||||
|
this->gl_data->OSMesaCreateLDG = NULL;
|
||||||
|
this->gl_data->OSMesaDestroyLDG = NULL;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
/*--- Creation of an OpenGL context using new/old functions ---*/
|
||||||
|
|
||||||
|
static int InitNew(_THIS, SDL_Surface *current)
|
||||||
|
{
|
||||||
|
GLenum osmesa_format;
|
||||||
|
SDL_PixelFormat *pixel_format;
|
||||||
|
Uint32 redmask;
|
||||||
|
|
||||||
|
if (this->gl_config.dll_handle) {
|
||||||
|
if (this->gl_data->OSMesaCreateContextExt == NULL) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Init OpenGL context using OSMesa */
|
||||||
|
gl_convert = ConvertNull;
|
||||||
|
gl_copyshadow = CopyShadowNull;
|
||||||
|
|
||||||
|
pixel_format = current->format;
|
||||||
|
redmask = pixel_format->Rmask;
|
||||||
|
switch (pixel_format->BitsPerPixel) {
|
||||||
|
case 15:
|
||||||
|
/* 1555, big and little endian, unsupported */
|
||||||
|
gl_pixelsize = 2;
|
||||||
|
osmesa_format = OSMESA_RGB_565;
|
||||||
|
if (redmask == 31<<10) {
|
||||||
|
gl_convert = Convert565To555be;
|
||||||
|
} else {
|
||||||
|
gl_convert = Convert565To555le;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 16:
|
||||||
|
gl_pixelsize = 2;
|
||||||
|
if (redmask == 31<<11) {
|
||||||
|
osmesa_format = OSMESA_RGB_565;
|
||||||
|
} else {
|
||||||
|
/* 565, little endian, unsupported */
|
||||||
|
osmesa_format = OSMESA_RGB_565;
|
||||||
|
gl_convert = Convert565le;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 24:
|
||||||
|
gl_pixelsize = 3;
|
||||||
|
if (redmask == 255<<16) {
|
||||||
|
osmesa_format = OSMESA_RGB;
|
||||||
|
} else {
|
||||||
|
osmesa_format = OSMESA_BGR;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 32:
|
||||||
|
gl_pixelsize = 4;
|
||||||
|
if (redmask == 255<<16) {
|
||||||
|
osmesa_format = OSMESA_ARGB;
|
||||||
|
} else if (redmask == 255<<8) {
|
||||||
|
osmesa_format = OSMESA_BGRA;
|
||||||
|
} else if (redmask == 255<<24) {
|
||||||
|
osmesa_format = OSMESA_RGBA;
|
||||||
|
} else {
|
||||||
|
/* ABGR format unsupported */
|
||||||
|
osmesa_format = OSMESA_BGRA;
|
||||||
|
gl_convert = ConvertBGRAToABGR;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
gl_pixelsize = 1;
|
||||||
|
osmesa_format = OSMESA_COLOR_INDEX;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
gl_ctx = this->gl_data->OSMesaCreateContextExt(
|
||||||
|
osmesa_format, this->gl_config.depth_size,
|
||||||
|
this->gl_config.stencil_size, this->gl_config.accum_red_size +
|
||||||
|
this->gl_config.accum_green_size + this->gl_config.accum_blue_size +
|
||||||
|
this->gl_config.accum_alpha_size, NULL );
|
||||||
|
|
||||||
|
return (gl_ctx != NULL);
|
||||||
|
}
|
||||||
|
|
||||||
|
static int InitOld(_THIS, SDL_Surface *current)
|
||||||
|
{
|
||||||
|
GLenum osmesa_format;
|
||||||
|
SDL_PixelFormat *pixel_format;
|
||||||
|
Uint32 redmask;
|
||||||
|
|
||||||
|
if (this->gl_config.dll_handle) {
|
||||||
|
if (this->gl_data->OSMesaCreateLDG == NULL) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Init OpenGL context using OSMesa */
|
||||||
|
gl_convert = ConvertNull;
|
||||||
|
gl_copyshadow = CopyShadowNull;
|
||||||
|
|
||||||
|
pixel_format = current->format;
|
||||||
|
redmask = pixel_format->Rmask;
|
||||||
|
switch (pixel_format->BitsPerPixel) {
|
||||||
|
case 15:
|
||||||
|
/* 15 bits unsupported */
|
||||||
|
gl_pixelsize = 2;
|
||||||
|
osmesa_format = OSMESA_ARGB;
|
||||||
|
if (redmask == 31<<10) {
|
||||||
|
gl_copyshadow = CopyShadow8888To555;
|
||||||
|
} else {
|
||||||
|
gl_copyshadow = CopyShadow8888To565;
|
||||||
|
gl_convert = Convert565To555le;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 16:
|
||||||
|
/* 16 bits unsupported */
|
||||||
|
gl_pixelsize = 2;
|
||||||
|
osmesa_format = OSMESA_ARGB;
|
||||||
|
gl_copyshadow = CopyShadow8888To565;
|
||||||
|
if (redmask != 31<<11) {
|
||||||
|
/* 565, little endian, unsupported */
|
||||||
|
gl_convert = Convert565le;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 24:
|
||||||
|
gl_pixelsize = 3;
|
||||||
|
gl_copyshadow = CopyShadowDirect;
|
||||||
|
if (redmask == 255<<16) {
|
||||||
|
osmesa_format = OSMESA_RGB;
|
||||||
|
} else {
|
||||||
|
osmesa_format = OSMESA_BGR;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 32:
|
||||||
|
gl_pixelsize = 4;
|
||||||
|
gl_copyshadow = CopyShadowDirect;
|
||||||
|
if (redmask == 255<<16) {
|
||||||
|
osmesa_format = OSMESA_ARGB;
|
||||||
|
} else if (redmask == 255<<8) {
|
||||||
|
osmesa_format = OSMESA_BGRA;
|
||||||
|
} else if (redmask == 255<<24) {
|
||||||
|
osmesa_format = OSMESA_RGBA;
|
||||||
|
} else {
|
||||||
|
/* ABGR format unsupported */
|
||||||
|
osmesa_format = OSMESA_BGRA;
|
||||||
|
gl_convert = ConvertBGRAToABGR;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
gl_pixelsize = 1;
|
||||||
|
gl_copyshadow = CopyShadowDirect;
|
||||||
|
osmesa_format = OSMESA_COLOR_INDEX;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
gl_shadow = this->gl_data->OSMesaCreateLDG(
|
||||||
|
osmesa_format, GL_UNSIGNED_BYTE, current->w, current->h
|
||||||
|
);
|
||||||
|
|
||||||
|
return (gl_shadow != NULL);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*--- Conversions routines from shadow buffer to the screen ---*/
|
||||||
|
|
||||||
|
static void CopyShadowNull(_THIS, SDL_Surface *surface)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
static void Convert565To555be(SDL_Surface *surface)
|
static void CopyShadowDirect(_THIS, SDL_Surface *surface)
|
||||||
|
{
|
||||||
|
int y, srcpitch, dstpitch;
|
||||||
|
Uint8 *srcline, *dstline;
|
||||||
|
|
||||||
|
srcline = gl_shadow;
|
||||||
|
srcpitch = surface->w * gl_pixelsize;
|
||||||
|
dstline = surface->pixels;
|
||||||
|
dstpitch = surface->pitch;
|
||||||
|
|
||||||
|
for (y=0; y<surface->h; y++) {
|
||||||
|
memcpy(dstline, srcline, srcpitch);
|
||||||
|
|
||||||
|
srcline += srcpitch;
|
||||||
|
dstline += dstpitch;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static void CopyShadow8888To555(_THIS, SDL_Surface *surface)
|
||||||
|
{
|
||||||
|
int x,y, srcpitch, dstpitch;
|
||||||
|
Uint16 *dstline, *dstcol;
|
||||||
|
Uint32 *srcline, *srccol;
|
||||||
|
|
||||||
|
srcline = (Uint32 *)gl_shadow;
|
||||||
|
srcpitch = surface->w;
|
||||||
|
dstline = surface->pixels;
|
||||||
|
dstpitch = surface->pitch >>1;
|
||||||
|
|
||||||
|
for (y=0; y<surface->h; y++) {
|
||||||
|
srccol = srcline;
|
||||||
|
dstcol = dstline;
|
||||||
|
for (x=0; x<surface->w; x++) {
|
||||||
|
Uint32 srccolor;
|
||||||
|
Uint16 dstcolor;
|
||||||
|
|
||||||
|
srccolor = *srccol++;
|
||||||
|
dstcolor = (srccolor>>9) & (31<<10);
|
||||||
|
dstcolor |= (srccolor>>6) & (31<<5);
|
||||||
|
dstcolor |= (srccolor>>3) & 31;
|
||||||
|
*dstcol++ = dstcolor;
|
||||||
|
}
|
||||||
|
|
||||||
|
srcline += srcpitch;
|
||||||
|
dstline += dstpitch;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static void CopyShadow8888To565(_THIS, SDL_Surface *surface)
|
||||||
|
{
|
||||||
|
int x,y, srcpitch, dstpitch;
|
||||||
|
Uint16 *dstline, *dstcol;
|
||||||
|
Uint32 *srcline, *srccol;
|
||||||
|
|
||||||
|
srcline = (Uint32 *)gl_shadow;
|
||||||
|
srcpitch = surface->w;
|
||||||
|
dstline = surface->pixels;
|
||||||
|
dstpitch = surface->pitch >>1;
|
||||||
|
|
||||||
|
for (y=0; y<surface->h; y++) {
|
||||||
|
srccol = srcline;
|
||||||
|
dstcol = dstline;
|
||||||
|
|
||||||
|
for (x=0; x<surface->w; x++) {
|
||||||
|
Uint32 srccolor;
|
||||||
|
Uint16 dstcolor;
|
||||||
|
|
||||||
|
srccolor = *srccol++;
|
||||||
|
dstcolor = (srccolor>>8) & (31<<11);
|
||||||
|
dstcolor |= (srccolor>>5) & (63<<5);
|
||||||
|
dstcolor |= (srccolor>>3) & 31;
|
||||||
|
*dstcol++ = dstcolor;
|
||||||
|
}
|
||||||
|
|
||||||
|
srcline += srcpitch;
|
||||||
|
dstline += dstpitch;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/*--- Conversions routines in the screen ---*/
|
||||||
|
|
||||||
|
static void ConvertNull(_THIS, SDL_Surface *surface)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
static void Convert565To555be(_THIS, SDL_Surface *surface)
|
||||||
{
|
{
|
||||||
int x,y, pitch;
|
int x,y, pitch;
|
||||||
unsigned short *line, *pixel;
|
unsigned short *line, *pixel;
|
||||||
@ -272,7 +637,7 @@ static void Convert565To555be(SDL_Surface *surface)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void Convert565To555le(SDL_Surface *surface)
|
static void Convert565To555le(_THIS, SDL_Surface *surface)
|
||||||
{
|
{
|
||||||
int x,y, pitch;
|
int x,y, pitch;
|
||||||
unsigned short *line, *pixel;
|
unsigned short *line, *pixel;
|
||||||
@ -292,7 +657,7 @@ static void Convert565To555le(SDL_Surface *surface)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void Convert565le(SDL_Surface *surface)
|
static void Convert565le(_THIS, SDL_Surface *surface)
|
||||||
{
|
{
|
||||||
int x,y, pitch;
|
int x,y, pitch;
|
||||||
unsigned short *line, *pixel;
|
unsigned short *line, *pixel;
|
||||||
@ -311,7 +676,7 @@ static void Convert565le(SDL_Surface *surface)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void ConvertBGRAToABGR(SDL_Surface *surface)
|
static void ConvertBGRAToABGR(_THIS, SDL_Surface *surface)
|
||||||
{
|
{
|
||||||
int x,y, pitch;
|
int x,y, pitch;
|
||||||
unsigned long *line, *pixel;
|
unsigned long *line, *pixel;
|
||||||
|
@ -33,25 +33,49 @@
|
|||||||
#define _THIS SDL_VideoDevice *this
|
#define _THIS SDL_VideoDevice *this
|
||||||
|
|
||||||
struct SDL_PrivateGLData {
|
struct SDL_PrivateGLData {
|
||||||
/* to stop switching drivers while we have a valid context */
|
|
||||||
int gl_active;
|
int gl_active; /* to stop switching drivers while we have a valid context */
|
||||||
|
|
||||||
|
int gl_oldmesa; /* Old OpenGL support ? */
|
||||||
|
|
||||||
|
int gl_pixelsize; /* for CopyShadow functions */
|
||||||
|
|
||||||
|
Uint8 *gl_shadow; /* Shadow buffer for old implementations */
|
||||||
|
|
||||||
/* for unsupported OSMesa buffer formats */
|
/* for unsupported OSMesa buffer formats */
|
||||||
void (*ConvertSurface)(SDL_Surface *surface);
|
void (*ConvertSurface)(_THIS, SDL_Surface *surface);
|
||||||
|
|
||||||
|
/* to convert the shadow buffer to the screen format */
|
||||||
|
void (*CopyShadow)(_THIS, SDL_Surface *surface);
|
||||||
|
|
||||||
#ifdef HAVE_OPENGL
|
|
||||||
OSMesaContext ctx;
|
OSMesaContext ctx;
|
||||||
#endif
|
|
||||||
|
/* osmesa.ldg */
|
||||||
|
OSMesaContext (*OSMesaCreateContextExt)( GLenum format, GLint depthBits, GLint stencilBits, GLint accumBits, OSMesaContext sharelist);
|
||||||
|
void (*OSMesaDestroyContext)( OSMesaContext ctx );
|
||||||
|
GLboolean (*OSMesaMakeCurrent)( OSMesaContext ctx, void *buffer, GLenum type, GLsizei width, GLsizei height );
|
||||||
|
void (*OSMesaPixelStore)( GLint pname, GLint value );
|
||||||
|
void * (*OSMesaGetProcAddress)( const char *funcName );
|
||||||
|
void (*glGetIntegerv)( GLenum pname, GLint *value );
|
||||||
|
|
||||||
|
/* mesa_gl.ldg, tiny_gl.ldg */
|
||||||
|
void *(*OSMesaCreateLDG)( long format, long type, long width, long height );
|
||||||
|
void (*OSMesaDestroyLDG)(void);
|
||||||
};
|
};
|
||||||
|
|
||||||
/* Old variable names */
|
/* Variable names */
|
||||||
#define gl_active (this->gl_data->gl_active)
|
#define gl_active (this->gl_data->gl_active)
|
||||||
#define gl_ctx (this->gl_data->ctx)
|
#define gl_ctx (this->gl_data->ctx)
|
||||||
|
#define gl_oldmesa (this->gl_data->gl_oldmesa)
|
||||||
|
#define gl_pixelsize (this->gl_data->gl_pixelsize)
|
||||||
|
#define gl_shadow (this->gl_data->gl_shadow)
|
||||||
#define gl_convert (this->gl_data->ConvertSurface)
|
#define gl_convert (this->gl_data->ConvertSurface)
|
||||||
|
#define gl_copyshadow (this->gl_data->CopyShadow)
|
||||||
|
|
||||||
/* OpenGL functions */
|
/* OpenGL functions */
|
||||||
extern int SDL_AtariGL_Init(_THIS, SDL_Surface *current);
|
extern int SDL_AtariGL_Init(_THIS, SDL_Surface *current);
|
||||||
extern void SDL_AtariGL_Quit(_THIS);
|
extern void SDL_AtariGL_Quit(_THIS);
|
||||||
|
extern void SDL_AtariGL_InitPointers(_THIS);
|
||||||
|
|
||||||
extern int SDL_AtariGL_LoadLibrary(_THIS, const char *path);
|
extern int SDL_AtariGL_LoadLibrary(_THIS, const char *path);
|
||||||
extern void *SDL_AtariGL_GetProcAddress(_THIS, const char *proc);
|
extern void *SDL_AtariGL_GetProcAddress(_THIS, const char *proc);
|
||||||
|
@ -313,27 +313,11 @@ int GEM_VideoInit(_THIS, SDL_PixelFormat *vformat)
|
|||||||
if (GEM_version >= 0x0410) {
|
if (GEM_version >= 0x0410) {
|
||||||
short ap_gout[4], errorcode;
|
short ap_gout[4], errorcode;
|
||||||
|
|
||||||
#ifdef DEBUG_VIDEO_GEM
|
|
||||||
printf("sdl:video:gem: AES %02x.%02x\n", (GEM_version>>8) & 0xff, GEM_version & 0xff);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
GEM_wfeatures=0;
|
GEM_wfeatures=0;
|
||||||
errorcode=appl_getinfo(AES_WINDOW, &ap_gout[0], &ap_gout[1], &ap_gout[2], &ap_gout[3]);
|
errorcode=appl_getinfo(AES_WINDOW, &ap_gout[0], &ap_gout[1], &ap_gout[2], &ap_gout[3]);
|
||||||
#ifdef DEBUG_VIDEO_GEM
|
|
||||||
printf("sdl:video:gem: appl_getinfo() returned 0x%04x\n", errorcode);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
if (errorcode==0) {
|
if (errorcode==0) {
|
||||||
GEM_wfeatures=ap_gout[0];
|
GEM_wfeatures=ap_gout[0];
|
||||||
|
|
||||||
#ifdef DEBUG_VIDEO_GEM
|
|
||||||
printf("sdl:video:gem: AES wind_*() modes: 0x%04x\n", GEM_wfeatures);
|
|
||||||
printf("sdl:video:gem: AES window behaviours: 0x%04x\n", ap_gout[3]);
|
|
||||||
} else {
|
|
||||||
printf("sdl:video:gem: apgout[]={0x%04x,0x%04x,0x%04x,0x%04x}\n",
|
|
||||||
ap_gout[0], ap_gout[1], ap_gout[1], ap_gout[3]
|
|
||||||
);
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -468,8 +452,8 @@ int GEM_VideoInit(_THIS, SDL_PixelFormat *vformat)
|
|||||||
|
|
||||||
SDL_modelist[1] = NULL;
|
SDL_modelist[1] = NULL;
|
||||||
|
|
||||||
#ifdef DEBUG_VIDEO_GEM
|
#ifdef HAVE_OPENGL
|
||||||
printf("sdl:video:gem: VideoInit(): done\n");
|
SDL_AtariGL_InitPointers(this);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* We're done! */
|
/* We're done! */
|
||||||
@ -492,7 +476,9 @@ SDL_Rect **GEM_ListModes(_THIS, SDL_PixelFormat *format, Uint32 flags)
|
|||||||
static void GEM_FreeBuffers(_THIS)
|
static void GEM_FreeBuffers(_THIS)
|
||||||
{
|
{
|
||||||
#ifdef HAVE_OPENGL
|
#ifdef HAVE_OPENGL
|
||||||
SDL_AtariGL_Quit(this);
|
if (gl_active) {
|
||||||
|
SDL_AtariGL_Quit(this);
|
||||||
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* Release buffer */
|
/* Release buffer */
|
||||||
@ -1290,12 +1276,11 @@ static void refresh_window(_THIS, int winhandle, short *rect)
|
|||||||
|
|
||||||
static void GEM_GL_SwapBuffers(_THIS)
|
static void GEM_GL_SwapBuffers(_THIS)
|
||||||
{
|
{
|
||||||
if (gl_ctx == NULL) {
|
if (gl_active) {
|
||||||
return;
|
gl_copyshadow(this, this->screen);
|
||||||
|
gl_convert(this, this->screen);
|
||||||
|
GEM_FlipHWSurface(this, this->screen);
|
||||||
}
|
}
|
||||||
|
|
||||||
gl_convert(this->screen);
|
|
||||||
GEM_FlipHWSurface(this, this->screen);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -411,6 +411,10 @@ static int XBIOS_VideoInit(_THIS, SDL_PixelFormat *vformat)
|
|||||||
/* Init chunky to planar routine */
|
/* Init chunky to planar routine */
|
||||||
SDL_Atari_C2pConvert = SDL_Atari_C2pConvert8;
|
SDL_Atari_C2pConvert = SDL_Atari_C2pConvert8;
|
||||||
|
|
||||||
|
#ifdef HAVE_OPENGL
|
||||||
|
SDL_AtariGL_InitPointers(this);
|
||||||
|
#endif
|
||||||
|
|
||||||
/* We're done! */
|
/* We're done! */
|
||||||
return(0);
|
return(0);
|
||||||
}
|
}
|
||||||
@ -431,7 +435,9 @@ static void XBIOS_FreeBuffers(_THIS)
|
|||||||
int i;
|
int i;
|
||||||
|
|
||||||
#ifdef HAVE_OPENGL
|
#ifdef HAVE_OPENGL
|
||||||
SDL_AtariGL_Quit(this);
|
if (gl_active) {
|
||||||
|
SDL_AtariGL_Quit(this);
|
||||||
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
for (i=0;i<2;i++) {
|
for (i=0;i<2;i++) {
|
||||||
@ -876,12 +882,12 @@ static void XBIOS_VideoQuit(_THIS)
|
|||||||
|
|
||||||
static void XBIOS_GL_SwapBuffers(_THIS)
|
static void XBIOS_GL_SwapBuffers(_THIS)
|
||||||
{
|
{
|
||||||
if (gl_ctx == NULL) {
|
if (gl_active) {
|
||||||
return;
|
gl_copyshadow(this, this->screen);
|
||||||
|
gl_convert(this, this->screen);
|
||||||
|
XBIOS_FlipHWSurface(this, this->screen);
|
||||||
|
SDL_AtariGL_MakeCurrent(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
XBIOS_FlipHWSurface(this, this->screen);
|
|
||||||
SDL_AtariGL_MakeCurrent(this);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -28,7 +28,7 @@ case "$target" in
|
|||||||
MATHLIB=""
|
MATHLIB=""
|
||||||
SYS_GL_LIBS="-lGL"
|
SYS_GL_LIBS="-lGL"
|
||||||
;;
|
;;
|
||||||
*-*-darwin* | *-*-mint* )
|
*-*-darwin* )
|
||||||
MATHLIB=""
|
MATHLIB=""
|
||||||
SYS_GL_LIBS=""
|
SYS_GL_LIBS=""
|
||||||
;;
|
;;
|
||||||
@ -38,6 +38,18 @@ case "$target" in
|
|||||||
fi
|
fi
|
||||||
SYS_GL_LIBS=""
|
SYS_GL_LIBS=""
|
||||||
;;
|
;;
|
||||||
|
*-*-mint*)
|
||||||
|
MATHLIB=""
|
||||||
|
AC_PATH_PROG(OSMESA_CONFIG, osmesa-config, no)
|
||||||
|
if test "x$OSMESA_CONFIG" = "xyes"; then
|
||||||
|
OSMESA_CFLAGS=`$OSMESA_CONFIG --cflags`
|
||||||
|
OSMESA_LIBS=`$OSMESA_CONFIG --libs`
|
||||||
|
CFLAGS="$CFLAGS $OSMESA_CFLAGS"
|
||||||
|
SYS_GL_LIBS="$OSMESA_LIBS"
|
||||||
|
else
|
||||||
|
SYS_GL_LIBS="-lOSMesa"
|
||||||
|
fi
|
||||||
|
;;
|
||||||
*)
|
*)
|
||||||
MATHLIB="-lm"
|
MATHLIB="-lm"
|
||||||
AC_PATH_X
|
AC_PATH_X
|
||||||
|
Loading…
Reference in New Issue
Block a user