From: Rémi Bernon rbernon@codeweavers.com
--- dlls/opengl32/make_opengl | 103 ++++++++++-- dlls/opengl32/winegl.xml | 26 +++ dlls/winex11.drv/opengl.c | 133 +-------------- include/wine/wgl.h | 336 ++++++++++++++++++++++++++++++++++++++ 4 files changed, 454 insertions(+), 144 deletions(-)
diff --git a/dlls/opengl32/make_opengl b/dlls/opengl32/make_opengl index bc8eb05aaa5..f50a0f6c1ee 100755 --- a/dlls/opengl32/make_opengl +++ b/dlls/opengl32/make_opengl @@ -11,6 +11,7 @@ use File::Basename; # # https://raw.github.com/KhronosGroup/OpenGL-Registry/master/xml/gl.xml # https://raw.github.com/KhronosGroup/OpenGL-Registry/master/xml/wgl.xml +# https://raw.github.com/KhronosGroup/OpenGL-Registry/master/xml/glx.xml # https://raw.github.com/KhronosGroup/EGL-Registry/refs/heads/main/api/egl.xml # # If they are not found in the current directory the script will @@ -689,6 +690,7 @@ my $cache = ($ENV{XDG_CACHE_HOME} || "$ENV{HOME}/.cache") . "/wine"; system "mkdir", "-p", $cache; -f "$cache/gl-$ogl_commit.xml" || system "wget", "-q", "-O", "$cache/gl-$ogl_commit.xml", "$ogl_url/$ogl_commit/xml/gl.xml" || die "cannot download gl.xml"; -f "$cache/wgl-$ogl_commit.xml" || system "wget", "-q", "-O", "$cache/wgl-$ogl_commit.xml", "$ogl_url/$ogl_commit/xml/wgl.xml" || die "cannot download wgl.xml"; +-f "$cache/glx-$ogl_commit.xml" || system "wget", "-q", "-O", "$cache/glx-$ogl_commit.xml", "$ogl_url/$ogl_commit/xml/glx.xml" || die "cannot download glx.xml"; -f "$cache/egl-$egl_commit.xml" || system "wget", "-q", "-O", "$cache/egl-$egl_commit.xml", "$egl_url/$egl_commit/api/egl.xml" || die "cannot download egl.xml"; chdir(dirname($0));
@@ -710,6 +712,7 @@ my %norm_functions; my %ext_functions; my %wgl_functions; my %egl_functions; +my %glx_functions; my %all_enums;
my %gl_types = @@ -762,6 +765,26 @@ my %supported_wgl_extensions = "WGL_WINE_pixel_format_passthrough" => 1, "WGL_WINE_query_renderer" => 1, ); +my %supported_glx_extensions = + ( + "GLX_ARB_create_context" => 1, + "GLX_ARB_create_context_no_error" => 1, + "GLX_ARB_create_context_profile" => 1, + "GLX_ARB_fbconfig_float" => 1, + "GLX_ARB_multisample" => 1, + "GLX_ATI_pixel_format_float" => 1, + "GLX_EXT_fbconfig_packed_float" => 1, + "GLX_EXT_framebuffer_sRGB" => 1, + "GLX_EXT_swap_control" => 1, + "GLX_MESA_copy_sub_buffer" => 1, + "GLX_MESA_query_renderer" => 1, + "GLX_MESA_swap_control" => 1, + "GLX_NV_float_buffer" => 1, + "GLX_NV_vertex_array_range" => 1, + "GLX_OML_swap_method" => 1, + "GLX_OML_sync_control" => 1, + "GLX_SGI_swap_control" => 1, + ); my %supported_egl_extensions = ( "EGL_EXT_pixel_format_float" => 1, @@ -861,6 +884,18 @@ sub parse_file($) $wgl_functions{$name} = $functions{$name} if defined $functions{$name}; } } + elsif ($feature->{api} eq "glx") + { + foreach my $cmd ($feature->findnodes("./require/command")) + { + my $name = $cmd->{name}; + $glx_functions{$name} = $functions{$cmd->{name}}; + } + foreach my $enum ($feature->findnodes("./require/enum")) + { + $all_enums{$enum->{name}} = $enums{$enum->{name}}; + } + } elsif ($feature->{api} eq "egl") { foreach my $cmd ($feature->findnodes("./require/command")) @@ -918,6 +953,20 @@ sub parse_file($) } next; } + if ($ext->{supported} eq "glx") + { + next unless defined $supported_glx_extensions{$ext->{name}}; + foreach my $cmd ($ext->findnodes("./require/command")) + { + my $name = $cmd->{name}; + $ext_functions{$name} = [ $functions{$name}[0], $functions{$name}[1], [ $ext->{name} ] ]; + } + foreach my $enum ($ext->findnodes("./require/enum")) + { + $all_enums{$enum->{name}} = $enums{$enum->{name}}; + } + next; + } if ($ext->{supported} eq "egl") { next unless defined $supported_egl_extensions{$ext->{name}}; @@ -959,6 +1008,7 @@ sub parse_file($)
parse_file( "$cache/gl-$ogl_commit.xml" ); parse_file( "$cache/wgl-$ogl_commit.xml" ); +parse_file( "$cache/glx-$ogl_commit.xml" ); parse_file( "$cache/egl-$egl_commit.xml" ); parse_file( "winegl.xml" );
@@ -993,6 +1043,16 @@ print HEADER "#ifndef EGL_CAST\n"; print HEADER "#define EGL_CAST(t,x) ((t)(x))\n"; print HEADER "#endif\n\n";
+print HEADER "#ifndef Bool\n"; +print HEADER "#define Bool int\n"; +print HEADER "typedef unsigned long XID;\n"; +print HEADER "typedef struct _XDisplay Display;\n"; +print HEADER "typedef struct _XVisualInfo XVisualInfo;\n"; +print HEADER "typedef XID Pixmap;\n"; +print HEADER "typedef XID Window;\n"; +print HEADER "typedef XID Font;\n"; +print HEADER "#endif\n\n"; + foreach (@gl_types) { my $type = $gl_types{$_}; @@ -1025,6 +1085,13 @@ foreach (sort keys %wgl_functions) printf HEADER "typedef %-10s (GLAPIENTRY *PFN_$_)($decl_args);\n", $func_ret; }
+foreach (sort keys %glx_functions) +{ + my $decl_args = get_func_args( $glx_functions{$_}, 1, 0, "" ); + my $func_ret = get_func_ret( $glx_functions{$_}, 0 ); + printf HEADER "typedef %-10s (GLAPIENTRY *PFN_$_)($decl_args);\n", $func_ret; +} + foreach (sort keys %egl_functions) { my $decl_args = get_func_args( $egl_functions{$_}, 1, 0, "" ); @@ -1060,6 +1127,20 @@ foreach (sort keys %ext_functions) printf HEADER " \\n USE_GL_FUNC(%s)", $_; } print HEADER "\n\n"; +print HEADER "#define ALL_GLX_FUNCS"; +foreach (sort keys %glx_functions) +{ + next unless $_ =~ /^glX/; + printf HEADER " \\n USE_GL_FUNC(%s)", $_; +} +print HEADER "\n\n"; +print HEADER "#define ALL_GLX_EXT_FUNCS"; +foreach (sort keys %ext_functions) +{ + next unless $_ =~ /^glX/; + printf HEADER " \\n USE_GL_FUNC(%s)", $_; +} +print HEADER "\n\n"; print HEADER "#define ALL_EGL_FUNCS"; foreach (sort keys %egl_functions) { @@ -1084,7 +1165,7 @@ print HEADER "\n\n"; print HEADER "#define ALL_GL_EXT_FUNCS"; foreach (sort keys %ext_functions) { - next unless $_ =~ /^gl/; + next unless $_ =~ /^gl[^X]/; printf HEADER " \\n USE_GL_FUNC(%s)", $_; } print HEADER "\n\n"; @@ -1092,6 +1173,13 @@ print HEADER "\n\n"; print HEADER "#endif /* __WINE_WGL_H */\n"; close HEADER;
+# +# Remove unix-side only APIs from the extension list, they shouldn't +# be on the PE side, and most importantly they shouldn't be counted in +# the extension table. +# +delete $ext_functions{$_} for grep { $_ =~ /^glX|^egl/ } keys(%ext_functions); + # # Now, generate the output files. First, the spec file. # @@ -1146,7 +1234,6 @@ foreach (sort keys %norm_functions) } foreach (sort keys %ext_functions) { - next if $_ =~ /^egl/; # unix-side only API next if defined $manual_win_functions{$_}; print OUT generate_func_params($_, $ext_functions{$_}); } @@ -1179,7 +1266,6 @@ foreach (sort keys %norm_functions) } foreach (sort keys %ext_functions) { - next if $_ =~ /^egl/; # unix-side only API next if defined $manual_win_functions{$_}; printf OUT " unix_%s,\n", $_; } @@ -1238,7 +1324,6 @@ foreach (sort keys %norm_functions) } foreach (sort keys %ext_functions) { - next if $_ =~ /^egl/; # unix-side only API next if defined $manual_win_functions{$_}; next if defined $manual_win_thunks{$_}; print OUT "\nstatic " . generate_win_thunk($_, $ext_functions{$_}); @@ -1247,7 +1332,6 @@ print OUT "\n";
foreach (sort keys %ext_functions) { - next if $_ =~ /^egl/; # unix-side only API next unless defined $manual_win_functions{$_} || $manual_win_thunks{$_}; my $decl_args = get_func_args( $ext_functions{$_}, 1, 0, "" ); my $func_ret = get_func_ret( $ext_functions{$_}, 0 ); @@ -1258,7 +1342,6 @@ print OUT "const void *extension_procs[] =\n"; print OUT "{\n"; foreach (sort keys %ext_functions) { - next if $_ =~ /^egl/; # unix-side only API printf OUT " %s,\n", $_; } print OUT "};\n"; @@ -1307,7 +1390,6 @@ foreach (sort keys %norm_functions) } foreach (sort keys %ext_functions) { - next if $_ =~ /^egl/; # unix-side only API next if defined $manual_win_functions{$_}; print OUT "static " unless defined $manual_wow64_thunks{$_}; print OUT generate_unix_thunk($_, $ext_functions{$_}, "ext"); @@ -1331,7 +1413,6 @@ foreach (sort keys %norm_functions) } foreach (sort keys %ext_functions) { - next if $_ =~ /^egl/; # unix-side only API next if defined $manual_win_functions{$_}; printf OUT " ext_%s,\n", $_; } @@ -1358,7 +1439,6 @@ foreach (sort keys %norm_functions) } foreach (sort keys %ext_functions) { - next if $_ =~ /^egl/; # unix-side only API next if defined $manual_win_functions{$_}; next if defined $manual_wow64_thunks{$_}; print OUT generate_wow64_thunk($_, $ext_functions{$_}, "ext"); @@ -1378,7 +1458,6 @@ foreach (sort keys %norm_functions) } foreach (sort keys %ext_functions) { - next if $_ =~ /^egl/; # unix-side only API next if defined $manual_win_functions{$_}; next unless defined $manual_wow64_thunks{$_}; print OUT "extern NTSTATUS wow64_ext_$_( void *args );\n"; @@ -1402,7 +1481,6 @@ foreach (sort keys %norm_functions) } foreach (sort keys %ext_functions) { - next if $_ =~ /^egl/; # unix-side only API next if defined $manual_win_functions{$_}; printf OUT " wow64_ext_%s,\n", $_; } @@ -1429,7 +1507,6 @@ foreach (sort keys %norm_functions) } foreach (sort keys %ext_functions) { - next if $_ =~ /^egl/; # unix-side only API next if defined $manual_win_functions{$_}; print OUT generate_null_func($_, $ext_functions{$_}); } @@ -1450,7 +1527,6 @@ foreach (sort keys %norm_functions) } foreach (sort keys %ext_functions) { - next if $_ =~ /^egl/; # unix-side only API next if defined $manual_win_functions{$_}; print OUT " .p_$_ = null_$_,\n"; } @@ -1463,7 +1539,6 @@ print OUT "const struct registry_entry extension_registry[$count] =\n"; print OUT "{\n"; foreach (sort keys %ext_functions) { - next if $_ =~ /^egl/; # unix-side only API my $func = $ext_functions{$_}; printf OUT " { "%s", "%s", offsetof(struct opengl_funcs, p_$_) },\n", $_, join(" ", sort @{$func->[2]}); } diff --git a/dlls/opengl32/winegl.xml b/dlls/opengl32/winegl.xml index 37152805ace..8950bf21338 100644 --- a/dlls/opengl32/winegl.xml +++ b/dlls/opengl32/winegl.xml @@ -328,6 +328,17 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA <param><ptype>GLint</ptype> <name>renderer</name></param> <param><ptype>GLenum</ptype> <name>attribute</name></param> </command> + <command> + <proto>void *<name>glXAllocateMemoryNV</name></proto> + <param><ptype>GLsizei</ptype> <name>size</name></param> + <param><ptype>GLfloat</ptype> <name>readfreq</name></param> + <param><ptype>GLfloat</ptype> <name>writefreq</name></param> + <param><ptype>GLfloat</ptype> <name>priority</name></param> + </command> + <command> + <proto>void <name>glXFreeMemoryNV</name></proto> + <param>void *<name>pointer</name></param> + </command> </commands>
<feature api="gl" name="GL_VERSION_1_0" number="1.0"> @@ -356,6 +367,10 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA <enum value="0x818D" name="WGL_RENDERER_OPENGL_ES2_PROFILE_VERSION_WINE"/> </enums>
+ <enums namespace="GLX" group="ATI_pixel_format_float"> + <enum value="0x100" name="GLX_RGBA_FLOAT_ATI_BIT"/> + </enums> + <extensions> <extension name="GL_KTX_buffer_region" supported="gl"> <require> @@ -436,5 +451,16 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA <command name="wglQueryRendererStringWINE"/> </require> </extension> + <extension name="GLX_ATI_pixel_format_float" supported="glx"> + <require> + <enum name="GLX_RGBA_FLOAT_ATI_BIT"/> + </require> + </extension> + <extension name="GLX_NV_vertex_array_range" supported="glx"> + <require> + <command name="glXAllocateMemoryNV"/> + <command name="glXFreeMemoryNV"/> + </require> + </extension> </extensions> </registry> diff --git a/dlls/winex11.drv/opengl.c b/dlls/winex11.drv/opengl.c index 369b34824c4..dce066f608d 100644 --- a/dlls/winex11.drv/opengl.c +++ b/dlls/winex11.drv/opengl.c @@ -52,133 +52,6 @@ WINE_DECLARE_DEBUG_CHANNEL(winediag);
#include "wine/opengl_driver.h"
-typedef struct __GLXcontextRec *GLXContext; -typedef struct __GLXFBConfigRec *GLXFBConfig; -typedef XID GLXPixmap; -typedef XID GLXDrawable; -typedef XID GLXFBConfigID; -typedef XID GLXContextID; -typedef XID GLXWindow; -typedef XID GLXPbuffer; - -#define GLX_USE_GL 1 -#define GLX_BUFFER_SIZE 2 -#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 - -#define GLX_VENDOR 1 -#define GLX_VERSION 2 -#define GLX_EXTENSIONS 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_SWAP_METHOD_OML 0x8060 -#define GLX_SWAP_EXCHANGE_OML 0x8061 -#define GLX_SWAP_COPY_OML 0x8062 -#define GLX_SWAP_UNDEFINED_OML 0x8063 -#define GLX_RGBA_BIT 0x00000001 -#define GLX_COLOR_INDEX_BIT 0x00000002 -#define GLX_PBUFFER_CLOBBER_MASK 0x08000000 - -/** GLX_ARB_multisample */ -#define GLX_SAMPLE_BUFFERS_ARB 100000 -#define GLX_SAMPLES_ARB 100001 -/** GLX_ARB_framebuffer_sRGB */ -#define GLX_FRAMEBUFFER_SRGB_CAPABLE_EXT 0x20B2 -/** GLX_EXT_fbconfig_packed_float */ -#define GLX_RGBA_UNSIGNED_FLOAT_TYPE_EXT 0x20B1 -#define GLX_RGBA_UNSIGNED_FLOAT_BIT_EXT 0x00000008 -/** GLX_ARB_create_context */ -#define GLX_CONTEXT_MAJOR_VERSION_ARB 0x2091 -#define GLX_CONTEXT_MINOR_VERSION_ARB 0x2092 -#define GLX_CONTEXT_FLAGS_ARB 0x2094 -/** GLX_ARB_create_context_no_error */ -#define GLX_CONTEXT_OPENGL_NO_ERROR_ARB 0x31B3 -/** GLX_ARB_create_context_profile */ -#define GLX_CONTEXT_PROFILE_MASK_ARB 0x9126 -/** GLX_ATI_pixel_format_float */ -#define GLX_RGBA_FLOAT_ATI_BIT 0x00000100 -/** GLX_ARB_pixel_format_float */ -#define GLX_RGBA_FLOAT_BIT 0x00000004 -#define GLX_RGBA_FLOAT_TYPE 0x20B9 -/** GLX_MESA_query_renderer */ -#define GLX_RENDERER_ID_MESA 0x818E -/** GLX_NV_float_buffer */ -#define GLX_FLOAT_COMPONENTS_NV 0x20B0 - - static const char *glExtensions; static const char *glxExtensions; static char wglExtensions[4096]; @@ -698,8 +571,8 @@ static int get_render_type_from_fbconfig(Display *display, GLXFBConfig fbconfig) case GLX_COLOR_INDEX_BIT: render_type = GLX_COLOR_INDEX_TYPE; break; - case GLX_RGBA_FLOAT_BIT: - render_type = GLX_RGBA_FLOAT_TYPE; + case GLX_RGBA_FLOAT_BIT_ARB: + render_type = GLX_RGBA_FLOAT_TYPE_ARB; break; case GLX_RGBA_UNSIGNED_FLOAT_BIT_EXT: render_type = GLX_RGBA_UNSIGNED_FLOAT_TYPE_EXT; @@ -1419,7 +1292,7 @@ static BOOL x11drv_describe_pixel_format( int iPixelFormat, struct wgl_pixel_for
if (render_type & GLX_RGBA_BIT) pf->pixel_type = WGL_TYPE_RGBA_ARB; else if (render_type & GLX_COLOR_INDEX_BIT) pf->pixel_type = WGL_TYPE_COLORINDEX_ARB; - else if (render_type & GLX_RGBA_FLOAT_BIT) pf->pixel_type = WGL_TYPE_RGBA_FLOAT_ATI; + else if (render_type & GLX_RGBA_FLOAT_BIT_ARB) pf->pixel_type = WGL_TYPE_RGBA_FLOAT_ATI; else if (render_type & GLX_RGBA_FLOAT_ATI_BIT) pf->pixel_type = WGL_TYPE_RGBA_FLOAT_ATI; else if (render_type & GLX_RGBA_UNSIGNED_FLOAT_BIT_EXT) pf->pixel_type = WGL_TYPE_RGBA_UNSIGNED_FLOAT_EXT; else { ERR( "unexpected RenderType(%x)\n", render_type ); pf->pixel_type = -1; } diff --git a/include/wine/wgl.h b/include/wine/wgl.h index fa901988663..4afb40eba0b 100644 --- a/include/wine/wgl.h +++ b/include/wine/wgl.h @@ -24,6 +24,16 @@ #define EGL_CAST(t,x) ((t)(x)) #endif
+#ifndef Bool +#define Bool int +typedef unsigned long XID; +typedef struct _XDisplay Display; +typedef struct _XVisualInfo XVisualInfo; +typedef XID Pixmap; +typedef XID Window; +typedef XID Font; +#endif + typedef void *EGLNativeDisplayType; typedef void *EGLNativePixmapType; typedef void *EGLNativeWindowType; @@ -85,6 +95,92 @@ DECLARE_HANDLE(HGPUNV); DECLARE_HANDLE(HVIDEOINPUTDEVICENV); typedef struct _GPU_DEVICE GPU_DEVICE; typedef struct _GPU_DEVICE *PGPU_DEVICE; +typedef XID GLXFBConfigID; +typedef struct __GLXFBConfigRec *GLXFBConfig; +typedef XID GLXContextID; +typedef struct __GLXcontextRec *GLXContext; +typedef XID GLXPixmap; +typedef XID GLXDrawable; +typedef XID GLXWindow; +typedef XID GLXPbuffer; +typedef void ( *__GLXextFuncPtr)(void); +typedef XID GLXVideoCaptureDeviceNV; +typedef unsigned int GLXVideoDeviceNV; +typedef XID GLXVideoSourceSGIX; +typedef XID GLXFBConfigIDSGIX; +typedef struct __GLXFBConfigRec *GLXFBConfigSGIX; +typedef XID GLXPbufferSGIX; +typedef struct { + int event_type; /* GLX_DAMAGED or GLX_SAVED */ + int draw_type; /* GLX_WINDOW or GLX_PBUFFER */ + unsigned long serial; /* # of last request processed by server */ + Bool send_event; /* true if this came for SendEvent request */ + Display *display; /* display the event was read from */ + GLXDrawable drawable; /* XID of Drawable */ + unsigned int buffer_mask; /* mask indicating which buffers are affected */ + unsigned int aux_buffer; /* which aux buffer was affected */ + int x, y; + int width, height; + int count; /* if nonzero, at least this many more */ +} GLXPbufferClobberEvent; +typedef struct { + int type; + unsigned long serial; /* # of last request processed by server */ + Bool send_event; /* true if this came from a SendEvent request */ + Display *display; /* Display the event was read from */ + GLXDrawable drawable; /* drawable on which event was requested in event mask */ + int event_type; + int64_t ust; + int64_t msc; + int64_t sbc; +} GLXBufferSwapComplete; +typedef union __GLXEvent { + GLXPbufferClobberEvent glxpbufferclobber; + GLXBufferSwapComplete glxbufferswapcomplete; + long pad[24]; +} GLXEvent; +typedef struct { + int type; + unsigned long serial; + Bool send_event; + Display *display; + int extension; + int evtype; + GLXDrawable window; + Bool stereo_tree; +} GLXStereoNotifyEventEXT; +typedef struct { + int type; + unsigned long serial; /* # of last request processed by server */ + Bool send_event; /* true if this came for SendEvent request */ + Display *display; /* display the event was read from */ + GLXDrawable drawable; /* i.d. of Drawable */ + int event_type; /* GLX_DAMAGED_SGIX or GLX_SAVED_SGIX */ + int draw_type; /* GLX_WINDOW_SGIX or GLX_PBUFFER_SGIX */ + unsigned int mask; /* mask indicating which buffers are affected*/ + int x, y; + int width, height; + int count; /* if nonzero, at least this many more */ +} GLXBufferClobberEventSGIX; +typedef struct { + char pipeName[80]; /* Should be [GLX_HYPERPIPE_PIPE_NAME_LENGTH_SGIX] */ + int networkId; +} GLXHyperpipeNetworkSGIX; +typedef struct { + char pipeName[80]; /* Should be [GLX_HYPERPIPE_PIPE_NAME_LENGTH_SGIX] */ + int channel; + unsigned int participationType; + int timeSlice; +} GLXHyperpipeConfigSGIX; +typedef struct { + char pipeName[80]; /* Should be [GLX_HYPERPIPE_PIPE_NAME_LENGTH_SGIX] */ + int srcXOrigin, srcYOrigin, srcWidth, srcHeight; + int destXOrigin, destYOrigin, destWidth, destHeight; +} GLXPipeRect; +typedef struct { + char pipeName[80]; /* Should be [GLX_HYPERPIPE_PIPE_NAME_LENGTH_SGIX] */ + int XOrigin, YOrigin, maxHeight, maxWidth; +} GLXPipeRectLimits; struct AHardwareBuffer; struct wl_buffer; struct wl_display; @@ -323,6 +419,129 @@ typedef unsigned int GLhandleARB; #define ERROR_INVALID_PIXEL_TYPE_ARB 0x2043 #define ERROR_INVALID_PROFILE_ARB 0x2096 #define ERROR_INVALID_VERSION_ARB 0x2095 +#define GLX_ACCUM_ALPHA_SIZE 17 +#define GLX_ACCUM_BLUE_SIZE 16 +#define GLX_ACCUM_BUFFER_BIT 0x00000080 +#define GLX_ACCUM_GREEN_SIZE 15 +#define GLX_ACCUM_RED_SIZE 14 +#define GLX_ALPHA_SIZE 11 +#define GLX_AUX_BUFFERS 7 +#define GLX_AUX_BUFFERS_BIT 0x00000010 +#define GLX_BACK_LEFT_BUFFER_BIT 0x00000004 +#define GLX_BACK_RIGHT_BUFFER_BIT 0x00000008 +#define GLX_BAD_ATTRIBUTE 2 +#define GLX_BAD_CONTEXT 5 +#define GLX_BAD_ENUM 7 +#define GLX_BAD_SCREEN 1 +#define GLX_BAD_VALUE 6 +#define GLX_BAD_VISUAL 4 +#define GLX_BLUE_SIZE 10 +#define GLX_BUFFER_SIZE 2 +#define GLX_BufferSwapComplete 1 +#define GLX_COLOR_INDEX_BIT 0x00000002 +#define GLX_COLOR_INDEX_TYPE 0x8015 +#define GLX_CONFIG_CAVEAT 0x20 +#define GLX_CONTEXT_COMPATIBILITY_PROFILE_BIT_ARB 0x00000002 +#define GLX_CONTEXT_CORE_PROFILE_BIT_ARB 0x00000001 +#define GLX_CONTEXT_DEBUG_BIT_ARB 0x00000001 +#define GLX_CONTEXT_FLAGS_ARB 0x2094 +#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_OPENGL_NO_ERROR_ARB 0x31B3 +#define GLX_CONTEXT_PROFILE_MASK_ARB 0x9126 +#define GLX_DAMAGED 0x8020 +#define GLX_DEPTH_BUFFER_BIT 0x00000020 +#define GLX_DEPTH_SIZE 12 +#define GLX_DIRECT_COLOR 0x8003 +#define GLX_DONT_CARE 0xFFFFFFFF +#define GLX_DOUBLEBUFFER 5 +#define GLX_DRAWABLE_TYPE 0x8010 +#define GLX_EVENT_MASK 0x801F +#define GLX_EXTENSIONS 0x3 +#define GLX_EXTENSION_NAME "GLX" +#define GLX_FBCONFIG_ID 0x8013 +#define GLX_FLOAT_COMPONENTS_NV 0x20B0 +#define GLX_FRAMEBUFFER_SRGB_CAPABLE_EXT 0x20B2 +#define GLX_FRONT_LEFT_BUFFER_BIT 0x00000001 +#define GLX_FRONT_RIGHT_BUFFER_BIT 0x00000002 +#define GLX_GRAY_SCALE 0x8006 +#define GLX_GREEN_SIZE 9 +#define GLX_HEIGHT 0x801E +#define GLX_LARGEST_PBUFFER 0x801C +#define GLX_LEVEL 3 +#define GLX_MAX_PBUFFER_HEIGHT 0x8017 +#define GLX_MAX_PBUFFER_PIXELS 0x8018 +#define GLX_MAX_PBUFFER_WIDTH 0x8016 +#define GLX_MAX_SWAP_INTERVAL_EXT 0x20F2 +#define GLX_NONE 0x8000 +#define GLX_NON_CONFORMANT_CONFIG 0x800D +#define GLX_NO_EXTENSION 3 +#define GLX_PBUFFER 0x8023 +#define GLX_PBUFFER_BIT 0x00000004 +#define GLX_PBUFFER_CLOBBER_MASK 0x08000000 +#define GLX_PBUFFER_HEIGHT 0x8040 +#define GLX_PBUFFER_WIDTH 0x8041 +#define GLX_PIXMAP_BIT 0x00000002 +#define GLX_PRESERVED_CONTENTS 0x801B +#define GLX_PSEUDO_COLOR 0x8004 +#define GLX_PbufferClobber 0 +#define GLX_RED_SIZE 8 +#define GLX_RENDERER_ACCELERATED_MESA 0x8186 +#define GLX_RENDERER_DEVICE_ID_MESA 0x8184 +#define GLX_RENDERER_OPENGL_COMPATIBILITY_PROFILE_VERSION_MESA 0x818B +#define GLX_RENDERER_OPENGL_CORE_PROFILE_VERSION_MESA 0x818A +#define GLX_RENDERER_OPENGL_ES2_PROFILE_VERSION_MESA 0x818D +#define GLX_RENDERER_OPENGL_ES_PROFILE_VERSION_MESA 0x818C +#define GLX_RENDERER_PREFERRED_PROFILE_MESA 0x8189 +#define GLX_RENDERER_UNIFIED_MEMORY_ARCHITECTURE_MESA 0x8188 +#define GLX_RENDERER_VENDOR_ID_MESA 0x8183 +#define GLX_RENDERER_VERSION_MESA 0x8185 +#define GLX_RENDERER_VIDEO_MEMORY_MESA 0x8187 +#define GLX_RENDER_TYPE 0x8011 +#define GLX_RGBA 4 +#define GLX_RGBA_BIT 0x00000001 +#define GLX_RGBA_FLOAT_ATI_BIT 0x100 +#define GLX_RGBA_FLOAT_BIT_ARB 0x00000004 +#define GLX_RGBA_FLOAT_TYPE_ARB 0x20B9 +#define GLX_RGBA_TYPE 0x8014 +#define GLX_RGBA_UNSIGNED_FLOAT_BIT_EXT 0x00000008 +#define GLX_RGBA_UNSIGNED_FLOAT_TYPE_EXT 0x20B1 +#define GLX_SAMPLES 100001 +#define GLX_SAMPLES_ARB 100001 +#define GLX_SAMPLE_BUFFERS 100000 +#define GLX_SAMPLE_BUFFERS_ARB 100000 +#define GLX_SAVED 0x8021 +#define GLX_SCREEN 0x800C +#define GLX_SLOW_CONFIG 0x8001 +#define GLX_STATIC_COLOR 0x8005 +#define GLX_STATIC_GRAY 0x8007 +#define GLX_STENCIL_BUFFER_BIT 0x00000040 +#define GLX_STENCIL_SIZE 13 +#define GLX_STEREO 6 +#define GLX_SWAP_COPY_OML 0x8062 +#define GLX_SWAP_EXCHANGE_OML 0x8061 +#define GLX_SWAP_INTERVAL_EXT 0x20F1 +#define GLX_SWAP_METHOD_OML 0x8060 +#define GLX_SWAP_UNDEFINED_OML 0x8063 +#define GLX_TRANSPARENT_ALPHA_VALUE 0x28 +#define GLX_TRANSPARENT_BLUE_VALUE 0x27 +#define GLX_TRANSPARENT_GREEN_VALUE 0x26 +#define GLX_TRANSPARENT_INDEX 0x8009 +#define GLX_TRANSPARENT_INDEX_VALUE 0x24 +#define GLX_TRANSPARENT_RED_VALUE 0x25 +#define GLX_TRANSPARENT_RGB 0x8008 +#define GLX_TRANSPARENT_TYPE 0x23 +#define GLX_TRUE_COLOR 0x8002 +#define GLX_USE_GL 1 +#define GLX_VENDOR 0x1 +#define GLX_VERSION 0x2 +#define GLX_VISUAL_ID 0x800B +#define GLX_WIDTH 0x801D +#define GLX_WINDOW 0x8022 +#define GLX_WINDOW_BIT 0x00000001 +#define GLX_X_RENDERABLE 0x8012 +#define GLX_X_VISUAL_TYPE 0x22 #define GL_1PASS_EXT 0x80A1 #define GL_1PASS_SGIS 0x80A1 #define GL_2D 0x0600 @@ -5484,6 +5703,7 @@ typedef unsigned int GLhandleARB; #define WGL_TYPE_RGBA_FLOAT_ARB 0x21A0 #define WGL_TYPE_RGBA_FLOAT_ATI 0x21A0 #define WGL_TYPE_RGBA_UNSIGNED_FLOAT_EXT 0x20A8 +#define __GLX_NUMBER_EVENTS 17
#ifndef GL_NO_PROTOTYPES void GLAPIENTRY glAccum( GLenum op, GLfloat value ); @@ -5849,6 +6069,45 @@ typedef BOOL (GLAPIENTRY *PFN_wglUseFontBitmapsA)( HDC hDC, DWORD first, D typedef BOOL (GLAPIENTRY *PFN_wglUseFontBitmapsW)( HDC hDC, DWORD first, DWORD count, DWORD listBase ); typedef BOOL (GLAPIENTRY *PFN_wglUseFontOutlinesA)( HDC hDC, DWORD first, DWORD count, DWORD listBase, FLOAT deviation, FLOAT extrusion, int format, LPGLYPHMETRICSFLOAT lpgmf ); typedef BOOL (GLAPIENTRY *PFN_wglUseFontOutlinesW)( HDC hDC, DWORD first, DWORD count, DWORD listBase, FLOAT deviation, FLOAT extrusion, int format, LPGLYPHMETRICSFLOAT lpgmf ); +typedef GLXFBConfig * (GLAPIENTRY *PFN_glXChooseFBConfig)( Display *dpy, int screen, const int *attrib_list, int *nelements ); +typedef XVisualInfo * (GLAPIENTRY *PFN_glXChooseVisual)( Display *dpy, int screen, int *attribList ); +typedef void (GLAPIENTRY *PFN_glXCopyContext)( Display *dpy, GLXContext src, GLXContext dst, unsigned long mask ); +typedef GLXContext (GLAPIENTRY *PFN_glXCreateContext)( Display *dpy, XVisualInfo *vis, GLXContext shareList, Bool direct ); +typedef GLXPixmap (GLAPIENTRY *PFN_glXCreateGLXPixmap)( Display *dpy, XVisualInfo *visual, Pixmap pixmap ); +typedef GLXContext (GLAPIENTRY *PFN_glXCreateNewContext)( Display *dpy, GLXFBConfig config, int render_type, GLXContext share_list, Bool direct ); +typedef GLXPbuffer (GLAPIENTRY *PFN_glXCreatePbuffer)( Display *dpy, GLXFBConfig config, const int *attrib_list ); +typedef GLXPixmap (GLAPIENTRY *PFN_glXCreatePixmap)( Display *dpy, GLXFBConfig config, Pixmap pixmap, const int *attrib_list ); +typedef GLXWindow (GLAPIENTRY *PFN_glXCreateWindow)( Display *dpy, GLXFBConfig config, Window win, const int *attrib_list ); +typedef void (GLAPIENTRY *PFN_glXDestroyContext)( Display *dpy, GLXContext ctx ); +typedef void (GLAPIENTRY *PFN_glXDestroyGLXPixmap)( Display *dpy, GLXPixmap pixmap ); +typedef void (GLAPIENTRY *PFN_glXDestroyPbuffer)( Display *dpy, GLXPbuffer pbuf ); +typedef void (GLAPIENTRY *PFN_glXDestroyPixmap)( Display *dpy, GLXPixmap pixmap ); +typedef void (GLAPIENTRY *PFN_glXDestroyWindow)( Display *dpy, GLXWindow win ); +typedef const char * (GLAPIENTRY *PFN_glXGetClientString)( Display *dpy, int name ); +typedef int (GLAPIENTRY *PFN_glXGetConfig)( Display *dpy, XVisualInfo *visual, int attrib, int *value ); +typedef GLXContext (GLAPIENTRY *PFN_glXGetCurrentContext)(void); +typedef Display * (GLAPIENTRY *PFN_glXGetCurrentDisplay)(void); +typedef GLXDrawable (GLAPIENTRY *PFN_glXGetCurrentDrawable)(void); +typedef GLXDrawable (GLAPIENTRY *PFN_glXGetCurrentReadDrawable)(void); +typedef int (GLAPIENTRY *PFN_glXGetFBConfigAttrib)( Display *dpy, GLXFBConfig config, int attribute, int *value ); +typedef GLXFBConfig * (GLAPIENTRY *PFN_glXGetFBConfigs)( Display *dpy, int screen, int *nelements ); +typedef __GLXextFuncPtr (GLAPIENTRY *PFN_glXGetProcAddress)( const GLubyte *procName ); +typedef void (GLAPIENTRY *PFN_glXGetSelectedEvent)( Display *dpy, GLXDrawable draw, unsigned long *event_mask ); +typedef XVisualInfo * (GLAPIENTRY *PFN_glXGetVisualFromFBConfig)( Display *dpy, GLXFBConfig config ); +typedef Bool (GLAPIENTRY *PFN_glXIsDirect)( Display *dpy, GLXContext ctx ); +typedef Bool (GLAPIENTRY *PFN_glXMakeContextCurrent)( Display *dpy, GLXDrawable draw, GLXDrawable read, GLXContext ctx ); +typedef Bool (GLAPIENTRY *PFN_glXMakeCurrent)( Display *dpy, GLXDrawable drawable, GLXContext ctx ); +typedef int (GLAPIENTRY *PFN_glXQueryContext)( Display *dpy, GLXContext ctx, int attribute, int *value ); +typedef void (GLAPIENTRY *PFN_glXQueryDrawable)( Display *dpy, GLXDrawable draw, int attribute, unsigned int *value ); +typedef Bool (GLAPIENTRY *PFN_glXQueryExtension)( Display *dpy, int *errorb, int *event ); +typedef const char * (GLAPIENTRY *PFN_glXQueryExtensionsString)( Display *dpy, int screen ); +typedef const char * (GLAPIENTRY *PFN_glXQueryServerString)( Display *dpy, int screen, int name ); +typedef Bool (GLAPIENTRY *PFN_glXQueryVersion)( Display *dpy, int *maj, int *min ); +typedef void (GLAPIENTRY *PFN_glXSelectEvent)( Display *dpy, GLXDrawable draw, unsigned long event_mask ); +typedef void (GLAPIENTRY *PFN_glXSwapBuffers)( Display *dpy, GLXDrawable drawable ); +typedef void (GLAPIENTRY *PFN_glXUseXFont)( Font font, int first, int count, int list ); +typedef void (GLAPIENTRY *PFN_glXWaitGL)(void); +typedef void (GLAPIENTRY *PFN_glXWaitX)(void); typedef EGLBoolean (GLAPIENTRY *PFN_eglBindAPI)( EGLenum api ); typedef EGLBoolean (GLAPIENTRY *PFN_eglBindTexImage)( EGLDisplay dpy, EGLSurface surface, EGLint buffer ); typedef EGLBoolean (GLAPIENTRY *PFN_eglChooseConfig)( EGLDisplay dpy, const EGLint *attrib_list, EGLConfig *configs, EGLint config_size, EGLint *num_config ); @@ -8899,6 +9158,23 @@ typedef void (GLAPIENTRY *PFN_glWindowPos4sMESA)( GLshort x, GLshort y, GL typedef void (GLAPIENTRY *PFN_glWindowPos4svMESA)( const GLshort *v ); typedef void (GLAPIENTRY *PFN_glWindowRectanglesEXT)( GLenum mode, GLsizei count, const GLint *box ); typedef void (GLAPIENTRY *PFN_glWriteMaskEXT)( GLuint res, GLuint in, GLenum outX, GLenum outY, GLenum outZ, GLenum outW ); +typedef void * (GLAPIENTRY *PFN_glXAllocateMemoryNV)( GLsizei size, GLfloat readfreq, GLfloat writefreq, GLfloat priority ); +typedef void (GLAPIENTRY *PFN_glXCopySubBufferMESA)( Display *dpy, GLXDrawable drawable, int x, int y, int width, int height ); +typedef GLXContext (GLAPIENTRY *PFN_glXCreateContextAttribsARB)( Display *dpy, GLXFBConfig config, GLXContext share_context, Bool direct, const int *attrib_list ); +typedef void (GLAPIENTRY *PFN_glXFreeMemoryNV)( void *pointer ); +typedef Bool (GLAPIENTRY *PFN_glXGetMscRateOML)( Display *dpy, GLXDrawable drawable, int32_t *numerator, int32_t *denominator ); +typedef int (GLAPIENTRY *PFN_glXGetSwapIntervalMESA)(void); +typedef Bool (GLAPIENTRY *PFN_glXGetSyncValuesOML)( Display *dpy, GLXDrawable drawable, int64_t *ust, int64_t *msc, int64_t *sbc ); +typedef Bool (GLAPIENTRY *PFN_glXQueryCurrentRendererIntegerMESA)( int attribute, unsigned int *value ); +typedef const char * (GLAPIENTRY *PFN_glXQueryCurrentRendererStringMESA)( int attribute ); +typedef Bool (GLAPIENTRY *PFN_glXQueryRendererIntegerMESA)( Display *dpy, int screen, int renderer, int attribute, unsigned int *value ); +typedef const char * (GLAPIENTRY *PFN_glXQueryRendererStringMESA)( Display *dpy, int screen, int renderer, int attribute ); +typedef int64_t (GLAPIENTRY *PFN_glXSwapBuffersMscOML)( Display *dpy, GLXDrawable drawable, int64_t target_msc, int64_t divisor, int64_t remainder ); +typedef void (GLAPIENTRY *PFN_glXSwapIntervalEXT)( Display *dpy, GLXDrawable drawable, int interval ); +typedef int (GLAPIENTRY *PFN_glXSwapIntervalMESA)( unsigned int interval ); +typedef int (GLAPIENTRY *PFN_glXSwapIntervalSGI)( int interval ); +typedef Bool (GLAPIENTRY *PFN_glXWaitForMscOML)( Display *dpy, GLXDrawable drawable, int64_t target_msc, int64_t divisor, int64_t remainder, int64_t *ust, int64_t *msc, int64_t *sbc ); +typedef Bool (GLAPIENTRY *PFN_glXWaitForSbcOML)( Display *dpy, GLXDrawable drawable, int64_t target_sbc, int64_t *ust, int64_t *msc, int64_t *sbc ); typedef void * (GLAPIENTRY *PFN_wglAllocateMemoryNV)( GLsizei size, GLfloat readfreq, GLfloat writefreq, GLfloat priority ); typedef BOOL (GLAPIENTRY *PFN_wglBindTexImageARB)( HPBUFFERARB hPbuffer, int iBuffer ); typedef BOOL (GLAPIENTRY *PFN_wglChoosePixelFormatARB)( HDC hdc, const int *piAttribIList, const FLOAT *pfAttribFList, UINT nMaxFormats, int *piFormats, UINT *nNumFormats ); @@ -8978,6 +9254,66 @@ typedef BOOL (GLAPIENTRY *PFN_wglSwapIntervalEXT)( int interval ); USE_GL_FUNC(wglSetPixelFormatWINE) \ USE_GL_FUNC(wglSwapIntervalEXT)
+#define ALL_GLX_FUNCS \ + USE_GL_FUNC(glXChooseFBConfig) \ + USE_GL_FUNC(glXChooseVisual) \ + USE_GL_FUNC(glXCopyContext) \ + USE_GL_FUNC(glXCreateContext) \ + USE_GL_FUNC(glXCreateGLXPixmap) \ + USE_GL_FUNC(glXCreateNewContext) \ + USE_GL_FUNC(glXCreatePbuffer) \ + USE_GL_FUNC(glXCreatePixmap) \ + USE_GL_FUNC(glXCreateWindow) \ + USE_GL_FUNC(glXDestroyContext) \ + USE_GL_FUNC(glXDestroyGLXPixmap) \ + USE_GL_FUNC(glXDestroyPbuffer) \ + USE_GL_FUNC(glXDestroyPixmap) \ + USE_GL_FUNC(glXDestroyWindow) \ + USE_GL_FUNC(glXGetClientString) \ + USE_GL_FUNC(glXGetConfig) \ + USE_GL_FUNC(glXGetCurrentContext) \ + USE_GL_FUNC(glXGetCurrentDisplay) \ + USE_GL_FUNC(glXGetCurrentDrawable) \ + USE_GL_FUNC(glXGetCurrentReadDrawable) \ + USE_GL_FUNC(glXGetFBConfigAttrib) \ + USE_GL_FUNC(glXGetFBConfigs) \ + USE_GL_FUNC(glXGetProcAddress) \ + USE_GL_FUNC(glXGetSelectedEvent) \ + USE_GL_FUNC(glXGetVisualFromFBConfig) \ + USE_GL_FUNC(glXIsDirect) \ + USE_GL_FUNC(glXMakeContextCurrent) \ + USE_GL_FUNC(glXMakeCurrent) \ + USE_GL_FUNC(glXQueryContext) \ + USE_GL_FUNC(glXQueryDrawable) \ + USE_GL_FUNC(glXQueryExtension) \ + USE_GL_FUNC(glXQueryExtensionsString) \ + USE_GL_FUNC(glXQueryServerString) \ + USE_GL_FUNC(glXQueryVersion) \ + USE_GL_FUNC(glXSelectEvent) \ + USE_GL_FUNC(glXSwapBuffers) \ + USE_GL_FUNC(glXUseXFont) \ + USE_GL_FUNC(glXWaitGL) \ + USE_GL_FUNC(glXWaitX) + +#define ALL_GLX_EXT_FUNCS \ + USE_GL_FUNC(glXAllocateMemoryNV) \ + USE_GL_FUNC(glXCopySubBufferMESA) \ + USE_GL_FUNC(glXCreateContextAttribsARB) \ + USE_GL_FUNC(glXFreeMemoryNV) \ + USE_GL_FUNC(glXGetMscRateOML) \ + USE_GL_FUNC(glXGetSwapIntervalMESA) \ + USE_GL_FUNC(glXGetSyncValuesOML) \ + USE_GL_FUNC(glXQueryCurrentRendererIntegerMESA) \ + USE_GL_FUNC(glXQueryCurrentRendererStringMESA) \ + USE_GL_FUNC(glXQueryRendererIntegerMESA) \ + USE_GL_FUNC(glXQueryRendererStringMESA) \ + USE_GL_FUNC(glXSwapBuffersMscOML) \ + USE_GL_FUNC(glXSwapIntervalEXT) \ + USE_GL_FUNC(glXSwapIntervalMESA) \ + USE_GL_FUNC(glXSwapIntervalSGI) \ + USE_GL_FUNC(glXWaitForMscOML) \ + USE_GL_FUNC(glXWaitForSbcOML) + #define ALL_EGL_FUNCS \ USE_GL_FUNC(eglBindAPI) \ USE_GL_FUNC(eglBindTexImage) \