From 6518f6037cfcab3783e913b5275f9045799e49b2 Mon Sep 17 00:00:00 2001 From: Ian Romanick Date: Fri, 5 Feb 2010 16:14:27 -0800 Subject: glxgears_fbconfig: Use GLX 1.3 name for function poiner types --- progs/xdemos/glxgears_fbconfig.c | 34 +++++++++++++++------------------- 1 file changed, 15 insertions(+), 19 deletions(-) (limited to 'progs') diff --git a/progs/xdemos/glxgears_fbconfig.c b/progs/xdemos/glxgears_fbconfig.c index 2dac00b75d..316480c74d 100644 --- a/progs/xdemos/glxgears_fbconfig.c +++ b/progs/xdemos/glxgears_fbconfig.c @@ -46,13 +46,9 @@ #include #include "pbutil.h" -/* I had to use the SGIX versions of these because for some reason glxext.h - * doesn't define the core versions if GLX_VERSION_1_3 is defined, and glx.h - * doesn't define them at all. One or both header files is clearly broken. - */ -static PFNGLXCHOOSEFBCONFIGSGIXPROC choose_fbconfig = NULL; -static PFNGLXGETVISUALFROMFBCONFIGSGIXPROC get_visual_from_fbconfig = NULL; -static PFNGLXCREATECONTEXTWITHCONFIGSGIXPROC create_new_context = NULL; +static PFNGLXCHOOSEFBCONFIGPROC choose_fbconfig = NULL; +static PFNGLXGETVISUALFROMFBCONFIGPROC get_visual_from_fbconfig = NULL; +static PFNGLXCREATENEWCONTEXTPROC create_new_context = NULL; #define BENCHMARK @@ -359,20 +355,20 @@ init_fbconfig_functions(Display *dpy, int scrnum) ext_name, (ext_version_supported) ? "" : "not " ); if ( glx_1_3_supported ) { - choose_fbconfig = (PFNGLXCHOOSEFBCONFIGSGIXPROC) glXGetProcAddressARB( - (GLubyte *) "glXChooseFBConfig"); - get_visual_from_fbconfig = (PFNGLXGETVISUALFROMFBCONFIGSGIXPROC) glXGetProcAddressARB( - (GLubyte *) "glXGetVisualFromFBConfig"); - create_new_context = (PFNGLXCREATECONTEXTWITHCONFIGSGIXPROC) glXGetProcAddressARB( - (GLubyte *) "glXCreateNewContext"); + choose_fbconfig = (PFNGLXCHOOSEFBCONFIGPROC) + glXGetProcAddressARB((GLubyte *) "glXChooseFBConfig"); + get_visual_from_fbconfig = (PFNGLXGETVISUALFROMFBCONFIGPROC) + glXGetProcAddressARB((GLubyte *) "glXGetVisualFromFBConfig"); + create_new_context = (PFNGLXCREATENEWCONTEXTPROC) + glXGetProcAddressARB((GLubyte *) "glXCreateNewContext"); } else if ( ext_version_supported ) { - choose_fbconfig = (PFNGLXCHOOSEFBCONFIGSGIXPROC) glXGetProcAddressARB( - (GLubyte *) "glXChooseFBConfigSGIX"); - get_visual_from_fbconfig = (PFNGLXGETVISUALFROMFBCONFIGSGIXPROC) glXGetProcAddressARB( - (GLubyte *) "glXGetVisualFromFBConfigSGIX"); - create_new_context = (PFNGLXCREATECONTEXTWITHCONFIGSGIXPROC) glXGetProcAddressARB( - (GLubyte *) "glXCreateContextWithConfigSGIX"); + choose_fbconfig = (PFNGLXCHOOSEFBCONFIGPROC) + glXGetProcAddressARB((GLubyte *) "glXChooseFBConfigSGIX"); + get_visual_from_fbconfig = (PFNGLXGETVISUALFROMFBCONFIGPROC) + glXGetProcAddressARB((GLubyte *) "glXGetVisualFromFBConfigSGIX"); + create_new_context = (PFNGLXCREATENEWCONTEXTPROC) + glXGetProcAddressARB((GLubyte *) "glXCreateContextWithConfigSGIX"); } else { printf( "This demo requires either GLX 1.3 or %s be supported.\n", -- cgit v1.2.3 From 381d5e209815235911c4aab516037c868c8f695f Mon Sep 17 00:00:00 2001 From: Ian Romanick Date: Fri, 5 Feb 2010 19:12:22 -0800 Subject: glxgears_fbconfig: Use glXCreateWindow and glXDestroyWindow --- progs/xdemos/glxgears_fbconfig.c | 44 +++++++++++++++++++++++++++++++++++----- 1 file changed, 39 insertions(+), 5 deletions(-) (limited to 'progs') diff --git a/progs/xdemos/glxgears_fbconfig.c b/progs/xdemos/glxgears_fbconfig.c index 316480c74d..36bf73138c 100644 --- a/progs/xdemos/glxgears_fbconfig.c +++ b/progs/xdemos/glxgears_fbconfig.c @@ -49,6 +49,8 @@ static PFNGLXCHOOSEFBCONFIGPROC choose_fbconfig = NULL; static PFNGLXGETVISUALFROMFBCONFIGPROC get_visual_from_fbconfig = NULL; static PFNGLXCREATENEWCONTEXTPROC create_new_context = NULL; +static PFNGLXCREATEWINDOWPROC create_window = NULL; +static PFNGLXDESTROYWINDOWPROC destroy_window = NULL; #define BENCHMARK @@ -320,6 +322,26 @@ init(void) } +static GLXWindow +dummy_create_window(Display *dpy, GLXFBConfig config, Window win, + const int *attrib_list) +{ + (void) dpy; + (void) config; + (void) attrib_list; + + return (GLXWindow) win; +} + + +static void +dummy_destroy_window(Display *dpy, GLXWindow win) +{ + (void) dpy; + (void) win; +} + + /** * Initialize fbconfig related function pointers. */ @@ -361,6 +383,10 @@ init_fbconfig_functions(Display *dpy, int scrnum) glXGetProcAddressARB((GLubyte *) "glXGetVisualFromFBConfig"); create_new_context = (PFNGLXCREATENEWCONTEXTPROC) glXGetProcAddressARB((GLubyte *) "glXCreateNewContext"); + create_window = (PFNGLXCREATEWINDOWPROC) + glXGetProcAddressARB((GLubyte *) "glXCreateWindow"); + destroy_window = (PFNGLXDESTROYWINDOWPROC) + glXGetProcAddressARB((GLubyte *) "glXDestroyWindow"); } else if ( ext_version_supported ) { choose_fbconfig = (PFNGLXCHOOSEFBCONFIGPROC) @@ -369,6 +395,8 @@ init_fbconfig_functions(Display *dpy, int scrnum) glXGetProcAddressARB((GLubyte *) "glXGetVisualFromFBConfigSGIX"); create_new_context = (PFNGLXCREATENEWCONTEXTPROC) glXGetProcAddressARB((GLubyte *) "glXCreateContextWithConfigSGIX"); + create_window = dummy_create_window; + destroy_window = dummy_destroy_window; } else { printf( "This demo requires either GLX 1.3 or %s be supported.\n", @@ -400,7 +428,7 @@ init_fbconfig_functions(Display *dpy, int scrnum) static void make_window( Display *dpy, const char *name, int x, int y, int width, int height, - Window *winRet, GLXContext *ctxRet) + Window *winRet, GLXWindow *glxWinRet, GLXContext *ctxRet) { int attrib[] = { GLX_DRAWABLE_TYPE, GLX_WINDOW_BIT, GLX_RENDER_TYPE, GLX_RGBA_BIT, @@ -418,6 +446,7 @@ make_window( Display *dpy, const char *name, unsigned long mask; Window root; Window win; + GLXWindow glxWin; GLXContext ctx; XVisualInfo *visinfo; @@ -463,6 +492,8 @@ make_window( Display *dpy, const char *name, None, (char **)NULL, 0, &sizehints); } + glxWin = (*create_window)(dpy, fbconfig[0], win, NULL); + ctx = (*create_new_context)(dpy, fbconfig[0], GLX_RGBA_TYPE, NULL, GL_TRUE); if (!ctx) { printf("Error: glXCreateNewContext failed\n"); @@ -471,13 +502,14 @@ make_window( Display *dpy, const char *name, XFree(fbconfig); + *glxWinRet = glxWin; *winRet = win; *ctxRet = ctx; } static void -event_loop(Display *dpy, Window win) +event_loop(Display *dpy, GLXWindow win) { while (1) { while (XPending(dpy) > 0) { @@ -554,6 +586,7 @@ main(int argc, char *argv[]) { Display *dpy; Window win; + GLXWindow glxWin; GLXContext ctx; const char *dpyName = NULL; GLboolean printInfo = GL_FALSE; @@ -575,9 +608,9 @@ main(int argc, char *argv[]) return -1; } - make_window(dpy, "glxgears", 0, 0, 300, 300, &win, &ctx); + make_window(dpy, "glxgears", 0, 0, 300, 300, &win, &glxWin, &ctx); XMapWindow(dpy, win); - glXMakeCurrent(dpy, win, ctx); + glXMakeCurrent(dpy, glxWin, ctx); if (printInfo) { printf("GL_RENDERER = %s\n", (char *) glGetString(GL_RENDERER)); @@ -588,9 +621,10 @@ main(int argc, char *argv[]) init(); - event_loop(dpy, win); + event_loop(dpy, glxWin); glXDestroyContext(dpy, ctx); + destroy_window(dpy, glxWin); XDestroyWindow(dpy, win); XCloseDisplay(dpy); -- cgit v1.2.3