mirror of
https://github.com/dolphin-emu/dolphin.git
synced 2025-02-02 02:52:30 +02:00
839df31347
This branch is the final step of fully supporting both OpenGL and OpenGL ES in the same binary. This of course only applies to EGL and won't work for GLX/AGL/WGL since they don't really support GL ES. The changes here actually aren't too terrible, basically change every #ifdef USE_GLES to a runtime check. This adds a DetectMode() function to the EGL context backend. EGL will iterate through each of the configs and check for GL, GLES3_KHR, and GLES2 bits After that it'll change the mode from _DETECT to whichever one is the best supported. After that point we'll just create a context with the mode that was detected
59 lines
1.2 KiB
C++
59 lines
1.2 KiB
C++
// Copyright 2013 Dolphin Emulator Project
|
|
// Licensed under GPLv2
|
|
// Refer to the license.txt file included.
|
|
|
|
#ifndef _GLINTERFACE_H_
|
|
#define _GLINTERFACE_H_
|
|
|
|
#if USE_EGL
|
|
#include "GLInterface/Platform.h"
|
|
#else
|
|
|
|
#include "Thread.h"
|
|
#if defined(USE_EGL) && USE_EGL
|
|
#include "GLInterface/EGL.h"
|
|
#elif defined(__APPLE__)
|
|
#include "GLInterface/AGL.h"
|
|
#elif defined(_WIN32)
|
|
#include "GLInterface/WGL.h"
|
|
#elif defined(HAVE_X11) && HAVE_X11
|
|
#include "GLInterface/GLX.h"
|
|
#include <GL/glx.h>
|
|
#else
|
|
#error Platform doesnt have a GLInterface
|
|
#endif
|
|
|
|
|
|
typedef struct {
|
|
#if defined(USE_EGL) && USE_EGL // This is currently a X11/EGL implementation for desktop
|
|
int screen;
|
|
EGLSurface egl_surf;
|
|
EGLContext egl_ctx;
|
|
EGLDisplay egl_dpy;
|
|
int x, y;
|
|
unsigned int width, height;
|
|
#elif defined(__APPLE__)
|
|
NSView *cocoaWin;
|
|
NSOpenGLContext *cocoaCtx;
|
|
#elif defined(HAVE_X11) && HAVE_X11
|
|
int screen;
|
|
Window win;
|
|
Window parent;
|
|
// dpy used for glx stuff, evdpy for window events etc.
|
|
// evdpy is to be used by XEventThread only
|
|
Display *dpy, *evdpy;
|
|
XVisualInfo *vi;
|
|
GLXContext ctx;
|
|
XSetWindowAttributes attr;
|
|
std::thread xEventThread;
|
|
int x, y;
|
|
unsigned int width, height;
|
|
#endif
|
|
} GLWindow;
|
|
|
|
extern cInterfaceBase *GLInterface;
|
|
extern GLWindow GLWin;
|
|
|
|
#endif
|
|
#endif
|