From 3a0d7703da32e9a5ddf08a334f18588a78038d88 Mon Sep 17 00:00:00 2001
From: Sven Gothel <sgothel@jausoft.com>
Date: Mon, 15 Jul 2013 13:39:22 +0200
Subject: Add Support for GL 4.3 (Bug 716) and ES 3.0 (Bug 717)

ES3 / GL4.3:

- Update all EGL, GLX, WGL and GL (desktop and mobile) khronos headers to latest version.
  - GL3/gl3* -> GL/glcorearb*

  - Explicitly preserve ES2_compatibility and ES3_compatibility in header,
    most extension grouping was removed in new headers.

  - Always load all GLHeader to ensure proper extension association across all profiles.

  - Unified method signatures

  - Added GL_EXT_map_buffer_range to core

  - Using common 'glMapBufferImpl(..)' for all glMapBuffer(..) and glMapBufferRange(..) impl.

  - Init necessary fields of GL instances via 'finalizeInit()' called by reflection, if exist.
    This allows removing initialization checks, i.e. for all buffer validations.

- BuildStaticGLInfo: Can handle new GL header structure, i.e. one CPP extenstion block incl. define + funcs.

- GLJavaMethodBindingEmitter: Simply print the

- No GL duplication due to new intermediate interfaces, see below

- OO lineare inheritance (Added GL2ES3, GL3ES3 and GL4ES3 intemediates):
  GLBase - GL - GL2ES2 - GLES2
  GLBase - GL - GL2ES2 - GL2GL3 - [ GL2, GL3 ]
  GLBase - GL - GL2ES2 - GL2ES3 - GL3ES3 - [ GL3 ]
  GLBase - GL - GL2ES2 - GL2ES3 - GL3ES3 - GL4ES3 - [ GLES3, GL4, .. ]

- Expose 'usable' intermediate interfaces GL3ES3 and GL4ES3 in GLBase/GLProfile/GLContext
  via is*() and get*().

- GLContext*:
  - isGL3core() is true if [ GL4, GL3, GLES3 ] (added GLES3)

  - Added ctxProfile argument to allow handling ES versions:
    - getMaxMajor(..), getMaxMinor(..), isValidGLVersion(..) and decrementGLVersion(..)
    - mapGLVersions(..) prepared for ES ARB/KHR validation

  - EGLContext checks ES3 (via old ctx's GL_VERSION)

- ExtensionAvailabilityCache adds GL_ES_Version_X_Y for ES.

- Prelim tests w/ Mesa 9.1.3
  GL Version     3.0 (ES profile, ES2 compat, ES3 compat, FBO, hardware) - OpenGL ES 3.0 Mesa 9.1.3 [GL 3.0.0, vendor 9.1.3 (Mesa 9.1.3)]

- TODO:
  - Use KHR_create_context in EGLContext.createContextARBImpl(..)
  - More tests (Mobile, ..)

+++

Misc:

- GLContext*:
  - Complete glAllocateMemoryNV w/ glFreeMemoryNV.
---
 make/stub_includes/opengl/GL/glx.h | 336 ++++---------------------------------
 1 file changed, 34 insertions(+), 302 deletions(-)

(limited to 'make/stub_includes/opengl/GL/glx.h')

diff --git a/make/stub_includes/opengl/GL/glx.h b/make/stub_includes/opengl/GL/glx.h
index 67225e043..a74cd23e8 100644
--- a/make/stub_includes/opengl/GL/glx.h
+++ b/make/stub_includes/opengl/GL/glx.h
@@ -56,17 +56,8 @@
 extern "C" {
 #endif
 
-  /* For some reason gcc ignores #undef directives for these definitions when placed outside this file,
-     which are necessary when including both glx.h and glxext.h as is necessary to compile
-     X11GLImpl_JNI.c. Looks like a bug; couldn't boil down a smaller test case.
-     gcc version 2.96 20000731 (Red Hat Linux 7.3 2.96-110)
-#define GLX_VERSION_1_1		1
-#define GLX_VERSION_1_2		1
-#define GLX_VERSION_1_3		1
-#define GLX_VERSION_1_4		1
-  */
-
-#ifndef GLX_VERSION_1_X
+#ifndef GLX_VERSION_1_0
+#define GLX_VERSION_1_0 1
 
 #define GLX_EXTENSION_NAME   "GLX"
 
@@ -103,100 +94,9 @@ extern "C" {
 #define GLX_BAD_VALUE       	6
 #define GLX_BAD_ENUM		7
 
-
-/*
- * GLX 1.1 and later:
- */
-#define GLX_VENDOR		1
-#define GLX_VERSION		2
-#define GLX_EXTENSIONS 		3
-
-
-/*
- * GLX 1.3 and later:
- */
-#define GLX_CONFIG_CAVEAT		0x20
-#define GLX_DONT_CARE			0xFFFFFFFF
-#define GLX_SLOW_CONFIG			0x8001
-#define GLX_NON_CONFORMANT_CONFIG	0x800D
-#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_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_DRAWABLE_TYPE		0x8010
-#define GLX_FBCONFIG_ID			0x8013
-#define GLX_VISUAL_ID			0x800B
-#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_DRAWABLE_TYPE		0x8010
-#define GLX_RENDER_TYPE			0x8011
-#define GLX_X_RENDERABLE		0x8012
-#define GLX_NONE			0x8000
-#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_RGBA_TYPE			0x8014
-#define GLX_COLOR_INDEX_TYPE		0x8015
-#define GLX_COLOR_INDEX_BIT		0x00000002
-#define GLX_RGBA_BIT			0x00000001
-#define GLX_SCREEN			0x800C
-#define GLX_PBUFFER_CLOBBER_MASK	0x08000000
-#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
-
-
-/*
- * GLX 1.4 and later:
- */
-#define GLX_SAMPLE_BUFFERS              0x186a0 /*100000*/
-#define GLX_SAMPLES                     0x186a1 /*100001*/
-
-
-
 typedef struct __GLXcontextRec *GLXContext;
 typedef XID GLXPixmap;
 typedef XID GLXDrawable;
-/* GLX 1.3 and later */
-typedef struct __GLXFBConfigRec *GLXFBConfig;
-typedef XID GLXFBConfigID;
-typedef XID GLXContextID;
-typedef XID GLXWindow;
-typedef XID GLXPbuffer;
-
-#endif  /* GLX_VERSION_1_X */
-
-
-#ifndef GLX_VERSION_1_X
-#define GLX_VERSION_1_X 1
 
 extern XVisualInfo* glXChooseVisual( Display *dpy, int screen,
 				     int *attribList );
@@ -239,226 +139,58 @@ extern void glXWaitX( void );
 extern void glXUseXFont( Font font, int first, int count, int list );
 
 
+#endif /* GLX_VERSION_1_0 */
 
-/* GLX 1.1 and later */
-extern const char *glXQueryExtensionsString( Display *dpy, int screen );
-
-extern const char *glXQueryServerString( Display *dpy, int screen, int name );
-
-extern const char *glXGetClientString( Display *dpy, int name );
-
-
-/* GLX 1.2 and later */
-extern Display *glXGetCurrentDisplay( void );
-
-
-/* GLX 1.3 and later */
-extern GLXFBConfig *glXChooseFBConfig( Display *dpy, int screen,
-                                       const int *attribList, int *nitems );
-
-extern int glXGetFBConfigAttrib( Display *dpy, GLXFBConfig config,
-                                 int attribute, int *value );
-
-extern GLXFBConfig *glXGetFBConfigs( Display *dpy, int screen,
-                                     int *nelements );
-
-extern XVisualInfo *glXGetVisualFromFBConfig( Display *dpy,
-                                              GLXFBConfig config );
-
-extern GLXWindow glXCreateWindow( Display *dpy, GLXFBConfig config,
-                                  Window win, const int *attribList );
-
-extern void glXDestroyWindow( Display *dpy, GLXWindow window );
-
-extern GLXPixmap glXCreatePixmap( Display *dpy, GLXFBConfig config,
-                                  Pixmap pixmap, const int *attribList );
-
-extern void glXDestroyPixmap( Display *dpy, GLXPixmap pixmap );
-
-extern GLXPbuffer glXCreatePbuffer( Display *dpy, GLXFBConfig config,
-                                    const int *attribList );
-
-extern void glXDestroyPbuffer( Display *dpy, GLXPbuffer pbuf );
-
-extern void glXQueryDrawable( Display *dpy, GLXDrawable draw, int attribute,
-                              unsigned int *value );
-
-extern GLXContext glXCreateNewContext( Display *dpy, GLXFBConfig config,
-                                       int renderType, GLXContext shareList,
-                                       Bool direct );
-
-extern Bool glXMakeContextCurrent( Display *dpy, GLXDrawable draw,
-                                   GLXDrawable read, GLXContext ctx );
-
-extern GLXDrawable glXGetCurrentReadDrawable( void );
-
-extern int glXQueryContext( Display *dpy, GLXContext ctx, int attribute,
-                            int *value );
 
-extern void glXSelectEvent( Display *dpy, GLXDrawable drawable,
-                            unsigned long mask );
+#ifndef GLX_VERSION_1_1
+#define GLX_VERSION_1_1 1
 
-extern void glXGetSelectedEvent( Display *dpy, GLXDrawable drawable,
-                                 unsigned long *mask );
-
-/* GLX 1.4 and later */
-extern void (*glXGetProcAddress(const GLubyte *procname))();
-
-#endif  /* GLX_VERSION_1_X */
-
-#ifndef GLX_GLXEXT_LEGACY
-
-#include <GL/glxext.h>
-
-#else
-
-
-/*
- * 28. GLX_EXT_visual_info extension
- */
-#ifndef GLX_EXT_visual_info
-#define GLX_EXT_visual_info		1
-
-#define GLX_X_VISUAL_TYPE_EXT		0x22
-#define GLX_TRANSPARENT_TYPE_EXT	0x23
-#define GLX_TRANSPARENT_INDEX_VALUE_EXT	0x24
-#define GLX_TRANSPARENT_RED_VALUE_EXT	0x25
-#define GLX_TRANSPARENT_GREEN_VALUE_EXT	0x26
-#define GLX_TRANSPARENT_BLUE_VALUE_EXT	0x27
-#define GLX_TRANSPARENT_ALPHA_VALUE_EXT	0x28
-#define GLX_TRUE_COLOR_EXT		0x8002
-#define GLX_DIRECT_COLOR_EXT		0x8003
-#define GLX_PSEUDO_COLOR_EXT		0x8004
-#define GLX_STATIC_COLOR_EXT		0x8005
-#define GLX_GRAY_SCALE_EXT		0x8006
-#define GLX_STATIC_GRAY_EXT		0x8007
-#define GLX_NONE_EXT			0x8000
-#define GLX_TRANSPARENT_RGB_EXT		0x8008
-#define GLX_TRANSPARENT_INDEX_EXT	0x8009
-
-#endif /* 28. GLX_EXT_visual_info extension */
-
-
-
-/*
- * 41. GLX_SGI_video_sync
- */
-#ifndef GLX_SGI_video_sync
-#define GLX_SGI_video_sync 1
-
-extern int glXGetVideoSyncSGI(unsigned int *count);
-extern int glXWaitVideoSyncSGI(int divisor, int remainder, unsigned int *count);
-
-#endif /* GLX_SGI_video_sync */
-
-
-
-/*
- * 42. GLX_EXT_visual_rating
- */
-#ifndef GLX_EXT_visual_rating
-#define GLX_EXT_visual_rating		1
-
-#define GLX_VISUAL_CAVEAT_EXT		0x20
-/*#define GLX_NONE_EXT			0x8000*/
-#define GLX_SLOW_VISUAL_EXT		0x8001
-#define GLX_NON_CONFORMANT_VISUAL_EXT	0x800D
-
-#endif /* GLX_EXT_visual_rating	*/
-
-
-
-/*
- * 47. GLX_EXT_import_context
- */
-#ifndef GLX_EXT_import_context
-#define GLX_EXT_import_context 1
-
-#define GLX_SHARE_CONTEXT_EXT		0x800A
-#define GLX_VISUAL_ID_EXT		0x800B
-#define GLX_SCREEN_EXT			0x800C
+#define GLX_VENDOR		1
+#define GLX_VERSION		2
+#define GLX_EXTENSIONS 		3
 
-extern void glXFreeContextEXT(Display *dpy, GLXContext context);
+extern const char *glXQueryExtensionsString( Display *dpy, int screen );
 
-extern GLXContextID glXGetContextIDEXT(const GLXContext context);
+extern const char *glXQueryServerString( Display *dpy, int screen, int name );
 
-extern Display *glXGetCurrentDisplayEXT(void);
+extern const char *glXGetClientString( Display *dpy, int name );
 
-extern GLXContext glXImportContextEXT(Display *dpy, GLXContextID contextID);
+#endif  /* GLX_VERSION_1_1 */
 
-extern int glXQueryContextInfoEXT(Display *dpy, GLXContext context,
-                                  int attribute,int *value);
 
-#endif /* GLX_EXT_import_context */
+#ifndef GLX_VERSION_1_2
+#define GLX_VERSION_1_2 1
 
+extern Display *glXGetCurrentDisplay( void );
 
+#endif  /* GLX_VERSION_1_2 */
 
-/*
- * 215. GLX_MESA_copy_sub_buffer
+/** 
+ * We require 'glXGetProcAddress' and 'glXGetProcAddressARB'
+ * to be available in GLX, rather than GLXExt. 
  */
-#ifndef GLX_MESA_copy_sub_buffer
-#define GLX_MESA_copy_sub_buffer 1
-
-extern void glXCopySubBufferMESA( Display *dpy, GLXDrawable drawable,
-                                  int x, int y, int width, int height );
-
+#ifndef GLX_VERSION_1_4
+#define GLX_VERSION_1_4 1
+
+typedef void ( *__GLXextFuncPtr)(void);
+#define GLX_SAMPLE_BUFFERS                100000
+#define GLX_SAMPLES                       100001
+typedef __GLXextFuncPtr ( *PFNGLXGETPROCADDRESSPROC) (const GLubyte *procName);
+#ifdef GL_GLEXT_PROTOTYPES
+__GLXextFuncPtr glXGetProcAddress (const GLubyte *procName);
 #endif
+#endif /* GLX_VERSION_1_4 */
 
-
-
-/*
- * 216. GLX_MESA_pixmap_colormap
- */
-#ifndef GLX_MESA_pixmap_colormap
-#define GLX_MESA_pixmap_colormap 1
-
-extern GLXPixmap glXCreateGLXPixmapMESA( Display *dpy, XVisualInfo *visual,
-                                         Pixmap pixmap, Colormap cmap );
-
-#endif /* GLX_MESA_pixmap_colormap */
-
-
-
-/*
- * 217. GLX_MESA_release_buffers
- */
-#ifndef GLX_MESA_release_buffers
-#define GLX_MESA_release_buffers 1
-
-extern Bool glXReleaseBuffersMESA( Display *dpy, GLXDrawable d );
-
-#endif /* GLX_MESA_release_buffers */
-
-
-
-/*
- * 218. GLX_MESA_set_3dfx_mode
- */
-#ifndef GLX_MESA_set_3dfx_mode
-#define GLX_MESA_set_3dfx_mode 1
-
-#define GLX_3DFX_WINDOW_MODE_MESA       0x1
-#define GLX_3DFX_FULLSCREEN_MODE_MESA   0x2
-
-extern Bool glXSet3DfxModeMESA( int mode );
-
-#endif /* GLX_MESA_set_3dfx_mode */
-
-
-
-/*
- * ARB 2. GLX_ARB_get_proc_address
- */
 #ifndef GLX_ARB_get_proc_address
 #define GLX_ARB_get_proc_address 1
-
-extern void (*glXGetProcAddressARB(const GLubyte *procName))();
-
+typedef __GLXextFuncPtr ( *PFNGLXGETPROCADDRESSARBPROC) (const GLubyte *procName);
+#ifdef GL_GLEXT_PROTOTYPES
+__GLXextFuncPtr glXGetProcAddressARB (const GLubyte *procName);
+#endif
 #endif /* GLX_ARB_get_proc_address */
 
 
-
-#endif /* GLX_GLXEXT_LEGACY */
+#include <GL/glxext.h>
 
 #ifdef __cplusplus
 }
-- 
cgit v1.2.3