X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;f=src%2Fmesa%2Fdrivers%2Fx11%2Fglxapi.h;h=3187534c9a39274b1e3b34930e3a40d573725344;hb=23d31efc167f09d47635352f697ffcb087d3ebbd;hp=d24b74bcbd5fbd21a4d24ef22f926096dbade365;hpb=783d7dfcbf40f727c85915b3e5ea5ff6682eaa48;p=mesa.git diff --git a/src/mesa/drivers/x11/glxapi.h b/src/mesa/drivers/x11/glxapi.h index d24b74bcbd5..3187534c9a3 100644 --- a/src/mesa/drivers/x11/glxapi.h +++ b/src/mesa/drivers/x11/glxapi.h @@ -1,10 +1,8 @@ -/* $Id: glxapi.h,v 1.8 2000/12/15 04:02:50 brianp Exp $ */ - /* * Mesa 3-D graphics library - * Version: 3.5 + * Version: 6.3 * - * Copyright (C) 1999-2000 Brian Paul All Rights Reserved. + * Copyright (C) 1999-2004 Brian Paul All Rights Reserved. * * Permission is hereby granted, free of charge, to any person obtaining a * copy of this software and associated documentation files (the "Software"), @@ -33,6 +31,20 @@ #include "GL/glx.h" +/* The GLX API dispatcher (i.e. this code) is being built into stand-alone + * Mesa. We don't know anything about XFree86 or real GLX so we define a + * minimal __GLXContextRec here so some of the functions in this file can + * work properly. + */ +typedef struct __GLXcontextRec { + Display *currentDpy; + GLboolean isDirect; + GLXDrawable currentDrawable; + GLXDrawable currentReadable; + XID xid; +} __GLXcontext; + + /* * Almost all the GLX API functions get routed through this dispatch table. * The exceptions are the glXGetCurrentXXX() functions. @@ -42,11 +54,13 @@ * 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. + * Red Hat has been using this since Red Hat Linux 7.0 (I think). + * This'll be a standard feature in XFree86 4.3. It basically allows one + * libGL to do both DRI-rendering and "fake GLX" rendering to X displays + * that lack the GLX extension. */ struct _glxapi_table { - /* GLX 1.0 functions */ + /*** GLX_VERSION_1_0 ***/ XVisualInfo *(*ChooseVisual)(Display *dpy, int screen, int *list); void (*CopyContext)(Display *dpy, GLXContext src, GLXContext dst, unsigned long mask); GLXContext (*CreateContext)(Display *dpy, XVisualInfo *visinfo, GLXContext shareList, Bool direct); @@ -65,17 +79,15 @@ struct _glxapi_table { void (*WaitGL)(void); void (*WaitX)(void); -#ifdef GLX_VERSION_1_1 + /*** GLX_VERSION_1_1 ***/ const char *(*GetClientString)(Display *dpy, int name); const char *(*QueryExtensionsString)(Display *dpy, int screen); const char *(*QueryServerString)(Display *dpy, int screen, int name); -#endif -#ifdef GLX_VERSION_1_2 + /*** GLX_VERSION_1_2 ***/ /*Display *(*GetCurrentDisplay)(void);*/ -#endif -#ifdef GLX_VERSION_1_3 + /*** GLX_VERSION_1_3 ***/ GLXFBConfig *(*ChooseFBConfig)(Display *dpy, int screen, const int *attribList, int *nitems); GLXContext (*CreateNewContext)(Display *dpy, GLXFBConfig config, int renderType, GLXContext shareList, Bool direct); GLXPbuffer (*CreatePbuffer)(Display *dpy, GLXFBConfig config, const int *attribList); @@ -93,97 +105,97 @@ struct _glxapi_table { int (*QueryContext)(Display *dpy, GLXContext ctx, int attribute, int *value); void (*QueryDrawable)(Display *dpy, GLXDrawable draw, int attribute, unsigned int *value); void (*SelectEvent)(Display *dpy, GLXDrawable drawable, unsigned long mask); -#endif -#ifdef GLX_SGI_swap_control + /*** GLX_SGI_swap_control ***/ int (*SwapIntervalSGI)(int); -#endif -#ifdef GLX_SGI_video_sync + /*** GLX_SGI_video_sync ***/ int (*GetVideoSyncSGI)(unsigned int *count); int (*WaitVideoSyncSGI)(int divisor, int remainder, unsigned int *count); -#endif -#ifdef GLX_SGI_make_current_read + /*** GLX_SGI_make_current_read ***/ Bool (*MakeCurrentReadSGI)(Display *, GLXDrawable, GLXDrawable, GLXContext); - GLXDrawable (*GetCurrentReadDrawableSGI)(void); -#endif + /*GLXDrawable (*GetCurrentReadDrawableSGI)(void);*/ -#if defined(_VL_H) && defined(GLX_SGIX_video_source) + /*** GLX_SGIX_video_source (needs video library) ***/ +#if defined(_VL_H_) GLXVideoSourceSGIX (*CreateGLXVideoSourceSGIX)(Display *, int, VLServer, VLPath, int, VLNode); void (*DestroyGLXVideoSourceSGIX)(Display *, GLXVideoSourceSGIX); +#else + void *CreateGLXVideoSourceSGIX; + void *DestroyGLXVideoSourceSGIX; #endif -#ifdef GLX_EXT_import_context + /*** GLX_EXT_import_context ***/ void (*FreeContextEXT)(Display *dpy, GLXContext context); GLXContextID (*GetContextIDEXT)(const GLXContext context); - Display *(*GetCurrentDisplayEXT)(void); + /*Display *(*GetCurrentDisplayEXT)(void);*/ GLXContext (*ImportContextEXT)(Display *dpy, GLXContextID contextID); int (*QueryContextInfoEXT)(Display *dpy, GLXContext context, int attribute,int *value); -#endif -#ifdef GLX_SGIX_fbconfig + /*** GLX_SGIX_fbconfig ***/ int (*GetFBConfigAttribSGIX)(Display *, GLXFBConfigSGIX, int, int *); GLXFBConfigSGIX * (*ChooseFBConfigSGIX)(Display *, int, int *, int *); GLXPixmap (*CreateGLXPixmapWithConfigSGIX)(Display *, GLXFBConfigSGIX, Pixmap); GLXContext (*CreateContextWithConfigSGIX)(Display *, GLXFBConfigSGIX, int, GLXContext, Bool); XVisualInfo * (*GetVisualFromFBConfigSGIX)(Display *, GLXFBConfigSGIX); GLXFBConfigSGIX (*GetFBConfigFromVisualSGIX)(Display *, XVisualInfo *); -#endif -#ifdef GLX_SGIX_pbuffer + /*** 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 -#ifdef GLX_SGI_cushion + /*** GLX_SGI_cushion ***/ void (*CushionSGI)(Display *, Window, float); -#endif -#ifdef GLX_SGIX_video_resize + /*** 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) + /*** GLX_SGIX_dmbuffer (needs dmedia library) ***/ +#if defined (_DM_BUFFER_H_) Bool (*AssociateDMPbufferSGIX)(Display *, GLXPbufferSGIX, DMparams *, DMbuffer); +#else + void *AssociciateDMPbufferSGIX; #endif -#ifdef GLX_SGIX_swap_group + /*** GLX_SGIX_swap_group ***/ void (*JoinSwapGroupSGIX)(Display *, GLXDrawable, GLXDrawable); -#endif -#ifdef GLX_SGIX_swap_barrier + /*** GLX_SGIX_swap_barrier ***/ void (*BindSwapBarrierSGIX)(Display *, GLXDrawable, int); Bool (*QueryMaxSwapBarriersSGIX)(Display *, int, int *); -#endif -#ifdef GLX_SUN_get_transparent_index + /*** GLX_SUN_get_transparent_index ***/ Status (*GetTransparentIndexSUN)(Display *, Window, Window, long *); -#endif -#ifdef GLX_MESA_copy_sub_buffer + /*** GLX_MESA_copy_sub_buffer ***/ void (*CopySubBufferMESA)(Display *dpy, GLXDrawable drawable, int x, int y, int width, int height); -#endif -#ifdef GLX_MESA_release_buffers + /*** GLX_MESA_release_buffers ***/ Bool (*ReleaseBuffersMESA)(Display *dpy, Window w); -#endif -#ifdef GLX_MESA_pixmap_colormap + /*** GLX_MESA_pixmap_colormap ***/ GLXPixmap (*CreateGLXPixmapMESA)(Display *dpy, XVisualInfo *visinfo, Pixmap pixmap, Colormap cmap); -#endif -#ifdef GLX_MESA_set_3dfx_mode + /*** GLX_MESA_set_3dfx_mode ***/ Bool (*Set3DfxModeMESA)(int mode); -#endif + /*** GLX_NV_vertex_array_range ***/ + void * (*AllocateMemoryNV)( GLsizei size, + GLfloat readFrequency, + GLfloat writeFrequency, + GLfloat priority ); + void (*FreeMemoryNV)( GLvoid *pointer ); + + /*** GLX_MESA_agp_offset ***/ + GLuint (*GetAGPOffsetMESA)( const GLvoid *pointer ); }; @@ -204,7 +216,7 @@ extern void _glxapi_set_no_op_table(struct _glxapi_table *t); -extern const GLvoid * +extern __GLXextFuncPtr _glxapi_get_proc_address(const char *funcName);