added more GLX extension function stubs

This commit is contained in:
Brian Paul
2000-12-15 04:02:50 +00:00
parent 083e466f88
commit 783d7dfcbf
3 changed files with 724 additions and 116 deletions

View File

@@ -1,4 +1,4 @@
/* $Id: fakeglx.c,v 1.41 2000/12/14 17:44:08 brianp Exp $ */
/* $Id: fakeglx.c,v 1.42 2000/12/15 04:02:50 brianp Exp $ */
/*
* Mesa 3-D graphics library
@@ -1778,6 +1778,379 @@ Fake_glXGetSelectedEvent( Display *dpy, GLXDrawable drawable,
#ifdef GLX_SGI_swap_control
static int
Fake_glXSwapIntervalSGI(int interval)
{
(void) interval;
return 0;
}
#endif
#ifdef GLX_SGI_video_sync
static int
Fake_glXGetVideoSyncSGI(unsigned int *count)
{
(void) count;
return 0;
}
static int
Fake_glXWaitVideoSyncSGI(int divisor, int remainder, unsigned int *count)
{
(void) divisor;
(void) remainder;
(void) count;
return 0;
}
#endif
#ifdef GLX_SGI_make_current_read
static Bool
Fake_glXMakeCurrentReadSGI(Display *dpy, GLXDrawable draw, GLXDrawable read, GLXContext ctx)
{
(void) dpy;
(void) draw;
(void) read;
(void) ctx;
return False;
}
static GLXDrawable
Fake_glXGetCurrentReadDrawableSGI(void)
{
return 0;
}
#endif
#if defined(_VL_H) && defined(GLX_SGIX_video_source)
static GLXVideoSourceSGIX
Fake_glXCreateGLXVideoSourceSGIX(Display *dpy, int screen, VLServer server, VLPath path, int nodeClass, VLNode drainNode)
{
(void) dpy;
(void) screen;
(void) server;
(void) path;
(void) nodeClass;
(void) drainNode;
return 0;
}
static void
Fake_glXDestroyGLXVideoSourceSGIX(Display *dpy, GLXVideoSourceSGIX src)
{
(void) dpy;
(void) src;
}
#endif
#ifdef GLX_EXT_import_context
static void
Fake_glXFreeContextEXT(Display *dpy, GLXContext context)
{
(void) dpy;
(void) context;
}
static GLXContextID
Fake_glXGetContextIDEXT(const GLXContext context)
{
(void) context;
return 0;
}
static Display *
Fake_glXGetCurrentDisplayEXT(void)
{
return glXGetCurrentDisplay();
}
static GLXContext
Fake_glXImportContextEXT(Display *dpy, GLXContextID contextID)
{
(void) dpy;
(void) contextID;
return 0;
}
static int
Fake_glXQueryContextInfoEXT(Display *dpy, GLXContext context, int attribute, int *value)
{
(void) dpy;
(void) context;
(void) attribute;
(void) value;
return 0;
}
#endif
#ifdef GLX_SGIX_fbconfig
static int
Fake_glXGetFBConfigAttribSGIX(Display *dpy, GLXFBConfigSGIX config, int attribute, int *value)
{
(void) dpy;
(void) config;
(void) attribute;
(void) value;
return 0;
}
static GLXFBConfigSGIX *
Fake_glXChooseFBConfigSGIX(Display *dpy, int screen, int *attrib_list, int *nelements)
{
(void) dpy;
(void) screen;
(void) attrib_list;
(void) nelements;
return 0;
}
static GLXPixmap
Fake_glXCreateGLXPixmapWithConfigSGIX(Display *dpy, GLXFBConfigSGIX config, Pixmap pixmap)
{
(void) dpy;
(void) config;
(void) pixmap;
return 0;
}
static GLXContext
Fake_glXCreateContextWithConfigSGIX(Display *dpy, GLXFBConfigSGIX config, int render_type, GLXContext share_list, Bool direct)
{
(void) dpy;
(void) config;
(void) render_type;
(void) share_list;
(void) direct;
return 0;
}
static XVisualInfo *
Fake_glXGetVisualFromFBConfigSGIX(Display *dpy, GLXFBConfigSGIX config)
{
(void) dpy;
(void) config;
return NULL;
}
static GLXFBConfigSGIX
Fake_glXGetFBConfigFromVisualSGIX(Display *dpy, XVisualInfo *vis)
{
(void) dpy;
(void) vis;
return 0;
}
#endif
#ifdef GLX_SGIX_pbuffer
static GLXPbufferSGIX
Fake_glXCreateGLXPbufferSGIX(Display *dpy, GLXFBConfigSGIX config, unsigned int width, unsigned int height, int *attrib_list)
{
(void) dpy;
(void) config;
(void) width;
(void) height;
(void) attrib_list;
return 0;
}
static void
Fake_glXDestroyGLXPbufferSGIX(Display *dpy, GLXPbufferSGIX pbuf)
{
(void) dpy;
(void) pbuf;
}
static int
Fake_glXQueryGLXPbufferSGIX(Display *dpy, GLXPbufferSGIX pbuf, int attribute, unsigned int *value)
{
(void) dpy;
(void) pbuf;
(void) attribute;
(void) value;
return 0;
}
static void
Fake_glXSelectEventSGIX(Display *dpy, GLXDrawable drawable, unsigned long mask)
{
(void) dpy;
(void) drawable;
(void) mask;
}
static void
Fake_glXGetSelectedEventSGIX(Display *dpy, GLXDrawable drawable, unsigned long *mask)
{
(void) dpy;
(void) drawable;
(void) mask;
}
#endif
#ifdef GLX_SGI_cushion
static void
Fake_glXCushionSGI(Display *dpy, Window win, float cushion)
{
(void) dpy;
(void) win;
(void) cushion;
}
#endif
#ifdef GLX_SGIX_video_resize
static int
Fake_glXBindChannelToWindowSGIX(Display *dpy, int screen, int channel , Window window)
{
(void) dpy;
(void) screen;
(void) channel;
(void) window;
return 0;
}
static int
Fake_glXChannelRectSGIX(Display *dpy, int screen, int channel, int x, int y, int w, int h)
{
(void) dpy;
(void) screen;
(void) channel;
(void) x;
(void) y;
(void) w;
(void) h;
return 0;
}
static int
Fake_glXQueryChannelRectSGIX(Display *dpy, int screen, int channel, int *x, int *y, int *w, int *h)
{
(void) dpy;
(void) screen;
(void) channel;
(void) x;
(void) y;
(void) w;
(void) h;
return 0;
}
static int
Fake_glXQueryChannelDeltasSGIX(Display *dpy, int screen, int channel, int *dx, int *dy, int *dw, int *dh)
{
(void) dpy;
(void) screen;
(void) channel;
(void) dx;
(void) dy;
(void) dw;
(void) dh;
return 0;
}
static int
Fake_glXChannelRectSyncSGIX(Display *dpy, int screen, int channel, GLenum synctype)
{
(void) dpy;
(void) screen;
(void) channel;
(void) synctype;
return 0;
}
#endif
#if defined(_DM_BUFFER_H_) && defined(GLX_SGIX_dmbuffer)
static Bool
Fake_glXAssociateDMPbufferSGIX(Display *dpy, GLXPbufferSGIX pbuffer, DMparams *params, DMbuffer dmbuffer)
{
(void) dpy;
(void) pbuffer;
(void) params;
(void) dmbuffer;
return False;
}
#endif
#ifdef GLX_SGIX_swap_group
static void
Fake_glXJoinSwapGroupSGIX(Display *dpy, GLXDrawable drawable, GLXDrawable member)
{
(void) dpy;
(void) drawable;
(void) member;
}
#endif
#ifdef GLX_SGIX_swap_barrier
static void
Fake_glXBindSwapBarrierSGIX(Display *dpy, GLXDrawable drawable, int barrier)
{
(void) dpy;
(void) drawable;
(void) barrier;
}
static Bool
Fake_glXQueryMaxSwapBarriersSGIX(Display *dpy, int screen, int *max)
{
(void) dpy;
(void) screen;
(void) max;
return False;
}
#endif
#ifdef GLX_SUN_get_transparent_index
static Status
Fake_glXGetTransparentIndexSUN(Display *dpy, Window overlay, Window underlay, long *pTransparent)
{
(void) dpy;
(void) overlay;
(void) underlay;
(void) pTransparent;
return 0;
}
#endif
#ifdef GLX_MESA_release_buffers
/*
* Release the depth, stencil, accum buffers attached to a GLXDrawable
@@ -1807,28 +2180,6 @@ Fake_glXSet3DfxModeMESA( int mode )
/*
* GLX_SGI_video_sync
*/
#ifdef GLX_SGI_video_sync
static int
Fake_glXGetVideoSyncSGI(unsigned int *count)
{
return 0;
}
static int
Fake_glXWaitVideoSyncSGI(int divisor, int remainder, unsigned int *count)
{
return 0;
}
#endif
extern struct _glxapi_table *_mesa_GetGLXDispatchTable(void);
struct _glxapi_table *_mesa_GetGLXDispatchTable(void)
@@ -1894,26 +2245,77 @@ struct _glxapi_table *_mesa_GetGLXDispatchTable(void)
glx.SelectEvent = Fake_glXSelectEvent;
#endif
#ifdef GLX_SGI_swap_control
glx.SwapIntervalSGI = Fake_glXSwapIntervalSGI;
#endif
#ifdef GLX_SGI_video_sync
glx.GetVideoSyncSGI = Fake_glXGetVideoSyncSGI;
glx.WaitVideoSyncSGI = Fake_glXWaitVideoSyncSGI;
#endif
#ifdef GLX_SGIX_video_resize
glx.BindChannelToWindowSGIX = NULL;
glx.ChannelRectSGIX = NULL;
glx.QueryChannelRectSGIX = NULL;
glx.QueryChannelDeltasSGIX = NULL;
glx.ChannelRectSyncSGIX = NULL;
#ifdef GLX_SGI_make_current_read
glx.MakeCurrentReadSGI = Fake_glXMakeCurrentReadSGI;
glx.GetCurrentReadDrawableSGI = Fake_glXGetCurrentReadDrawableSGI;
#endif
#if defined(_VL_H) && defined(GLX_SGIX_video_source)
glx.CreateGLXVideoSourceSGIX = Fake_glXCreateGLXVideoSourceSGIX;
glx.DestroyGLXVideoSourceSGIX = Fake_glXDestroyGLXVideoSourceSGIX;
#endif
#ifdef GLX_EXT_import_context
glx.FreeContextEXT = Fake_glXFreeContextEXT;
glx.GetContextIDEXT = Fake_glXGetContextIDEXT;
glx.GetCurrentDisplayEXT = Fake_glXGetCurrentDisplayEXT;
glx.ImportContextEXT = Fake_glXImportContextEXT;
glx.QueryContextInfoEXT = Fake_glXQueryContextInfoEXT;
#endif
#ifdef GLX_SGIX_fbconfig
glx.GetFBConfigAttribSGIX = NULL;
glx.ChooseFBConfigSGIX = NULL;
glx.CreateGLXPixmapWithConfigSGIX = NULL;
glx.CreateContextWithConfigSGIX = NULL;
glx.GetVisualFromFBConfigSGIX = NULL;
glx.GetFBConfigFromVisualSGIX = NULL;
glx.GetFBConfigAttribSGIX = Fake_glXGetFBConfigAttribSGIX;
glx.ChooseFBConfigSGIX = Fake_glXChooseFBConfigSGIX;
glx.CreateGLXPixmapWithConfigSGIX = Fake_glXCreateGLXPixmapWithConfigSGIX;
glx.CreateContextWithConfigSGIX = Fake_glXCreateContextWithConfigSGIX;
glx.GetVisualFromFBConfigSGIX = Fake_glXGetVisualFromFBConfigSGIX;
glx.GetFBConfigFromVisualSGIX = Fake_glXGetFBConfigFromVisualSGIX;
#endif
#ifdef GLX_SGIX_pbuffer
glx.CreateGLXPbufferSGIX = Fake_glXCreateGLXPbufferSGIX;
glx.DestroyGLXPbufferSGIX = Fake_glXDestroyGLXPbufferSGIX;
glx.QueryGLXPbufferSGIX = Fake_glXQueryGLXPbufferSGIX;
glx.SelectEventSGIX = Fake_glXSelectEventSGIX;
glx.GetSelectedEventSGIX = Fake_glXGetSelectedEventSGIX;
#endif
#ifdef GLX_SGI_cushion
glx.CushionSGI = Fake_glXCushionSGI;
#endif
#ifdef GLX_SGIX_video_resize
glx.BindChannelToWindowSGIX = Fake_glXBindChannelToWindowSGIX;
glx.ChannelRectSGIX = Fake_glXChannelRectSGIX;
glx.QueryChannelRectSGIX = Fake_glXQueryChannelRectSGIX;
glx.QueryChannelDeltasSGIX = Fake_glXQueryChannelDeltasSGIX;
glx.ChannelRectSyncSGIX = Fake_glXChannelRectSyncSGIX;
#endif
#if defined(_DM_BUFFER_H_) && defined(GLX_SGIX_dmbuffer)
glx.AssociateDMPbufferSGIX = NULL;
#endif
#ifdef GLX_SGIX_swap_group
glx.JoinSwapGroupSGIX = Fake_glXJoinSwapGroupSGIX;
#endif
#ifdef GLX_SGIX_swap_barrier
glx.BindSwapBarrierSGIX = Fake_glXBindSwapBarrierSGIX;
glx.QueryMaxSwapBarriersSGIX = Fake_glXQueryMaxSwapBarriersSGIX;
#endif
#ifdef GLX_SUN_get_transparent_index
glx.GetTransparentIndexSUN = Fake_glXGetTransparentIndexSUN;
#endif
#ifdef GLX_MESA_copy_sub_buffer

View File

@@ -1,4 +1,4 @@
/* $Id: glxapi.c,v 1.19 2000/12/14 17:44:08 brianp Exp $ */
/* $Id: glxapi.c,v 1.20 2000/12/15 04:02:50 brianp Exp $ */
/*
* Mesa 3-D graphics library
@@ -520,6 +520,82 @@ void glXSelectEvent(Display *dpy, GLXDrawable drawable, unsigned long mask)
#endif /* GLX_VERSION_1_3 */
#ifdef GLX_SGI_swap_control
int glXSwapIntervalSGI(int interval)
{
struct _glxapi_table *t = get_dispatch(CurrentDisplay);
if (!t)
return 0;
return (t->SwapIntervalSGI)(interval);
}
#endif
#ifdef GLX_SGI_video_sync
int glXGetVideoSyncSGI(unsigned int *count)
{
struct _glxapi_table *t = get_dispatch(CurrentDisplay);
if (!t)
return 0;
return (t->GetVideoSyncSGI)(count);
}
int glXWaitVideoSyncSGI(int divisor, int remainder, unsigned int *count)
{
struct _glxapi_table *t = get_dispatch(CurrentDisplay);
if (!t)
return 0;
return (t->WaitVideoSyncSGI)(divisor, remainder, count);
}
#endif
#ifdef GLX_SGI_make_current_read
Bool glXMakeCurrentReadSGI(Display *dpy, GLXDrawable draw, GLXDrawable read, GLXContext ctx)
{
struct _glxapi_table *t = get_dispatch(dpy);
if (!t)
return 0;
return (t->MakeCurrentReadSGI)(dpy, draw, read, ctx);
}
GLXDrawable glXGetCurrentReadDrawableSGI(void)
{
struct _glxapi_table *t = get_dispatch(CurrentDisplay);
if (!t)
return 0;
return (t->GetCurrentReadDrawableSGI)();
}
#endif
#if defined(_VL_H) && defined(GLX_SGIX_video_source)
GLXVideoSourceSGIX glXCreateGLXVideoSourceSGIX(Display *dpy, int screen, VLServer server, VLPath path, int nodeClass, VLNode drainNode)
{
struct _glxapi_table *t = get_dispatch(dpy);
if (!t)
return 0;
return (t->CreateGLXVideoSourceSGIX)(dpy, screen, server, path, nodeClass, drainNode);
}
void glXDestroyGLXVideoSourceSGIX(Display *dpy, GLXVideoSourceSGIX src)
{
struct _glxapi_table *t = get_dispatch(dpy);
if (!t)
return 0;
return (t->DestroyGLXVideoSourceSGIX)(dpy, src);
}
#endif
#ifdef GLX_EXT_import_context
void glXFreeContextEXT(Display *dpy, GLXContext context)
@@ -530,7 +606,6 @@ void glXFreeContextEXT(Display *dpy, GLXContext context)
(t->FreeContextEXT)(dpy, context);
}
GLXContextID glXGetContextIDEXT(const GLXContext context)
{
/* XXX is this function right? */
@@ -540,13 +615,11 @@ GLXContextID glXGetContextIDEXT(const GLXContext context)
return (t->GetContextIDEXT)(context);
}
Display *glXGetCurrentDisplayEXT(void)
{
return CurrentDisplay;
}
GLXContext glXImportContextEXT(Display *dpy, GLXContextID contextID)
{
struct _glxapi_table *t = get_dispatch(dpy);
@@ -566,23 +639,112 @@ int glXQueryContextInfoEXT(Display *dpy, GLXContext context, int attribute,int *
#endif
#ifdef GLX_SGI_video_sync
#ifdef GLX_SGIX_fbconfig
int glXGetVideoSyncSGI(unsigned int *count)
int glXGetFBConfigAttribSGIX(Display *dpy, GLXFBConfigSGIX config, int attribute, int *value)
{
struct _glxapi_table *t = get_dispatch(CurrentDisplay);
struct _glxapi_table *t = get_dispatch(dpy);
if (!t)
return 0;
return (t->GetVideoSyncSGI)(count);
return (t->GetFBConfigAttribSGIX)(dpy, config, attribute, value);
}
int glXWaitVideoSyncSGI(int divisor, int remainder, unsigned int *count)
GLXFBConfigSGIX *glXChooseFBConfigSGIX(Display *dpy, int screen, int *attrib_list, int *nelements)
{
struct _glxapi_table *t = get_dispatch(CurrentDisplay);
struct _glxapi_table *t = get_dispatch(dpy);
if (!t)
return 0;
return (t->WaitVideoSyncSGI)(divisor, remainder, count);
return (t->ChooseFBConfigSGIX)(dpy, screen, attrib_list, nelements);
}
GLXPixmap glXCreateGLXPixmapWithConfigSGIX(Display *dpy, GLXFBConfigSGIX config, Pixmap pixmap)
{
struct _glxapi_table *t = get_dispatch(dpy);
if (!t)
return 0;
return (t->CreateGLXPixmapWithConfigSGIX)(dpy, config, pixmap);
}
GLXContext glXCreateContextWithConfigSGIX(Display *dpy, GLXFBConfigSGIX config, int render_type, GLXContext share_list, Bool direct)
{
struct _glxapi_table *t = get_dispatch(dpy);
if (!t)
return 0;
return (t->CreateContextWithConfigSGIX)(dpy, config, render_type, share_list, direct);
}
XVisualInfo * glXGetVisualFromFBConfigSGIX(Display *dpy, GLXFBConfigSGIX config)
{
struct _glxapi_table *t = get_dispatch(dpy);
if (!t)
return 0;
return (t->GetVisualFromFBConfigSGIX)(dpy, config);
}
GLXFBConfigSGIX glXGetFBConfigFromVisualSGIX(Display *dpy, XVisualInfo *vis)
{
struct _glxapi_table *t = get_dispatch(dpy);
if (!t)
return 0;
return (t->GetFBConfigFromVisualSGIX)(dpy, vis);
}
#endif
#ifdef GLX_SGIX_pbuffer
GLXPbufferSGIX glXCreateGLXPbufferSGIX(Display *dpy, GLXFBConfigSGIX config, unsigned int width, unsigned int height, int *attrib_list)
{
struct _glxapi_table *t = get_dispatch(dpy);
if (!t)
return 0;
return (t->CreateGLXPbufferSGIX)(dpy, config, width, height, attrib_list);
}
void glXDestroyGLXPbufferSGIX(Display *dpy, GLXPbufferSGIX pbuf)
{
struct _glxapi_table *t = get_dispatch(dpy);
if (!t)
return;
(t->DestroyGLXPbufferSGIX)(dpy, pbuf);
}
int glXQueryGLXPbufferSGIX(Display *dpy, GLXPbufferSGIX pbuf, int attribute, unsigned int *value)
{
struct _glxapi_table *t = get_dispatch(dpy);
if (!t)
return 0;
return (t->QueryGLXPbufferSGIX)(dpy, pbuf, attribute, value);
}
void glXSelectEventSGIX(Display *dpy, GLXDrawable drawable, unsigned long mask)
{
struct _glxapi_table *t = get_dispatch(dpy);
if (!t)
return;
(t->SelectEventSGIX)(dpy, drawable, mask);
}
void glXGetSelectedEventSGIX(Display *dpy, GLXDrawable drawable, unsigned long *mask)
{
struct _glxapi_table *t = get_dispatch(dpy);
if (!t)
return;
(t->GetSelectedEventSGIX)(dpy, drawable, mask);
}
#endif
#ifdef GLX_SGI_cushion
void glXCushionSGI(Display *dpy, Window win, float cushion)
{
struct _glxapi_table *t = get_dispatch(dpy);
if (!t)
return;
(t->CushionSGI)(dpy, win, cushion);
}
#endif
@@ -592,7 +754,7 @@ int glXWaitVideoSyncSGI(int divisor, int remainder, unsigned int *count)
int glXBindChannelToWindowSGIX(Display *dpy, int screen, int channel , Window window)
{
struct _glxapi_table *t = get_dispatch(CurrentDisplay);
struct _glxapi_table *t = get_dispatch(dpy);
if (!t)
return 0;
return (t->BindChannelToWindowSGIX)(dpy, screen, channel, window);
@@ -600,7 +762,7 @@ int glXBindChannelToWindowSGIX(Display *dpy, int screen, int channel , Window wi
int glXChannelRectSGIX(Display *dpy, int screen, int channel, int x, int y, int w, int h)
{
struct _glxapi_table *t = get_dispatch(CurrentDisplay);
struct _glxapi_table *t = get_dispatch(dpy);
if (!t)
return 0;
return (t->ChannelRectSGIX)(dpy, screen, channel, x, y, w, h);
@@ -608,7 +770,7 @@ int glXChannelRectSGIX(Display *dpy, int screen, int channel, int x, int y, int
int glXQueryChannelRectSGIX(Display *dpy, int screen, int channel, int *x, int *y, int *w, int *h)
{
struct _glxapi_table *t = get_dispatch(CurrentDisplay);
struct _glxapi_table *t = get_dispatch(dpy);
if (!t)
return 0;
return (t->QueryChannelRectSGIX)(dpy, screen, channel, x, y, w, h);
@@ -616,7 +778,7 @@ int glXQueryChannelRectSGIX(Display *dpy, int screen, int channel, int *x, int *
int glXQueryChannelDeltasSGIX(Display *dpy, int screen, int channel, int *dx, int *dy, int *dw, int *dh)
{
struct _glxapi_table *t = get_dispatch(CurrentDisplay);
struct _glxapi_table *t = get_dispatch(dpy);
if (!t)
return 0;
return (t->QueryChannelDeltasSGIX)(dpy, screen, channel, dx, dy, dw, dh);
@@ -624,7 +786,7 @@ int glXQueryChannelDeltasSGIX(Display *dpy, int screen, int channel, int *dx, in
int glXChannelRectSyncSGIX(Display *dpy, int screen, int channel, GLenum synctype)
{
struct _glxapi_table *t = get_dispatch(CurrentDisplay);
struct _glxapi_table *t = get_dispatch(dpy);
if (!t)
return 0;
return (t->ChannelRectSyncSGIX)(dpy, screen, channel, synctype);
@@ -633,61 +795,65 @@ int glXChannelRectSyncSGIX(Display *dpy, int screen, int channel, GLenum synctyp
#endif
#ifdef GLX_SGIX_fbconfig
#if defined(_DM_BUFFER_H_) && defined(GLX_SGIX_dmbuffer)
int glXGetFBConfigAttribSGIX(Display *dpy, GLXFBConfigSGIX config, int attribute, int *value)
Bool glXAssociateDMPbufferSGIX(Display *dpy, GLXPbufferSGIX pbuffer, DMparams *params, DMbuffer dmbuffer)
{
struct _glxapi_table *t = get_dispatch(CurrentDisplay);
struct _glxapi_table *t = get_dispatch(dpy);
if (!t)
return 0;
return (t->GetFBConfigAttribSGIX)(dpy, config, attribute, value);
}
GLXFBConfigSGIX * glXChooseFBConfigSGIX(Display *dpy, int screen, int *attrib_list, int *nelements)
{
struct _glxapi_table *t = get_dispatch(CurrentDisplay);
if (!t)
return 0;
return (t->ChooseFBConfigSGIX)(dpy, screen, attrib_list, nelements);
}
GLXPixmap glXCreateGLXPixmapWithConfigSGIX(Display *dpy, GLXFBConfigSGIX config, Pixmap pixmap)
{
struct _glxapi_table *t = get_dispatch(CurrentDisplay);
if (!t)
return 0;
return (t->CreateGLXPixmapWithConfigSGIX)(dpy, config, pixmap);
}
GLXContext glXCreateContextWithConfigSGIX(Display *dpy, GLXFBConfigSGIX config, int render_type, GLXContext share_list, Bool direct)
{
struct _glxapi_table *t = get_dispatch(CurrentDisplay);
if (!t)
return 0;
return (t->CreateContextWithConfigSGIX)(dpy, config, render_type, share_list, direct);
}
XVisualInfo * glXGetVisualFromFBConfigSGIX(Display *dpy, GLXFBConfigSGIX config)
{
struct _glxapi_table *t = get_dispatch(CurrentDisplay);
if (!t)
return 0;
return (t->GetVisualFromFBConfigSGIX)(dpy, config);
}
GLXFBConfigSGIX glXGetFBConfigFromVisualSGIX(Display *dpy, XVisualInfo *vis)
{
struct _glxapi_table *t = get_dispatch(CurrentDisplay);
if (!t)
return 0;
return (t->GetFBConfigFromVisualSGIX)(dpy, vis);
return False;
return (t->AssociateDMPbufferSGIX)(dpy, pbuffer, params, dmbuffer);
}
#endif
#ifdef GLX_SGIX_swap_group
void glXJoinSwapGroupSGIX(Display *dpy, GLXDrawable drawable, GLXDrawable member)
{
struct _glxapi_table *t = get_dispatch(dpy);
if (!t)
return;
(*t->JoinSwapGroupSGIX)(dpy, drawable, member);
}
#endif
#ifdef GLX_SGIX_swap_barrier
void glXBindSwapBarrierSGIX(Display *dpy, GLXDrawable drawable, int barrier)
{
struct _glxapi_table *t = get_dispatch(dpy);
if (!t)
return;
(*t->BindSwapBarrierSGIX)(dpy, drawable, barrier);
}
Bool glXQueryMaxSwapBarriersSGIX(Display *dpy, int screen, int *max)
{
struct _glxapi_table *t = get_dispatch(dpy);
if (!t)
return False;
return (*t->QueryMaxSwapBarriersSGIX)(dpy, screen, max);
}
#endif
#ifdef GLX_SUN_get_transparent_index
Status glXGetTransparentIndexSUN(Display *dpy, Window overlay, Window underlay, long *pTransparent)
{
struct _glxapi_table *t = get_dispatch(dpy);
if (!t)
return False;
return (*t->GetTransparentIndexSUN)(dpy, overlay, underlay, pTransparent);
}
#endif
#ifdef GLX_MESA_copy_sub_buffer

View File

@@ -1,4 +1,4 @@
/* $Id: glxapi.h,v 1.7 2000/12/14 17:44:08 brianp Exp $ */
/* $Id: glxapi.h,v 1.8 2000/12/15 04:02:50 brianp Exp $ */
/*
* Mesa 3-D graphics library
@@ -41,6 +41,9 @@
* Specifically, a real GLX library (like SGI's or the Utah GLX) and Mesa's
* pseudo-GLX can be present at the same time. The former being used on
* GLX-enabled X servers and the later on non-GLX X servers.
*
* XXX Note that this hasn't actually been fully used yet in either Mesa or
* the DRI. Red Hat, however, has used it for their custom libGL.
*/
struct _glxapi_table {
/* GLX 1.0 functions */
@@ -92,12 +95,8 @@ struct _glxapi_table {
void (*SelectEvent)(Display *dpy, GLXDrawable drawable, unsigned long mask);
#endif
#ifdef GLX_EXT_import_context
void (*FreeContextEXT)(Display *dpy, GLXContext context);
GLXContextID (*GetContextIDEXT)(const GLXContext context);
Display *(*GetCurrentDisplayEXT)(void);
GLXContext (*ImportContextEXT)(Display *dpy, GLXContextID contextID);
int (*QueryContextInfoEXT)(Display *dpy, GLXContext context, int attribute,int *value);
#ifdef GLX_SGI_swap_control
int (*SwapIntervalSGI)(int);
#endif
#ifdef GLX_SGI_video_sync
@@ -105,12 +104,22 @@ struct _glxapi_table {
int (*WaitVideoSyncSGI)(int divisor, int remainder, unsigned int *count);
#endif
#ifdef GLX_SGIX_video_resize
int (*BindChannelToWindowSGIX)(Display *, int, int, Window);
int (*ChannelRectSGIX)(Display *, int, int, int, int, int, int);
int (*QueryChannelRectSGIX)(Display *, int, int, int *, int *, int *, int *);
int (*QueryChannelDeltasSGIX)(Display *, int, int, int *, int *, int *, int *);
int (*ChannelRectSyncSGIX)(Display *, int, int, GLenum);
#ifdef GLX_SGI_make_current_read
Bool (*MakeCurrentReadSGI)(Display *, GLXDrawable, GLXDrawable, GLXContext);
GLXDrawable (*GetCurrentReadDrawableSGI)(void);
#endif
#if defined(_VL_H) && defined(GLX_SGIX_video_source)
GLXVideoSourceSGIX (*CreateGLXVideoSourceSGIX)(Display *, int, VLServer, VLPath, int, VLNode);
void (*DestroyGLXVideoSourceSGIX)(Display *, GLXVideoSourceSGIX);
#endif
#ifdef GLX_EXT_import_context
void (*FreeContextEXT)(Display *dpy, GLXContext context);
GLXContextID (*GetContextIDEXT)(const GLXContext context);
Display *(*GetCurrentDisplayEXT)(void);
GLXContext (*ImportContextEXT)(Display *dpy, GLXContextID contextID);
int (*QueryContextInfoEXT)(Display *dpy, GLXContext context, int attribute,int *value);
#endif
#ifdef GLX_SGIX_fbconfig
@@ -122,11 +131,42 @@ struct _glxapi_table {
GLXFBConfigSGIX (*GetFBConfigFromVisualSGIX)(Display *, XVisualInfo *);
#endif
/* XXX more glx extensions to add here */
#ifdef GLX_SGIX_pbuffer
GLXPbufferSGIX (*CreateGLXPbufferSGIX)(Display *, GLXFBConfigSGIX, unsigned int, unsigned int, int *);
void (*DestroyGLXPbufferSGIX)(Display *, GLXPbufferSGIX);
int (*QueryGLXPbufferSGIX)(Display *, GLXPbufferSGIX, int, unsigned int *);
void (*SelectEventSGIX)(Display *, GLXDrawable, unsigned long);
void (*GetSelectedEventSGIX)(Display *, GLXDrawable, unsigned long *);
#endif
/*
* XXX thesa Mesa-specific functions might not belong here
*/
#ifdef GLX_SGI_cushion
void (*CushionSGI)(Display *, Window, float);
#endif
#ifdef GLX_SGIX_video_resize
int (*BindChannelToWindowSGIX)(Display *, int, int, Window);
int (*ChannelRectSGIX)(Display *, int, int, int, int, int, int);
int (*QueryChannelRectSGIX)(Display *, int, int, int *, int *, int *, int *);
int (*QueryChannelDeltasSGIX)(Display *, int, int, int *, int *, int *, int *);
int (*ChannelRectSyncSGIX)(Display *, int, int, GLenum);
#endif
#if defined (_DM_BUFFER_H_) && defined(GLX_SGIX_dmbuffer)
Bool (*AssociateDMPbufferSGIX)(Display *, GLXPbufferSGIX, DMparams *, DMbuffer);
#endif
#ifdef GLX_SGIX_swap_group
void (*JoinSwapGroupSGIX)(Display *, GLXDrawable, GLXDrawable);
#endif
#ifdef GLX_SGIX_swap_barrier
void (*BindSwapBarrierSGIX)(Display *, GLXDrawable, int);
Bool (*QueryMaxSwapBarriersSGIX)(Display *, int, int *);
#endif
#ifdef GLX_SUN_get_transparent_index
Status (*GetTransparentIndexSUN)(Display *, Window, Window, long *);
#endif
#ifdef GLX_MESA_copy_sub_buffer
void (*CopySubBufferMESA)(Display *dpy, GLXDrawable drawable, int x, int y, int width, int height);