]> git.notmuchmail.org Git - apitrace/blobdiff - glimports.hpp
Add "apitrace trim" command.
[apitrace] / glimports.hpp
index 5277a0aabd2cc6871f0bc253e28a7dd571563bcc..9d60c82c26ff3b915b80ebdb99f20f66c38d9b35 100644 (file)
 #ifndef _GLIMPORTS_HPP_
 #define _GLIMPORTS_HPP_
 
-#ifdef _WIN32
+
+// Prevent including MacOSX's glext.h which lives in OpenGL/glext.h and not
+// GL/glext.h
+#define __glext_h_
+
+
+// Some functions take GLenum disguised as GLint.  Apple noticed and fixed it
+// in the Mac OS X 10.6.x gl.h headers.  Regardless, C++ typechecking rules
+// force the wrappers to match the prototype precisely.
+#if defined(__APPLE__)
+#  include <AvailabilityMacros.h> // for MAC_OS_X_VERSION_10_7
+#  if defined(MAC_OS_X_VERSION_10_7)
+#    define GLenum_int GLint
+#  else
+#    define GLenum_int GLenum
+#  endif
+#else
+#  define GLenum_int GLint
+#endif
+
+
+#if defined(_WIN32)
 
 #ifndef WIN32_LEAN_AND_MEAN
 #define WIN32_LEAN_AND_MEAN 1
 #endif
 
 #include <windows.h>
+#include <GL/gl.h>
 
-#else /* !_WIN32 */
+#elif defined(__APPLE__)
 
-#include <X11/Xlib.h>
+#include <OpenGL/gl.h>
 
-#endif /* !_WIN32 */
+#else
 
-// Prevent including system's glext.h
-#define __glext_h_
+#ifdef HAVE_X11
+#include <X11/Xlib.h>
+#endif
 
 #include <GL/gl.h>
 
+#endif /* !_WIN32 */
+
+
+// Include our own glext.h
 #undef __glext_h_
+#include <GL/glext.h>
 
-#include "glext/glext.h"
 
 #ifndef GL_TEXTURE_INDEX_SIZE_EXT
 #define GL_TEXTURE_INDEX_SIZE_EXT         0x80ED
 #endif
 
-#ifdef _WIN32
+// GL_NVX_gpu_memory_info
+#define GL_GPU_MEMORY_INFO_DEDICATED_VIDMEM_NVX          0x9047
+#define GL_GPU_MEMORY_INFO_TOTAL_AVAILABLE_MEMORY_NVX    0x9048
+#define GL_GPU_MEMORY_INFO_CURRENT_AVAILABLE_VIDMEM_NVX  0x9049
+#define GL_GPU_MEMORY_INFO_EVICTION_COUNT_NVX            0x904A
+#define GL_GPU_MEMORY_INFO_EVICTED_MEMORY_NVX            0x904B
 
-#include "glext/wglext.h"
+
+#if defined(_WIN32)
+
+#include <GL/wglext.h>
 
 #define GLAPIENTRY __stdcall
 
 #define PFD_SUPPORT_COMPOSITION 0x00008000
 #endif
 
-#ifdef __MINGW32__
+#ifndef WGL_SWAPMULTIPLE_MAX
 
 extern "C"
 typedef struct _WGLSWAP
@@ -81,16 +116,47 @@ typedef struct _WGLSWAP
 
 #define WGL_SWAPMULTIPLE_MAX 16
 
-#endif /* __MINGW32__ */
+#endif /* !WGL_SWAPMULTIPLE_MAX */
+
+#elif defined(__APPLE__)
+
+#include <OpenGL/OpenGL.h>
+#include <OpenGL/CGLIOSurface.h>
+#include <OpenGL/CGLDevice.h>
+
+#ifndef CGL_VERSION_1_3
+#define kCGLPFAOpenGLProfile 99
+#define kCGLOGLPVersion_Legacy 0x1000
+#define kCGLOGLPVersion_3_2_Core 0x3200
+#endif
+
+extern "C" {
+
+// From http://www.opensource.apple.com/source/gdb/gdb-954/libcheckpoint/cpcg.c
+typedef void * CGSConnectionID;
+typedef int CGSWindowID;
+typedef int CGSSurfaceID;
 
-#else /* !_WIN32 */
+CGLError CGLSetSurface(CGLContextObj ctx, CGSConnectionID cid, CGSWindowID wid, CGSSurfaceID sid);
+CGLError CGLGetSurface(CGLContextObj ctx, CGSConnectionID* cid, CGSWindowID* wid, CGSSurfaceID* sid);
+CGLError CGLUpdateContext(CGLContextObj ctx);
 
+}
+
+#else
+
+#ifdef HAVE_X11
 #include <GL/glx.h>
-#include "glext/glxext.h"
+#include <GL/glxext.h>
+#endif
 
-/* Prevent collision with Trace::Bool */
+/* Prevent collision with trace::Bool */
 #undef Bool
 
-#endif /* !_WIN32 */
+#endif
+
+
+#include "eglimports.hpp"
+
 
 #endif /* _GLIMPORTS_HPP_ */