Commit 3cd0ca3c by Corentin Wallez

Completely isolate GLX in FunctionsGLX

This makes it so it is the only file including glx.h. BUG=angleproject:892 Change-Id: I5c45b659ec102b7a2c92e010a6843fa21b7c664b Reviewed-on: https://chromium-review.googlesource.com/271418Reviewed-by: 's avatarJamie Madill <jmadill@chromium.org> Reviewed-by: 's avatarGeoff Lang <geofflang@chromium.org> Tested-by: 's avatarCorentin Wallez <cwallez@chromium.org>
parent 7d7f8c44
...@@ -6,10 +6,8 @@ ...@@ -6,10 +6,8 @@
// DisplayGLX.h: GLX implementation of egl::Display // DisplayGLX.h: GLX implementation of egl::Display
#define GLX_GLXEXT_PROTOTYPES
#include "libANGLE/renderer/gl/glx/DisplayGLX.h" #include "libANGLE/renderer/gl/glx/DisplayGLX.h"
#include <GL/glxext.h>
#include <EGL/eglext.h> #include <EGL/eglext.h>
#include <algorithm> #include <algorithm>
...@@ -26,7 +24,7 @@ namespace rx ...@@ -26,7 +24,7 @@ namespace rx
class FunctionsGLGLX : public FunctionsGL class FunctionsGLGLX : public FunctionsGL
{ {
public: public:
FunctionsGLGLX(PFNGLXGETPROCADDRESSPROC getProc) FunctionsGLGLX(PFNGETPROCPROC getProc)
: mGetProc(getProc) : mGetProc(getProc)
{ {
} }
...@@ -38,10 +36,10 @@ class FunctionsGLGLX : public FunctionsGL ...@@ -38,10 +36,10 @@ class FunctionsGLGLX : public FunctionsGL
private: private:
void *loadProcAddress(const std::string &function) override void *loadProcAddress(const std::string &function) override
{ {
return reinterpret_cast<void*>(mGetProc(reinterpret_cast<const unsigned char*>(function.c_str()))); return reinterpret_cast<void*>(mGetProc(function.c_str()));
} }
PFNGLXGETPROCADDRESSPROC mGetProc; PFNGETPROCPROC mGetProc;
}; };
DisplayGLX::DisplayGLX() DisplayGLX::DisplayGLX()
...@@ -95,7 +93,7 @@ egl::Error DisplayGLX::initialize(egl::Display *display) ...@@ -95,7 +93,7 @@ egl::Error DisplayGLX::initialize(egl::Display *display)
} }
} }
GLXFBConfig contextConfig; glx::FBConfig contextConfig;
// When glXMakeCurrent is called, the context and the surface must be // When glXMakeCurrent is called, the context and the surface must be
// compatible which in glX-speak means that their config have the same // compatible which in glX-speak means that their config have the same
// color buffer type, are both RGBA or ColorIndex, and their buffers have // color buffer type, are both RGBA or ColorIndex, and their buffers have
...@@ -124,7 +122,7 @@ egl::Error DisplayGLX::initialize(egl::Display *display) ...@@ -124,7 +122,7 @@ egl::Error DisplayGLX::initialize(egl::Display *display)
GLX_CONFIG_CAVEAT, GLX_NONE, GLX_CONFIG_CAVEAT, GLX_NONE,
None None
}; };
GLXFBConfig* candidates = mGLX.chooseFBConfig(attribList, &nConfigs); glx::FBConfig* candidates = mGLX.chooseFBConfig(attribList, &nConfigs);
if (nConfigs == 0) if (nConfigs == 0)
{ {
XFree(candidates); XFree(candidates);
...@@ -184,7 +182,7 @@ SurfaceImpl *DisplayGLX::createWindowSurface(const egl::Config *configuration, ...@@ -184,7 +182,7 @@ SurfaceImpl *DisplayGLX::createWindowSurface(const egl::Config *configuration,
const egl::AttributeMap &attribs) const egl::AttributeMap &attribs)
{ {
ASSERT(configIdToGLXConfig.count(configuration->configID) > 0); ASSERT(configIdToGLXConfig.count(configuration->configID) > 0);
GLXFBConfig fbConfig = configIdToGLXConfig[configuration->configID]; glx::FBConfig fbConfig = configIdToGLXConfig[configuration->configID];
return new WindowSurfaceGLX(mGLX, window, mGLX.getDisplay(), mContext, fbConfig); return new WindowSurfaceGLX(mGLX, window, mGLX.getDisplay(), mContext, fbConfig);
} }
...@@ -193,7 +191,7 @@ SurfaceImpl *DisplayGLX::createPbufferSurface(const egl::Config *configuration, ...@@ -193,7 +191,7 @@ SurfaceImpl *DisplayGLX::createPbufferSurface(const egl::Config *configuration,
const egl::AttributeMap &attribs) const egl::AttributeMap &attribs)
{ {
ASSERT(configIdToGLXConfig.count(configuration->configID) > 0); ASSERT(configIdToGLXConfig.count(configuration->configID) > 0);
GLXFBConfig fbConfig = configIdToGLXConfig[configuration->configID]; glx::FBConfig fbConfig = configIdToGLXConfig[configuration->configID];
EGLint width = attribs.get(EGL_WIDTH, 0); EGLint width = attribs.get(EGL_WIDTH, 0);
EGLint height = attribs.get(EGL_HEIGHT, 0); EGLint height = attribs.get(EGL_HEIGHT, 0);
...@@ -241,11 +239,11 @@ egl::ConfigSet DisplayGLX::generateConfigs() const ...@@ -241,11 +239,11 @@ egl::ConfigSet DisplayGLX::generateConfigs() const
}; };
int glxConfigCount; int glxConfigCount;
GLXFBConfig *glxConfigs = mGLX.chooseFBConfig(attribList, &glxConfigCount); glx::FBConfig *glxConfigs = mGLX.chooseFBConfig(attribList, &glxConfigCount);
for (int i = 0; i < glxConfigCount; i++) for (int i = 0; i < glxConfigCount; i++)
{ {
GLXFBConfig glxConfig = glxConfigs[i]; glx::FBConfig glxConfig = glxConfigs[i];
egl::Config config; egl::Config config;
// Native stuff // Native stuff
...@@ -407,7 +405,7 @@ void DisplayGLX::generateCaps(egl::Caps *outCaps) const ...@@ -407,7 +405,7 @@ void DisplayGLX::generateCaps(egl::Caps *outCaps) const
outCaps->textureNPOT = true; outCaps->textureNPOT = true;
} }
int DisplayGLX::getGLXFBConfigAttrib(GLXFBConfig config, int attrib) const int DisplayGLX::getGLXFBConfigAttrib(glx::FBConfig config, int attrib) const
{ {
int result; int result;
mGLX.getFBConfigAttrib(config, attrib, &result); mGLX.getFBConfigAttrib(config, attrib, &result);
......
...@@ -59,16 +59,16 @@ class DisplayGLX : public DisplayGL ...@@ -59,16 +59,16 @@ class DisplayGLX : public DisplayGL
void generateExtensions(egl::DisplayExtensions *outExtensions) const override; void generateExtensions(egl::DisplayExtensions *outExtensions) const override;
void generateCaps(egl::Caps *outCaps) const override; void generateCaps(egl::Caps *outCaps) const override;
int getGLXFBConfigAttrib(GLXFBConfig config, int attrib) const; int getGLXFBConfigAttrib(glx::FBConfig config, int attrib) const;
FunctionsGL *mFunctionsGL; FunctionsGL *mFunctionsGL;
//TODO(cwallez) yuck, change generateConfigs to be non-const or add a userdata member to egl::Config? //TODO(cwallez) yuck, change generateConfigs to be non-const or add a userdata member to egl::Config?
mutable std::map<int, GLXFBConfig> configIdToGLXConfig; mutable std::map<int, glx::FBConfig> configIdToGLXConfig;
GLXContext mContext; glx::Context mContext;
// A pbuffer the context is current on during ANGLE initialization // A pbuffer the context is current on during ANGLE initialization
GLXPbuffer mDummyPbuffer; glx::Pbuffer mDummyPbuffer;
FunctionsGLX mGLX; FunctionsGLX mGLX;
egl::Display *mEGLDisplay; egl::Display *mEGLDisplay;
......
...@@ -14,7 +14,7 @@ ...@@ -14,7 +14,7 @@
#include "common/angleutils.h" #include "common/angleutils.h"
#include "libANGLE/Error.h" #include "libANGLE/Error.h"
#include "libANGLE/renderer/gl/glx/functionsglx_typedefs.h" #include "libANGLE/renderer/gl/glx/platform_glx.h"
namespace rx namespace rx
{ {
...@@ -37,12 +37,12 @@ class FunctionsGLX : angle::NonCopyable ...@@ -37,12 +37,12 @@ class FunctionsGLX : angle::NonCopyable
Display *getDisplay() const; Display *getDisplay() const;
int getScreen() const; int getScreen() const;
PFNGLXGETPROCADDRESSPROC getProc; PFNGETPROCPROC getProc;
// GLX 1.0 // GLX 1.0
void destroyContext(GLXContext context) const; void destroyContext(glx::Context context) const;
Bool makeCurrent(GLXDrawable drawable, GLXContext context) const; Bool makeCurrent(glx::Drawable drawable, glx::Context context) const;
void swapBuffers(GLXDrawable drawable) const; void swapBuffers(glx::Drawable drawable) const;
Bool queryExtension(int *errorBase, int *event) const; Bool queryExtension(int *errorBase, int *event) const;
Bool queryVersion(int *major, int *minor) const; Bool queryVersion(int *major, int *minor) const;
void waitX() const; void waitX() const;
...@@ -52,51 +52,28 @@ class FunctionsGLX : angle::NonCopyable ...@@ -52,51 +52,28 @@ class FunctionsGLX : angle::NonCopyable
const char *queryExtensionsString() const; const char *queryExtensionsString() const;
// GLX 1.3 // GLX 1.3
GLXFBConfig *getFBConfigs(int *nElements) const; glx::FBConfig *getFBConfigs(int *nElements) const;
GLXFBConfig *chooseFBConfig(const int *attribList, int *nElements) const; glx::FBConfig *chooseFBConfig(const int *attribList, int *nElements) const;
int getFBConfigAttrib(GLXFBConfig config, int attribute, int *value) const; int getFBConfigAttrib(glx::FBConfig config, int attribute, int *value) const;
XVisualInfo *getVisualFromFBConfig(GLXFBConfig config) const; XVisualInfo *getVisualFromFBConfig(glx::FBConfig config) const;
GLXWindow createWindow(GLXFBConfig config, Window window, const int *attribList) const; glx::Window createWindow(glx::FBConfig config, Window window, const int *attribList) const;
void destroyWindow(GLXWindow window) const; void destroyWindow(glx::Window window) const;
GLXPbuffer createPbuffer(GLXFBConfig config, const int *attribList) const; glx::Pbuffer createPbuffer(glx::FBConfig config, const int *attribList) const;
void destroyPbuffer(GLXPbuffer pbuffer) const; void destroyPbuffer(glx::Pbuffer pbuffer) const;
void queryDrawable(GLXDrawable drawable, int attribute, unsigned int *value) const; void queryDrawable(glx::Drawable drawable, int attribute, unsigned int *value) const;
// GLX_ARB_create_context // GLX_ARB_create_context
GLXContext createContextAttribsARB(GLXFBConfig config, GLXContext shareContext, Bool direct, const int *attribList) const; glx::Context createContextAttribsARB(glx::FBConfig config, glx::Context shareContext, Bool direct, const int *attribList) const;
private: private:
struct GLXFunctionTable;
void *mLibHandle; void *mLibHandle;
Display *mXDisplay; Display *mXDisplay;
int mXScreen; int mXScreen;
GLXFunctionTable *mFnPtrs;
std::vector<std::string> mExtensions; std::vector<std::string> mExtensions;
// GLX 1.0
PFNGLXDESTROYCONTEXTPROC mDestroyContextPtr;
PFNGLXMAKECURRENTPROC mMakeCurrentPtr;
PFNGLXSWAPBUFFERSPROC mSwapBuffersPtr;
PFNGLXQUERYEXTENSIONPROC mQueryExtensionPtr;
PFNGLXQUERYVERSIONPROC mQueryVersionPtr;
PFNGLXWAITXPROC mWaitXPtr;
PFNGLXWAITGLPROC mWaitGLPtr;
// GLX 1.1
PFNGLXQUERYEXTENSIONSSTRINGPROC mQueryExtensionsStringPtr;
//GLX 1.3
PFNGLXGETFBCONFIGSPROC mGetFBConfigsPtr;
PFNGLXCHOOSEFBCONFIGPROC mChooseFBConfigPtr;
PFNGLXGETFBCONFIGATTRIBPROC mGetFBConfigAttribPtr;
PFNGLXGETVISUALFROMFBCONFIGPROC mGetVisualFromFBConfigPtr;
PFNGLXCREATEWINDOWPROC mCreateWindowPtr;
PFNGLXDESTROYWINDOWPROC mDestroyWindowPtr;
PFNGLXCREATEPBUFFERPROC mCreatePbufferPtr;
PFNGLXDESTROYPBUFFERPROC mDestroyPbufferPtr;
PFNGLXQUERYDRAWABLEPROC mQueryDrawablePtr;
// GLX_ARB_create_context
PFNGLXCREATECONTEXTATTRIBSARBPROC mCreateContextAttribsARBPtr;
}; };
} }
......
...@@ -15,7 +15,7 @@ namespace rx ...@@ -15,7 +15,7 @@ namespace rx
{ {
PbufferSurfaceGLX::PbufferSurfaceGLX(EGLint width, EGLint height, bool largest, const FunctionsGLX &glx, PbufferSurfaceGLX::PbufferSurfaceGLX(EGLint width, EGLint height, bool largest, const FunctionsGLX &glx,
GLXContext context, GLXFBConfig fbConfig) glx::Context context, glx::FBConfig fbConfig)
: SurfaceGL(), : SurfaceGL(),
mWidth(width), mWidth(width),
mHeight(height), mHeight(height),
......
...@@ -12,8 +12,6 @@ ...@@ -12,8 +12,6 @@
#include "libANGLE/renderer/gl/SurfaceGL.h" #include "libANGLE/renderer/gl/SurfaceGL.h"
#include "libANGLE/renderer/gl/glx/platform_glx.h" #include "libANGLE/renderer/gl/glx/platform_glx.h"
#include <GL/glxext.h>
namespace rx namespace rx
{ {
...@@ -23,7 +21,7 @@ class PbufferSurfaceGLX : public SurfaceGL ...@@ -23,7 +21,7 @@ class PbufferSurfaceGLX : public SurfaceGL
{ {
public: public:
PbufferSurfaceGLX(EGLint width, EGLint height, bool largest, const FunctionsGLX &glx, PbufferSurfaceGLX(EGLint width, EGLint height, bool largest, const FunctionsGLX &glx,
GLXContext context, GLXFBConfig fbConfig); glx::Context context, glx::FBConfig fbConfig);
~PbufferSurfaceGLX() override; ~PbufferSurfaceGLX() override;
egl::Error initialize(); egl::Error initialize();
...@@ -47,9 +45,9 @@ class PbufferSurfaceGLX : public SurfaceGL ...@@ -47,9 +45,9 @@ class PbufferSurfaceGLX : public SurfaceGL
bool mLargest; bool mLargest;
const FunctionsGLX &mGLX; const FunctionsGLX &mGLX;
GLXContext mContext; glx::Context mContext;
GLXFBConfig mFBConfig; glx::FBConfig mFBConfig;
GLXPbuffer mPbuffer; glx::Pbuffer mPbuffer;
}; };
} }
......
...@@ -15,7 +15,7 @@ ...@@ -15,7 +15,7 @@
namespace rx namespace rx
{ {
WindowSurfaceGLX::WindowSurfaceGLX(const FunctionsGLX &glx, EGLNativeWindowType window, Display *display, GLXContext context, GLXFBConfig fbConfig) WindowSurfaceGLX::WindowSurfaceGLX(const FunctionsGLX &glx, Window window, Display *display, glx::Context context, glx::FBConfig fbConfig)
: SurfaceGL(), : SurfaceGL(),
mGLX(glx), mGLX(glx),
mParent(window), mParent(window),
......
...@@ -20,7 +20,7 @@ class FunctionsGLX; ...@@ -20,7 +20,7 @@ class FunctionsGLX;
class WindowSurfaceGLX : public SurfaceGL class WindowSurfaceGLX : public SurfaceGL
{ {
public: public:
WindowSurfaceGLX(const FunctionsGLX &glx, Window window, Display *display, GLXContext context, GLXFBConfig fbConfig); WindowSurfaceGLX(const FunctionsGLX &glx, Window window, Display *display, glx::Context context, glx::FBConfig fbConfig);
~WindowSurfaceGLX() override; ~WindowSurfaceGLX() override;
egl::Error initialize(); egl::Error initialize();
...@@ -41,10 +41,10 @@ class WindowSurfaceGLX : public SurfaceGL ...@@ -41,10 +41,10 @@ class WindowSurfaceGLX : public SurfaceGL
const FunctionsGLX &mGLX; const FunctionsGLX &mGLX;
Window mParent; Window mParent;
Display *mDisplay; Display *mDisplay;
GLXContext mContext; glx::Context mContext;
GLXFBConfig mFBConfig; glx::FBConfig mFBConfig;
Window mWindow; Window mWindow;
GLXWindow mGLXWindow; glx::Window mGLXWindow;
}; };
} }
......
...@@ -9,14 +9,164 @@ ...@@ -9,14 +9,164 @@
#ifndef LIBANGLE_RENDERER_GL_GLX_PLATFORMGLX_H_ #ifndef LIBANGLE_RENDERER_GL_GLX_PLATFORMGLX_H_
#define LIBANGLE_RENDERER_GL_GLX_PLATFORMGLX_H_ #define LIBANGLE_RENDERER_GL_GLX_PLATFORMGLX_H_
// HACK(cwallez) this is a horrible hack to prevent glx from including GL/glext.h #if !defined(ANGLE_SKIP_GLX_DEFINES)
// as it causes a bunch of conflicts (macro redefinition, etc) with GLES2/gl2ext.h // GLX 1.0
#define __glext_h_ 1 #define GLX_USE_GL 1
#include <GL/glx.h> #define GLX_BUFFER_SIZE 2
#undef __glext_h_ #define GLX_LEVEL 3
#define GLX_RGBA 4
#define GLX_DOUBLEBUFFER 5
#define GLX_STEREO 6
#define GLX_AUX_BUFFERS 7
#define GLX_RED_SIZE 8
#define GLX_GREEN_SIZE 9
#define GLX_BLUE_SIZE 10
#define GLX_ALPHA_SIZE 11
#define GLX_DEPTH_SIZE 12
#define GLX_STENCIL_SIZE 13
#define GLX_ACCUM_RED_SIZE 14
#define GLX_ACCUM_GREEN_SIZE 15
#define GLX_ACCUM_BLUE_SIZE 16
#define GLX_ACCUM_ALPHA_SIZE 17
#define GLX_BAD_SCREEN 1
#define GLX_BAD_ATTRIBUTE 2
#define GLX_NO_EXTENSION 3
#define GLX_BAD_VISUAL 4
#define GLX_BAD_CONTEXT 5
#define GLX_BAD_VALUE 6
#define GLX_BAD_ENUM 7
// GLX 1.1
#define GLX_VENDOR 1
#define GLX_VERSION 2
#define GLX_EXTENSIONS 3
// GLX 1.3
#define GLX_CONFIG_CAVEAT 0x20
#define GLX_DONT_CARE 0xFFFFFFFF
#define GLX_X_VISUAL_TYPE 0x22
#define GLX_TRANSPARENT_TYPE 0x23
#define GLX_TRANSPARENT_INDEX_VALUE 0x24
#define GLX_TRANSPARENT_RED_VALUE 0x25
#define GLX_TRANSPARENT_GREEN_VALUE 0x26
#define GLX_TRANSPARENT_BLUE_VALUE 0x27
#define GLX_TRANSPARENT_ALPHA_VALUE 0x28
#define GLX_WINDOW_BIT 0x00000001
#define GLX_PIXMAP_BIT 0x00000002
#define GLX_PBUFFER_BIT 0x00000004
#define GLX_AUX_BUFFERS_BIT 0x00000010
#define GLX_FRONT_LEFT_BUFFER_BIT 0x00000001
#define GLX_FRONT_RIGHT_BUFFER_BIT 0x00000002
#define GLX_BACK_LEFT_BUFFER_BIT 0x00000004
#define GLX_BACK_RIGHT_BUFFER_BIT 0x00000008
#define GLX_DEPTH_BUFFER_BIT 0x00000020
#define GLX_STENCIL_BUFFER_BIT 0x00000040
#define GLX_ACCUM_BUFFER_BIT 0x00000080
#define GLX_NONE 0x8000
#define GLX_SLOW_CONFIG 0x8001
#define GLX_TRUE_COLOR 0x8002
#define GLX_DIRECT_COLOR 0x8003
#define GLX_PSEUDO_COLOR 0x8004
#define GLX_STATIC_COLOR 0x8005
#define GLX_GRAY_SCALE 0x8006
#define GLX_STATIC_GRAY 0x8007
#define GLX_TRANSPARENT_RGB 0x8008
#define GLX_TRANSPARENT_INDEX 0x8009
#define GLX_VISUAL_ID 0x800B
#define GLX_SCREEN 0x800C
#define GLX_NON_CONFORMANT_CONFIG 0x800D
#define GLX_DRAWABLE_TYPE 0x8010
#define GLX_RENDER_TYPE 0x8011
#define GLX_X_RENDERABLE 0x8012
#define GLX_FBCONFIG_ID 0x8013
#define GLX_RGBA_TYPE 0x8014
#define GLX_COLOR_INDEX_TYPE 0x8015
#define GLX_MAX_PBUFFER_WIDTH 0x8016
#define GLX_MAX_PBUFFER_HEIGHT 0x8017
#define GLX_MAX_PBUFFER_PIXELS 0x8018
#define GLX_PRESERVED_CONTENTS 0x801B
#define GLX_LARGEST_PBUFFER 0x801C
#define GLX_WIDTH 0x801D
#define GLX_HEIGHT 0x801E
#define GLX_EVENT_MASK 0x801F
#define GLX_DAMAGED 0x8020
#define GLX_SAVED 0x8021
#define GLX_WINDOW 0x8022
#define GLX_PBUFFER 0x8023
#define GLX_PBUFFER_HEIGHT 0x8040
#define GLX_PBUFFER_WIDTH 0x8041
#define GLX_RGBA_BIT 0x00000001
#define GLX_COLOR_INDEX_BIT 0x00000002
#define GLX_PBUFFER_CLOBBER_MASK 0x08000000
// GLX 1.4
#define GLX_SAMPLE_BUFFERS 0x186a0
#define GLX_SAMPLES 0x186a1
// GLX_ARB_create_context
#define GLX_CONTEXT_DEBUG_BIT_ARB 0x00000001
#define GLX_CONTEXT_FORWARD_COMPATIBLE_BIT_ARB 0x00000002
#define GLX_CONTEXT_MAJOR_VERSION_ARB 0x2091
#define GLX_CONTEXT_MINOR_VERSION_ARB 0x2092
#define GLX_CONTEXT_FLAGS_ARB 0x2094
// GLX_EXT_texture_from_pixmap
#define GLX_TEXTURE_1D_BIT_EXT 0x00000001
#define GLX_TEXTURE_2D_BIT_EXT 0x00000002
#define GLX_TEXTURE_RECTANGLE_BIT_EXT 0x00000004
#define GLX_BIND_TO_TEXTURE_RGB_EXT 0x20D0
#define GLX_BIND_TO_TEXTURE_RGBA_EXT 0x20D1
#define GLX_BIND_TO_MIPMAP_TEXTURE_EXT 0x20D2
#define GLX_BIND_TO_TEXTURE_TARGETS_EXT 0x20D3
#define GLX_Y_INVERTED_EXT 0x20D4
#define GLX_TEXTURE_FORMAT_EXT 0x20D5
#define GLX_TEXTURE_TARGET_EXT 0x20D6
#define GLX_MIPMAP_TEXTURE_EXT 0x20D7
#define GLX_TEXTURE_FORMAT_NONE_EXT 0x20D8
#define GLX_TEXTURE_FORMAT_RGB_EXT 0x20D9
#define GLX_TEXTURE_FORMAT_RGBA_EXT 0x20DA
#define GLX_TEXTURE_1D_EXT 0x20DB
#define GLX_TEXTURE_2D_EXT 0x20DC
#define GLX_TEXTURE_RECTANGLE_EXT 0x20DD
#define GLX_FRONT_LEFT_EXT 0x20DE
#define GLX_FRONT_RIGHT_EXT 0x20DF
#define GLX_BACK_LEFT_EXT 0x20E0
#define GLX_BACK_RIGHT_EXT 0x20E1
#define GLX_FRONT_EXT 0x20DE
#define GLX_BACK_EXT 0x20E0
#define GLX_AUX0_EXT 0x20E2
#define GLX_AUX1_EXT 0x20E3
#define GLX_AUX2_EXT 0x20E4
#define GLX_AUX3_EXT 0x20E5
#define GLX_AUX4_EXT 0x20E6
#define GLX_AUX5_EXT 0x20E7
#define GLX_AUX6_EXT 0x20E8
#define GLX_AUX7_EXT 0x20E9
#define GLX_AUX8_EXT 0x20EA
#define GLX_AUX9_EXT 0x20EB
#endif // !defined(ANGLE_SKIP_GLX_DEFINES)
// GLX typedefs depend on the X headers
#include <X11/Xlib.h> #include <X11/Xlib.h>
#include <X11/Xresource.h> #include <X11/Xresource.h>
#include <X11/Xutil.h> #include <X11/Xutil.h>
// GLX typedefs
namespace glx
{
typedef void *Context;
typedef void *FBConfig;
typedef XID FBConfigID;
typedef XID ContextID;
typedef XID Window;
typedef XID Pbuffer;
typedef XID Pixmap;
typedef XID Drawable;
}
typedef void* (*PFNGETPROCPROC) (const char *name);
#endif // LIBANGLE_RENDERER_GL_GLX_PLATFORMGLX_H_ #endif // LIBANGLE_RENDERER_GL_GLX_PLATFORMGLX_H_
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment