Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 14 additions & 1 deletion src/gapi/gl.h
Original file line number Diff line number Diff line change
Expand Up @@ -300,7 +300,12 @@ extern struct retro_hw_render_callback hw_render;
#elif _OS_LINUX && !defined(__LIBRETRO_GLES__)
#include <GL/gl.h>
#include <GL/glext.h>
#if defined(USE_GLVND) // Modern GL on GNU/Linux is GLVND, and it uses EGL instead of GLX.
#include <EGL/egl.h>
extern EGLDisplay display;
#else
#include <GL/glx.h>
#endif
#elif __APPLE__
#ifdef _OS_IOS
#include <OpenGLES/ES2/gl.h>
Expand Down Expand Up @@ -376,7 +381,11 @@ extern struct retro_hw_render_callback hw_render;
#ifdef _OS_WIN
return (void*)wglGetProcAddress(name);
#elif _OS_LINUX && !(__LIBRETRO_GLES__)
#if defined(USE_GLVND)
return (void*)eglGetProcAddress(name);
#else
return (void*)glXGetProcAddress((GLubyte*)name);
#endif
#elif __SDL2__
return (void*)SDL_GL_GetProcAddress(name);
#else // EGL
Expand All @@ -397,7 +406,7 @@ extern struct retro_hw_render_callback hw_render;
#ifdef _OS_WIN
typedef BOOL (WINAPI * PFNWGLSWAPINTERVALEXTPROC) (int interval);
PFNWGLSWAPINTERVALEXTPROC wglSwapIntervalEXT;
#elif _OS_LINUX
#elif _OS_LINUX && !defined(USE_GLVND)
typedef int (*PFNGLXSWAPINTERVALSGIPROC) (int interval);
PFNGLXSWAPINTERVALSGIPROC glXSwapIntervalSGI;
#endif
Expand Down Expand Up @@ -1693,7 +1702,11 @@ namespace GAPI {
#ifdef _OS_WIN
if (wglSwapIntervalEXT) wglSwapIntervalEXT(enable ? 1 : 0);
#elif _OS_LINUX
#if defined(USE_GLVND)
eglSwapInterval(display, enable ? 1 : 0);
#else
if (glXSwapIntervalSGI) glXSwapIntervalSGI(enable ? 1 : 0);
#endif
#elif defined(__SDL2__)
SDL_GL_SetSwapInterval(enable ? 1 : 0);
#elif defined(_OS_RPI) || defined(_OS_CLOVER) || defined(_OS_SWITCH)
Expand Down
9 changes: 9 additions & 0 deletions src/platform/libretro/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,16 @@ ifeq ($(platform), unix)
TARGET := $(TARGET_NAME)_libretro.so
fpic := -fPIC
SHARED := -shared -Wl,--version-script=link.T -Wl,--no-undefined
##MACMAC
ifeq ($(GLVND), 1)
GL_LIB := -lOpenGL
LIBS += -lEGL
CXXFLAGS += -DUSE_GLVND
CFLAGS += -DUSE_GLVND
else
GL_LIB := -lGL
endif
##MACMAC
LIBS += -lpthread
CFLAGS += -D_GNU_SOURCE
CXXFLAGS += -D_GNU_SOURCE
Expand Down
4 changes: 4 additions & 0 deletions src/platform/libretro/main.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -62,6 +62,10 @@ static retro_input_poll_t input_poll_cb;
static retro_input_state_t input_cb;
static retro_set_rumble_state_t set_rumble_cb;

#ifdef USE_GLVND
EGLDisplay display;
#endif

#ifdef _WIN32
#include <windows.h>
#include <mmsystem.h>
Expand Down