summaryrefslogtreecommitdiffstats
path: root/src/glx/x11
diff options
context:
space:
mode:
Diffstat (limited to 'src/glx/x11')
-rw-r--r--src/glx/x11/Makefile97
-rw-r--r--src/glx/x11/XF86dri.c637
-rw-r--r--src/glx/x11/clientattrib.c142
-rw-r--r--src/glx/x11/compsize.c189
-rw-r--r--src/glx/x11/dri2.c645
-rw-r--r--src/glx/x11/dri2.h106
-rw-r--r--src/glx/x11/dri2_glx.c666
-rw-r--r--src/glx/x11/dri_common.c450
-rw-r--r--src/glx/x11/dri_common.h63
-rw-r--r--src/glx/x11/dri_glx.c751
-rw-r--r--src/glx/x11/drisw_glx.c456
-rw-r--r--src/glx/x11/eval.c132
-rw-r--r--src/glx/x11/glcontextmodes.c544
-rw-r--r--src/glx/x11/glcontextmodes.h54
-rw-r--r--src/glx/x11/glx_pbuffer.c724
-rw-r--r--src/glx/x11/glx_query.c177
-rw-r--r--src/glx/x11/glxclient.h803
-rw-r--r--src/glx/x11/glxcmds.c3173
-rw-r--r--src/glx/x11/glxcurrent.c513
-rw-r--r--src/glx/x11/glxext.c1060
-rw-r--r--src/glx/x11/glxextensions.c714
-rw-r--r--src/glx/x11/glxextensions.h292
-rw-r--r--src/glx/x11/glxhash.c473
-rw-r--r--src/glx/x11/glxhash.h20
-rw-r--r--src/glx/x11/indirect.c10669
-rw-r--r--src/glx/x11/indirect.h721
-rw-r--r--src/glx/x11/indirect_init.c785
-rw-r--r--src/glx/x11/indirect_init.h41
-rw-r--r--src/glx/x11/indirect_size.c388
-rw-r--r--src/glx/x11/indirect_size.h88
-rw-r--r--src/glx/x11/indirect_texture_compression.c343
-rw-r--r--src/glx/x11/indirect_transpose_matrix.c85
-rw-r--r--src/glx/x11/indirect_vertex_array.c1985
-rw-r--r--src/glx/x11/indirect_vertex_array.h64
-rw-r--r--src/glx/x11/indirect_vertex_array_priv.h311
-rw-r--r--src/glx/x11/indirect_vertex_program.c293
-rw-r--r--src/glx/x11/indirect_window_pos.c112
-rw-r--r--src/glx/x11/packrender.h243
-rw-r--r--src/glx/x11/packsingle.h213
-rw-r--r--src/glx/x11/pixel.c461
-rw-r--r--src/glx/x11/pixelstore.c352
-rw-r--r--src/glx/x11/render2.c381
-rw-r--r--src/glx/x11/renderpix.c218
-rw-r--r--src/glx/x11/single2.c974
-rw-r--r--src/glx/x11/singlepix.c196
-rw-r--r--src/glx/x11/vertarr.c212
-rw-r--r--src/glx/x11/xf86dri.h124
-rw-r--r--src/glx/x11/xf86dristr.h367
-rw-r--r--src/glx/x11/xfont.c377
49 files changed, 0 insertions, 32884 deletions
diff --git a/src/glx/x11/Makefile b/src/glx/x11/Makefile
deleted file mode 100644
index e681be834f0..00000000000
--- a/src/glx/x11/Makefile
+++ /dev/null
@@ -1,97 +0,0 @@
-TOP = ../../..
-include $(TOP)/configs/current
-
-EXTRA_DEFINES = -DXF86VIDMODE -D_REENTRANT \
- -DDEFAULT_DRIVER_DIR=\"$(DRI_DRIVER_SEARCH_DIR)\"
-
-SOURCES = \
- glcontextmodes.c \
- clientattrib.c \
- compsize.c \
- eval.c \
- glxcmds.c \
- glxcurrent.c \
- glxext.c \
- glxextensions.c \
- indirect.c \
- indirect_init.c \
- indirect_size.c \
- indirect_window_pos.c \
- indirect_texture_compression.c \
- indirect_transpose_matrix.c \
- indirect_vertex_array.c \
- indirect_vertex_program.c \
- pixel.c \
- pixelstore.c \
- render2.c \
- renderpix.c \
- single2.c \
- singlepix.c \
- vertarr.c \
- xfont.c \
- glx_pbuffer.c \
- glx_query.c \
- drisw_glx.c \
- dri_common.c \
- dri_glx.c \
- XF86dri.c \
- glxhash.c \
- dri2_glx.c \
- dri2.c
-
-GLAPI_LIB = $(TOP)/src/mesa/libglapi.a
-
-OBJECTS = $(SOURCES:.c=.o)
-
-INCLUDES = -I. \
- -I$(TOP)/include \
- -I$(TOP)/include/GL/internal \
- -I$(TOP)/src/mesa \
- -I$(TOP)/src/mesa/glapi \
- $(LIBDRM_CFLAGS) \
- $(DRI2PROTO_CFLAGS) \
- $(X11_INCLUDES)
-
-
-##### RULES #####
-
-.c.o:
- $(CC) -c $(INCLUDES) $(CFLAGS) $(EXTRA_DEFINES) $< -o $@
-
-.S.o:
- $(CC) -c $(INCLUDES) $(CFLAGS) $(EXTRA_DEFINES) $< -o $@
-
-##### TARGETS #####
-
-default: depend $(TOP)/$(LIB_DIR)/$(GL_LIB_NAME)
-
-# Make libGL
-$(TOP)/$(LIB_DIR)/$(GL_LIB_NAME): $(OBJECTS) $(GLAPI_LIB) Makefile
- $(MKLIB) -o $(GL_LIB) -linker '$(CC)' -ldflags '$(LDFLAGS)' \
- -major 1 -minor 2 $(MKLIB_OPTIONS) \
- -install $(TOP)/$(LIB_DIR) -id $(INSTALL_LIB_DIR)/lib$(GL_LIB).1.dylib \
- $(GL_LIB_DEPS) $(OBJECTS) $(GLAPI_LIB)
-
-$(GLAPI_LIB):
- @$(MAKE) -C $(TOP)/src/mesa libglapi.a
-
-depend: $(SOURCES) Makefile
- rm -f depend
- touch depend
- $(MKDEP) $(MKDEP_OPTIONS) $(INCLUDES) $(SOURCES)
-
-
-# Emacs tags
-tags:
- etags `find . -name \*.[ch]` `find $(TOP)/include`
-
-install: $(TOP)/$(LIB_DIR)/$(GL_LIB_NAME)
- $(MAKE) -C $(TOP)/src/mesa install-libgl
-
-# Remove .o and backup files
-clean:
- -rm -f $(TOP)/$(LIB_DIR)/libGL.so*
- -rm -f *.o *~
- -rm -f depend depend.bak
-
--include depend
diff --git a/src/glx/x11/XF86dri.c b/src/glx/x11/XF86dri.c
deleted file mode 100644
index 248d96ac5de..00000000000
--- a/src/glx/x11/XF86dri.c
+++ /dev/null
@@ -1,637 +0,0 @@
-/**************************************************************************
-
-Copyright 1998-1999 Precision Insight, Inc., Cedar Park, Texas.
-Copyright 2000 VA Linux Systems, Inc.
-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"), to deal in the Software without restriction, including
-without limitation the rights to use, copy, modify, merge, publish,
-distribute, sub license, and/or sell copies of the Software, and to
-permit persons to whom the Software is furnished to do so, subject to
-the following conditions:
-
-The above copyright notice and this permission notice (including the
-next paragraph) shall be included in all copies or substantial portions
-of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
-IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
-ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
-TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
-SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-**************************************************************************/
-
-/*
- * Authors:
- * Kevin E. Martin <[email protected]>
- * Jens Owen <[email protected]>
- * Rickard E. (Rik) Faith <[email protected]>
- *
- */
-
-/* THIS IS NOT AN X CONSORTIUM STANDARD */
-
-#ifdef GLX_DIRECT_RENDERING
-
-#define NEED_REPLIES
-#include <X11/Xlibint.h>
-#include <X11/extensions/Xext.h>
-#include <X11/extensions/extutil.h>
-#include "xf86dristr.h"
-
-
-#if defined(__GNUC__) && (__GNUC__ * 100 + __GNUC_MINOR__) >= 303
-# define PUBLIC __attribute__((visibility("default")))
-# define USED __attribute__((used))
-#else
-# define PUBLIC
-# define USED
-#endif
-
-
-
-static XExtensionInfo _xf86dri_info_data;
-static XExtensionInfo *xf86dri_info = &_xf86dri_info_data;
-static char xf86dri_extension_name[] = XF86DRINAME;
-
-#define XF86DRICheckExtension(dpy,i,val) \
- XextCheckExtension (dpy, i, xf86dri_extension_name, val)
-
-/*****************************************************************************
- * *
- * private utility routines *
- * *
- *****************************************************************************/
-
-static int close_display(Display * dpy, XExtCodes * extCodes);
-static /* const */ XExtensionHooks xf86dri_extension_hooks = {
- NULL, /* create_gc */
- NULL, /* copy_gc */
- NULL, /* flush_gc */
- NULL, /* free_gc */
- NULL, /* create_font */
- NULL, /* free_font */
- close_display, /* close_display */
- NULL, /* wire_to_event */
- NULL, /* event_to_wire */
- NULL, /* error */
- NULL, /* error_string */
-};
-
-static
-XEXT_GENERATE_FIND_DISPLAY(find_display, xf86dri_info,
- xf86dri_extension_name,
- &xf86dri_extension_hooks, 0, NULL)
-
-static
-XEXT_GENERATE_CLOSE_DISPLAY(close_display, xf86dri_info)
-
-
-/*****************************************************************************
- * *
- * public XFree86-DRI Extension routines *
- * *
- *****************************************************************************/
-#if 0
-#include <stdio.h>
-#define TRACE(msg) fprintf(stderr,"XF86DRI%s\n", msg);
-#else
-#define TRACE(msg)
-#endif
-
-Bool
-XF86DRIQueryExtension(Display * dpy, int *event_basep,
- int *error_basep)
-{
- XExtDisplayInfo *info = find_display(dpy);
-
- TRACE("QueryExtension...");
- if (XextHasExtension(info)) {
- *event_basep = info->codes->first_event;
- *error_basep = info->codes->first_error;
- TRACE("QueryExtension... return True");
- return True;
- }
- else {
- TRACE("QueryExtension... return False");
- return False;
- }
-}
-
-Bool
-XF86DRIQueryVersion(Display * dpy, int *majorVersion, int *minorVersion,
- int *patchVersion)
-{
- XExtDisplayInfo *info = find_display(dpy);
- xXF86DRIQueryVersionReply rep;
- xXF86DRIQueryVersionReq *req;
-
- TRACE("QueryVersion...");
- XF86DRICheckExtension(dpy, info, False);
-
- LockDisplay(dpy);
- GetReq(XF86DRIQueryVersion, req);
- req->reqType = info->codes->major_opcode;
- req->driReqType = X_XF86DRIQueryVersion;
- if (!_XReply(dpy, (xReply *) & rep, 0, xFalse)) {
- UnlockDisplay(dpy);
- SyncHandle();
- TRACE("QueryVersion... return False");
- return False;
- }
- *majorVersion = rep.majorVersion;
- *minorVersion = rep.minorVersion;
- *patchVersion = rep.patchVersion;
- UnlockDisplay(dpy);
- SyncHandle();
- TRACE("QueryVersion... return True");
- return True;
-}
-
-Bool
-XF86DRIQueryDirectRenderingCapable(Display * dpy, int screen,
- Bool * isCapable)
-{
- XExtDisplayInfo *info = find_display(dpy);
- xXF86DRIQueryDirectRenderingCapableReply rep;
- xXF86DRIQueryDirectRenderingCapableReq *req;
-
- TRACE("QueryDirectRenderingCapable...");
- XF86DRICheckExtension(dpy, info, False);
-
- LockDisplay(dpy);
- GetReq(XF86DRIQueryDirectRenderingCapable, req);
- req->reqType = info->codes->major_opcode;
- req->driReqType = X_XF86DRIQueryDirectRenderingCapable;
- req->screen = screen;
- if (!_XReply(dpy, (xReply *) & rep, 0, xFalse)) {
- UnlockDisplay(dpy);
- SyncHandle();
- TRACE("QueryDirectRenderingCapable... return False");
- return False;
- }
- *isCapable = rep.isCapable;
- UnlockDisplay(dpy);
- SyncHandle();
- TRACE("QueryDirectRenderingCapable... return True");
- return True;
-}
-
-Bool
-XF86DRIOpenConnection(Display * dpy, int screen, drm_handle_t * hSAREA,
- char **busIdString)
-{
- XExtDisplayInfo *info = find_display(dpy);
- xXF86DRIOpenConnectionReply rep;
- xXF86DRIOpenConnectionReq *req;
-
- TRACE("OpenConnection...");
- XF86DRICheckExtension(dpy, info, False);
-
- LockDisplay(dpy);
- GetReq(XF86DRIOpenConnection, req);
- req->reqType = info->codes->major_opcode;
- req->driReqType = X_XF86DRIOpenConnection;
- req->screen = screen;
- if (!_XReply(dpy, (xReply *) & rep, 0, xFalse)) {
- UnlockDisplay(dpy);
- SyncHandle();
- TRACE("OpenConnection... return False");
- return False;
- }
-
- *hSAREA = rep.hSAREALow;
- if (sizeof(drm_handle_t) == 8) {
- int shift = 32; /* var to prevent warning on next line */
- *hSAREA |= ((drm_handle_t) rep.hSAREAHigh) << shift;
- }
-
- if (rep.length) {
- if (!(*busIdString = (char *) Xcalloc(rep.busIdStringLength + 1, 1))) {
- _XEatData(dpy, ((rep.busIdStringLength + 3) & ~3));
- UnlockDisplay(dpy);
- SyncHandle();
- TRACE("OpenConnection... return False");
- return False;
- }
- _XReadPad(dpy, *busIdString, rep.busIdStringLength);
- }
- else {
- *busIdString = NULL;
- }
- UnlockDisplay(dpy);
- SyncHandle();
- TRACE("OpenConnection... return True");
- return True;
-}
-
-Bool
-XF86DRIAuthConnection(Display * dpy, int screen, drm_magic_t magic)
-{
- XExtDisplayInfo *info = find_display(dpy);
- xXF86DRIAuthConnectionReq *req;
- xXF86DRIAuthConnectionReply rep;
-
- TRACE("AuthConnection...");
- XF86DRICheckExtension(dpy, info, False);
-
- LockDisplay(dpy);
- GetReq(XF86DRIAuthConnection, req);
- req->reqType = info->codes->major_opcode;
- req->driReqType = X_XF86DRIAuthConnection;
- req->screen = screen;
- req->magic = magic;
- rep.authenticated = 0;
- if (!_XReply(dpy, (xReply *) & rep, 0, xFalse) || !rep.authenticated) {
- UnlockDisplay(dpy);
- SyncHandle();
- TRACE("AuthConnection... return False");
- return False;
- }
- UnlockDisplay(dpy);
- SyncHandle();
- TRACE("AuthConnection... return True");
- return True;
-}
-
-Bool
-XF86DRICloseConnection(Display * dpy, int screen)
-{
- XExtDisplayInfo *info = find_display(dpy);
- xXF86DRICloseConnectionReq *req;
-
- TRACE("CloseConnection...");
-
- XF86DRICheckExtension(dpy, info, False);
-
- LockDisplay(dpy);
- GetReq(XF86DRICloseConnection, req);
- req->reqType = info->codes->major_opcode;
- req->driReqType = X_XF86DRICloseConnection;
- req->screen = screen;
- UnlockDisplay(dpy);
- SyncHandle();
- TRACE("CloseConnection... return True");
- return True;
-}
-
-Bool
-XF86DRIGetClientDriverName(Display * dpy, int screen,
- int *ddxDriverMajorVersion,
- int *ddxDriverMinorVersion,
- int *ddxDriverPatchVersion,
- char **clientDriverName)
-{
- XExtDisplayInfo *info = find_display(dpy);
- xXF86DRIGetClientDriverNameReply rep;
- xXF86DRIGetClientDriverNameReq *req;
-
- TRACE("GetClientDriverName...");
- XF86DRICheckExtension(dpy, info, False);
-
- LockDisplay(dpy);
- GetReq(XF86DRIGetClientDriverName, req);
- req->reqType = info->codes->major_opcode;
- req->driReqType = X_XF86DRIGetClientDriverName;
- req->screen = screen;
- if (!_XReply(dpy, (xReply *) & rep, 0, xFalse)) {
- UnlockDisplay(dpy);
- SyncHandle();
- TRACE("GetClientDriverName... return False");
- return False;
- }
-
- *ddxDriverMajorVersion = rep.ddxDriverMajorVersion;
- *ddxDriverMinorVersion = rep.ddxDriverMinorVersion;
- *ddxDriverPatchVersion = rep.ddxDriverPatchVersion;
-
- if (rep.length) {
- if (!
- (*clientDriverName =
- (char *) Xcalloc(rep.clientDriverNameLength + 1, 1))) {
- _XEatData(dpy, ((rep.clientDriverNameLength + 3) & ~3));
- UnlockDisplay(dpy);
- SyncHandle();
- TRACE("GetClientDriverName... return False");
- return False;
- }
- _XReadPad(dpy, *clientDriverName, rep.clientDriverNameLength);
- }
- else {
- *clientDriverName = NULL;
- }
- UnlockDisplay(dpy);
- SyncHandle();
- TRACE("GetClientDriverName... return True");
- return True;
-}
-
-Bool
-XF86DRICreateContextWithConfig(Display * dpy, int screen, int configID,
- XID * context, drm_context_t * hHWContext)
-{
- XExtDisplayInfo *info = find_display(dpy);
- xXF86DRICreateContextReply rep;
- xXF86DRICreateContextReq *req;
-
- TRACE("CreateContext...");
- XF86DRICheckExtension(dpy, info, False);
-
- LockDisplay(dpy);
- GetReq(XF86DRICreateContext, req);
- req->reqType = info->codes->major_opcode;
- req->driReqType = X_XF86DRICreateContext;
- req->visual = configID;
- req->screen = screen;
- *context = XAllocID(dpy);
- req->context = *context;
- if (!_XReply(dpy, (xReply *) & rep, 0, xFalse)) {
- UnlockDisplay(dpy);
- SyncHandle();
- TRACE("CreateContext... return False");
- return False;
- }
- *hHWContext = rep.hHWContext;
- UnlockDisplay(dpy);
- SyncHandle();
- TRACE("CreateContext... return True");
- return True;
-}
-
-Bool
-XF86DRICreateContext(Display * dpy, int screen, Visual * visual,
- XID * context, drm_context_t * hHWContext)
-{
- return XF86DRICreateContextWithConfig(dpy, screen, visual->visualid,
- context, hHWContext);
-}
-
-Bool
-XF86DRIDestroyContext(Display * dpy, int screen, XID context)
-{
- XExtDisplayInfo *info = find_display(dpy);
- xXF86DRIDestroyContextReq *req;
-
- TRACE("DestroyContext...");
- XF86DRICheckExtension(dpy, info, False);
-
- LockDisplay(dpy);
- GetReq(XF86DRIDestroyContext, req);
- req->reqType = info->codes->major_opcode;
- req->driReqType = X_XF86DRIDestroyContext;
- req->screen = screen;
- req->context = context;
- UnlockDisplay(dpy);
- SyncHandle();
- TRACE("DestroyContext... return True");
- return True;
-}
-
-Bool
-XF86DRICreateDrawable(Display * dpy, int screen,
- XID drawable, drm_drawable_t * hHWDrawable)
-{
- XExtDisplayInfo *info = find_display(dpy);
- xXF86DRICreateDrawableReply rep;
- xXF86DRICreateDrawableReq *req;
-
- TRACE("CreateDrawable...");
- XF86DRICheckExtension(dpy, info, False);
-
- LockDisplay(dpy);
- GetReq(XF86DRICreateDrawable, req);
- req->reqType = info->codes->major_opcode;
- req->driReqType = X_XF86DRICreateDrawable;
- req->screen = screen;
- req->drawable = drawable;
- if (!_XReply(dpy, (xReply *) & rep, 0, xFalse)) {
- UnlockDisplay(dpy);
- SyncHandle();
- TRACE("CreateDrawable... return False");
- return False;
- }
- *hHWDrawable = rep.hHWDrawable;
- UnlockDisplay(dpy);
- SyncHandle();
- TRACE("CreateDrawable... return True");
- return True;
-}
-
-static int
-noopErrorHandler(Display * dpy, XErrorEvent * xerr)
-{
- return 0;
-}
-
-Bool
-XF86DRIDestroyDrawable(Display * dpy, int screen, XID drawable)
-{
- XExtDisplayInfo *info = find_display(dpy);
- xXF86DRIDestroyDrawableReq *req;
- int (*oldXErrorHandler) (Display *, XErrorEvent *);
-
- TRACE("DestroyDrawable...");
- XF86DRICheckExtension(dpy, info, False);
-
- /* This is called from the DRI driver, which used call it like this
- *
- * if (windowExists(drawable))
- * destroyDrawable(drawable);
- *
- * which is a textbook race condition - the window may disappear
- * from the server between checking for its existance and
- * destroying it. Instead we change the semantics of
- * __DRIinterfaceMethodsRec::destroyDrawable() to succeed even if
- * the windows is gone, by wrapping the destroy call in an error
- * handler. */
-
- XSync(dpy, False);
- oldXErrorHandler = XSetErrorHandler(noopErrorHandler);
-
- LockDisplay(dpy);
- GetReq(XF86DRIDestroyDrawable, req);
- req->reqType = info->codes->major_opcode;
- req->driReqType = X_XF86DRIDestroyDrawable;
- req->screen = screen;
- req->drawable = drawable;
- UnlockDisplay(dpy);
- SyncHandle();
-
- XSetErrorHandler(oldXErrorHandler);
-
- TRACE("DestroyDrawable... return True");
- return True;
-}
-
-Bool
-XF86DRIGetDrawableInfo(Display * dpy, int screen, Drawable drawable,
- unsigned int *index, unsigned int *stamp,
- int *X, int *Y, int *W, int *H,
- int *numClipRects, drm_clip_rect_t ** pClipRects,
- int *backX, int *backY,
- int *numBackClipRects,
- drm_clip_rect_t ** pBackClipRects)
-{
- XExtDisplayInfo *info = find_display(dpy);
- xXF86DRIGetDrawableInfoReply rep;
- xXF86DRIGetDrawableInfoReq *req;
- int total_rects;
-
- TRACE("GetDrawableInfo...");
- XF86DRICheckExtension(dpy, info, False);
-
- LockDisplay(dpy);
- GetReq(XF86DRIGetDrawableInfo, req);
- req->reqType = info->codes->major_opcode;
- req->driReqType = X_XF86DRIGetDrawableInfo;
- req->screen = screen;
- req->drawable = drawable;
-
- if (!_XReply(dpy, (xReply *) & rep, 1, xFalse)) {
- UnlockDisplay(dpy);
- SyncHandle();
- TRACE("GetDrawableInfo... return False");
- return False;
- }
- *index = rep.drawableTableIndex;
- *stamp = rep.drawableTableStamp;
- *X = (int) rep.drawableX;
- *Y = (int) rep.drawableY;
- *W = (int) rep.drawableWidth;
- *H = (int) rep.drawableHeight;
- *numClipRects = rep.numClipRects;
- total_rects = *numClipRects;
-
- *backX = rep.backX;
- *backY = rep.backY;
- *numBackClipRects = rep.numBackClipRects;
- total_rects += *numBackClipRects;
-
-#if 0
- /* Because of the fix in Xserver/GL/dri/xf86dri.c, this check breaks
- * backwards compatibility (Because of the >> 2 shift) but the fix
- * enables multi-threaded apps to work.
- */
- if (rep.length != ((((SIZEOF(xXF86DRIGetDrawableInfoReply) -
- SIZEOF(xGenericReply) +
- total_rects * sizeof(drm_clip_rect_t)) +
- 3) & ~3) >> 2)) {
- _XEatData(dpy, rep.length);
- UnlockDisplay(dpy);
- SyncHandle();
- TRACE("GetDrawableInfo... return False");
- return False;
- }
-#endif
-
- if (*numClipRects) {
- int len = sizeof(drm_clip_rect_t) * (*numClipRects);
-
- *pClipRects = (drm_clip_rect_t *) Xcalloc(len, 1);
- if (*pClipRects)
- _XRead(dpy, (char *) *pClipRects, len);
- }
- else {
- *pClipRects = NULL;
- }
-
- if (*numBackClipRects) {
- int len = sizeof(drm_clip_rect_t) * (*numBackClipRects);
-
- *pBackClipRects = (drm_clip_rect_t *) Xcalloc(len, 1);
- if (*pBackClipRects)
- _XRead(dpy, (char *) *pBackClipRects, len);
- }
- else {
- *pBackClipRects = NULL;
- }
-
- UnlockDisplay(dpy);
- SyncHandle();
- TRACE("GetDrawableInfo... return True");
- return True;
-}
-
-Bool
-XF86DRIGetDeviceInfo(Display * dpy, int screen, drm_handle_t * hFrameBuffer,
- int *fbOrigin, int *fbSize, int *fbStride,
- int *devPrivateSize, void **pDevPrivate)
-{
- XExtDisplayInfo *info = find_display(dpy);
- xXF86DRIGetDeviceInfoReply rep;
- xXF86DRIGetDeviceInfoReq *req;
-
- TRACE("GetDeviceInfo...");
- XF86DRICheckExtension(dpy, info, False);
-
- LockDisplay(dpy);
- GetReq(XF86DRIGetDeviceInfo, req);
- req->reqType = info->codes->major_opcode;
- req->driReqType = X_XF86DRIGetDeviceInfo;
- req->screen = screen;
- if (!_XReply(dpy, (xReply *) & rep, 0, xFalse)) {
- UnlockDisplay(dpy);
- SyncHandle();
- TRACE("GetDeviceInfo... return False");
- return False;
- }
-
- *hFrameBuffer = rep.hFrameBufferLow;
- if (sizeof(drm_handle_t) == 8) {
- int shift = 32; /* var to prevent warning on next line */
- *hFrameBuffer |= ((drm_handle_t) rep.hFrameBufferHigh) << shift;
- }
-
- *fbOrigin = rep.framebufferOrigin;
- *fbSize = rep.framebufferSize;
- *fbStride = rep.framebufferStride;
- *devPrivateSize = rep.devPrivateSize;
-
- if (rep.length) {
- if (!(*pDevPrivate = (void *) Xcalloc(rep.devPrivateSize, 1))) {
- _XEatData(dpy, ((rep.devPrivateSize + 3) & ~3));
- UnlockDisplay(dpy);
- SyncHandle();
- TRACE("GetDeviceInfo... return False");
- return False;
- }
- _XRead(dpy, (char *) *pDevPrivate, rep.devPrivateSize);
- }
- else {
- *pDevPrivate = NULL;
- }
-
- UnlockDisplay(dpy);
- SyncHandle();
- TRACE("GetDeviceInfo... return True");
- return True;
-}
-
-Bool
-XF86DRIOpenFullScreen(Display * dpy, int screen, Drawable drawable)
-{
- /* This function and the underlying X protocol are deprecated.
- */
- (void) dpy;
- (void) screen;
- (void) drawable;
- return False;
-}
-
-Bool
-XF86DRICloseFullScreen(Display * dpy, int screen, Drawable drawable)
-{
- /* This function and the underlying X protocol are deprecated.
- */
- (void) dpy;
- (void) screen;
- (void) drawable;
- return True;
-}
-
-#endif /* GLX_DIRECT_RENDERING */
diff --git a/src/glx/x11/clientattrib.c b/src/glx/x11/clientattrib.c
deleted file mode 100644
index a7dfb534860..00000000000
--- a/src/glx/x11/clientattrib.c
+++ /dev/null
@@ -1,142 +0,0 @@
-/*
- * SGI FREE SOFTWARE LICENSE B (Version 2.0, Sept. 18, 2008)
- * Copyright (C) 1991-2000 Silicon Graphics, Inc. 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"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice including the dates of first publication and
- * either this permission notice or a reference to
- * http://oss.sgi.com/projects/FreeB/
- * shall be included in all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * SILICON GRAPHICS, INC. BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
- * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
- * OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- *
- * Except as contained in this notice, the name of Silicon Graphics, Inc.
- * shall not be used in advertising or otherwise to promote the sale, use or
- * other dealings in this Software without prior written authorization from
- * Silicon Graphics, Inc.
- */
-
-#include <assert.h>
-#include "glxclient.h"
-#include "indirect.h"
-#include "indirect_vertex_array.h"
-
-/*****************************************************************************/
-
-static void
-do_enable_disable(GLenum array, GLboolean val)
-{
- __GLXcontext *gc = __glXGetCurrentContext();
- __GLXattribute *state = (__GLXattribute *) (gc->client_state_private);
- unsigned index = 0;
-
- if (array == GL_TEXTURE_COORD_ARRAY) {
- index = __glXGetActiveTextureUnit(state);
- }
-
- if (!__glXSetArrayEnable(state, array, index, val)) {
- __glXSetError(gc, GL_INVALID_ENUM);
- }
-}
-
-void
-__indirect_glEnableClientState(GLenum array)
-{
- do_enable_disable(array, GL_TRUE);
-}
-
-void
-__indirect_glDisableClientState(GLenum array)
-{
- do_enable_disable(array, GL_FALSE);
-}
-
-/************************************************************************/
-
-void
-__indirect_glPushClientAttrib(GLuint mask)
-{
- __GLXcontext *gc = __glXGetCurrentContext();
- __GLXattribute *state = (__GLXattribute *) (gc->client_state_private);
- __GLXattribute **spp = gc->attributes.stackPointer, *sp;
-
- if (spp < &gc->attributes.stack[__GL_CLIENT_ATTRIB_STACK_DEPTH]) {
- if (!(sp = *spp)) {
- sp = (__GLXattribute *) Xmalloc(sizeof(__GLXattribute));
- *spp = sp;
- }
- sp->mask = mask;
- gc->attributes.stackPointer = spp + 1;
- if (mask & GL_CLIENT_PIXEL_STORE_BIT) {
- sp->storePack = state->storePack;
- sp->storeUnpack = state->storeUnpack;
- }
- if (mask & GL_CLIENT_VERTEX_ARRAY_BIT) {
- __glXPushArrayState(state);
- }
- }
- else {
- __glXSetError(gc, GL_STACK_OVERFLOW);
- return;
- }
-}
-
-void
-__indirect_glPopClientAttrib(void)
-{
- __GLXcontext *gc = __glXGetCurrentContext();
- __GLXattribute *state = (__GLXattribute *) (gc->client_state_private);
- __GLXattribute **spp = gc->attributes.stackPointer, *sp;
- GLuint mask;
-
- if (spp > &gc->attributes.stack[0]) {
- --spp;
- sp = *spp;
- assert(sp != 0);
- mask = sp->mask;
- gc->attributes.stackPointer = spp;
-
- if (mask & GL_CLIENT_PIXEL_STORE_BIT) {
- state->storePack = sp->storePack;
- state->storeUnpack = sp->storeUnpack;
- }
- if (mask & GL_CLIENT_VERTEX_ARRAY_BIT) {
- __glXPopArrayState(state);
- }
-
- sp->mask = 0;
- }
- else {
- __glXSetError(gc, GL_STACK_UNDERFLOW);
- return;
- }
-}
-
-void
-__glFreeAttributeState(__GLXcontext * gc)
-{
- __GLXattribute *sp, **spp;
-
- for (spp = &gc->attributes.stack[0];
- spp < &gc->attributes.stack[__GL_CLIENT_ATTRIB_STACK_DEPTH]; spp++) {
- sp = *spp;
- if (sp) {
- XFree((char *) sp);
- }
- else {
- break;
- }
- }
-}
diff --git a/src/glx/x11/compsize.c b/src/glx/x11/compsize.c
deleted file mode 100644
index 5ba6dc919e5..00000000000
--- a/src/glx/x11/compsize.c
+++ /dev/null
@@ -1,189 +0,0 @@
-/*
- * SGI FREE SOFTWARE LICENSE B (Version 2.0, Sept. 18, 2008)
- * Copyright (C) 1991-2000 Silicon Graphics, Inc. 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"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice including the dates of first publication and
- * either this permission notice or a reference to
- * http://oss.sgi.com/projects/FreeB/
- * shall be included in all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * SILICON GRAPHICS, INC. BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
- * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
- * OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- *
- * Except as contained in this notice, the name of Silicon Graphics, Inc.
- * shall not be used in advertising or otherwise to promote the sale, use or
- * other dealings in this Software without prior written authorization from
- * Silicon Graphics, Inc.
- */
-
-#include <GL/gl.h>
-#include "glxclient.h"
-
-/*
-** Return the number of elements per group of a specified format
-*/
-GLint
-__glElementsPerGroup(GLenum format, GLenum type)
-{
- /*
- ** To make row length computation valid for image extraction,
- ** packed pixel types assume elements per group equals one.
- */
- switch (type) {
- case GL_UNSIGNED_BYTE_3_3_2:
- case GL_UNSIGNED_BYTE_2_3_3_REV:
- case GL_UNSIGNED_SHORT_5_6_5:
- case GL_UNSIGNED_SHORT_5_6_5_REV:
- case GL_UNSIGNED_SHORT_4_4_4_4:
- case GL_UNSIGNED_SHORT_4_4_4_4_REV:
- case GL_UNSIGNED_SHORT_5_5_5_1:
- case GL_UNSIGNED_SHORT_1_5_5_5_REV:
- case GL_UNSIGNED_SHORT_8_8_APPLE:
- case GL_UNSIGNED_SHORT_8_8_REV_APPLE:
- case GL_UNSIGNED_SHORT_15_1_MESA:
- case GL_UNSIGNED_SHORT_1_15_REV_MESA:
- case GL_UNSIGNED_INT_8_8_8_8:
- case GL_UNSIGNED_INT_8_8_8_8_REV:
- case GL_UNSIGNED_INT_10_10_10_2:
- case GL_UNSIGNED_INT_2_10_10_10_REV:
- case GL_UNSIGNED_INT_24_8_NV:
- case GL_UNSIGNED_INT_24_8_MESA:
- case GL_UNSIGNED_INT_8_24_REV_MESA:
- return 1;
- default:
- break;
- }
-
- switch (format) {
- case GL_RGB:
- case GL_BGR:
- return 3;
- case GL_422_EXT:
- case GL_422_REV_EXT:
- case GL_422_AVERAGE_EXT:
- case GL_422_REV_AVERAGE_EXT:
- case GL_YCBCR_422_APPLE:
- case GL_LUMINANCE_ALPHA:
- return 2;
- case GL_RGBA:
- case GL_BGRA:
- case GL_ABGR_EXT:
- return 4;
- case GL_COLOR_INDEX:
- case GL_STENCIL_INDEX:
- case GL_DEPTH_COMPONENT:
- case GL_RED:
- case GL_GREEN:
- case GL_BLUE:
- case GL_ALPHA:
- case GL_LUMINANCE:
- case GL_INTENSITY:
- return 1;
- default:
- return 0;
- }
-}
-
-/*
-** Return the number of bytes per element, based on the element type (other
-** than GL_BITMAP).
-*/
-GLint
-__glBytesPerElement(GLenum type)
-{
- switch (type) {
- case GL_UNSIGNED_SHORT:
- case GL_SHORT:
- case GL_UNSIGNED_SHORT_5_6_5:
- case GL_UNSIGNED_SHORT_5_6_5_REV:
- case GL_UNSIGNED_SHORT_4_4_4_4:
- case GL_UNSIGNED_SHORT_4_4_4_4_REV:
- case GL_UNSIGNED_SHORT_5_5_5_1:
- case GL_UNSIGNED_SHORT_1_5_5_5_REV:
- case GL_UNSIGNED_SHORT_8_8_APPLE:
- case GL_UNSIGNED_SHORT_8_8_REV_APPLE:
- case GL_UNSIGNED_SHORT_15_1_MESA:
- case GL_UNSIGNED_SHORT_1_15_REV_MESA:
- return 2;
- case GL_UNSIGNED_BYTE:
- case GL_BYTE:
- case GL_UNSIGNED_BYTE_3_3_2:
- case GL_UNSIGNED_BYTE_2_3_3_REV:
- return 1;
- case GL_INT:
- case GL_UNSIGNED_INT:
- case GL_FLOAT:
- case GL_UNSIGNED_INT_8_8_8_8:
- case GL_UNSIGNED_INT_8_8_8_8_REV:
- case GL_UNSIGNED_INT_10_10_10_2:
- case GL_UNSIGNED_INT_2_10_10_10_REV:
- case GL_UNSIGNED_INT_24_8_NV:
- case GL_UNSIGNED_INT_24_8_MESA:
- case GL_UNSIGNED_INT_8_24_REV_MESA:
- return 4;
- default:
- return 0;
- }
-}
-
-/*
-** Compute memory required for internal packed array of data of given type
-** and format.
-*/
-GLint
-__glImageSize(GLsizei width, GLsizei height, GLsizei depth,
- GLenum format, GLenum type, GLenum target)
-{
- int bytes_per_row;
- int components;
-
- switch (target) {
- case GL_PROXY_TEXTURE_1D:
- case GL_PROXY_TEXTURE_2D:
- case GL_PROXY_TEXTURE_3D:
- case GL_PROXY_TEXTURE_4D_SGIS:
- case GL_PROXY_TEXTURE_CUBE_MAP:
- case GL_PROXY_TEXTURE_RECTANGLE_ARB:
- case GL_PROXY_HISTOGRAM:
- case GL_PROXY_COLOR_TABLE:
- case GL_PROXY_TEXTURE_COLOR_TABLE_SGI:
- case GL_PROXY_POST_CONVOLUTION_COLOR_TABLE:
- case GL_PROXY_POST_COLOR_MATRIX_COLOR_TABLE:
- case GL_PROXY_POST_IMAGE_TRANSFORM_COLOR_TABLE_HP:
- return 0;
- }
-
- if (width < 0 || height < 0 || depth < 0) {
- return 0;
- }
-
- /*
- ** Zero is returned if either format or type are invalid.
- */
- components = __glElementsPerGroup(format, type);
- if (type == GL_BITMAP) {
- if (format == GL_COLOR_INDEX || format == GL_STENCIL_INDEX) {
- bytes_per_row = (width + 7) >> 3;
- }
- else {
- return 0;
- }
- }
- else {
- bytes_per_row = __glBytesPerElement(type) * width;
- }
-
- return bytes_per_row * height * depth * components;
-}
diff --git a/src/glx/x11/dri2.c b/src/glx/x11/dri2.c
deleted file mode 100644
index 91053d3fb61..00000000000
--- a/src/glx/x11/dri2.c
+++ /dev/null
@@ -1,645 +0,0 @@
-/*
- * Copyright © 2008 Red Hat, Inc.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Soft-
- * ware"), to deal in the Software without restriction, including without
- * limitation the rights to use, copy, modify, merge, publish, distribute,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, provided that the above copyright
- * notice(s) and this permission notice appear in all copies of the Soft-
- * ware and that both the above copyright notice(s) and this permission
- * notice appear in supporting documentation.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABIL-
- * ITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY
- * RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN
- * THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSE-
- * QUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
- * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
- * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFOR-
- * MANCE OF THIS SOFTWARE.
- *
- * Except as contained in this notice, the name of a copyright holder shall
- * not be used in advertising or otherwise to promote the sale, use or
- * other dealings in this Software without prior written authorization of
- * the copyright holder.
- *
- * Authors:
- * Kristian Høgsberg ([email protected])
- */
-
-
-#ifdef GLX_DIRECT_RENDERING
-
-#define NEED_REPLIES
-#include <stdio.h>
-#include <X11/Xlibint.h>
-#include <X11/extensions/Xext.h>
-#include <X11/extensions/extutil.h>
-#include <X11/extensions/dri2proto.h>
-#include "xf86drm.h"
-#include "dri2.h"
-#include "glxclient.h"
-#include "GL/glxext.h"
-
-/* Allow the build to work with an older versions of dri2proto.h and
- * dri2tokens.h.
- */
-#if DRI2_MINOR < 1
-#undef DRI2_MINOR
-#define DRI2_MINOR 1
-#define X_DRI2GetBuffersWithFormat 7
-#endif
-
-
-static char dri2ExtensionName[] = DRI2_NAME;
-static XExtensionInfo *dri2Info;
-static XEXT_GENERATE_CLOSE_DISPLAY (DRI2CloseDisplay, dri2Info)
-
-static Bool
-DRI2WireToEvent(Display *dpy, XEvent *event, xEvent *wire);
-static Status
-DRI2EventToWire(Display *dpy, XEvent *event, xEvent *wire);
-
-static /* const */ XExtensionHooks dri2ExtensionHooks = {
- NULL, /* create_gc */
- NULL, /* copy_gc */
- NULL, /* flush_gc */
- NULL, /* free_gc */
- NULL, /* create_font */
- NULL, /* free_font */
- DRI2CloseDisplay, /* close_display */
- DRI2WireToEvent, /* wire_to_event */
- DRI2EventToWire, /* event_to_wire */
- NULL, /* error */
- NULL, /* error_string */
-};
-
-static XEXT_GENERATE_FIND_DISPLAY (DRI2FindDisplay,
- dri2Info,
- dri2ExtensionName,
- &dri2ExtensionHooks,
- 1, NULL)
-
-static Bool
-DRI2WireToEvent(Display *dpy, XEvent *event, xEvent *wire)
-{
- XExtDisplayInfo *info = DRI2FindDisplay(dpy);
- XExtDisplayInfo *glx_info = __glXFindDisplay(dpy);
- static int glx_event_base;
- static Bool found_glx_info = False;
-
- XextCheckExtension(dpy, info, dri2ExtensionName, False);
-
- switch ((wire->u.u.type & 0x7f) - info->codes->first_event) {
-
-#ifdef X_DRI2SwapBuffers
- case DRI2_BufferSwapComplete:
- {
- GLXBufferSwapComplete *aevent = (GLXBufferSwapComplete *)event;
- xDRI2BufferSwapComplete *awire = (xDRI2BufferSwapComplete *)wire;
- aevent->serial = _XSetLastRequestRead(dpy, (xGenericReply *) wire);
- aevent->type =
- (glx_info->codes->first_event + GLX_BufferSwapComplete) & 0x75;
- aevent->send_event = (awire->type & 0x80) != 0;
- aevent->display = dpy;
- aevent->drawable = awire->drawable;
- switch (awire->event_type) {
- case DRI2_EXCHANGE_COMPLETE:
- aevent->event_type = GLX_EXCHANGE_COMPLETE_INTEL;
- break;
- case DRI2_BLIT_COMPLETE:
- aevent->event_type = GLX_BLIT_COMPLETE_INTEL;
- break;
- case DRI2_FLIP_COMPLETE:
- aevent->event_type = GLX_FLIP_COMPLETE_INTEL;
- break;
- default:
- /* unknown swap completion type */
- return False;
- }
- aevent->ust = ((CARD64)awire->ust_hi << 32) | awire->ust_lo;
- aevent->msc = ((CARD64)awire->msc_hi << 32) | awire->msc_lo;
- aevent->sbc = ((CARD64)awire->sbc_hi << 32) | awire->sbc_lo;
- return True;
- }
-#endif
-
- default:
- /* client doesn't support server event */
- break;
- }
-
- return False;
-}
-
-/* We don't actually support this. It doesn't make sense for clients to
- * send each other DRI2 events.
- */
-static Status
-DRI2EventToWire(Display *dpy, XEvent *event, xEvent *wire)
-{
- XExtDisplayInfo *info = DRI2FindDisplay(dpy);
-
- XextCheckExtension(dpy, info, dri2ExtensionName, False);
-
- switch (event->type) {
- default:
- /* client doesn't support server event */
- break;
- }
-
- return Success;
-}
-
-Bool
-DRI2QueryExtension(Display * dpy, int *eventBase, int *errorBase)
-{
- XExtDisplayInfo *info = DRI2FindDisplay(dpy);
-
- if (XextHasExtension(info)) {
- *eventBase = info->codes->first_event;
- *errorBase = info->codes->first_error;
- return True;
- }
-
- return False;
-}
-
-Bool
-DRI2QueryVersion(Display * dpy, int *major, int *minor)
-{
- XExtDisplayInfo *info = DRI2FindDisplay(dpy);
- xDRI2QueryVersionReply rep;
- xDRI2QueryVersionReq *req;
-
- XextCheckExtension(dpy, info, dri2ExtensionName, False);
-
- LockDisplay(dpy);
- GetReq(DRI2QueryVersion, req);
- req->reqType = info->codes->major_opcode;
- req->dri2ReqType = X_DRI2QueryVersion;
- req->majorVersion = DRI2_MAJOR;
- req->minorVersion = DRI2_MINOR;
- if (!_XReply(dpy, (xReply *) & rep, 0, xFalse)) {
- UnlockDisplay(dpy);
- SyncHandle();
- return False;
- }
- *major = rep.majorVersion;
- *minor = rep.minorVersion;
- UnlockDisplay(dpy);
- SyncHandle();
-
- return True;
-}
-
-Bool
-DRI2Connect(Display * dpy, XID window, char **driverName, char **deviceName)
-{
- XExtDisplayInfo *info = DRI2FindDisplay(dpy);
- xDRI2ConnectReply rep;
- xDRI2ConnectReq *req;
-
- XextCheckExtension(dpy, info, dri2ExtensionName, False);
-
- LockDisplay(dpy);
- GetReq(DRI2Connect, req);
- req->reqType = info->codes->major_opcode;
- req->dri2ReqType = X_DRI2Connect;
- req->window = window;
- req->driverType = DRI2DriverDRI;
- if (!_XReply(dpy, (xReply *) & rep, 0, xFalse)) {
- UnlockDisplay(dpy);
- SyncHandle();
- return False;
- }
-
- if (rep.driverNameLength == 0 && rep.deviceNameLength == 0) {
- UnlockDisplay(dpy);
- SyncHandle();
- return False;
- }
-
- *driverName = Xmalloc(rep.driverNameLength + 1);
- if (*driverName == NULL) {
- _XEatData(dpy,
- ((rep.driverNameLength + 3) & ~3) +
- ((rep.deviceNameLength + 3) & ~3));
- UnlockDisplay(dpy);
- SyncHandle();
- return False;
- }
- _XReadPad(dpy, *driverName, rep.driverNameLength);
- (*driverName)[rep.driverNameLength] = '\0';
-
- *deviceName = Xmalloc(rep.deviceNameLength + 1);
- if (*deviceName == NULL) {
- Xfree(*driverName);
- _XEatData(dpy, ((rep.deviceNameLength + 3) & ~3));
- UnlockDisplay(dpy);
- SyncHandle();
- return False;
- }
- _XReadPad(dpy, *deviceName, rep.deviceNameLength);
- (*deviceName)[rep.deviceNameLength] = '\0';
-
- UnlockDisplay(dpy);
- SyncHandle();
-
- return True;
-}
-
-Bool
-DRI2Authenticate(Display * dpy, XID window, drm_magic_t magic)
-{
- XExtDisplayInfo *info = DRI2FindDisplay(dpy);
- xDRI2AuthenticateReq *req;
- xDRI2AuthenticateReply rep;
-
- XextCheckExtension(dpy, info, dri2ExtensionName, False);
-
- LockDisplay(dpy);
- GetReq(DRI2Authenticate, req);
- req->reqType = info->codes->major_opcode;
- req->dri2ReqType = X_DRI2Authenticate;
- req->window = window;
- req->magic = magic;
-
- if (!_XReply(dpy, (xReply *) & rep, 0, xFalse)) {
- UnlockDisplay(dpy);
- SyncHandle();
- return False;
- }
-
- UnlockDisplay(dpy);
- SyncHandle();
-
- return rep.authenticated;
-}
-
-void
-DRI2CreateDrawable(Display * dpy, XID drawable)
-{
- XExtDisplayInfo *info = DRI2FindDisplay(dpy);
- xDRI2CreateDrawableReq *req;
-
- XextSimpleCheckExtension(dpy, info, dri2ExtensionName);
-
- LockDisplay(dpy);
- GetReq(DRI2CreateDrawable, req);
- req->reqType = info->codes->major_opcode;
- req->dri2ReqType = X_DRI2CreateDrawable;
- req->drawable = drawable;
- UnlockDisplay(dpy);
- SyncHandle();
-}
-
-void
-DRI2DestroyDrawable(Display * dpy, XID drawable)
-{
- XExtDisplayInfo *info = DRI2FindDisplay(dpy);
- xDRI2DestroyDrawableReq *req;
-
- XextSimpleCheckExtension(dpy, info, dri2ExtensionName);
-
- XSync(dpy, False);
-
- LockDisplay(dpy);
- GetReq(DRI2DestroyDrawable, req);
- req->reqType = info->codes->major_opcode;
- req->dri2ReqType = X_DRI2DestroyDrawable;
- req->drawable = drawable;
- UnlockDisplay(dpy);
- SyncHandle();
-}
-
-DRI2Buffer *
-DRI2GetBuffers(Display * dpy, XID drawable,
- int *width, int *height,
- unsigned int *attachments, int count, int *outCount)
-{
- XExtDisplayInfo *info = DRI2FindDisplay(dpy);
- xDRI2GetBuffersReply rep;
- xDRI2GetBuffersReq *req;
- DRI2Buffer *buffers;
- xDRI2Buffer repBuffer;
- CARD32 *p;
- int i;
-
- XextCheckExtension(dpy, info, dri2ExtensionName, False);
-
- LockDisplay(dpy);
- GetReqExtra(DRI2GetBuffers, count * 4, req);
- req->reqType = info->codes->major_opcode;
- req->dri2ReqType = X_DRI2GetBuffers;
- req->drawable = drawable;
- req->count = count;
- p = (CARD32 *) & req[1];
- for (i = 0; i < count; i++)
- p[i] = attachments[i];
-
- if (!_XReply(dpy, (xReply *) & rep, 0, xFalse)) {
- UnlockDisplay(dpy);
- SyncHandle();
- return NULL;
- }
-
- *width = rep.width;
- *height = rep.height;
- *outCount = rep.count;
-
- buffers = Xmalloc(rep.count * sizeof buffers[0]);
- if (buffers == NULL) {
- _XEatData(dpy, rep.count * sizeof repBuffer);
- UnlockDisplay(dpy);
- SyncHandle();
- return NULL;
- }
-
- for (i = 0; i < rep.count; i++) {
- _XReadPad(dpy, (char *) &repBuffer, sizeof repBuffer);
- buffers[i].attachment = repBuffer.attachment;
- buffers[i].name = repBuffer.name;
- buffers[i].pitch = repBuffer.pitch;
- buffers[i].cpp = repBuffer.cpp;
- buffers[i].flags = repBuffer.flags;
- }
-
- UnlockDisplay(dpy);
- SyncHandle();
-
- return buffers;
-}
-
-
-DRI2Buffer *
-DRI2GetBuffersWithFormat(Display * dpy, XID drawable,
- int *width, int *height,
- unsigned int *attachments, int count, int *outCount)
-{
- XExtDisplayInfo *info = DRI2FindDisplay(dpy);
- xDRI2GetBuffersReply rep;
- xDRI2GetBuffersReq *req;
- DRI2Buffer *buffers;
- xDRI2Buffer repBuffer;
- CARD32 *p;
- int i;
-
- XextCheckExtension(dpy, info, dri2ExtensionName, False);
-
- LockDisplay(dpy);
- GetReqExtra(DRI2GetBuffers, count * (4 * 2), req);
- req->reqType = info->codes->major_opcode;
- req->dri2ReqType = X_DRI2GetBuffersWithFormat;
- req->drawable = drawable;
- req->count = count;
- p = (CARD32 *) & req[1];
- for (i = 0; i < (count * 2); i++)
- p[i] = attachments[i];
-
- if (!_XReply(dpy, (xReply *) & rep, 0, xFalse)) {
- UnlockDisplay(dpy);
- SyncHandle();
- return NULL;
- }
-
- *width = rep.width;
- *height = rep.height;
- *outCount = rep.count;
-
- buffers = Xmalloc(rep.count * sizeof buffers[0]);
- if (buffers == NULL) {
- _XEatData(dpy, rep.count * sizeof repBuffer);
- UnlockDisplay(dpy);
- SyncHandle();
- return NULL;
- }
-
- for (i = 0; i < rep.count; i++) {
- _XReadPad(dpy, (char *) &repBuffer, sizeof repBuffer);
- buffers[i].attachment = repBuffer.attachment;
- buffers[i].name = repBuffer.name;
- buffers[i].pitch = repBuffer.pitch;
- buffers[i].cpp = repBuffer.cpp;
- buffers[i].flags = repBuffer.flags;
- }
-
- UnlockDisplay(dpy);
- SyncHandle();
-
- return buffers;
-}
-
-
-void
-DRI2CopyRegion(Display * dpy, XID drawable, XserverRegion region,
- CARD32 dest, CARD32 src)
-{
- XExtDisplayInfo *info = DRI2FindDisplay(dpy);
- xDRI2CopyRegionReq *req;
- xDRI2CopyRegionReply rep;
-
- XextSimpleCheckExtension(dpy, info, dri2ExtensionName);
-
- LockDisplay(dpy);
- GetReq(DRI2CopyRegion, req);
- req->reqType = info->codes->major_opcode;
- req->dri2ReqType = X_DRI2CopyRegion;
- req->drawable = drawable;
- req->region = region;
- req->dest = dest;
- req->src = src;
-
- _XReply(dpy, (xReply *) & rep, 0, xFalse);
-
- UnlockDisplay(dpy);
- SyncHandle();
-}
-
-#ifdef X_DRI2SwapBuffers
-static void
-load_swap_req(xDRI2SwapBuffersReq *req, CARD64 target, CARD64 divisor,
- CARD64 remainder)
-{
- req->target_msc_hi = target >> 32;
- req->target_msc_lo = target & 0xffffffff;
- req->divisor_hi = divisor >> 32;
- req->divisor_lo = divisor & 0xffffffff;
- req->remainder_hi = remainder >> 32;
- req->remainder_lo = remainder & 0xffffffff;
-}
-
-static CARD64
-vals_to_card64(CARD32 lo, CARD32 hi)
-{
- return (CARD64)hi << 32 | lo;
-}
-
-void DRI2SwapBuffers(Display *dpy, XID drawable, CARD64 target_msc,
- CARD64 divisor, CARD64 remainder, CARD64 *count)
-{
- XExtDisplayInfo *info = DRI2FindDisplay(dpy);
- xDRI2SwapBuffersReq *req;
- xDRI2SwapBuffersReply rep;
-
- XextSimpleCheckExtension (dpy, info, dri2ExtensionName);
-
- LockDisplay(dpy);
- GetReq(DRI2SwapBuffers, req);
- req->reqType = info->codes->major_opcode;
- req->dri2ReqType = X_DRI2SwapBuffers;
- req->drawable = drawable;
- load_swap_req(req, target_msc, divisor, remainder);
-
- _XReply(dpy, (xReply *)&rep, 0, xFalse);
-
- *count = vals_to_card64(rep.swap_lo, rep.swap_hi);
-
- UnlockDisplay(dpy);
- SyncHandle();
-}
-#endif
-
-#ifdef X_DRI2GetMSC
-Bool DRI2GetMSC(Display *dpy, XID drawable, CARD64 *ust, CARD64 *msc,
- CARD64 *sbc)
-{
- XExtDisplayInfo *info = DRI2FindDisplay(dpy);
- xDRI2GetMSCReq *req;
- xDRI2MSCReply rep;
-
- XextCheckExtension (dpy, info, dri2ExtensionName, False);
-
- LockDisplay(dpy);
- GetReq(DRI2GetMSC, req);
- req->reqType = info->codes->major_opcode;
- req->dri2ReqType = X_DRI2GetMSC;
- req->drawable = drawable;
-
- if (!_XReply(dpy, (xReply *)&rep, 0, xFalse)) {
- UnlockDisplay(dpy);
- SyncHandle();
- return False;
- }
-
- *ust = vals_to_card64(rep.ust_lo, rep.ust_hi);
- *msc = vals_to_card64(rep.msc_lo, rep.msc_hi);
- *sbc = vals_to_card64(rep.sbc_lo, rep.sbc_hi);
-
- UnlockDisplay(dpy);
- SyncHandle();
-
- return True;
-}
-#endif
-
-#ifdef X_DRI2WaitMSC
-static void
-load_msc_req(xDRI2WaitMSCReq *req, CARD64 target, CARD64 divisor,
- CARD64 remainder)
-{
- req->target_msc_hi = target >> 32;
- req->target_msc_lo = target & 0xffffffff;
- req->divisor_hi = divisor >> 32;
- req->divisor_lo = divisor & 0xffffffff;
- req->remainder_hi = remainder >> 32;
- req->remainder_lo = remainder & 0xffffffff;
-}
-
-Bool DRI2WaitMSC(Display *dpy, XID drawable, CARD64 target_msc, CARD64 divisor,
- CARD64 remainder, CARD64 *ust, CARD64 *msc, CARD64 *sbc)
-{
- XExtDisplayInfo *info = DRI2FindDisplay(dpy);
- xDRI2WaitMSCReq *req;
- xDRI2MSCReply rep;
-
- XextCheckExtension (dpy, info, dri2ExtensionName, False);
-
- LockDisplay(dpy);
- GetReq(DRI2WaitMSC, req);
- req->reqType = info->codes->major_opcode;
- req->dri2ReqType = X_DRI2WaitMSC;
- req->drawable = drawable;
- load_msc_req(req, target_msc, divisor, remainder);
-
- if (!_XReply(dpy, (xReply *)&rep, 0, xFalse)) {
- UnlockDisplay(dpy);
- SyncHandle();
- return False;
- }
-
- *ust = ((CARD64)rep.ust_hi << 32) | (CARD64)rep.ust_lo;
- *msc = ((CARD64)rep.msc_hi << 32) | (CARD64)rep.msc_lo;
- *sbc = ((CARD64)rep.sbc_hi << 32) | (CARD64)rep.sbc_lo;
-
- UnlockDisplay(dpy);
- SyncHandle();
-
- return True;
-}
-#endif
-
-#ifdef X_DRI2WaitSBC
-static void
-load_sbc_req(xDRI2WaitSBCReq *req, CARD64 target)
-{
- req->target_sbc_hi = target >> 32;
- req->target_sbc_lo = target & 0xffffffff;
-}
-
-Bool DRI2WaitSBC(Display *dpy, XID drawable, CARD64 target_sbc, CARD64 *ust,
- CARD64 *msc, CARD64 *sbc)
-{
- XExtDisplayInfo *info = DRI2FindDisplay(dpy);
- xDRI2WaitSBCReq *req;
- xDRI2MSCReply rep;
-
- XextCheckExtension (dpy, info, dri2ExtensionName, False);
-
- LockDisplay(dpy);
- GetReq(DRI2WaitSBC, req);
- req->reqType = info->codes->major_opcode;
- req->dri2ReqType = X_DRI2WaitSBC;
- req->drawable = drawable;
- load_sbc_req(req, target_sbc);
-
- if (!_XReply(dpy, (xReply *)&rep, 0, xFalse)) {
- UnlockDisplay(dpy);
- SyncHandle();
- return False;
- }
-
- *ust = ((CARD64)rep.ust_hi << 32) | rep.ust_lo;
- *msc = ((CARD64)rep.msc_hi << 32) | rep.msc_lo;
- *sbc = ((CARD64)rep.sbc_hi << 32) | rep.sbc_lo;
-
- UnlockDisplay(dpy);
- SyncHandle();
-
- return True;
-}
-#endif
-
-#ifdef X_DRI2SwapInterval
-void DRI2SwapInterval(Display *dpy, XID drawable, int interval)
-{
- XExtDisplayInfo *info = DRI2FindDisplay(dpy);
- xDRI2SwapIntervalReq *req;
-
- XextSimpleCheckExtension (dpy, info, dri2ExtensionName);
-
- LockDisplay(dpy);
- GetReq(DRI2SwapInterval, req);
- req->reqType = info->codes->major_opcode;
- req->dri2ReqType = X_DRI2SwapInterval;
- req->drawable = drawable;
- req->interval = interval;
- UnlockDisplay(dpy);
- SyncHandle();
-}
-#endif
-
-#endif /* GLX_DIRECT_RENDERING */
diff --git a/src/glx/x11/dri2.h b/src/glx/x11/dri2.h
deleted file mode 100644
index 114e9f8f965..00000000000
--- a/src/glx/x11/dri2.h
+++ /dev/null
@@ -1,106 +0,0 @@
-/*
- * Copyright © 2007,2008 Red Hat, Inc.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Soft-
- * ware"), to deal in the Software without restriction, including without
- * limitation the rights to use, copy, modify, merge, publish, distribute,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, provided that the above copyright
- * notice(s) and this permission notice appear in all copies of the Soft-
- * ware and that both the above copyright notice(s) and this permission
- * notice appear in supporting documentation.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABIL-
- * ITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY
- * RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN
- * THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSE-
- * QUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
- * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
- * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFOR-
- * MANCE OF THIS SOFTWARE.
- *
- * Except as contained in this notice, the name of a copyright holder shall
- * not be used in advertising or otherwise to promote the sale, use or
- * other dealings in this Software without prior written authorization of
- * the copyright holder.
- *
- * Authors:
- * Kristian Høgsberg ([email protected])
- */
-
-#ifndef _DRI2_H_
-#define _DRI2_H_
-
-#include <X11/extensions/Xfixes.h>
-#include <X11/extensions/dri2tokens.h>
-
-typedef struct
-{
- unsigned int attachment;
- unsigned int name;
- unsigned int pitch;
- unsigned int cpp;
- unsigned int flags;
-} DRI2Buffer;
-
-extern Bool
-DRI2QueryExtension(Display * display, int *eventBase, int *errorBase);
-
-extern Bool
-DRI2QueryVersion(Display * display, int *major, int *minor);
-
-extern Bool
-DRI2Connect(Display * display, XID window,
- char **driverName, char **deviceName);
-
-extern Bool
-DRI2Authenticate(Display * display, XID window, drm_magic_t magic);
-
-extern void
-DRI2CreateDrawable(Display * display, XID drawable);
-
-extern void
-DRI2DestroyDrawable(Display * display, XID handle);
-
-extern DRI2Buffer*
-DRI2GetBuffers(Display * dpy, XID drawable,
- int *width, int *height,
- unsigned int *attachments, int count,
- int *outCount);
-
-/**
- * \note
- * This function is only supported with DRI2 version 1.1 or later.
- */
-extern DRI2Buffer*
-DRI2GetBuffersWithFormat(Display * dpy, XID drawable,
- int *width, int *height,
- unsigned int *attachments,
- int count, int *outCount);
-
-extern void
-DRI2CopyRegion(Display * dpy, XID drawable,
- XserverRegion region,
- CARD32 dest, CARD32 src);
-
-extern void
-DRI2SwapBuffers(Display *dpy, XID drawable, CARD64 target_msc, CARD64 divisor,
- CARD64 remainder, CARD64 *count);
-
-extern Bool
-DRI2GetMSC(Display *dpy, XID drawable, CARD64 *ust, CARD64 *msc, CARD64 *sbc);
-
-extern Bool
-DRI2WaitMSC(Display *dpy, XID drawable, CARD64 target_msc, CARD64 divisor,
- CARD64 remainder, CARD64 *ust, CARD64 *msc, CARD64 *sbc);
-
-extern Bool
-DRI2WaitSBC(Display *dpy, XID drawable, CARD64 target_sbc, CARD64 *ust,
- CARD64 *msc, CARD64 *sbc);
-
-extern void
-DRI2SwapInterval(Display *dpy, XID drawable, int interval);
-
-#endif
diff --git a/src/glx/x11/dri2_glx.c b/src/glx/x11/dri2_glx.c
deleted file mode 100644
index 15a3ea59073..00000000000
--- a/src/glx/x11/dri2_glx.c
+++ /dev/null
@@ -1,666 +0,0 @@
-/*
- * Copyright © 2008 Red Hat, Inc.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Soft-
- * ware"), to deal in the Software without restriction, including without
- * limitation the rights to use, copy, modify, merge, publish, distribute,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, provided that the above copyright
- * notice(s) and this permission notice appear in all copies of the Soft-
- * ware and that both the above copyright notice(s) and this permission
- * notice appear in supporting documentation.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABIL-
- * ITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY
- * RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN
- * THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSE-
- * QUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
- * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
- * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFOR-
- * MANCE OF THIS SOFTWARE.
- *
- * Except as contained in this notice, the name of a copyright holder shall
- * not be used in advertising or otherwise to promote the sale, use or
- * other dealings in this Software without prior written authorization of
- * the copyright holder.
- *
- * Authors:
- * Kristian Høgsberg ([email protected])
- */
-
-#ifdef GLX_DIRECT_RENDERING
-
-#include <X11/Xlib.h>
-#include <X11/extensions/Xfixes.h>
-#include <X11/extensions/Xdamage.h>
-#include "glapi.h"
-#include "glxclient.h"
-#include <X11/extensions/dri2proto.h>
-#include "xf86dri.h"
-#include <dlfcn.h>
-#include <fcntl.h>
-#include <unistd.h>
-#include <sys/types.h>
-#include <sys/mman.h>
-#include "xf86drm.h"
-#include "dri2.h"
-#include "dri_common.h"
-#include "../../mesa/drivers/dri/common/dri_util.h"
-
-#undef DRI2_MINOR
-#define DRI2_MINOR 1
-
-typedef struct __GLXDRIdisplayPrivateRec __GLXDRIdisplayPrivate;
-typedef struct __GLXDRIcontextPrivateRec __GLXDRIcontextPrivate;
-typedef struct __GLXDRIdrawablePrivateRec __GLXDRIdrawablePrivate;
-
-struct __GLXDRIdisplayPrivateRec
-{
- __GLXDRIdisplay base;
-
- /*
- ** XFree86-DRI version information
- */
- int driMajor;
- int driMinor;
- int driPatch;
- int swapAvailable;
-};
-
-struct __GLXDRIcontextPrivateRec
-{
- __GLXDRIcontext base;
- __DRIcontext *driContext;
- __GLXscreenConfigs *psc;
-};
-
-struct __GLXDRIdrawablePrivateRec
-{
- __GLXDRIdrawable base;
- __DRIbuffer buffers[5];
- int bufferCount;
- int width, height;
- int have_back;
- int have_fake_front;
- int swap_interval;
-};
-
-static void dri2WaitX(__GLXDRIdrawable * pdraw);
-
-static void
-dri2DestroyContext(__GLXDRIcontext * context,
- __GLXscreenConfigs * psc, Display * dpy)
-{
- __GLXDRIcontextPrivate *pcp = (__GLXDRIcontextPrivate *) context;
- const __DRIcoreExtension *core = pcp->psc->core;
-
- (*core->destroyContext) (pcp->driContext);
-
- Xfree(pcp);
-}
-
-static Bool
-dri2BindContext(__GLXDRIcontext * context,
- __GLXDRIdrawable * draw, __GLXDRIdrawable * read)
-{
- __GLXDRIcontextPrivate *pcp = (__GLXDRIcontextPrivate *) context;
- const __DRIcoreExtension *core = pcp->psc->core;
-
- return (*core->bindContext) (pcp->driContext,
- draw->driDrawable, read->driDrawable);
-}
-
-static void
-dri2UnbindContext(__GLXDRIcontext * context)
-{
- __GLXDRIcontextPrivate *pcp = (__GLXDRIcontextPrivate *) context;
- const __DRIcoreExtension *core = pcp->psc->core;
-
- (*core->unbindContext) (pcp->driContext);
-}
-
-static __GLXDRIcontext *
-dri2CreateContext(__GLXscreenConfigs * psc,
- const __GLcontextModes * mode,
- GLXContext gc, GLXContext shareList, int renderType)
-{
- __GLXDRIcontextPrivate *pcp, *pcp_shared;
- __GLXDRIconfigPrivate *config = (__GLXDRIconfigPrivate *) mode;
- __DRIcontext *shared = NULL;
-
- if (shareList) {
- pcp_shared = (__GLXDRIcontextPrivate *) shareList->driContext;
- shared = pcp_shared->driContext;
- }
-
- pcp = Xmalloc(sizeof *pcp);
- if (pcp == NULL)
- return NULL;
-
- pcp->psc = psc;
- pcp->driContext =
- (*psc->dri2->createNewContext) (psc->__driScreen,
- config->driConfig, shared, pcp);
- gc->__driContext = pcp->driContext;
-
- if (pcp->driContext == NULL) {
- Xfree(pcp);
- return NULL;
- }
-
- pcp->base.destroyContext = dri2DestroyContext;
- pcp->base.bindContext = dri2BindContext;
- pcp->base.unbindContext = dri2UnbindContext;
-
- return &pcp->base;
-}
-
-static void
-dri2DestroyDrawable(__GLXDRIdrawable * pdraw)
-{
- const __DRIcoreExtension *core = pdraw->psc->core;
-
- (*core->destroyDrawable) (pdraw->driDrawable);
- DRI2DestroyDrawable(pdraw->psc->dpy, pdraw->xDrawable);
- Xfree(pdraw);
-}
-
-static __GLXDRIdrawable *
-dri2CreateDrawable(__GLXscreenConfigs * psc,
- XID xDrawable,
- GLXDrawable drawable, const __GLcontextModes * modes)
-{
- __GLXDRIdrawablePrivate *pdraw;
- __GLXDRIconfigPrivate *config = (__GLXDRIconfigPrivate *) modes;
-
- pdraw = Xmalloc(sizeof(*pdraw));
- if (!pdraw)
- return NULL;
-
- pdraw->base.destroyDrawable = dri2DestroyDrawable;
- pdraw->base.xDrawable = xDrawable;
- pdraw->base.drawable = drawable;
- pdraw->base.psc = psc;
- pdraw->bufferCount = 0;
-
- DRI2CreateDrawable(psc->dpy, xDrawable);
-
- /* Create a new drawable */
- pdraw->base.driDrawable =
- (*psc->dri2->createNewDrawable) (psc->__driScreen,
- config->driConfig, pdraw);
-
- if (!pdraw->base.driDrawable) {
- DRI2DestroyDrawable(psc->dpy, xDrawable);
- Xfree(pdraw);
- return NULL;
- }
-
- return &pdraw->base;
-}
-
-static int
-dri2DrawableGetMSC(__GLXscreenConfigs *psc, __GLXDRIdrawable *pdraw,
- int64_t *ust, int64_t *msc, int64_t *sbc)
-{
- return DRI2GetMSC(psc->dpy, pdraw->xDrawable, ust, msc, sbc);
-}
-
-static int
-dri2WaitForMSC(__GLXDRIdrawable *pdraw, int64_t target_msc, int64_t divisor,
- int64_t remainder, int64_t *ust, int64_t *msc, int64_t *sbc)
-{
- return DRI2WaitMSC(pdraw->psc->dpy, pdraw->xDrawable, target_msc, divisor,
- remainder, ust, msc, sbc);
-}
-
-static int
-dri2WaitForSBC(__GLXDRIdrawable *pdraw, int64_t target_sbc, int64_t *ust,
- int64_t *msc, int64_t *sbc)
-{
- return DRI2WaitSBC(pdraw->psc->dpy, pdraw->xDrawable, target_sbc, ust, msc,
- sbc);
-}
-
-static void
-dri2CopySubBuffer(__GLXDRIdrawable *pdraw, int x, int y, int width, int height)
-{
- __GLXDRIdrawablePrivate *priv = (__GLXDRIdrawablePrivate *) pdraw;
- XRectangle xrect;
- XserverRegion region;
-
- /* Check we have the right attachments */
- if (!priv->have_back)
- return;
-
- xrect.x = x;
- xrect.y = priv->height - y - height;
- xrect.width = width;
- xrect.height = height;
-
-#ifdef __DRI2_FLUSH
- if (pdraw->psc->f)
- (*pdraw->psc->f->flush) (pdraw->driDrawable);
-#endif
-
- region = XFixesCreateRegion(pdraw->psc->dpy, &xrect, 1);
- /* should get a fence ID back from here at some point */
- DRI2CopyRegion(pdraw->psc->dpy, pdraw->xDrawable, region,
- DRI2BufferFrontLeft, DRI2BufferBackLeft);
- XFixesDestroyRegion(pdraw->psc->dpy, region);
-
- /* Refresh the fake front (if present) after we just damaged the real
- * front.
- */
- dri2WaitX(pdraw);
-}
-
-static void
-dri2WaitX(__GLXDRIdrawable *pdraw)
-{
- __GLXDRIdrawablePrivate *priv = (__GLXDRIdrawablePrivate *) pdraw;
- XRectangle xrect;
- XserverRegion region;
-
- /* Check we have the right attachments */
- if (!priv->have_fake_front)
- return;
-
- xrect.x = 0;
- xrect.y = 0;
- xrect.width = priv->width;
- xrect.height = priv->height;
-
-#ifdef __DRI2_FLUSH
- if (pdraw->psc->f)
- (*pdraw->psc->f->flush) (pdraw->driDrawable);
-#endif
-
- region = XFixesCreateRegion(pdraw->psc->dpy, &xrect, 1);
- DRI2CopyRegion(pdraw->psc->dpy, pdraw->xDrawable, region,
- DRI2BufferFakeFrontLeft, DRI2BufferFrontLeft);
- XFixesDestroyRegion(pdraw->psc->dpy, region);
-}
-
-static void
-dri2WaitGL(__GLXDRIdrawable * pdraw)
-{
- __GLXDRIdrawablePrivate *priv = (__GLXDRIdrawablePrivate *) pdraw;
- XRectangle xrect;
- XserverRegion region;
-
- if (!priv->have_fake_front)
- return;
-
- xrect.x = 0;
- xrect.y = 0;
- xrect.width = priv->width;
- xrect.height = priv->height;
-
-#ifdef __DRI2_FLUSH
- if (pdraw->psc->f)
- (*pdraw->psc->f->flush) (pdraw->driDrawable);
-#endif
-
- region = XFixesCreateRegion(pdraw->psc->dpy, &xrect, 1);
- DRI2CopyRegion(pdraw->psc->dpy, pdraw->xDrawable, region,
- DRI2BufferFrontLeft, DRI2BufferFakeFrontLeft);
- XFixesDestroyRegion(pdraw->psc->dpy, region);
-}
-
-
-static void
-dri2FlushFrontBuffer(__DRIdrawable * driDrawable, void *loaderPrivate)
-{
- (void) driDrawable;
- dri2WaitGL((__GLXDRIdrawable *) loaderPrivate);
-}
-
-
-static void
-dri2DestroyScreen(__GLXscreenConfigs * psc)
-{
- /* Free the direct rendering per screen data */
- (*psc->core->destroyScreen) (psc->__driScreen);
- close(psc->fd);
- psc->__driScreen = NULL;
-}
-
-/**
- * Process list of buffer received from the server
- *
- * Processes the list of buffers received in a reply from the server to either
- * \c DRI2GetBuffers or \c DRI2GetBuffersWithFormat.
- */
-static void
-process_buffers(__GLXDRIdrawablePrivate * pdraw, DRI2Buffer * buffers,
- unsigned count)
-{
- int i;
-
- pdraw->bufferCount = count;
- pdraw->have_fake_front = 0;
- pdraw->have_back = 0;
-
- /* This assumes the DRI2 buffer attachment tokens matches the
- * __DRIbuffer tokens. */
- for (i = 0; i < count; i++) {
- pdraw->buffers[i].attachment = buffers[i].attachment;
- pdraw->buffers[i].name = buffers[i].name;
- pdraw->buffers[i].pitch = buffers[i].pitch;
- pdraw->buffers[i].cpp = buffers[i].cpp;
- pdraw->buffers[i].flags = buffers[i].flags;
- if (pdraw->buffers[i].attachment == __DRI_BUFFER_FAKE_FRONT_LEFT)
- pdraw->have_fake_front = 1;
- if (pdraw->buffers[i].attachment == __DRI_BUFFER_BACK_LEFT)
- pdraw->have_back = 1;
- }
-
-}
-
-static int64_t
-dri2SwapBuffers(__GLXDRIdrawable *pdraw, int64_t target_msc, int64_t divisor,
- int64_t remainder)
-{
- __GLXDRIdrawablePrivate *priv = (__GLXDRIdrawablePrivate *) pdraw;
- __GLXdisplayPrivate *dpyPriv = __glXInitialize(priv->base.psc->dpy);
- __GLXDRIdisplayPrivate *pdp =
- (__GLXDRIdisplayPrivate *)dpyPriv->dri2Display;
- int64_t ret;
-
-#ifdef __DRI2_FLUSH
- if (pdraw->psc->f)
- (*pdraw->psc->f->flush)(pdraw->driDrawable);
-#endif
-
- /* Old servers can't handle swapbuffers */
- if (!pdp->swapAvailable) {
- dri2CopySubBuffer(pdraw, 0, 0, priv->width, priv->height);
- return 0;
- }
-
-#ifdef X_DRI2SwapBuffers
- DRI2SwapBuffers(pdraw->psc->dpy, pdraw->xDrawable, target_msc, divisor,
- remainder, &ret);
-#endif
-
-#if __DRI2_FLUSH_VERSION >= 2
- if (pdraw->psc->f)
- (*pdraw->psc->f->flushInvalidate)(pdraw->driDrawable);
-#endif
-
- return ret;
-}
-
-static __DRIbuffer *
-dri2GetBuffers(__DRIdrawable * driDrawable,
- int *width, int *height,
- unsigned int *attachments, int count,
- int *out_count, void *loaderPrivate)
-{
- __GLXDRIdrawablePrivate *pdraw = loaderPrivate;
- DRI2Buffer *buffers;
-
- buffers = DRI2GetBuffers(pdraw->base.psc->dpy, pdraw->base.xDrawable,
- width, height, attachments, count, out_count);
- if (buffers == NULL)
- return NULL;
-
- pdraw->width = *width;
- pdraw->height = *height;
- process_buffers(pdraw, buffers, *out_count);
-
- Xfree(buffers);
-
- return pdraw->buffers;
-}
-
-static __DRIbuffer *
-dri2GetBuffersWithFormat(__DRIdrawable * driDrawable,
- int *width, int *height,
- unsigned int *attachments, int count,
- int *out_count, void *loaderPrivate)
-{
- __GLXDRIdrawablePrivate *pdraw = loaderPrivate;
- DRI2Buffer *buffers;
-
- buffers = DRI2GetBuffersWithFormat(pdraw->base.psc->dpy,
- pdraw->base.xDrawable,
- width, height, attachments,
- count, out_count);
- if (buffers == NULL)
- return NULL;
-
- pdraw->width = *width;
- pdraw->height = *height;
- process_buffers(pdraw, buffers, *out_count);
-
- Xfree(buffers);
-
- return pdraw->buffers;
-}
-
-static void
-dri2SetSwapInterval(__GLXDRIdrawable *pdraw, int interval)
-{
- __GLXDRIdrawablePrivate *priv = (__GLXDRIdrawablePrivate *) pdraw;
-
- DRI2SwapInterval(priv->base.psc->dpy, pdraw->xDrawable, interval);
- priv->swap_interval = interval;
-}
-
-static unsigned int
-dri2GetSwapInterval(__GLXDRIdrawable *pdraw)
-{
- __GLXDRIdrawablePrivate *priv = (__GLXDRIdrawablePrivate *) pdraw;
-
- return priv->swap_interval;
-}
-
-static const __DRIdri2LoaderExtension dri2LoaderExtension = {
- {__DRI_DRI2_LOADER, __DRI_DRI2_LOADER_VERSION},
- dri2GetBuffers,
- dri2FlushFrontBuffer,
- dri2GetBuffersWithFormat,
-};
-
-static const __DRIdri2LoaderExtension dri2LoaderExtension_old = {
- {__DRI_DRI2_LOADER, __DRI_DRI2_LOADER_VERSION},
- dri2GetBuffers,
- dri2FlushFrontBuffer,
- NULL,
-};
-
-static const __DRIextension *loader_extensions[] = {
- &dri2LoaderExtension.base,
- &systemTimeExtension.base,
- NULL
-};
-
-static const __DRIextension *loader_extensions_old[] = {
- &dri2LoaderExtension_old.base,
- &systemTimeExtension.base,
- NULL
-};
-
-static __GLXDRIscreen *
-dri2CreateScreen(__GLXscreenConfigs * psc, int screen,
- __GLXdisplayPrivate * priv)
-{
- const __DRIconfig **driver_configs;
- const __DRIextension **extensions;
- const __GLXDRIdisplayPrivate *const pdp = (__GLXDRIdisplayPrivate *)
- priv->dri2Display;
- __GLXDRIscreen *psp;
- char *driverName, *deviceName;
- drm_magic_t magic;
- int i;
-
- psp = Xmalloc(sizeof *psp);
- if (psp == NULL)
- return NULL;
-
- /* Initialize per screen dynamic client GLX extensions */
- psc->ext_list_first_time = GL_TRUE;
-
- if (!DRI2Connect(psc->dpy, RootWindow(psc->dpy, screen),
- &driverName, &deviceName)) {
- XFree(psp);
- return NULL;
- }
-
- psc->driver = driOpenDriver(driverName);
- if (psc->driver == NULL) {
- ErrorMessageF("driver pointer missing\n");
- goto handle_error;
- }
-
- extensions = dlsym(psc->driver, __DRI_DRIVER_EXTENSIONS);
- if (extensions == NULL) {
- ErrorMessageF("driver exports no extensions (%s)\n", dlerror());
- goto handle_error;
- }
-
- for (i = 0; extensions[i]; i++) {
- if (strcmp(extensions[i]->name, __DRI_CORE) == 0)
- psc->core = (__DRIcoreExtension *) extensions[i];
- if (strcmp(extensions[i]->name, __DRI_DRI2) == 0)
- psc->dri2 = (__DRIdri2Extension *) extensions[i];
- }
-
- if (psc->core == NULL || psc->dri2 == NULL) {
- ErrorMessageF("core dri or dri2 extension not found\n");
- goto handle_error;
- }
-
- psc->fd = open(deviceName, O_RDWR);
- if (psc->fd < 0) {
- ErrorMessageF("failed to open drm device: %s\n", strerror(errno));
- goto handle_error;
- }
-
- if (drmGetMagic(psc->fd, &magic)) {
- ErrorMessageF("failed to get magic\n");
- goto handle_error;
- }
-
- if (!DRI2Authenticate(psc->dpy, RootWindow(psc->dpy, screen), magic)) {
- ErrorMessageF("failed to authenticate magic %d\n", magic);
- goto handle_error;
- }
-
- /* If the server does not support the protocol for
- * DRI2GetBuffersWithFormat, don't supply that interface to the driver.
- */
- psc->__driScreen =
- psc->dri2->createNewScreen(screen, psc->fd, ((pdp->driMinor < 1)
- ? loader_extensions_old
- : loader_extensions),
- &driver_configs, psc);
-
- if (psc->__driScreen == NULL) {
- ErrorMessageF("failed to create dri screen\n");
- goto handle_error;
- }
-
- driBindCommonExtensions(psc);
- dri2BindExtensions(psc);
-
- psc->configs = driConvertConfigs(psc->core, psc->configs, driver_configs);
- psc->visuals = driConvertConfigs(psc->core, psc->visuals, driver_configs);
-
- psc->driver_configs = driver_configs;
-
- psp->destroyScreen = dri2DestroyScreen;
- psp->createContext = dri2CreateContext;
- psp->createDrawable = dri2CreateDrawable;
- psp->swapBuffers = dri2SwapBuffers;
- psp->waitGL = dri2WaitGL;
- psp->waitX = dri2WaitX;
- psp->getDrawableMSC = NULL;
- psp->waitForMSC = NULL;
- psp->waitForSBC = NULL;
- psp->setSwapInterval = NULL;
- psp->getSwapInterval = NULL;
-
- if (pdp->driMinor >= 2) {
-#ifdef X_DRI2GetMSC
- psp->getDrawableMSC = dri2DrawableGetMSC;
-#endif
-#ifdef X_DRI2WaitMSC
- psp->waitForMSC = dri2WaitForMSC;
- psp->waitForSBC = dri2WaitForSBC;
-#endif
-#ifdef X_DRI2SwapInterval
- psp->setSwapInterval = dri2SetSwapInterval;
- psp->getSwapInterval = dri2GetSwapInterval;
-#endif
- }
-
- /* DRI2 suports SubBuffer through DRI2CopyRegion, so it's always
- * available.*/
- psp->copySubBuffer = dri2CopySubBuffer;
- __glXEnableDirectExtension(psc, "GLX_MESA_copy_sub_buffer");
-
- Xfree(driverName);
- Xfree(deviceName);
-
- return psp;
-
-handle_error:
- Xfree(driverName);
- Xfree(deviceName);
- XFree(psp);
-
- /* FIXME: clean up here */
-
- return NULL;
-}
-
-/* Called from __glXFreeDisplayPrivate.
- */
-static void
-dri2DestroyDisplay(__GLXDRIdisplay * dpy)
-{
- Xfree(dpy);
-}
-
-/*
- * Allocate, initialize and return a __DRIdisplayPrivate object.
- * This is called from __glXInitialize() when we are given a new
- * display pointer.
- */
-_X_HIDDEN __GLXDRIdisplay *
-dri2CreateDisplay(Display * dpy)
-{
- __GLXDRIdisplayPrivate *pdp;
- int eventBase, errorBase;
-
- if (!DRI2QueryExtension(dpy, &eventBase, &errorBase))
- return NULL;
-
- pdp = Xmalloc(sizeof *pdp);
- if (pdp == NULL)
- return NULL;
-
- if (!DRI2QueryVersion(dpy, &pdp->driMajor, &pdp->driMinor)) {
- Xfree(pdp);
- return NULL;
- }
-
- pdp->driPatch = 0;
- pdp->swapAvailable = 0;
-#ifdef X_DRI2SwapBuffers
- if (pdp->driMinor >= 2)
- pdp->swapAvailable = 1;
-#endif
-
- pdp->base.destroyDisplay = dri2DestroyDisplay;
- pdp->base.createScreen = dri2CreateScreen;
-
- return &pdp->base;
-}
-
-#endif /* GLX_DIRECT_RENDERING */
diff --git a/src/glx/x11/dri_common.c b/src/glx/x11/dri_common.c
deleted file mode 100644
index e4034161bb3..00000000000
--- a/src/glx/x11/dri_common.c
+++ /dev/null
@@ -1,450 +0,0 @@
-/*
- * Copyright 1998-1999 Precision Insight, Inc., Cedar Park, Texas.
- * Copyright © 2008 Red Hat, Inc.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Soft-
- * ware"), to deal in the Software without restriction, including without
- * limitation the rights to use, copy, modify, merge, publish, distribute,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, provided that the above copyright
- * notice(s) and this permission notice appear in all copies of the Soft-
- * ware and that both the above copyright notice(s) and this permission
- * notice appear in supporting documentation.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABIL-
- * ITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY
- * RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN
- * THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSE-
- * QUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
- * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
- * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFOR-
- * MANCE OF THIS SOFTWARE.
- *
- * Except as contained in this notice, the name of a copyright holder shall
- * not be used in advertising or otherwise to promote the sale, use or
- * other dealings in this Software without prior written authorization of
- * the copyright holder.
- *
- * Authors:
- * Kevin E. Martin <[email protected]>
- * Brian Paul <[email protected]>
- * Kristian Høgsberg ([email protected])
- */
-
-#ifdef GLX_DIRECT_RENDERING
-
-#include <unistd.h>
-#include <dlfcn.h>
-#include <stdarg.h>
-#include "glxclient.h"
-#include "glcontextmodes.h"
-#include "dri_common.h"
-
-#ifndef RTLD_NOW
-#define RTLD_NOW 0
-#endif
-#ifndef RTLD_GLOBAL
-#define RTLD_GLOBAL 0
-#endif
-
-_X_HIDDEN void
-InfoMessageF(const char *f, ...)
-{
- va_list args;
- const char *env;
-
- if ((env = getenv("LIBGL_DEBUG")) && strstr(env, "verbose")) {
- fprintf(stderr, "libGL: ");
- va_start(args, f);
- vfprintf(stderr, f, args);
- va_end(args);
- }
-}
-
-/**
- * Print error to stderr, unless LIBGL_DEBUG=="quiet".
- */
-_X_HIDDEN void
-ErrorMessageF(const char *f, ...)
-{
- va_list args;
- const char *env;
-
- if ((env = getenv("LIBGL_DEBUG")) && !strstr(env, "quiet")) {
- fprintf(stderr, "libGL error: ");
- va_start(args, f);
- vfprintf(stderr, f, args);
- va_end(args);
- }
-}
-
-#ifndef DEFAULT_DRIVER_DIR
-/* this is normally defined in Mesa/configs/default with DRI_DRIVER_SEARCH_PATH */
-#define DEFAULT_DRIVER_DIR "/usr/local/lib/dri"
-#endif
-
-/**
- * Try to \c dlopen the named driver.
- *
- * This function adds the "_dri.so" suffix to the driver name and searches the
- * directories specified by the \c LIBGL_DRIVERS_PATH environment variable in
- * order to find the driver.
- *
- * \param driverName - a name like "tdfx", "i810", "mga", etc.
- *
- * \returns
- * A handle from \c dlopen, or \c NULL if driver file not found.
- */
-_X_HIDDEN void *
-driOpenDriver(const char *driverName)
-{
- void *glhandle, *handle;
- const char *libPaths, *p, *next;
- char realDriverName[200];
- int len;
-
- /* Attempt to make sure libGL symbols will be visible to the driver */
- glhandle = dlopen("libGL.so.1", RTLD_NOW | RTLD_GLOBAL);
-
- libPaths = NULL;
- if (geteuid() == getuid()) {
- /* don't allow setuid apps to use LIBGL_DRIVERS_PATH */
- libPaths = getenv("LIBGL_DRIVERS_PATH");
- if (!libPaths)
- libPaths = getenv("LIBGL_DRIVERS_DIR"); /* deprecated */
- }
- if (libPaths == NULL)
- libPaths = DEFAULT_DRIVER_DIR;
-
- handle = NULL;
- for (p = libPaths; *p; p = next) {
- next = strchr(p, ':');
- if (next == NULL) {
- len = strlen(p);
- next = p + len;
- }
- else {
- len = next - p;
- next++;
- }
-
-#ifdef GLX_USE_TLS
- snprintf(realDriverName, sizeof realDriverName,
- "%.*s/tls/%s_dri.so", len, p, driverName);
- InfoMessageF("OpenDriver: trying %s\n", realDriverName);
- handle = dlopen(realDriverName, RTLD_NOW | RTLD_GLOBAL);
-#endif
-
- if (handle == NULL) {
- snprintf(realDriverName, sizeof realDriverName,
- "%.*s/%s_dri.so", len, p, driverName);
- InfoMessageF("OpenDriver: trying %s\n", realDriverName);
- handle = dlopen(realDriverName, RTLD_NOW | RTLD_GLOBAL);
- }
-
- if (handle != NULL)
- break;
- else
- ErrorMessageF("dlopen %s failed (%s)\n", realDriverName, dlerror());
- }
-
- if (!handle)
- ErrorMessageF("unable to load driver: %s_dri.so\n", driverName);
-
- if (glhandle)
- dlclose(glhandle);
-
- return handle;
-}
-
-_X_HIDDEN const __DRIsystemTimeExtension systemTimeExtension = {
- {__DRI_SYSTEM_TIME, __DRI_SYSTEM_TIME_VERSION},
- __glXGetUST,
- __driGetMscRateOML
-};
-
-#define __ATTRIB(attrib, field) \
- { attrib, offsetof(__GLcontextModes, field) }
-
-static const struct
-{
- unsigned int attrib, offset;
-} attribMap[] = {
- __ATTRIB(__DRI_ATTRIB_BUFFER_SIZE, rgbBits),
- __ATTRIB(__DRI_ATTRIB_LEVEL, level),
- __ATTRIB(__DRI_ATTRIB_RED_SIZE, redBits),
- __ATTRIB(__DRI_ATTRIB_GREEN_SIZE, greenBits),
- __ATTRIB(__DRI_ATTRIB_BLUE_SIZE, blueBits),
- __ATTRIB(__DRI_ATTRIB_ALPHA_SIZE, alphaBits),
- __ATTRIB(__DRI_ATTRIB_DEPTH_SIZE, depthBits),
- __ATTRIB(__DRI_ATTRIB_STENCIL_SIZE, stencilBits),
- __ATTRIB(__DRI_ATTRIB_ACCUM_RED_SIZE, accumRedBits),
- __ATTRIB(__DRI_ATTRIB_ACCUM_GREEN_SIZE, accumGreenBits),
- __ATTRIB(__DRI_ATTRIB_ACCUM_BLUE_SIZE, accumBlueBits),
- __ATTRIB(__DRI_ATTRIB_ACCUM_ALPHA_SIZE, accumAlphaBits),
- __ATTRIB(__DRI_ATTRIB_SAMPLE_BUFFERS, sampleBuffers),
- __ATTRIB(__DRI_ATTRIB_SAMPLES, samples),
- __ATTRIB(__DRI_ATTRIB_DOUBLE_BUFFER, doubleBufferMode),
- __ATTRIB(__DRI_ATTRIB_STEREO, stereoMode),
- __ATTRIB(__DRI_ATTRIB_AUX_BUFFERS, numAuxBuffers),
-#if 0
- __ATTRIB(__DRI_ATTRIB_TRANSPARENT_TYPE, transparentPixel),
- __ATTRIB(__DRI_ATTRIB_TRANSPARENT_INDEX_VALUE, transparentIndex),
- __ATTRIB(__DRI_ATTRIB_TRANSPARENT_RED_VALUE, transparentRed),
- __ATTRIB(__DRI_ATTRIB_TRANSPARENT_GREEN_VALUE, transparentGreen),
- __ATTRIB(__DRI_ATTRIB_TRANSPARENT_BLUE_VALUE, transparentBlue),
- __ATTRIB(__DRI_ATTRIB_TRANSPARENT_ALPHA_VALUE, transparentAlpha),
- __ATTRIB(__DRI_ATTRIB_RED_MASK, redMask),
- __ATTRIB(__DRI_ATTRIB_GREEN_MASK, greenMask),
- __ATTRIB(__DRI_ATTRIB_BLUE_MASK, blueMask),
- __ATTRIB(__DRI_ATTRIB_ALPHA_MASK, alphaMask),
-#endif
- __ATTRIB(__DRI_ATTRIB_MAX_PBUFFER_WIDTH, maxPbufferWidth),
- __ATTRIB(__DRI_ATTRIB_MAX_PBUFFER_HEIGHT, maxPbufferHeight),
- __ATTRIB(__DRI_ATTRIB_MAX_PBUFFER_PIXELS, maxPbufferPixels),
- __ATTRIB(__DRI_ATTRIB_OPTIMAL_PBUFFER_WIDTH, optimalPbufferWidth),
- __ATTRIB(__DRI_ATTRIB_OPTIMAL_PBUFFER_HEIGHT, optimalPbufferHeight),
-#if 0
- __ATTRIB(__DRI_ATTRIB_SWAP_METHOD, swapMethod),
-#endif
-__ATTRIB(__DRI_ATTRIB_BIND_TO_TEXTURE_RGB, bindToTextureRgb),
- __ATTRIB(__DRI_ATTRIB_BIND_TO_TEXTURE_RGBA, bindToTextureRgba),
- __ATTRIB(__DRI_ATTRIB_BIND_TO_MIPMAP_TEXTURE,
- bindToMipmapTexture),
- __ATTRIB(__DRI_ATTRIB_YINVERTED, yInverted),};
-
-#define ARRAY_SIZE(a) (sizeof (a) / sizeof ((a)[0]))
-
-static int
-scalarEqual(__GLcontextModes * mode, unsigned int attrib, unsigned int value)
-{
- unsigned int glxValue;
- int i;
-
- for (i = 0; i < ARRAY_SIZE(attribMap); i++)
- if (attribMap[i].attrib == attrib) {
- glxValue = *(unsigned int *) ((char *) mode + attribMap[i].offset);
- return glxValue == GLX_DONT_CARE || glxValue == value;
- }
-
- return GL_TRUE; /* Is a non-existing attribute equal to value? */
-}
-
-static int
-driConfigEqual(const __DRIcoreExtension * core,
- __GLcontextModes * modes, const __DRIconfig * driConfig)
-{
- unsigned int attrib, value, glxValue;
- int i;
-
- i = 0;
- while (core->indexConfigAttrib(driConfig, i++, &attrib, &value)) {
- switch (attrib) {
- case __DRI_ATTRIB_RENDER_TYPE:
- glxValue = 0;
- if (value & __DRI_ATTRIB_RGBA_BIT) {
- glxValue |= GLX_RGBA_BIT;
- }
- else if (value & __DRI_ATTRIB_COLOR_INDEX_BIT) {
- glxValue |= GLX_COLOR_INDEX_BIT;
- }
- if (glxValue != modes->renderType)
- return GL_FALSE;
- break;
-
- case __DRI_ATTRIB_CONFIG_CAVEAT:
- if (value & __DRI_ATTRIB_NON_CONFORMANT_CONFIG)
- glxValue = GLX_NON_CONFORMANT_CONFIG;
- else if (value & __DRI_ATTRIB_SLOW_BIT)
- glxValue = GLX_SLOW_CONFIG;
- else
- glxValue = GLX_NONE;
- if (glxValue != modes->visualRating)
- return GL_FALSE;
- break;
-
- case __DRI_ATTRIB_BIND_TO_TEXTURE_TARGETS:
- glxValue = 0;
- if (value & __DRI_ATTRIB_TEXTURE_1D_BIT)
- glxValue |= GLX_TEXTURE_1D_BIT_EXT;
- if (value & __DRI_ATTRIB_TEXTURE_2D_BIT)
- glxValue |= GLX_TEXTURE_2D_BIT_EXT;
- if (value & __DRI_ATTRIB_TEXTURE_RECTANGLE_BIT)
- glxValue |= GLX_TEXTURE_RECTANGLE_BIT_EXT;
- if (modes->bindToTextureTargets != GLX_DONT_CARE &&
- glxValue != modes->bindToTextureTargets)
- return GL_FALSE;
- break;
-
- default:
- if (!scalarEqual(modes, attrib, value))
- return GL_FALSE;
- }
- }
-
- return GL_TRUE;
-}
-
-static __GLcontextModes *
-createDriMode(const __DRIcoreExtension * core,
- __GLcontextModes * modes, const __DRIconfig ** driConfigs)
-{
- __GLXDRIconfigPrivate *config;
- int i;
-
- for (i = 0; driConfigs[i]; i++) {
- if (driConfigEqual(core, modes, driConfigs[i]))
- break;
- }
-
- if (driConfigs[i] == NULL)
- return NULL;
-
- config = Xmalloc(sizeof *config);
- if (config == NULL)
- return NULL;
-
- config->modes = *modes;
- config->driConfig = driConfigs[i];
-
- return &config->modes;
-}
-
-_X_HIDDEN __GLcontextModes *
-driConvertConfigs(const __DRIcoreExtension * core,
- __GLcontextModes * modes, const __DRIconfig ** configs)
-{
- __GLcontextModes head, *tail, *m;
-
- tail = &head;
- head.next = NULL;
- for (m = modes; m; m = m->next) {
- tail->next = createDriMode(core, m, configs);
- if (tail->next == NULL) {
- /* no matching dri config for m */
- continue;
- }
-
-
- tail = tail->next;
- }
-
- _gl_context_modes_destroy(modes);
-
- return head.next;
-}
-
-/* Bind DRI1 specific extensions */
-_X_HIDDEN void
-driBindExtensions(__GLXscreenConfigs *psc)
-{
- const __DRIextension **extensions;
- int i;
-
- extensions = psc->core->getExtensions(psc->__driScreen);
-
- for (i = 0; extensions[i]; i++) {
-#ifdef __DRI_SWAP_CONTROL
- /* No DRI2 support for swap_control at the moment, since SwapBuffers
- * is done by the X server */
- if (strcmp(extensions[i]->name, __DRI_SWAP_CONTROL) == 0) {
- psc->swapControl = (__DRIswapControlExtension *) extensions[i];
- __glXEnableDirectExtension(psc, "GLX_SGI_swap_control");
- __glXEnableDirectExtension(psc, "GLX_MESA_swap_control");
- }
-#endif
-
-#ifdef __DRI_MEDIA_STREAM_COUNTER
- if (strcmp(extensions[i]->name, __DRI_MEDIA_STREAM_COUNTER) == 0) {
- psc->msc = (__DRImediaStreamCounterExtension *) extensions[i];
- __glXEnableDirectExtension(psc, "GLX_SGI_video_sync");
- }
-#endif
-
-#ifdef __DRI_SWAP_BUFFER_COUNTER
- /* No driver supports this at this time and the extension is
- * not defined in dri_interface.h. Will enable
- * GLX_OML_sync_control if implemented. */
-#endif
-
- /* Ignore unknown extensions */
- }
-}
-
-/* Bind DRI2 specific extensions */
-_X_HIDDEN void
-dri2BindExtensions(__GLXscreenConfigs *psc)
-{
- const __DRIextension **extensions;
- int i;
-
- extensions = psc->core->getExtensions(psc->__driScreen);
-
- for (i = 0; extensions[i]; i++) {
-#ifdef __DRI_TEX_BUFFER
- if ((strcmp(extensions[i]->name, __DRI_TEX_BUFFER) == 0)) {
- psc->texBuffer = (__DRItexBufferExtension *) extensions[i];
- __glXEnableDirectExtension(psc, "GLX_EXT_texture_from_pixmap");
- }
-#endif
-
- __glXEnableDirectExtension(psc, "GLX_SGI_video_sync");
- __glXEnableDirectExtension(psc, "GLX_SGI_swap_control");
- __glXEnableDirectExtension(psc, "GLX_MESA_swap_control");
-
- /* FIXME: if DRI2 version supports it... */
- __glXEnableDirectExtension(psc, "INTEL_swap_event");
-
-#ifdef __DRI2_FLUSH
- if ((strcmp(extensions[i]->name, __DRI2_FLUSH) == 0)) {
- psc->f = (__DRI2flushExtension *) extensions[i];
- /* internal driver extension, no GL extension exposed */
- }
-#endif
- }
-}
-
-/* Bind extensions common to DRI1 and DRI2 */
-_X_HIDDEN void
-driBindCommonExtensions(__GLXscreenConfigs *psc)
-{
- const __DRIextension **extensions;
- int i;
-
- extensions = psc->core->getExtensions(psc->__driScreen);
-
- for (i = 0; extensions[i]; i++) {
-#ifdef __DRI_COPY_SUB_BUFFER
- if (strcmp(extensions[i]->name, __DRI_COPY_SUB_BUFFER) == 0) {
- psc->driCopySubBuffer = (__DRIcopySubBufferExtension *) extensions[i];
- __glXEnableDirectExtension(psc, "GLX_MESA_copy_sub_buffer");
- }
-#endif
-
-#ifdef __DRI_ALLOCATE
- if (strcmp(extensions[i]->name, __DRI_ALLOCATE) == 0) {
- psc->allocate = (__DRIallocateExtension *) extensions[i];
- __glXEnableDirectExtension(psc, "GLX_MESA_allocate_memory");
- }
-#endif
-
-#ifdef __DRI_FRAME_TRACKING
- if (strcmp(extensions[i]->name, __DRI_FRAME_TRACKING) == 0) {
- psc->frameTracking = (__DRIframeTrackingExtension *) extensions[i];
- __glXEnableDirectExtension(psc, "GLX_MESA_swap_frame_usage");
- }
-#endif
-
-#ifdef __DRI_READ_DRAWABLE
- if (strcmp(extensions[i]->name, __DRI_READ_DRAWABLE) == 0) {
- __glXEnableDirectExtension(psc, "GLX_SGI_make_current_read");
- }
-#endif
-
- /* Ignore unknown extensions */
- }
-}
-
-#endif /* GLX_DIRECT_RENDERING */
diff --git a/src/glx/x11/dri_common.h b/src/glx/x11/dri_common.h
deleted file mode 100644
index bb178db7875..00000000000
--- a/src/glx/x11/dri_common.h
+++ /dev/null
@@ -1,63 +0,0 @@
-/*
- * Copyright 1998-1999 Precision Insight, Inc., Cedar Park, Texas.
- * Copyright © 2008 Red Hat, Inc.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Soft-
- * ware"), to deal in the Software without restriction, including without
- * limitation the rights to use, copy, modify, merge, publish, distribute,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, provided that the above copyright
- * notice(s) and this permission notice appear in all copies of the Soft-
- * ware and that both the above copyright notice(s) and this permission
- * notice appear in supporting documentation.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABIL-
- * ITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY
- * RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN
- * THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSE-
- * QUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
- * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
- * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFOR-
- * MANCE OF THIS SOFTWARE.
- *
- * Except as contained in this notice, the name of a copyright holder shall
- * not be used in advertising or otherwise to promote the sale, use or
- * other dealings in this Software without prior written authorization of
- * the copyright holder.
- *
- * Authors:
- * Kevin E. Martin <[email protected]>
- * Brian Paul <[email protected]>
- * Kristian Høgsberg ([email protected])
- */
-
-#ifndef _DRI_COMMON_H
-#define _DRI_COMMON_H
-
-typedef struct __GLXDRIconfigPrivateRec __GLXDRIconfigPrivate;
-
-struct __GLXDRIconfigPrivateRec
-{
- __GLcontextModes modes;
- const __DRIconfig *driConfig;
-};
-
-extern __GLcontextModes *driConvertConfigs(const __DRIcoreExtension * core,
- __GLcontextModes * modes,
- const __DRIconfig ** configs);
-
-extern const __DRIsystemTimeExtension systemTimeExtension;
-
-extern void InfoMessageF(const char *f, ...);
-
-extern void ErrorMessageF(const char *f, ...);
-
-extern void *driOpenDriver(const char *driverName);
-
-extern void driBindExtensions(__GLXscreenConfigs * psc);
-extern void dri2BindExtensions(__GLXscreenConfigs * psc);
-extern void driBindCommonExtensions(__GLXscreenConfigs * psc);
-
-#endif /* _DRI_COMMON_H */
diff --git a/src/glx/x11/dri_glx.c b/src/glx/x11/dri_glx.c
deleted file mode 100644
index 0ff53c324f5..00000000000
--- a/src/glx/x11/dri_glx.c
+++ /dev/null
@@ -1,751 +0,0 @@
-/**************************************************************************
-
-Copyright 1998-1999 Precision Insight, Inc., Cedar Park, Texas.
-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"), to deal in the Software without restriction, including
-without limitation the rights to use, copy, modify, merge, publish,
-distribute, sub license, and/or sell copies of the Software, and to
-permit persons to whom the Software is furnished to do so, subject to
-the following conditions:
-
-The above copyright notice and this permission notice (including the
-next paragraph) shall be included in all copies or substantial portions
-of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
-IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
-ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
-TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
-SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-**************************************************************************/
-
-/*
- * Authors:
- * Kevin E. Martin <[email protected]>
- * Brian Paul <[email protected]>
- *
- */
-
-#ifdef GLX_DIRECT_RENDERING
-
-#include <X11/Xlib.h>
-#include <X11/extensions/Xfixes.h>
-#include <X11/extensions/Xdamage.h>
-#include "glxclient.h"
-#include "xf86dri.h"
-#include "dri2.h"
-#include "sarea.h"
-#include <dlfcn.h>
-#include <sys/types.h>
-#include <sys/mman.h>
-#include "xf86drm.h"
-#include "dri_common.h"
-
-typedef struct __GLXDRIdisplayPrivateRec __GLXDRIdisplayPrivate;
-typedef struct __GLXDRIcontextPrivateRec __GLXDRIcontextPrivate;
-
-struct __GLXDRIdisplayPrivateRec
-{
- __GLXDRIdisplay base;
-
- /*
- ** XFree86-DRI version information
- */
- int driMajor;
- int driMinor;
- int driPatch;
-};
-
-struct __GLXDRIcontextPrivateRec
-{
- __GLXDRIcontext base;
- __DRIcontext *driContext;
- XID hwContextID;
- __GLXscreenConfigs *psc;
-};
-
-/*
- * Given a display pointer and screen number, determine the name of
- * the DRI driver for the screen. (I.e. "r128", "tdfx", etc).
- * Return True for success, False for failure.
- */
-static Bool
-driGetDriverName(Display * dpy, int scrNum, char **driverName)
-{
- int directCapable;
- Bool b;
- int event, error;
- int driverMajor, driverMinor, driverPatch;
-
- *driverName = NULL;
-
- if (XF86DRIQueryExtension(dpy, &event, &error)) { /* DRI1 */
- if (!XF86DRIQueryDirectRenderingCapable(dpy, scrNum, &directCapable)) {
- ErrorMessageF("XF86DRIQueryDirectRenderingCapable failed\n");
- return False;
- }
- if (!directCapable) {
- ErrorMessageF("XF86DRIQueryDirectRenderingCapable returned false\n");
- return False;
- }
-
- b = XF86DRIGetClientDriverName(dpy, scrNum, &driverMajor, &driverMinor,
- &driverPatch, driverName);
- if (!b) {
- ErrorMessageF("Cannot determine driver name for screen %d\n",
- scrNum);
- return False;
- }
-
- InfoMessageF("XF86DRIGetClientDriverName: %d.%d.%d %s (screen %d)\n",
- driverMajor, driverMinor, driverPatch, *driverName,
- scrNum);
-
- return True;
- }
- else if (DRI2QueryExtension(dpy, &event, &error)) { /* DRI2 */
- char *dev;
- Bool ret = DRI2Connect(dpy, RootWindow(dpy, scrNum), driverName, &dev);
-
- if (ret)
- Xfree(dev);
-
- return ret;
- }
-
- return False;
-}
-
-/*
- * Exported function for querying the DRI driver for a given screen.
- *
- * The returned char pointer points to a static array that will be
- * overwritten by subsequent calls.
- */
-PUBLIC const char *
-glXGetScreenDriver(Display * dpy, int scrNum)
-{
- static char ret[32];
- char *driverName;
- if (driGetDriverName(dpy, scrNum, &driverName)) {
- int len;
- if (!driverName)
- return NULL;
- len = strlen(driverName);
- if (len >= 31)
- return NULL;
- memcpy(ret, driverName, len + 1);
- Xfree(driverName);
- return ret;
- }
- return NULL;
-}
-
-/*
- * Exported function for obtaining a driver's option list (UTF-8 encoded XML).
- *
- * The returned char pointer points directly into the driver. Therefore
- * it should be treated as a constant.
- *
- * If the driver was not found or does not support configuration NULL is
- * returned.
- *
- * Note: The driver remains opened after this function returns.
- */
-PUBLIC const char *
-glXGetDriverConfig(const char *driverName)
-{
- void *handle = driOpenDriver(driverName);
- if (handle)
- return dlsym(handle, "__driConfigOptions");
- else
- return NULL;
-}
-
-#ifdef XDAMAGE_1_1_INTERFACE
-
-static GLboolean
-has_damage_post(Display * dpy)
-{
- static GLboolean inited = GL_FALSE;
- static GLboolean has_damage;
-
- if (!inited) {
- int major, minor;
-
- if (XDamageQueryVersion(dpy, &major, &minor) &&
- major == 1 && minor >= 1) {
- has_damage = GL_TRUE;
- }
- else {
- has_damage = GL_FALSE;
- }
- inited = GL_TRUE;
- }
-
- return has_damage;
-}
-
-static void
-__glXReportDamage(__DRIdrawable * driDraw,
- int x, int y,
- drm_clip_rect_t * rects, int num_rects,
- GLboolean front_buffer, void *loaderPrivate)
-{
- XRectangle *xrects;
- XserverRegion region;
- int i;
- int x_off, y_off;
- __GLXDRIdrawable *glxDraw = loaderPrivate;
- __GLXscreenConfigs *psc = glxDraw->psc;
- Display *dpy = psc->dpy;
- Drawable drawable;
-
- if (!has_damage_post(dpy))
- return;
-
- if (front_buffer) {
- x_off = x;
- y_off = y;
- drawable = RootWindow(dpy, psc->scr);
- }
- else {
- x_off = 0;
- y_off = 0;
- drawable = glxDraw->xDrawable;
- }
-
- xrects = malloc(sizeof(XRectangle) * num_rects);
- if (xrects == NULL)
- return;
-
- for (i = 0; i < num_rects; i++) {
- xrects[i].x = rects[i].x1 + x_off;
- xrects[i].y = rects[i].y1 + y_off;
- xrects[i].width = rects[i].x2 - rects[i].x1;
- xrects[i].height = rects[i].y2 - rects[i].y1;
- }
- region = XFixesCreateRegion(dpy, xrects, num_rects);
- free(xrects);
- XDamageAdd(dpy, drawable, region);
- XFixesDestroyRegion(dpy, region);
-}
-
-static const __DRIdamageExtension damageExtension = {
- {__DRI_DAMAGE, __DRI_DAMAGE_VERSION},
- __glXReportDamage,
-};
-
-#endif
-
-static GLboolean
-__glXDRIGetDrawableInfo(__DRIdrawable * drawable,
- unsigned int *index, unsigned int *stamp,
- int *X, int *Y, int *W, int *H,
- int *numClipRects, drm_clip_rect_t ** pClipRects,
- int *backX, int *backY,
- int *numBackClipRects,
- drm_clip_rect_t ** pBackClipRects,
- void *loaderPrivate)
-{
- __GLXDRIdrawable *glxDraw = loaderPrivate;
- __GLXscreenConfigs *psc = glxDraw->psc;
- Display *dpy = psc->dpy;
-
- return XF86DRIGetDrawableInfo(dpy, psc->scr, glxDraw->drawable,
- index, stamp, X, Y, W, H,
- numClipRects, pClipRects,
- backX, backY,
- numBackClipRects, pBackClipRects);
-}
-
-static const __DRIgetDrawableInfoExtension getDrawableInfoExtension = {
- {__DRI_GET_DRAWABLE_INFO, __DRI_GET_DRAWABLE_INFO_VERSION},
- __glXDRIGetDrawableInfo
-};
-
-static const __DRIextension *loader_extensions[] = {
- &systemTimeExtension.base,
- &getDrawableInfoExtension.base,
-#ifdef XDAMAGE_1_1_INTERFACE
- &damageExtension.base,
-#endif
- NULL
-};
-
-/**
- * Perform the required libGL-side initialization and call the client-side
- * driver's \c __driCreateNewScreen function.
- *
- * \param dpy Display pointer.
- * \param scrn Screen number on the display.
- * \param psc DRI screen information.
- * \param driDpy DRI display information.
- * \param createNewScreen Pointer to the client-side driver's
- * \c __driCreateNewScreen function.
- * \returns A pointer to the \c __DRIscreen structure returned by
- * the client-side driver on success, or \c NULL on failure.
- */
-static void *
-CallCreateNewScreen(Display * dpy, int scrn, __GLXscreenConfigs * psc,
- __GLXDRIdisplayPrivate * driDpy)
-{
- void *psp = NULL;
- drm_handle_t hSAREA;
- drmAddress pSAREA = MAP_FAILED;
- char *BusID;
- __DRIversion ddx_version;
- __DRIversion dri_version;
- __DRIversion drm_version;
- __DRIframebuffer framebuffer;
- int fd = -1;
- int status;
-
- drm_magic_t magic;
- drmVersionPtr version;
- int newlyopened;
- char *driverName;
- drm_handle_t hFB;
- int junk;
- const __DRIconfig **driver_configs;
- __GLcontextModes *visual;
-
- /* DRI protocol version. */
- dri_version.major = driDpy->driMajor;
- dri_version.minor = driDpy->driMinor;
- dri_version.patch = driDpy->driPatch;
-
- framebuffer.base = MAP_FAILED;
- framebuffer.dev_priv = NULL;
-
- if (!XF86DRIOpenConnection(dpy, scrn, &hSAREA, &BusID)) {
- ErrorMessageF("XF86DRIOpenConnection failed\n");
- goto handle_error;
- }
-
- fd = drmOpenOnce(NULL, BusID, &newlyopened);
-
- Xfree(BusID); /* No longer needed */
-
- if (fd < 0) {
- ErrorMessageF("drmOpenOnce failed (%s)\n", strerror(-fd));
- goto handle_error;
- }
-
- if (drmGetMagic(fd, &magic)) {
- ErrorMessageF("drmGetMagic failed\n");
- goto handle_error;
- }
-
- version = drmGetVersion(fd);
- if (version) {
- drm_version.major = version->version_major;
- drm_version.minor = version->version_minor;
- drm_version.patch = version->version_patchlevel;
- drmFreeVersion(version);
- }
- else {
- drm_version.major = -1;
- drm_version.minor = -1;
- drm_version.patch = -1;
- }
-
- if (newlyopened && !XF86DRIAuthConnection(dpy, scrn, magic)) {
- ErrorMessageF("XF86DRIAuthConnection failed\n");
- goto handle_error;
- }
-
- /* Get device name (like "tdfx") and the ddx version numbers.
- * We'll check the version in each DRI driver's "createNewScreen"
- * function. */
- if (!XF86DRIGetClientDriverName(dpy, scrn,
- &ddx_version.major,
- &ddx_version.minor,
- &ddx_version.patch, &driverName)) {
- ErrorMessageF("XF86DRIGetClientDriverName failed\n");
- goto handle_error;
- }
-
- Xfree(driverName); /* No longer needed. */
-
- /*
- * Get device-specific info. pDevPriv will point to a struct
- * (such as DRIRADEONRec in xfree86/driver/ati/radeon_dri.h) that
- * has information about the screen size, depth, pitch, ancilliary
- * buffers, DRM mmap handles, etc.
- */
- if (!XF86DRIGetDeviceInfo(dpy, scrn, &hFB, &junk,
- &framebuffer.size, &framebuffer.stride,
- &framebuffer.dev_priv_size,
- &framebuffer.dev_priv)) {
- ErrorMessageF("XF86DRIGetDeviceInfo failed");
- goto handle_error;
- }
-
- framebuffer.width = DisplayWidth(dpy, scrn);
- framebuffer.height = DisplayHeight(dpy, scrn);
-
- /* Map the framebuffer region. */
- status = drmMap(fd, hFB, framebuffer.size,
- (drmAddressPtr) & framebuffer.base);
- if (status != 0) {
- ErrorMessageF("drmMap of framebuffer failed (%s)", strerror(-status));
- goto handle_error;
- }
-
- /* Map the SAREA region. Further mmap regions may be setup in
- * each DRI driver's "createNewScreen" function.
- */
- status = drmMap(fd, hSAREA, SAREA_MAX, &pSAREA);
- if (status != 0) {
- ErrorMessageF("drmMap of SAREA failed (%s)", strerror(-status));
- goto handle_error;
- }
-
- psp = (*psc->legacy->createNewScreen) (scrn,
- &ddx_version,
- &dri_version,
- &drm_version,
- &framebuffer,
- pSAREA,
- fd,
- loader_extensions,
- &driver_configs, psc);
-
- if (psp == NULL) {
- ErrorMessageF("Calling driver entry point failed");
- goto handle_error;
- }
-
- psc->configs = driConvertConfigs(psc->core, psc->configs, driver_configs);
- psc->visuals = driConvertConfigs(psc->core, psc->visuals, driver_configs);
-
- psc->driver_configs = driver_configs;
-
- /* Visuals with depth != screen depth are subject to automatic compositing
- * in the X server, so DRI1 can't render to them properly. Mark them as
- * non-conformant to prevent apps from picking them up accidentally.
- */
- for (visual = psc->visuals; visual; visual = visual->next) {
- XVisualInfo template;
- XVisualInfo *visuals;
- int num_visuals;
- long mask;
-
- template.visualid = visual->visualID;
- mask = VisualIDMask;
- visuals = XGetVisualInfo(dpy, mask, &template, &num_visuals);
-
- if (visuals) {
- if (num_visuals > 0 && visuals->depth != DefaultDepth(dpy, scrn))
- visual->visualRating = GLX_NON_CONFORMANT_CONFIG;
-
- XFree(visuals);
- }
- }
-
- return psp;
-
- handle_error:
- if (pSAREA != MAP_FAILED)
- drmUnmap(pSAREA, SAREA_MAX);
-
- if (framebuffer.base != MAP_FAILED)
- drmUnmap((drmAddress) framebuffer.base, framebuffer.size);
-
- if (framebuffer.dev_priv != NULL)
- Xfree(framebuffer.dev_priv);
-
- if (fd >= 0)
- drmCloseOnce(fd);
-
- XF86DRICloseConnection(dpy, scrn);
-
- ErrorMessageF("reverting to software direct rendering\n");
-
- return NULL;
-}
-
-static void
-driDestroyContext(__GLXDRIcontext * context,
- __GLXscreenConfigs * psc, Display * dpy)
-{
- __GLXDRIcontextPrivate *pcp = (__GLXDRIcontextPrivate *) context;
-
- (*psc->core->destroyContext) (pcp->driContext);
-
- XF86DRIDestroyContext(psc->dpy, psc->scr, pcp->hwContextID);
- Xfree(pcp);
-}
-
-static Bool
-driBindContext(__GLXDRIcontext * context,
- __GLXDRIdrawable * draw, __GLXDRIdrawable * read)
-{
- __GLXDRIcontextPrivate *pcp = (__GLXDRIcontextPrivate *) context;
- const __DRIcoreExtension *core = pcp->psc->core;
-
- return (*core->bindContext) (pcp->driContext,
- draw->driDrawable, read->driDrawable);
-}
-
-static void
-driUnbindContext(__GLXDRIcontext * context)
-{
- __GLXDRIcontextPrivate *pcp = (__GLXDRIcontextPrivate *) context;
- const __DRIcoreExtension *core = pcp->psc->core;
-
- (*core->unbindContext) (pcp->driContext);
-}
-
-static __GLXDRIcontext *
-driCreateContext(__GLXscreenConfigs * psc,
- const __GLcontextModes * mode,
- GLXContext gc, GLXContext shareList, int renderType)
-{
- __GLXDRIcontextPrivate *pcp, *pcp_shared;
- drm_context_t hwContext;
- __DRIcontext *shared = NULL;
- __GLXDRIconfigPrivate *config = (__GLXDRIconfigPrivate *) mode;
-
- if (!psc || !psc->driScreen)
- return NULL;
-
- if (shareList) {
- pcp_shared = (__GLXDRIcontextPrivate *) shareList->driContext;
- shared = pcp_shared->driContext;
- }
-
- pcp = Xmalloc(sizeof *pcp);
- if (pcp == NULL)
- return NULL;
-
- pcp->psc = psc;
- if (!XF86DRICreateContextWithConfig(psc->dpy, psc->scr,
- mode->visualID,
- &pcp->hwContextID, &hwContext)) {
- Xfree(pcp);
- return NULL;
- }
-
- pcp->driContext =
- (*psc->legacy->createNewContext) (psc->__driScreen,
- config->driConfig,
- renderType, shared, hwContext, pcp);
- if (pcp->driContext == NULL) {
- XF86DRIDestroyContext(psc->dpy, psc->scr, pcp->hwContextID);
- Xfree(pcp);
- return NULL;
- }
-
- pcp->base.destroyContext = driDestroyContext;
- pcp->base.bindContext = driBindContext;
- pcp->base.unbindContext = driUnbindContext;
-
- return &pcp->base;
-}
-
-static void
-driDestroyDrawable(__GLXDRIdrawable * pdraw)
-{
- __GLXscreenConfigs *psc = pdraw->psc;
-
- (*psc->core->destroyDrawable) (pdraw->driDrawable);
- XF86DRIDestroyDrawable(psc->dpy, psc->scr, pdraw->drawable);
- Xfree(pdraw);
-}
-
-static __GLXDRIdrawable *
-driCreateDrawable(__GLXscreenConfigs * psc,
- XID xDrawable,
- GLXDrawable drawable, const __GLcontextModes * modes)
-{
- __GLXDRIdrawable *pdraw;
- drm_drawable_t hwDrawable;
- void *empty_attribute_list = NULL;
- __GLXDRIconfigPrivate *config = (__GLXDRIconfigPrivate *) modes;
-
- /* Old dri can't handle GLX 1.3+ drawable constructors. */
- if (xDrawable != drawable)
- return NULL;
-
- pdraw = Xmalloc(sizeof(*pdraw));
- if (!pdraw)
- return NULL;
-
- pdraw->drawable = drawable;
- pdraw->psc = psc;
-
- if (!XF86DRICreateDrawable(psc->dpy, psc->scr, drawable, &hwDrawable)) {
- Xfree(pdraw);
- return NULL;
- }
-
- /* Create a new drawable */
- pdraw->driDrawable =
- (*psc->legacy->createNewDrawable) (psc->__driScreen,
- config->driConfig,
- hwDrawable,
- GLX_WINDOW_BIT,
- empty_attribute_list, pdraw);
-
- if (!pdraw->driDrawable) {
- XF86DRIDestroyDrawable(psc->dpy, psc->scr, drawable);
- Xfree(pdraw);
- return NULL;
- }
-
- pdraw->destroyDrawable = driDestroyDrawable;
-
- return pdraw;
-}
-
-static int64_t
-driSwapBuffers(__GLXDRIdrawable * pdraw, int64_t unused1, int64_t unused2,
- int64_t unused3)
-{
- (*pdraw->psc->core->swapBuffers) (pdraw->driDrawable);
- return 0;
-}
-
-static void
-driCopySubBuffer(__GLXDRIdrawable * pdraw,
- int x, int y, int width, int height)
-{
- (*pdraw->psc->driCopySubBuffer->copySubBuffer) (pdraw->driDrawable,
- x, y, width, height);
-}
-
-static void
-driDestroyScreen(__GLXscreenConfigs * psc)
-{
- /* Free the direct rendering per screen data */
- if (psc->__driScreen)
- (*psc->core->destroyScreen) (psc->__driScreen);
- psc->__driScreen = NULL;
- if (psc->driver)
- dlclose(psc->driver);
-}
-
-static __GLXDRIscreen *
-driCreateScreen(__GLXscreenConfigs * psc, int screen,
- __GLXdisplayPrivate * priv)
-{
- __GLXDRIdisplayPrivate *pdp;
- __GLXDRIscreen *psp;
- const __DRIextension **extensions;
- char *driverName;
- int i;
-
- psp = Xcalloc(1, sizeof *psp);
- if (psp == NULL)
- return NULL;
-
- /* Initialize per screen dynamic client GLX extensions */
- psc->ext_list_first_time = GL_TRUE;
-
- if (!driGetDriverName(priv->dpy, screen, &driverName)) {
- Xfree(psp);
- return NULL;
- }
-
- psc->driver = driOpenDriver(driverName);
- Xfree(driverName);
- if (psc->driver == NULL) {
- Xfree(psp);
- return NULL;
- }
-
- extensions = dlsym(psc->driver, __DRI_DRIVER_EXTENSIONS);
- if (extensions == NULL) {
- ErrorMessageF("driver exports no extensions (%s)\n", dlerror());
- Xfree(psp);
- return NULL;
- }
-
- for (i = 0; extensions[i]; i++) {
- if (strcmp(extensions[i]->name, __DRI_CORE) == 0)
- psc->core = (__DRIcoreExtension *) extensions[i];
- if (strcmp(extensions[i]->name, __DRI_LEGACY) == 0)
- psc->legacy = (__DRIlegacyExtension *) extensions[i];
- }
-
- if (psc->core == NULL || psc->legacy == NULL) {
- Xfree(psp);
- return NULL;
- }
-
- pdp = (__GLXDRIdisplayPrivate *) priv->driDisplay;
- psc->__driScreen = CallCreateNewScreen(psc->dpy, screen, psc, pdp);
- if (psc->__driScreen == NULL) {
- dlclose(psc->driver);
- Xfree(psp);
- return NULL;
- }
-
- driBindExtensions(psc);
- driBindCommonExtensions(psc);
-
- if (psc->driCopySubBuffer)
- psp->copySubBuffer = driCopySubBuffer;
-
- psp->destroyScreen = driDestroyScreen;
- psp->createContext = driCreateContext;
- psp->createDrawable = driCreateDrawable;
- psp->swapBuffers = driSwapBuffers;
- psp->waitX = NULL;
- psp->waitGL = NULL;
-
- return psp;
-}
-
-/* Called from __glXFreeDisplayPrivate.
- */
-static void
-driDestroyDisplay(__GLXDRIdisplay * dpy)
-{
- Xfree(dpy);
-}
-
-/*
- * Allocate, initialize and return a __DRIdisplayPrivate object.
- * This is called from __glXInitialize() when we are given a new
- * display pointer.
- */
-_X_HIDDEN __GLXDRIdisplay *
-driCreateDisplay(Display * dpy)
-{
- __GLXDRIdisplayPrivate *pdpyp;
- int eventBase, errorBase;
- int major, minor, patch;
-
- if (!XF86DRIQueryExtension(dpy, &eventBase, &errorBase)) {
- return NULL;
- }
-
- if (!XF86DRIQueryVersion(dpy, &major, &minor, &patch)) {
- return NULL;
- }
-
- pdpyp = Xmalloc(sizeof *pdpyp);
- if (!pdpyp) {
- return NULL;
- }
-
- pdpyp->driMajor = major;
- pdpyp->driMinor = minor;
- pdpyp->driPatch = patch;
-
- pdpyp->base.destroyDisplay = driDestroyDisplay;
- pdpyp->base.createScreen = driCreateScreen;
-
- return &pdpyp->base;
-}
-
-#endif /* GLX_DIRECT_RENDERING */
diff --git a/src/glx/x11/drisw_glx.c b/src/glx/x11/drisw_glx.c
deleted file mode 100644
index eed9a8c4723..00000000000
--- a/src/glx/x11/drisw_glx.c
+++ /dev/null
@@ -1,456 +0,0 @@
-/*
- * Copyright 2008 George Sapountzis
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice (including the next
- * paragraph) shall be included in all copies or substantial portions of the
- * Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- */
-
-#ifdef GLX_DIRECT_RENDERING
-
-#include <X11/Xlib.h>
-#include "glxclient.h"
-#include <dlfcn.h>
-#include "dri_common.h"
-
-typedef struct __GLXDRIdisplayPrivateRec __GLXDRIdisplayPrivate;
-typedef struct __GLXDRIcontextPrivateRec __GLXDRIcontextPrivate;
-typedef struct __GLXDRIdrawablePrivateRec __GLXDRIdrawablePrivate;
-
-struct __GLXDRIdisplayPrivateRec
-{
- __GLXDRIdisplay base;
-};
-
-struct __GLXDRIcontextPrivateRec
-{
- __GLXDRIcontext base;
- __DRIcontext *driContext;
- __GLXscreenConfigs *psc;
-};
-
-struct __GLXDRIdrawablePrivateRec
-{
- __GLXDRIdrawable base;
-
- GC gc;
- GC swapgc;
-
- XVisualInfo *visinfo;
- XImage *ximage;
- int bpp;
-};
-
-/**
- * swrast loader functions
- */
-
-static Bool
-XCreateDrawable(__GLXDRIdrawablePrivate * pdp,
- Display * dpy, XID drawable, int visualid)
-{
- XGCValues gcvalues;
- long visMask;
- XVisualInfo visTemp;
- int num_visuals;
-
- /* create GC's */
- pdp->gc = XCreateGC(dpy, drawable, 0, NULL);
- pdp->swapgc = XCreateGC(dpy, drawable, 0, NULL);
-
- gcvalues.function = GXcopy;
- gcvalues.graphics_exposures = False;
- XChangeGC(dpy, pdp->gc, GCFunction, &gcvalues);
- XChangeGC(dpy, pdp->swapgc, GCFunction, &gcvalues);
- XChangeGC(dpy, pdp->swapgc, GCGraphicsExposures, &gcvalues);
-
- /* create XImage */
- visTemp.screen = DefaultScreen(dpy);
- visTemp.visualid = visualid;
- visMask = (VisualScreenMask | VisualIDMask);
- pdp->visinfo = XGetVisualInfo(dpy, visMask, &visTemp, &num_visuals);
-
- pdp->ximage = XCreateImage(dpy, pdp->visinfo->visual, pdp->visinfo->depth, ZPixmap, 0, /* format, offset */
- NULL, /* data */
- 0, 0, /* size */
- 32, /* bitmap_pad */
- 0); /* bytes_per_line */
-
- /* get the true number of bits per pixel */
- pdp->bpp = pdp->ximage->bits_per_pixel;
-
- return True;
-}
-
-static void
-XDestroyDrawable(__GLXDRIdrawablePrivate * pdp, Display * dpy, XID drawable)
-{
- XDestroyImage(pdp->ximage);
- XFree(pdp->visinfo);
-
- XFreeGC(dpy, pdp->gc);
- XFreeGC(dpy, pdp->swapgc);
-}
-
-static void
-swrastGetDrawableInfo(__DRIdrawable * draw,
- int *x, int *y, int *w, int *h, void *loaderPrivate)
-{
- __GLXDRIdrawablePrivate *pdp = loaderPrivate;
- __GLXDRIdrawable *pdraw = &(pdp->base);
- Display *dpy = pdraw->psc->dpy;
- Drawable drawable;
-
- Window root;
- Status stat;
- unsigned int bw, depth;
-
- drawable = pdraw->xDrawable;
-
- stat = XGetGeometry(dpy, drawable, &root,
- x, y, (unsigned int *) w, (unsigned int *) h,
- &bw, &depth);
-}
-
-static inline int
-bytes_per_line(int w, int bpp, unsigned mul)
-{
- unsigned mask = mul - 1;
-
- return ((w * bpp + mask) & ~mask) / 8;
-}
-
-static void
-swrastPutImage(__DRIdrawable * draw, int op,
- int x, int y, int w, int h, char *data, void *loaderPrivate)
-{
- __GLXDRIdrawablePrivate *pdp = loaderPrivate;
- __GLXDRIdrawable *pdraw = &(pdp->base);
- Display *dpy = pdraw->psc->dpy;
- Drawable drawable;
- XImage *ximage;
- GC gc;
-
- switch (op) {
- case __DRI_SWRAST_IMAGE_OP_DRAW:
- gc = pdp->gc;
- break;
- case __DRI_SWRAST_IMAGE_OP_SWAP:
- gc = pdp->swapgc;
- break;
- default:
- return;
- }
-
- drawable = pdraw->xDrawable;
-
- ximage = pdp->ximage;
- ximage->data = data;
- ximage->width = w;
- ximage->height = h;
- ximage->bytes_per_line = bytes_per_line(w, pdp->bpp, 32);
-
- XPutImage(dpy, drawable, gc, ximage, 0, 0, x, y, w, h);
-
- ximage->data = NULL;
-}
-
-static void
-swrastGetImage(__DRIdrawable * draw,
- int x, int y, int w, int h, char *data, void *loaderPrivate)
-{
- __GLXDRIdrawablePrivate *pdp = loaderPrivate;
- __GLXDRIdrawable *pdraw = &(pdp->base);
- Display *dpy = pdraw->psc->dpy;
- Drawable drawable;
- XImage *ximage;
-
- drawable = pdraw->xDrawable;
-
- ximage = pdp->ximage;
- ximage->data = data;
- ximage->width = w;
- ximage->height = h;
- ximage->bytes_per_line = bytes_per_line(w, pdp->bpp, 32);
-
- XGetSubImage(dpy, drawable, x, y, w, h, ~0L, ZPixmap, ximage, 0, 0);
-
- ximage->data = NULL;
-}
-
-static const __DRIswrastLoaderExtension swrastLoaderExtension = {
- {__DRI_SWRAST_LOADER, __DRI_SWRAST_LOADER_VERSION},
- swrastGetDrawableInfo,
- swrastPutImage,
- swrastGetImage
-};
-
-static const __DRIextension *loader_extensions[] = {
- &systemTimeExtension.base,
- &swrastLoaderExtension.base,
- NULL
-};
-
-/**
- * GLXDRI functions
- */
-
-static void
-driDestroyContext(__GLXDRIcontext * context,
- __GLXscreenConfigs * psc, Display * dpy)
-{
- __GLXDRIcontextPrivate *pcp = (__GLXDRIcontextPrivate *) context;
- const __DRIcoreExtension *core = pcp->psc->core;
-
- (*core->destroyContext) (pcp->driContext);
-
- Xfree(pcp);
-}
-
-static Bool
-driBindContext(__GLXDRIcontext * context,
- __GLXDRIdrawable * draw, __GLXDRIdrawable * read)
-{
- __GLXDRIcontextPrivate *pcp = (__GLXDRIcontextPrivate *) context;
- const __DRIcoreExtension *core = pcp->psc->core;
-
- return (*core->bindContext) (pcp->driContext,
- draw->driDrawable, read->driDrawable);
-}
-
-static void
-driUnbindContext(__GLXDRIcontext * context)
-{
- __GLXDRIcontextPrivate *pcp = (__GLXDRIcontextPrivate *) context;
- const __DRIcoreExtension *core = pcp->psc->core;
-
- (*core->unbindContext) (pcp->driContext);
-}
-
-static __GLXDRIcontext *
-driCreateContext(__GLXscreenConfigs * psc,
- const __GLcontextModes * mode,
- GLXContext gc, GLXContext shareList, int renderType)
-{
- __GLXDRIcontextPrivate *pcp, *pcp_shared;
- __GLXDRIconfigPrivate *config = (__GLXDRIconfigPrivate *) mode;
- const __DRIcoreExtension *core;
- __DRIcontext *shared = NULL;
-
- if (!psc || !psc->driScreen)
- return NULL;
-
- core = psc->core;
-
- if (shareList) {
- pcp_shared = (__GLXDRIcontextPrivate *) shareList->driContext;
- shared = pcp_shared->driContext;
- }
-
- pcp = Xmalloc(sizeof *pcp);
- if (pcp == NULL)
- return NULL;
-
- pcp->psc = psc;
- pcp->driContext =
- (*core->createNewContext) (psc->__driScreen,
- config->driConfig, shared, pcp);
- if (pcp->driContext == NULL) {
- Xfree(pcp);
- return NULL;
- }
-
- pcp->base.destroyContext = driDestroyContext;
- pcp->base.bindContext = driBindContext;
- pcp->base.unbindContext = driUnbindContext;
-
- return &pcp->base;
-}
-
-static void
-driDestroyDrawable(__GLXDRIdrawable * pdraw)
-{
- __GLXDRIdrawablePrivate *pdp = (__GLXDRIdrawablePrivate *) pdraw;
- const __DRIcoreExtension *core = pdraw->psc->core;
-
- (*core->destroyDrawable) (pdraw->driDrawable);
-
- XDestroyDrawable(pdp, pdraw->psc->dpy, pdraw->drawable);
- Xfree(pdp);
-}
-
-static __GLXDRIdrawable *
-driCreateDrawable(__GLXscreenConfigs * psc,
- XID xDrawable,
- GLXDrawable drawable, const __GLcontextModes * modes)
-{
- __GLXDRIdrawable *pdraw;
- __GLXDRIdrawablePrivate *pdp;
- __GLXDRIconfigPrivate *config = (__GLXDRIconfigPrivate *) modes;
- const __DRIswrastExtension *swrast = psc->swrast;
-
- /* Old dri can't handle GLX 1.3+ drawable constructors. */
- if (xDrawable != drawable)
- return NULL;
-
- pdp = Xmalloc(sizeof(*pdp));
- if (!pdp)
- return NULL;
-
- pdraw = &(pdp->base);
- pdraw->xDrawable = xDrawable;
- pdraw->drawable = drawable;
- pdraw->psc = psc;
-
- XCreateDrawable(pdp, psc->dpy, xDrawable, modes->visualID);
-
- /* Create a new drawable */
- pdraw->driDrawable =
- (*swrast->createNewDrawable) (psc->__driScreen, config->driConfig, pdp);
-
- if (!pdraw->driDrawable) {
- XDestroyDrawable(pdp, psc->dpy, xDrawable);
- Xfree(pdp);
- return NULL;
- }
-
- pdraw->destroyDrawable = driDestroyDrawable;
-
- return pdraw;
-}
-
-static void
-driSwapBuffers(__GLXDRIdrawable * pdraw)
-{
- (*pdraw->psc->core->swapBuffers) (pdraw->driDrawable);
-}
-
-static void
-driDestroyScreen(__GLXscreenConfigs * psc)
-{
- /* Free the direct rendering per screen data */
- (*psc->core->destroyScreen) (psc->__driScreen);
- psc->__driScreen = NULL;
- if (psc->driver)
- dlclose(psc->driver);
-}
-
-static __GLXDRIscreen *
-driCreateScreen(__GLXscreenConfigs * psc, int screen,
- __GLXdisplayPrivate * priv)
-{
- __GLXDRIscreen *psp;
- const __DRIconfig **driver_configs;
- const __DRIextension **extensions;
- const char *driverName = "swrast";
- int i;
-
- psp = Xcalloc(1, sizeof *psp);
- if (psp == NULL)
- return NULL;
-
- /* Initialize per screen dynamic client GLX extensions */
- psc->ext_list_first_time = GL_TRUE;
-
- psc->driver = driOpenDriver(driverName);
- if (psc->driver == NULL)
- goto handle_error;
-
- extensions = dlsym(psc->driver, __DRI_DRIVER_EXTENSIONS);
- if (extensions == NULL) {
- ErrorMessageF("driver exports no extensions (%s)\n", dlerror());
- goto handle_error;
- }
-
- for (i = 0; extensions[i]; i++) {
- if (strcmp(extensions[i]->name, __DRI_CORE) == 0)
- psc->core = (__DRIcoreExtension *) extensions[i];
- if (strcmp(extensions[i]->name, __DRI_SWRAST) == 0)
- psc->swrast = (__DRIswrastExtension *) extensions[i];
- }
-
- if (psc->core == NULL || psc->swrast == NULL) {
- ErrorMessageF("core dri extension not found\n");
- goto handle_error;
- }
-
- psc->__driScreen =
- psc->swrast->createNewScreen(screen,
- loader_extensions, &driver_configs, psc);
- if (psc->__driScreen == NULL) {
- ErrorMessageF("failed to create dri screen\n");
- goto handle_error;
- }
-
- driBindExtensions(psc);
- driBindCommonExtensions(psc);
-
- psc->configs = driConvertConfigs(psc->core, psc->configs, driver_configs);
- psc->visuals = driConvertConfigs(psc->core, psc->visuals, driver_configs);
-
- psc->driver_configs = driver_configs;
-
- psp->destroyScreen = driDestroyScreen;
- psp->createContext = driCreateContext;
- psp->createDrawable = driCreateDrawable;
- psp->swapBuffers = driSwapBuffers;
- psp->waitX = NULL;
- psp->waitGL = NULL;
-
- return psp;
-
- handle_error:
- Xfree(psp);
-
- if (psc->driver)
- dlclose(psc->driver);
-
- ErrorMessageF("reverting to indirect rendering\n");
-
- return NULL;
-}
-
-/* Called from __glXFreeDisplayPrivate.
- */
-static void
-driDestroyDisplay(__GLXDRIdisplay * dpy)
-{
- Xfree(dpy);
-}
-
-/*
- * Allocate, initialize and return a __DRIdisplayPrivate object.
- * This is called from __glXInitialize() when we are given a new
- * display pointer.
- */
-_X_HIDDEN __GLXDRIdisplay *
-driswCreateDisplay(Display * dpy)
-{
- __GLXDRIdisplayPrivate *pdpyp;
-
- pdpyp = Xmalloc(sizeof *pdpyp);
- if (pdpyp == NULL)
- return NULL;
-
- pdpyp->base.destroyDisplay = driDestroyDisplay;
- pdpyp->base.createScreen = driCreateScreen;
-
- return &pdpyp->base;
-}
-
-#endif /* GLX_DIRECT_RENDERING */
diff --git a/src/glx/x11/eval.c b/src/glx/x11/eval.c
deleted file mode 100644
index 226fb7df2e8..00000000000
--- a/src/glx/x11/eval.c
+++ /dev/null
@@ -1,132 +0,0 @@
-/*
- * SGI FREE SOFTWARE LICENSE B (Version 2.0, Sept. 18, 2008)
- * Copyright (C) 1991-2000 Silicon Graphics, Inc. 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"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice including the dates of first publication and
- * either this permission notice or a reference to
- * http://oss.sgi.com/projects/FreeB/
- * shall be included in all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * SILICON GRAPHICS, INC. BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
- * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
- * OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- *
- * Except as contained in this notice, the name of Silicon Graphics, Inc.
- * shall not be used in advertising or otherwise to promote the sale, use or
- * other dealings in this Software without prior written authorization from
- * Silicon Graphics, Inc.
- */
-
-#include "packrender.h"
-
-/*
-** Routines to pack evaluator maps into the transport buffer. Maps are
-** allowed to have extra arbitrary data, so these routines extract just
-** the information that the GL needs.
-*/
-
-void
-__glFillMap1f(GLint k, GLint order, GLint stride,
- const GLfloat * points, GLubyte * pc)
-{
- if (stride == k) {
- /* Just copy the data */
- __GLX_PUT_FLOAT_ARRAY(0, points, order * k);
- }
- else {
- GLint i;
-
- for (i = 0; i < order; i++) {
- __GLX_PUT_FLOAT_ARRAY(0, points, k);
- points += stride;
- pc += k * __GLX_SIZE_FLOAT32;
- }
- }
-}
-
-void
-__glFillMap1d(GLint k, GLint order, GLint stride,
- const GLdouble * points, GLubyte * pc)
-{
- if (stride == k) {
- /* Just copy the data */
- __GLX_PUT_DOUBLE_ARRAY(0, points, order * k);
- }
- else {
- GLint i;
- for (i = 0; i < order; i++) {
- __GLX_PUT_DOUBLE_ARRAY(0, points, k);
- points += stride;
- pc += k * __GLX_SIZE_FLOAT64;
- }
- }
-}
-
-void
-__glFillMap2f(GLint k, GLint majorOrder, GLint minorOrder,
- GLint majorStride, GLint minorStride,
- const GLfloat * points, GLfloat * data)
-{
- GLint i, j, x;
-
- if ((minorStride == k) && (majorStride == minorOrder * k)) {
- /* Just copy the data */
- __GLX_MEM_COPY(data, points, majorOrder * majorStride *
- __GLX_SIZE_FLOAT32);
- return;
- }
- for (i = 0; i < majorOrder; i++) {
- for (j = 0; j < minorOrder; j++) {
- for (x = 0; x < k; x++) {
- data[x] = points[x];
- }
- points += minorStride;
- data += k;
- }
- points += majorStride - minorStride * minorOrder;
- }
-}
-
-void
-__glFillMap2d(GLint k, GLint majorOrder, GLint minorOrder,
- GLint majorStride, GLint minorStride,
- const GLdouble * points, GLdouble * data)
-{
- int i, j, x;
-
- if ((minorStride == k) && (majorStride == minorOrder * k)) {
- /* Just copy the data */
- __GLX_MEM_COPY(data, points, majorOrder * majorStride *
- __GLX_SIZE_FLOAT64);
- return;
- }
-
-#ifdef __GLX_ALIGN64
- x = k * __GLX_SIZE_FLOAT64;
-#endif
- for (i = 0; i < majorOrder; i++) {
- for (j = 0; j < minorOrder; j++) {
-#ifdef __GLX_ALIGN64
- __GLX_MEM_COPY(data, points, x);
-#else
- for (x = 0; x < k; x++) {
- data[x] = points[x];
- }
-#endif
- points += minorStride;
- data += k;
- }
- points += majorStride - minorStride * minorOrder;
- }
-}
diff --git a/src/glx/x11/glcontextmodes.c b/src/glx/x11/glcontextmodes.c
deleted file mode 100644
index 232031c2ca8..00000000000
--- a/src/glx/x11/glcontextmodes.c
+++ /dev/null
@@ -1,544 +0,0 @@
-/*
- * (C) Copyright IBM Corporation 2003
- * 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"),
- * to deal in the Software without restriction, including without limitation
- * on the rights to use, copy, modify, merge, publish, distribute, sub
- * license, and/or sell copies of the Software, and to permit persons to whom
- * the Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice (including the next
- * paragraph) shall be included in all copies or substantial portions of the
- * Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL
- * VA LINUX SYSTEM, IBM AND/OR THEIR SUPPLIERS BE LIABLE FOR ANY CLAIM,
- * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
- * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
- * USE OR OTHER DEALINGS IN THE SOFTWARE.
- */
-
-/**
- * \file glcontextmodes.c
- * Utility routines for working with \c __GLcontextModes structures. At
- * some point most or all of these functions will be moved to the Mesa
- * code base.
- *
- * \author Ian Romanick <[email protected]>
- */
-
-#if defined(IN_MINI_GLX)
-#include <GL/gl.h>
-#else
-#if defined(HAVE_DIX_CONFIG_H)
-# include <dix-config.h>
-#endif
-#include <X11/X.h>
-#include <GL/glx.h>
-#include "GL/glxint.h"
-#endif
-
-/* Memory macros */
-#if defined(IN_MINI_GLX)
-# include <stdlib.h>
-# include <string.h>
-# define _mesa_malloc(b) malloc(b)
-# define _mesa_free(m) free(m)
-# define _mesa_memset memset
-#else
-# ifdef XFree86Server
-# include <os.h>
-# include <string.h>
-# define _mesa_malloc(b) xalloc(b)
-# define _mesa_free(m) xfree(m)
-# define _mesa_memset memset
-# else
-# include <X11/Xlibint.h>
-# define _mesa_memset memset
-# define _mesa_malloc(b) Xmalloc(b)
-# define _mesa_free(m) Xfree(m)
-# endif /* XFree86Server */
-#endif /* !defined(IN_MINI_GLX) */
-
-#include "glcontextmodes.h"
-
-#if !defined(IN_MINI_GLX)
-#define NUM_VISUAL_TYPES 6
-
-/**
- * Convert an X visual type to a GLX visual type.
- *
- * \param visualType X visual type (i.e., \c TrueColor, \c StaticGray, etc.)
- * to be converted.
- * \return If \c visualType is a valid X visual type, a GLX visual type will
- * be returned. Otherwise \c GLX_NONE will be returned.
- */
-GLint
-_gl_convert_from_x_visual_type(int visualType)
-{
- static const int glx_visual_types[NUM_VISUAL_TYPES] = {
- GLX_STATIC_GRAY, GLX_GRAY_SCALE,
- GLX_STATIC_COLOR, GLX_PSEUDO_COLOR,
- GLX_TRUE_COLOR, GLX_DIRECT_COLOR
- };
-
- return ((unsigned) visualType < NUM_VISUAL_TYPES)
- ? glx_visual_types[visualType] : GLX_NONE;
-}
-
-
-/**
- * Convert a GLX visual type to an X visual type.
- *
- * \param visualType GLX visual type (i.e., \c GLX_TRUE_COLOR,
- * \c GLX_STATIC_GRAY, etc.) to be converted.
- * \return If \c visualType is a valid GLX visual type, an X visual type will
- * be returned. Otherwise -1 will be returned.
- */
-GLint
-_gl_convert_to_x_visual_type(int visualType)
-{
- static const int x_visual_types[NUM_VISUAL_TYPES] = {
- TrueColor, DirectColor,
- PseudoColor, StaticColor,
- GrayScale, StaticGray
- };
-
- return ((unsigned) (visualType - GLX_TRUE_COLOR) < NUM_VISUAL_TYPES)
- ? x_visual_types[visualType - GLX_TRUE_COLOR] : -1;
-}
-
-
-/**
- * Copy a GLX visual config structure to a GL context mode structure. All
- * of the fields in \c config are copied to \c mode. Additional fields in
- * \c mode that can be derrived from the fields of \c config (i.e.,
- * \c haveDepthBuffer) are also filled in. The remaining fields in \c mode
- * that cannot be derived are set to default values.
- *
- * \param mode Destination GL context mode.
- * \param config Source GLX visual config.
- *
- * \note
- * The \c fbconfigID and \c visualID fields of the \c __GLcontextModes
- * structure will be set to the \c vid of the \c __GLXvisualConfig structure.
- */
-void
-_gl_copy_visual_to_context_mode(__GLcontextModes * mode,
- const __GLXvisualConfig * config)
-{
- __GLcontextModes *const next = mode->next;
-
- (void) _mesa_memset(mode, 0, sizeof(__GLcontextModes));
- mode->next = next;
-
- mode->visualID = config->vid;
- mode->visualType = _gl_convert_from_x_visual_type(config->class);
- mode->xRenderable = GL_TRUE;
- mode->fbconfigID = config->vid;
- mode->drawableType = GLX_WINDOW_BIT | GLX_PIXMAP_BIT;
-
- mode->rgbMode = (config->rgba != 0);
- mode->renderType = (mode->rgbMode) ? GLX_RGBA_BIT : GLX_COLOR_INDEX_BIT;
-
- mode->colorIndexMode = !(mode->rgbMode);
- mode->doubleBufferMode = (config->doubleBuffer != 0);
- mode->stereoMode = (config->stereo != 0);
-
- mode->haveAccumBuffer = ((config->accumRedSize +
- config->accumGreenSize +
- config->accumBlueSize +
- config->accumAlphaSize) > 0);
- mode->haveDepthBuffer = (config->depthSize > 0);
- mode->haveStencilBuffer = (config->stencilSize > 0);
-
- mode->redBits = config->redSize;
- mode->greenBits = config->greenSize;
- mode->blueBits = config->blueSize;
- mode->alphaBits = config->alphaSize;
- mode->redMask = config->redMask;
- mode->greenMask = config->greenMask;
- mode->blueMask = config->blueMask;
- mode->alphaMask = config->alphaMask;
- mode->rgbBits = mode->rgbMode ? config->bufferSize : 0;
- mode->indexBits = mode->colorIndexMode ? config->bufferSize : 0;
-
- mode->accumRedBits = config->accumRedSize;
- mode->accumGreenBits = config->accumGreenSize;
- mode->accumBlueBits = config->accumBlueSize;
- mode->accumAlphaBits = config->accumAlphaSize;
- mode->depthBits = config->depthSize;
- mode->stencilBits = config->stencilSize;
-
- mode->numAuxBuffers = config->auxBuffers;
- mode->level = config->level;
-
- mode->visualRating = config->visualRating;
- mode->transparentPixel = config->transparentPixel;
- mode->transparentRed = config->transparentRed;
- mode->transparentGreen = config->transparentGreen;
- mode->transparentBlue = config->transparentBlue;
- mode->transparentAlpha = config->transparentAlpha;
- mode->transparentIndex = config->transparentIndex;
- mode->samples = config->multiSampleSize;
- mode->sampleBuffers = config->nMultiSampleBuffers;
- /* mode->visualSelectGroup = config->visualSelectGroup; ? */
-
- mode->swapMethod = GLX_SWAP_UNDEFINED_OML;
-
- mode->bindToTextureRgb = (mode->rgbMode) ? GL_TRUE : GL_FALSE;
- mode->bindToTextureRgba = (mode->rgbMode && mode->alphaBits) ?
- GL_TRUE : GL_FALSE;
- mode->bindToMipmapTexture = mode->rgbMode ? GL_TRUE : GL_FALSE;
- mode->bindToTextureTargets = mode->rgbMode ?
- GLX_TEXTURE_1D_BIT_EXT | GLX_TEXTURE_2D_BIT_EXT |
- GLX_TEXTURE_RECTANGLE_BIT_EXT : 0;
- mode->yInverted = GL_FALSE;
-}
-
-
-/**
- * Get data from a GL context mode.
- *
- * \param mode GL context mode whose data is to be returned.
- * \param attribute Attribute of \c mode that is to be returned.
- * \param value_return Location to store the data member of \c mode.
- * \return If \c attribute is a valid attribute of \c mode, zero is
- * returned. Otherwise \c GLX_BAD_ATTRIBUTE is returned.
- */
-int
-_gl_get_context_mode_data(const __GLcontextModes * mode, int attribute,
- int *value_return)
-{
- switch (attribute) {
- case GLX_USE_GL:
- *value_return = GL_TRUE;
- return 0;
- case GLX_BUFFER_SIZE:
- *value_return = mode->rgbBits;
- return 0;
- case GLX_RGBA:
- *value_return = mode->rgbMode;
- return 0;
- case GLX_RED_SIZE:
- *value_return = mode->redBits;
- return 0;
- case GLX_GREEN_SIZE:
- *value_return = mode->greenBits;
- return 0;
- case GLX_BLUE_SIZE:
- *value_return = mode->blueBits;
- return 0;
- case GLX_ALPHA_SIZE:
- *value_return = mode->alphaBits;
- return 0;
- case GLX_DOUBLEBUFFER:
- *value_return = mode->doubleBufferMode;
- return 0;
- case GLX_STEREO:
- *value_return = mode->stereoMode;
- return 0;
- case GLX_AUX_BUFFERS:
- *value_return = mode->numAuxBuffers;
- return 0;
- case GLX_DEPTH_SIZE:
- *value_return = mode->depthBits;
- return 0;
- case GLX_STENCIL_SIZE:
- *value_return = mode->stencilBits;
- return 0;
- case GLX_ACCUM_RED_SIZE:
- *value_return = mode->accumRedBits;
- return 0;
- case GLX_ACCUM_GREEN_SIZE:
- *value_return = mode->accumGreenBits;
- return 0;
- case GLX_ACCUM_BLUE_SIZE:
- *value_return = mode->accumBlueBits;
- return 0;
- case GLX_ACCUM_ALPHA_SIZE:
- *value_return = mode->accumAlphaBits;
- return 0;
- case GLX_LEVEL:
- *value_return = mode->level;
- return 0;
- case GLX_TRANSPARENT_TYPE_EXT:
- *value_return = mode->transparentPixel;
- return 0;
- case GLX_TRANSPARENT_RED_VALUE:
- *value_return = mode->transparentRed;
- return 0;
- case GLX_TRANSPARENT_GREEN_VALUE:
- *value_return = mode->transparentGreen;
- return 0;
- case GLX_TRANSPARENT_BLUE_VALUE:
- *value_return = mode->transparentBlue;
- return 0;
- case GLX_TRANSPARENT_ALPHA_VALUE:
- *value_return = mode->transparentAlpha;
- return 0;
- case GLX_TRANSPARENT_INDEX_VALUE:
- *value_return = mode->transparentIndex;
- return 0;
- case GLX_X_VISUAL_TYPE:
- *value_return = mode->visualType;
- return 0;
- case GLX_CONFIG_CAVEAT:
- *value_return = mode->visualRating;
- return 0;
- case GLX_VISUAL_ID:
- *value_return = mode->visualID;
- return 0;
- case GLX_DRAWABLE_TYPE:
- *value_return = mode->drawableType;
- return 0;
- case GLX_RENDER_TYPE:
- *value_return = mode->renderType;
- return 0;
- case GLX_X_RENDERABLE:
- *value_return = mode->xRenderable;
- return 0;
- case GLX_FBCONFIG_ID:
- *value_return = mode->fbconfigID;
- return 0;
- case GLX_MAX_PBUFFER_WIDTH:
- *value_return = mode->maxPbufferWidth;
- return 0;
- case GLX_MAX_PBUFFER_HEIGHT:
- *value_return = mode->maxPbufferHeight;
- return 0;
- case GLX_MAX_PBUFFER_PIXELS:
- *value_return = mode->maxPbufferPixels;
- return 0;
- case GLX_OPTIMAL_PBUFFER_WIDTH_SGIX:
- *value_return = mode->optimalPbufferWidth;
- return 0;
- case GLX_OPTIMAL_PBUFFER_HEIGHT_SGIX:
- *value_return = mode->optimalPbufferHeight;
- return 0;
- case GLX_SWAP_METHOD_OML:
- *value_return = mode->swapMethod;
- return 0;
- case GLX_SAMPLE_BUFFERS_SGIS:
- *value_return = mode->sampleBuffers;
- return 0;
- case GLX_SAMPLES_SGIS:
- *value_return = mode->samples;
- return 0;
- case GLX_BIND_TO_TEXTURE_RGB_EXT:
- *value_return = mode->bindToTextureRgb;
- return 0;
- case GLX_BIND_TO_TEXTURE_RGBA_EXT:
- *value_return = mode->bindToTextureRgba;
- return 0;
- case GLX_BIND_TO_MIPMAP_TEXTURE_EXT:
- *value_return = mode->bindToMipmapTexture == GL_TRUE ? GL_TRUE :
- GL_FALSE;
- return 0;
- case GLX_BIND_TO_TEXTURE_TARGETS_EXT:
- *value_return = mode->bindToTextureTargets;
- return 0;
- case GLX_Y_INVERTED_EXT:
- *value_return = mode->yInverted;
- return 0;
-
- /* Applications are NOT allowed to query GLX_VISUAL_SELECT_GROUP_SGIX.
- * It is ONLY for communication between the GLX client and the GLX
- * server.
- */
- case GLX_VISUAL_SELECT_GROUP_SGIX:
- default:
- return GLX_BAD_ATTRIBUTE;
- }
-}
-#endif /* !defined(IN_MINI_GLX) */
-
-
-/**
- * Allocate a linked list of \c __GLcontextModes structures. The fields of
- * each structure will be initialized to "reasonable" default values. In
- * most cases this is the default value defined by table 3.4 of the GLX
- * 1.3 specification. This means that most values are either initialized to
- * zero or \c GLX_DONT_CARE (which is -1). As support for additional
- * extensions is added, the new values will be initialized to appropriate
- * values from the extension specification.
- *
- * \param count Number of structures to allocate.
- * \param minimum_size Minimum size of a structure to allocate. This allows
- * for differences in the version of the
- * \c __GLcontextModes stucture used in libGL and in a
- * DRI-based driver.
- * \returns A pointer to the first element in a linked list of \c count
- * stuctures on success, or \c NULL on failure.
- *
- * \warning Use of \c minimum_size does \b not guarantee binary compatibility.
- * The fundamental assumption is that if the \c minimum_size
- * specified by the driver and the size of the \c __GLcontextModes
- * structure in libGL is the same, then the meaning of each byte in
- * the structure is the same in both places. \b Be \b careful!
- * Basically this means that fields have to be added in libGL and
- * then propagated to drivers. Drivers should \b never arbitrarilly
- * extend the \c __GLcontextModes data-structure.
- */
-__GLcontextModes *
-_gl_context_modes_create(unsigned count, size_t minimum_size)
-{
- const size_t size = (minimum_size > sizeof(__GLcontextModes))
- ? minimum_size : sizeof(__GLcontextModes);
- __GLcontextModes *base = NULL;
- __GLcontextModes **next;
- unsigned i;
-
- next = &base;
- for (i = 0; i < count; i++) {
- *next = (__GLcontextModes *) _mesa_malloc(size);
- if (*next == NULL) {
- _gl_context_modes_destroy(base);
- base = NULL;
- break;
- }
-
- (void) _mesa_memset(*next, 0, size);
- (*next)->visualID = GLX_DONT_CARE;
- (*next)->visualType = GLX_DONT_CARE;
- (*next)->visualRating = GLX_NONE;
- (*next)->transparentPixel = GLX_NONE;
- (*next)->transparentRed = GLX_DONT_CARE;
- (*next)->transparentGreen = GLX_DONT_CARE;
- (*next)->transparentBlue = GLX_DONT_CARE;
- (*next)->transparentAlpha = GLX_DONT_CARE;
- (*next)->transparentIndex = GLX_DONT_CARE;
- (*next)->xRenderable = GLX_DONT_CARE;
- (*next)->fbconfigID = GLX_DONT_CARE;
- (*next)->swapMethod = GLX_SWAP_UNDEFINED_OML;
- (*next)->bindToTextureRgb = GLX_DONT_CARE;
- (*next)->bindToTextureRgba = GLX_DONT_CARE;
- (*next)->bindToMipmapTexture = GLX_DONT_CARE;
- (*next)->bindToTextureTargets = GLX_DONT_CARE;
- (*next)->yInverted = GLX_DONT_CARE;
-
- next = &((*next)->next);
- }
-
- return base;
-}
-
-
-/**
- * Destroy a linked list of \c __GLcontextModes structures created by
- * \c _gl_context_modes_create.
- *
- * \param modes Linked list of structures to be destroyed. All structres
- * in the list will be freed.
- */
-void
-_gl_context_modes_destroy(__GLcontextModes * modes)
-{
- while (modes != NULL) {
- __GLcontextModes *const next = modes->next;
-
- _mesa_free(modes);
- modes = next;
- }
-}
-
-
-/**
- * Find a context mode matching a Visual ID.
- *
- * \param modes List list of context-mode structures to be searched.
- * \param vid Visual ID to be found.
- * \returns A pointer to a context-mode in \c modes if \c vid was found in
- * the list, or \c NULL if it was not.
- */
-
-__GLcontextModes *
-_gl_context_modes_find_visual(__GLcontextModes * modes, int vid)
-{
- __GLcontextModes *m;
-
- for (m = modes; m != NULL; m = m->next)
- if (m->visualID == vid)
- return m;
-
- return NULL;
-}
-
-__GLcontextModes *
-_gl_context_modes_find_fbconfig(__GLcontextModes * modes, int fbid)
-{
- __GLcontextModes *m;
-
- for (m = modes; m != NULL; m = m->next)
- if (m->fbconfigID == fbid)
- return m;
-
- return NULL;
-}
-
-/**
- * Determine if two context-modes are the same. This is intended to be used
- * by libGL implementations to compare to sets of driver generated FBconfigs.
- *
- * \param a Context-mode to be compared.
- * \param b Context-mode to be compared.
- * \returns \c GL_TRUE if the two context-modes are the same. \c GL_FALSE is
- * returned otherwise.
- */
-GLboolean
-_gl_context_modes_are_same(const __GLcontextModes * a,
- const __GLcontextModes * b)
-{
- return ((a->rgbMode == b->rgbMode) &&
- (a->floatMode == b->floatMode) &&
- (a->colorIndexMode == b->colorIndexMode) &&
- (a->doubleBufferMode == b->doubleBufferMode) &&
- (a->stereoMode == b->stereoMode) &&
- (a->redBits == b->redBits) &&
- (a->greenBits == b->greenBits) &&
- (a->blueBits == b->blueBits) && (a->alphaBits == b->alphaBits) &&
-#if 0 /* For some reason these don't get set on the client-side in libGL. */
- (a->redMask == b->redMask) &&
- (a->greenMask == b->greenMask) &&
- (a->blueMask == b->blueMask) && (a->alphaMask == b->alphaMask) &&
-#endif
- (a->rgbBits == b->rgbBits) &&
- (a->indexBits == b->indexBits) &&
- (a->accumRedBits == b->accumRedBits) &&
- (a->accumGreenBits == b->accumGreenBits) &&
- (a->accumBlueBits == b->accumBlueBits) &&
- (a->accumAlphaBits == b->accumAlphaBits) &&
- (a->depthBits == b->depthBits) &&
- (a->stencilBits == b->stencilBits) &&
- (a->numAuxBuffers == b->numAuxBuffers) &&
- (a->level == b->level) &&
- (a->pixmapMode == b->pixmapMode) &&
- (a->visualRating == b->visualRating) &&
- (a->transparentPixel == b->transparentPixel) &&
- ((a->transparentPixel != GLX_TRANSPARENT_RGB) ||
- ((a->transparentRed == b->transparentRed) &&
- (a->transparentGreen == b->transparentGreen) &&
- (a->transparentBlue == b->transparentBlue) &&
- (a->transparentAlpha == b->transparentAlpha))) &&
- ((a->transparentPixel != GLX_TRANSPARENT_INDEX) ||
- (a->transparentIndex == b->transparentIndex)) &&
- (a->sampleBuffers == b->sampleBuffers) &&
- (a->samples == b->samples) &&
- ((a->drawableType & b->drawableType) != 0) &&
- (a->renderType == b->renderType) &&
- (a->maxPbufferWidth == b->maxPbufferWidth) &&
- (a->maxPbufferHeight == b->maxPbufferHeight) &&
- (a->maxPbufferPixels == b->maxPbufferPixels) &&
- (a->optimalPbufferWidth == b->optimalPbufferWidth) &&
- (a->optimalPbufferHeight == b->optimalPbufferHeight) &&
- (a->swapMethod == b->swapMethod) &&
- (a->bindToTextureRgb == b->bindToTextureRgb) &&
- (a->bindToTextureRgba == b->bindToTextureRgba) &&
- (a->bindToMipmapTexture == b->bindToMipmapTexture) &&
- (a->bindToTextureTargets == b->bindToTextureTargets) &&
- (a->yInverted == b->yInverted));
-}
diff --git a/src/glx/x11/glcontextmodes.h b/src/glx/x11/glcontextmodes.h
deleted file mode 100644
index 6676ae306c2..00000000000
--- a/src/glx/x11/glcontextmodes.h
+++ /dev/null
@@ -1,54 +0,0 @@
-/*
- * (C) Copyright IBM Corporation 2003
- * 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"),
- * to deal in the Software without restriction, including without limitation
- * on the rights to use, copy, modify, merge, publish, distribute, sub
- * license, and/or sell copies of the Software, and to permit persons to whom
- * the Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice (including the next
- * paragraph) shall be included in all copies or substantial portions of the
- * Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL
- * VA LINUX SYSTEM, IBM AND/OR THEIR SUPPLIERS BE LIABLE FOR ANY CLAIM,
- * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
- * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
- * USE OR OTHER DEALINGS IN THE SOFTWARE.
- */
-
-/**
- * \file glcontextmodes.h
- * \author Ian Romanick <[email protected]>
- */
-
-#ifndef GLCONTEXTMODES_H
-#define GLCONTEXTMODES_H
-
-#include "GL/internal/glcore.h"
-
-#if !defined(IN_MINI_GLX)
-extern GLint _gl_convert_from_x_visual_type(int visualType);
-extern GLint _gl_convert_to_x_visual_type(int visualType);
-extern void _gl_copy_visual_to_context_mode(__GLcontextModes * mode,
- const __GLXvisualConfig * config);
-extern int _gl_get_context_mode_data(const __GLcontextModes * mode,
- int attribute, int *value_return);
-#endif /* !defined(IN_MINI_GLX) */
-
-extern __GLcontextModes *_gl_context_modes_create(unsigned count,
- size_t minimum_size);
-extern void _gl_context_modes_destroy(__GLcontextModes * modes);
-extern __GLcontextModes *_gl_context_modes_find_visual(__GLcontextModes *
- modes, int vid);
-extern __GLcontextModes *_gl_context_modes_find_fbconfig(__GLcontextModes *
- modes, int fbid);
-extern GLboolean _gl_context_modes_are_same(const __GLcontextModes * a,
- const __GLcontextModes * b);
-
-#endif /* GLCONTEXTMODES_H */
diff --git a/src/glx/x11/glx_pbuffer.c b/src/glx/x11/glx_pbuffer.c
deleted file mode 100644
index a0a02238b00..00000000000
--- a/src/glx/x11/glx_pbuffer.c
+++ /dev/null
@@ -1,724 +0,0 @@
-/*
- * (C) Copyright IBM Corporation 2004
- * 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"),
- * to deal in the Software without restriction, including without limitation
- * on the rights to use, copy, modify, merge, publish, distribute, sub
- * license, and/or sell copies of the Software, and to permit persons to whom
- * the Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice (including the next
- * paragraph) shall be included in all copies or substantial portions of the
- * Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL
- * IBM AND/OR THEIR SUPPLIERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
- * DEALINGS IN THE SOFTWARE.
- */
-
-/**
- * \file glx_pbuffer.c
- * Implementation of pbuffer related functions.
- *
- * \author Ian Romanick <[email protected]>
- */
-
-#include <inttypes.h>
-#include "glxclient.h"
-#include <X11/extensions/extutil.h>
-#include <X11/extensions/Xext.h>
-#include <assert.h>
-#include <string.h>
-#include "glxextensions.h"
-
-#define WARN_ONCE_GLX_1_3(a, b) { \
- static int warned=1; \
- if(warned) { \
- warn_GLX_1_3((a), b ); \
- warned=0; \
- } \
- }
-
-/**
- * Emit a warning when clients use GLX 1.3 functions on pre-1.3 systems.
- */
-static void
-warn_GLX_1_3(Display *dpy, const char *function_name)
-{
- __GLXdisplayPrivate *priv = __glXInitialize(dpy);
-
- if (priv->minorVersion < 3) {
- fprintf(stderr,
- "WARNING: Application calling GLX 1.3 function \"%s\" "
- "when GLX 1.3 is not supported! This is an application bug!\n",
- function_name);
- }
-}
-
-
-/**
- * Change a drawable's attribute.
- *
- * This function is used to implement \c glXSelectEvent and
- * \c glXSelectEventSGIX.
- *
- * \note
- * This function dynamically determines whether to use the SGIX_pbuffer
- * version of the protocol or the GLX 1.3 version of the protocol.
- *
- * \todo
- * This function needs to be modified to work with direct-rendering drivers.
- */
-static void
-ChangeDrawableAttribute(Display * dpy, GLXDrawable drawable,
- const CARD32 * attribs, size_t num_attribs)
-{
- __GLXdisplayPrivate *priv = __glXInitialize(dpy);
- CARD32 *output;
- CARD8 opcode;
-
- if ((dpy == NULL) || (drawable == 0)) {
- return;
- }
-
- opcode = __glXSetupForCommand(dpy);
- if (!opcode)
- return;
-
- LockDisplay(dpy);
-
- if ((priv->majorVersion > 1) || (priv->minorVersion >= 3)) {
- xGLXChangeDrawableAttributesReq *req;
-
- GetReqExtra(GLXChangeDrawableAttributes, 8 + (8 * num_attribs), req);
- output = (CARD32 *) (req + 1);
-
- req->reqType = opcode;
- req->glxCode = X_GLXChangeDrawableAttributes;
- req->drawable = drawable;
- req->numAttribs = (CARD32) num_attribs;
- }
- else {
- xGLXVendorPrivateWithReplyReq *vpreq;
-
- GetReqExtra(GLXVendorPrivateWithReply, 4 + (8 * num_attribs), vpreq);
- output = (CARD32 *) (vpreq + 1);
-
- vpreq->reqType = opcode;
- vpreq->glxCode = X_GLXVendorPrivateWithReply;
- vpreq->vendorCode = X_GLXvop_ChangeDrawableAttributesSGIX;
-
- output[0] = (CARD32) drawable;
- output++;
- }
-
- (void) memcpy(output, attribs, sizeof(CARD32) * 2 * num_attribs);
-
- UnlockDisplay(dpy);
- SyncHandle();
-
- return;
-}
-
-
-/**
- * Destroy a pbuffer.
- *
- * This function is used to implement \c glXDestroyPbuffer and
- * \c glXDestroyGLXPbufferSGIX.
- *
- * \note
- * This function dynamically determines whether to use the SGIX_pbuffer
- * version of the protocol or the GLX 1.3 version of the protocol.
- *
- * \todo
- * This function needs to be modified to work with direct-rendering drivers.
- */
-static void
-DestroyPbuffer(Display * dpy, GLXDrawable drawable)
-{
- __GLXdisplayPrivate *priv = __glXInitialize(dpy);
- CARD8 opcode;
-
- if ((dpy == NULL) || (drawable == 0)) {
- return;
- }
-
- opcode = __glXSetupForCommand(dpy);
- if (!opcode)
- return;
-
- LockDisplay(dpy);
-
- if ((priv->majorVersion > 1) || (priv->minorVersion >= 3)) {
- xGLXDestroyPbufferReq *req;
-
- GetReq(GLXDestroyPbuffer, req);
- req->reqType = opcode;
- req->glxCode = X_GLXDestroyPbuffer;
- req->pbuffer = (GLXPbuffer) drawable;
- }
- else {
- xGLXVendorPrivateWithReplyReq *vpreq;
- CARD32 *data;
-
- GetReqExtra(GLXVendorPrivateWithReply, 4, vpreq);
- data = (CARD32 *) (vpreq + 1);
-
- data[0] = (CARD32) drawable;
-
- vpreq->reqType = opcode;
- vpreq->glxCode = X_GLXVendorPrivateWithReply;
- vpreq->vendorCode = X_GLXvop_DestroyGLXPbufferSGIX;
- }
-
- UnlockDisplay(dpy);
- SyncHandle();
-
- return;
-}
-
-
-#ifdef GLX_DIRECT_RENDERING
-extern __GLXDRIdrawable *GetGLXDRIDrawable(Display * dpy,
- GLXDrawable drawable,
- int *const scrn_num);
-
-static GLenum
-determineTextureTarget(const int *attribs, int numAttribs)
-{
- GLenum target = 0;
- int i;
-
- for (i = 0; i < numAttribs; i++) {
- if (attribs[2 * i] == GLX_TEXTURE_TARGET_EXT) {
- switch (attribs[2 * i + 1]) {
- case GLX_TEXTURE_2D_EXT:
- target = GL_TEXTURE_2D;
- break;
- case GLX_TEXTURE_RECTANGLE_EXT:
- target = GL_TEXTURE_RECTANGLE_ARB;
- break;
- }
- }
- }
-
- return target;
-}
-
-
-static GLenum
-determineTextureFormat(const int *attribs, int numAttribs)
-{
- int i;
-
- for (i = 0; i < numAttribs; i++) {
- if (attribs[2 * i] == GLX_TEXTURE_FORMAT_EXT)
- return attribs[2 * i + 1];
- }
-
- return 0;
-}
-#endif
-
-/**
- * Get a drawable's attribute.
- *
- * This function is used to implement \c glXGetSelectedEvent and
- * \c glXGetSelectedEventSGIX.
- *
- * \note
- * This function dynamically determines whether to use the SGIX_pbuffer
- * version of the protocol or the GLX 1.3 version of the protocol.
- *
- * \todo
- * The number of attributes returned is likely to be small, probably less than
- * 10. Given that, this routine should try to use an array on the stack to
- * capture the reply rather than always calling Xmalloc.
- *
- * \todo
- * This function needs to be modified to work with direct-rendering drivers.
- */
-static int
-GetDrawableAttribute(Display * dpy, GLXDrawable drawable,
- int attribute, unsigned int *value)
-{
- __GLXdisplayPrivate *priv;
- xGLXGetDrawableAttributesReply reply;
- CARD32 *data;
- CARD8 opcode;
- unsigned int length;
- unsigned int i;
- unsigned int num_attributes;
- GLboolean use_glx_1_3;
-
- if ((dpy == NULL) || (drawable == 0)) {
- return 0;
- }
-
- priv = __glXInitialize(dpy);
- use_glx_1_3 = ((priv->majorVersion > 1) || (priv->minorVersion >= 3));
-
- *value = 0;
-
-
- opcode = __glXSetupForCommand(dpy);
- if (!opcode)
- return 0;
-
- LockDisplay(dpy);
-
- if (use_glx_1_3) {
- xGLXGetDrawableAttributesReq *req;
-
- GetReqExtra(GLXGetDrawableAttributes, 4, req);
- req->reqType = opcode;
- req->glxCode = X_GLXGetDrawableAttributes;
- req->drawable = drawable;
- }
- else {
- xGLXVendorPrivateWithReplyReq *vpreq;
-
- GetReqExtra(GLXVendorPrivateWithReply, 4, vpreq);
- data = (CARD32 *) (vpreq + 1);
- data[0] = (CARD32) drawable;
-
- vpreq->reqType = opcode;
- vpreq->glxCode = X_GLXVendorPrivateWithReply;
- vpreq->vendorCode = X_GLXvop_GetDrawableAttributesSGIX;
- }
-
- _XReply(dpy, (xReply *) & reply, 0, False);
-
- if (reply.type == X_Error) {
- UnlockDisplay(dpy);
- SyncHandle();
- return 0;
- }
-
- length = reply.length;
- if (length) {
- num_attributes = (use_glx_1_3) ? reply.numAttribs : length / 2;
- data = (CARD32 *) Xmalloc(length * sizeof(CARD32));
- if (data == NULL) {
- /* Throw data on the floor */
- _XEatData(dpy, length);
- }
- else {
- _XRead(dpy, (char *) data, length * sizeof(CARD32));
-
- /* Search the set of returned attributes for the attribute requested by
- * the caller.
- */
- for (i = 0; i < num_attributes; i++) {
- if (data[i * 2] == attribute) {
- *value = data[(i * 2) + 1];
- break;
- }
- }
-
-#ifdef GLX_DIRECT_RENDERING
- {
- __GLXDRIdrawable *pdraw = GetGLXDRIDrawable(dpy, drawable, NULL);
-
- if (pdraw != NULL && !pdraw->textureTarget)
- pdraw->textureTarget =
- determineTextureTarget((const int *) data, num_attributes);
- if (pdraw != NULL && !pdraw->textureFormat)
- pdraw->textureFormat =
- determineTextureFormat((const int *) data, num_attributes);
- }
-#endif
-
- Xfree(data);
- }
- }
-
- UnlockDisplay(dpy);
- SyncHandle();
-
- return 0;
-}
-
-/**
- * Create a non-pbuffer GLX drawable.
- *
- * \todo
- * This function needs to be modified to work with direct-rendering drivers.
- */
-static GLXDrawable
-CreateDrawable(Display * dpy, const __GLcontextModes * fbconfig,
- Drawable drawable, const int *attrib_list, CARD8 glxCode)
-{
- xGLXCreateWindowReq *req;
- CARD32 *data;
- unsigned int i;
- CARD8 opcode;
-
- i = 0;
- if (attrib_list) {
- while (attrib_list[i * 2] != None)
- i++;
- }
-
- opcode = __glXSetupForCommand(dpy);
- if (!opcode)
- return None;
-
- LockDisplay(dpy);
- GetReqExtra(GLXCreateWindow, 8 * i, req);
- data = (CARD32 *) (req + 1);
-
- req->reqType = opcode;
- req->glxCode = glxCode;
- req->screen = (CARD32) fbconfig->screen;
- req->fbconfig = fbconfig->fbconfigID;
- req->window = (CARD32) drawable;
- req->glxwindow = (GLXWindow) XAllocID(dpy);
- req->numAttribs = (CARD32) i;
-
- memcpy(data, attrib_list, 8 * i);
-
- UnlockDisplay(dpy);
- SyncHandle();
-
-#ifdef GLX_DIRECT_RENDERING
- do {
- /* FIXME: Maybe delay __DRIdrawable creation until the drawable
- * is actually bound to a context... */
-
- __GLXdisplayPrivate *const priv = __glXInitialize(dpy);
- __GLXDRIdrawable *pdraw;
- __GLXscreenConfigs *psc;
-
- psc = &priv->screenConfigs[fbconfig->screen];
- if (psc->driScreen == NULL)
- break;
- pdraw = psc->driScreen->createDrawable(psc, drawable,
- req->glxwindow, fbconfig);
- if (pdraw == NULL) {
- fprintf(stderr, "failed to create drawable\n");
- break;
- }
-
- if (__glxHashInsert(psc->drawHash, req->glxwindow, pdraw)) {
- (*pdraw->destroyDrawable) (pdraw);
- return None; /* FIXME: Check what we're supposed to do here... */
- }
-
- pdraw->textureTarget = determineTextureTarget(attrib_list, i);
- pdraw->textureFormat = determineTextureFormat(attrib_list, i);
- } while (0);
-#endif
-
- return (GLXDrawable) req->glxwindow;
-}
-
-
-/**
- * Destroy a non-pbuffer GLX drawable.
- *
- * \todo
- * This function needs to be modified to work with direct-rendering drivers.
- */
-static void
-DestroyDrawable(Display * dpy, GLXDrawable drawable, CARD32 glxCode)
-{
- xGLXDestroyPbufferReq *req;
- CARD8 opcode;
-
- if ((dpy == NULL) || (drawable == 0)) {
- return;
- }
-
-
- opcode = __glXSetupForCommand(dpy);
- if (!opcode)
- return;
-
- LockDisplay(dpy);
-
- GetReqExtra(GLXDestroyPbuffer, 4, req);
- req->reqType = opcode;
- req->glxCode = glxCode;
- req->pbuffer = (GLXPbuffer) drawable;
-
- UnlockDisplay(dpy);
- SyncHandle();
-
-#ifdef GLX_DIRECT_RENDERING
- {
- int screen;
- __GLXdisplayPrivate *const priv = __glXInitialize(dpy);
- __GLXDRIdrawable *pdraw = GetGLXDRIDrawable(dpy, drawable, &screen);
- __GLXscreenConfigs *psc = &priv->screenConfigs[screen];
-
- if (pdraw != NULL) {
- (*pdraw->destroyDrawable) (pdraw);
- __glxHashDelete(psc->drawHash, drawable);
- }
- }
-#endif
-
- return;
-}
-
-
-/**
- * Create a pbuffer.
- *
- * This function is used to implement \c glXCreatePbuffer and
- * \c glXCreateGLXPbufferSGIX.
- *
- * \note
- * This function dynamically determines whether to use the SGIX_pbuffer
- * version of the protocol or the GLX 1.3 version of the protocol.
- *
- * \todo
- * This function needs to be modified to work with direct-rendering drivers.
- */
-static GLXDrawable
-CreatePbuffer(Display * dpy, const __GLcontextModes * fbconfig,
- unsigned int width, unsigned int height,
- const int *attrib_list, GLboolean size_in_attribs)
-{
- __GLXdisplayPrivate *priv = __glXInitialize(dpy);
- GLXDrawable id = 0;
- CARD32 *data;
- CARD8 opcode;
- unsigned int i;
-
- i = 0;
- if (attrib_list) {
- while (attrib_list[i * 2])
- i++;
- }
-
- opcode = __glXSetupForCommand(dpy);
- if (!opcode)
- return None;
-
- LockDisplay(dpy);
- id = XAllocID(dpy);
-
- if ((priv->majorVersion > 1) || (priv->minorVersion >= 3)) {
- xGLXCreatePbufferReq *req;
- unsigned int extra = (size_in_attribs) ? 0 : 2;
-
- GetReqExtra(GLXCreatePbuffer, (8 * (i + extra)), req);
- data = (CARD32 *) (req + 1);
-
- req->reqType = opcode;
- req->glxCode = X_GLXCreatePbuffer;
- req->screen = (CARD32) fbconfig->screen;
- req->fbconfig = fbconfig->fbconfigID;
- req->pbuffer = (GLXPbuffer) id;
- req->numAttribs = (CARD32) (i + extra);
-
- if (!size_in_attribs) {
- data[(2 * i) + 0] = GLX_PBUFFER_WIDTH;
- data[(2 * i) + 1] = width;
- data[(2 * i) + 2] = GLX_PBUFFER_HEIGHT;
- data[(2 * i) + 3] = height;
- data += 4;
- }
- }
- else {
- xGLXVendorPrivateReq *vpreq;
-
- GetReqExtra(GLXVendorPrivate, 20 + (8 * i), vpreq);
- data = (CARD32 *) (vpreq + 1);
-
- vpreq->reqType = opcode;
- vpreq->glxCode = X_GLXVendorPrivate;
- vpreq->vendorCode = X_GLXvop_CreateGLXPbufferSGIX;
-
- data[0] = (CARD32) fbconfig->screen;
- data[1] = (CARD32) fbconfig->fbconfigID;
- data[2] = (CARD32) id;
- data[3] = (CARD32) width;
- data[4] = (CARD32) height;
- data += 5;
- }
-
- (void) memcpy(data, attrib_list, sizeof(CARD32) * 2 * i);
-
- UnlockDisplay(dpy);
- SyncHandle();
-
- return id;
-}
-
-
-/**
- * Create a new pbuffer.
- */
-PUBLIC GLXPbufferSGIX
-glXCreateGLXPbufferSGIX(Display * dpy, GLXFBConfigSGIX config,
- unsigned int width, unsigned int height,
- int *attrib_list)
-{
- return (GLXPbufferSGIX) CreatePbuffer(dpy, (__GLcontextModes *) config,
- width, height,
- attrib_list, GL_FALSE);
-}
-
-
-/**
- * Create a new pbuffer.
- */
-PUBLIC GLXPbuffer
-glXCreatePbuffer(Display * dpy, GLXFBConfig config, const int *attrib_list)
-{
- int i, width, height;
-
- width = 0;
- height = 0;
-
- WARN_ONCE_GLX_1_3(dpy, __func__);
-
- for (i = 0; attrib_list[i * 2]; i++) {
- switch (attrib_list[i * 2]) {
- case GLX_PBUFFER_WIDTH:
- width = attrib_list[i * 2 + 1];
- break;
- case GLX_PBUFFER_HEIGHT:
- height = attrib_list[i * 2 + 1];
- break;
- }
- }
-
- return (GLXPbuffer) CreatePbuffer(dpy, (__GLcontextModes *) config,
- width, height, attrib_list, GL_TRUE);
-}
-
-
-/**
- * Destroy an existing pbuffer.
- */
-PUBLIC void
-glXDestroyPbuffer(Display * dpy, GLXPbuffer pbuf)
-{
- DestroyPbuffer(dpy, pbuf);
-}
-
-
-/**
- * Query an attribute of a drawable.
- */
-PUBLIC void
-glXQueryDrawable(Display * dpy, GLXDrawable drawable,
- int attribute, unsigned int *value)
-{
- WARN_ONCE_GLX_1_3(dpy, __func__);
- GetDrawableAttribute(dpy, drawable, attribute, value);
-}
-
-
-/**
- * Query an attribute of a pbuffer.
- */
-PUBLIC int
-glXQueryGLXPbufferSGIX(Display * dpy, GLXPbufferSGIX drawable,
- int attribute, unsigned int *value)
-{
- return GetDrawableAttribute(dpy, drawable, attribute, value);
-}
-
-
-/**
- * Select the event mask for a drawable.
- */
-PUBLIC void
-glXSelectEvent(Display * dpy, GLXDrawable drawable, unsigned long mask)
-{
- CARD32 attribs[2];
-
- attribs[0] = (CARD32) GLX_EVENT_MASK;
- attribs[1] = (CARD32) mask;
-
- ChangeDrawableAttribute(dpy, drawable, attribs, 1);
-}
-
-
-/**
- * Get the selected event mask for a drawable.
- */
-PUBLIC void
-glXGetSelectedEvent(Display * dpy, GLXDrawable drawable, unsigned long *mask)
-{
- unsigned int value;
-
-
- /* The non-sense with value is required because on LP64 platforms
- * sizeof(unsigned int) != sizeof(unsigned long). On little-endian
- * we could just type-cast the pointer, but why?
- */
-
- GetDrawableAttribute(dpy, drawable, GLX_EVENT_MASK_SGIX, &value);
- *mask = value;
-}
-
-
-PUBLIC GLXPixmap
-glXCreatePixmap(Display * dpy, GLXFBConfig config, Pixmap pixmap,
- const int *attrib_list)
-{
- WARN_ONCE_GLX_1_3(dpy, __func__);
-
- return CreateDrawable(dpy, (__GLcontextModes *) config,
- (Drawable) pixmap, attrib_list, X_GLXCreatePixmap);
-}
-
-
-PUBLIC GLXWindow
-glXCreateWindow(Display * dpy, GLXFBConfig config, Window win,
- const int *attrib_list)
-{
- WARN_ONCE_GLX_1_3(dpy, __func__);
-
- return CreateDrawable(dpy, (__GLcontextModes *) config,
- (Drawable) win, attrib_list, X_GLXCreateWindow);
-}
-
-
-PUBLIC void
-glXDestroyPixmap(Display * dpy, GLXPixmap pixmap)
-{
- WARN_ONCE_GLX_1_3(dpy, __func__);
-
- DestroyDrawable(dpy, (GLXDrawable) pixmap, X_GLXDestroyPixmap);
-}
-
-
-PUBLIC void
-glXDestroyWindow(Display * dpy, GLXWindow win)
-{
- WARN_ONCE_GLX_1_3(dpy, __func__);
-
- DestroyDrawable(dpy, (GLXDrawable) win, X_GLXDestroyWindow);
-}
-
-
-PUBLIC
-GLX_ALIAS_VOID(glXDestroyGLXPbufferSGIX,
- (Display * dpy, GLXPbufferSGIX pbuf),
- (dpy, pbuf), glXDestroyPbuffer)
-
-PUBLIC
-GLX_ALIAS_VOID(glXSelectEventSGIX,
- (Display * dpy, GLXDrawable drawable,
- unsigned long mask), (dpy, drawable, mask), glXSelectEvent)
-
-PUBLIC
-GLX_ALIAS_VOID(glXGetSelectedEventSGIX,
- (Display * dpy, GLXDrawable drawable,
- unsigned long *mask), (dpy, drawable, mask),
- glXGetSelectedEvent)
-
diff --git a/src/glx/x11/glx_query.c b/src/glx/x11/glx_query.c
deleted file mode 100644
index efad13d376e..00000000000
--- a/src/glx/x11/glx_query.c
+++ /dev/null
@@ -1,177 +0,0 @@
-/*
- * (C) Copyright IBM Corporation 2004
- * 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"),
- * to deal in the Software without restriction, including without limitation
- * on the rights to use, copy, modify, merge, publish, distribute, sub
- * license, and/or sell copies of the Software, and to permit persons to whom
- * the Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice (including the next
- * paragraph) shall be included in all copies or substantial portions of the
- * Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL
- * IBM AND/OR THEIR SUPPLIERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
- * DEALINGS IN THE SOFTWARE.
- */
-
-/**
- * \file glx_query.c
- * Generic utility functions to query internal data from the server.
- *
- * \author Ian Romanick <[email protected]>
- */
-
-#include "glxclient.h"
-
-#if defined(USE_XCB)
-# include <X11/Xlib-xcb.h>
-# include <xcb/xcb.h>
-# include <xcb/glx.h>
-#endif
-
-#ifdef USE_XCB
-
-/**
- * Exchange a protocol request for glXQueryServerString.
- */
-char *
-__glXQueryServerString(Display * dpy, int opcode, CARD32 screen, CARD32 name)
-{
- xcb_connection_t *c = XGetXCBConnection(dpy);
- xcb_glx_query_server_string_reply_t *reply =
- xcb_glx_query_server_string_reply(c,
- xcb_glx_query_server_string(c,
- screen,
- name),
- NULL);
-
- /* The spec doesn't mention this, but the Xorg server replies with
- * a string already terminated with '\0'. */
- uint32_t len = xcb_glx_query_server_string_string_length(reply);
- char *buf = Xmalloc(len);
- memcpy(buf, xcb_glx_query_server_string_string(reply), len);
- free(reply);
-
- return buf;
-}
-
-/**
- * Exchange a protocol request for glGetString.
- */
-char *
-__glXGetString(Display * dpy, int opcode, CARD32 contextTag, CARD32 name)
-{
- xcb_connection_t *c = XGetXCBConnection(dpy);
- xcb_glx_get_string_reply_t *reply = xcb_glx_get_string_reply(c,
- xcb_glx_get_string
- (c,
- contextTag,
- name),
- NULL);
-
- /* The spec doesn't mention this, but the Xorg server replies with
- * a string already terminated with '\0'. */
- uint32_t len = xcb_glx_get_string_string_length(reply);
- char *buf = Xmalloc(len);
- memcpy(buf, xcb_glx_get_string_string(reply), len);
- free(reply);
-
- return buf;
-}
-
-#else
-
-/**
- * GLX protocol structure for the ficticious "GXLGenericGetString" request.
- *
- * This is a non-existant protocol packet. It just so happens that all of
- * the real protocol packets used to request a string from the server have
- * an identical binary layout. The only difference between them is the
- * meaning of the \c for_whom field and the value of the \c glxCode.
- */
-typedef struct GLXGenericGetString
-{
- CARD8 reqType;
- CARD8 glxCode;
- CARD16 length B16;
- CARD32 for_whom B32;
- CARD32 name B32;
-} xGLXGenericGetStringReq;
-
-/* These defines are only needed to make the GetReq macro happy.
- */
-#define sz_xGLXGenericGetStringReq 12
-#define X_GLXGenericGetString 0
-
-/**
- * Query the Server GLX string.
- * This routine will allocate the necessay space for the string.
- */
-static char *
-__glXGetStringFromServer(Display * dpy, int opcode, CARD32 glxCode,
- CARD32 for_whom, CARD32 name)
-{
- xGLXGenericGetStringReq *req;
- xGLXSingleReply reply;
- int length;
- int numbytes;
- char *buf;
-
-
- LockDisplay(dpy);
-
-
- /* All of the GLX protocol requests for getting a string from the server
- * look the same. The exact meaning of the for_whom field is usually
- * either the screen number (for glXQueryServerString) or the context tag
- * (for GLXSingle).
- */
-
- GetReq(GLXGenericGetString, req);
- req->reqType = opcode;
- req->glxCode = glxCode;
- req->for_whom = for_whom;
- req->name = name;
-
- _XReply(dpy, (xReply *) & reply, 0, False);
-
- length = reply.length * 4;
- numbytes = reply.size;
-
- buf = (char *) Xmalloc(numbytes);
- if (buf != NULL) {
- _XRead(dpy, buf, numbytes);
- length -= numbytes;
- }
-
- _XEatData(dpy, length);
-
- UnlockDisplay(dpy);
- SyncHandle();
-
- return buf;
-}
-
-char *
-__glXQueryServerString(Display * dpy, int opcode, CARD32 screen, CARD32 name)
-{
- return __glXGetStringFromServer(dpy, opcode,
- X_GLXQueryServerString, screen, name);
-}
-
-char *
-__glXGetString(Display * dpy, int opcode, CARD32 contextTag, CARD32 name)
-{
- return __glXGetStringFromServer(dpy, opcode, X_GLsop_GetString,
- contextTag, name);
-}
-
-#endif /* USE_XCB */
diff --git a/src/glx/x11/glxclient.h b/src/glx/x11/glxclient.h
deleted file mode 100644
index e0b286b6883..00000000000
--- a/src/glx/x11/glxclient.h
+++ /dev/null
@@ -1,803 +0,0 @@
-/*
- * SGI FREE SOFTWARE LICENSE B (Version 2.0, Sept. 18, 2008)
- * Copyright (C) 1991-2000 Silicon Graphics, Inc. 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"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice including the dates of first publication and
- * either this permission notice or a reference to
- * http://oss.sgi.com/projects/FreeB/
- * shall be included in all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * SILICON GRAPHICS, INC. BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
- * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
- * OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- *
- * Except as contained in this notice, the name of Silicon Graphics, Inc.
- * shall not be used in advertising or otherwise to promote the sale, use or
- * other dealings in this Software without prior written authorization from
- * Silicon Graphics, Inc.
- */
-
-/**
- * \file glxclient.h
- * Direct rendering support added by Precision Insight, Inc.
- *
- * \author Kevin E. Martin <[email protected]>
- */
-
-#ifndef _GLX_client_h_
-#define _GLX_client_h_
-#define NEED_REPLIES
-#define NEED_EVENTS
-#include <X11/Xproto.h>
-#include <X11/Xlibint.h>
-#include <X11/extensions/extutil.h>
-#define GLX_GLXEXT_PROTOTYPES
-#include <GL/glx.h>
-#include <GL/glxext.h>
-#include <string.h>
-#include <stdlib.h>
-#include <stdio.h>
-#ifdef WIN32
-#include <stdint.h>
-#endif
-#include "GL/glxint.h"
-#include "GL/glxproto.h"
-#include "GL/internal/glcore.h"
-#include "glapi/glapitable.h"
-#include "glxhash.h"
-#if defined( PTHREADS )
-# include <pthread.h>
-#endif
-
-#include "glxextensions.h"
-
-
-/* If we build the library with gcc's -fvisibility=hidden flag, we'll
- * use the PUBLIC macro to mark functions that are to be exported.
- *
- * We also need to define a USED attribute, so the optimizer doesn't
- * inline a static function that we later use in an alias. - ajax
- */
-#if defined(__GNUC__) && (__GNUC__ * 100 + __GNUC_MINOR__) >= 303
-# define PUBLIC __attribute__((visibility("default")))
-# define USED __attribute__((used))
-#else
-# define PUBLIC
-# define USED
-#endif
-
-
-
-#define GLX_MAJOR_VERSION 1 /* current version numbers */
-#define GLX_MINOR_VERSION 4
-
-#define __GLX_MAX_TEXTURE_UNITS 32
-
-typedef struct __GLXscreenConfigsRec __GLXscreenConfigs;
-typedef struct __GLXcontextRec __GLXcontext;
-typedef struct __GLXdrawableRec __GLXdrawable;
-typedef struct __GLXdisplayPrivateRec __GLXdisplayPrivate;
-typedef struct _glapi_table __GLapi;
-
-/************************************************************************/
-
-#ifdef GLX_DIRECT_RENDERING
-
-#define containerOf(ptr, type, member) \
- (type *)( (char *)ptr - offsetof(type,member) )
-
-#include <GL/internal/dri_interface.h>
-
-
-/**
- * Display dependent methods. This structure is initialized during the
- * \c driCreateDisplay call.
- */
-typedef struct __GLXDRIdisplayRec __GLXDRIdisplay;
-typedef struct __GLXDRIscreenRec __GLXDRIscreen;
-typedef struct __GLXDRIdrawableRec __GLXDRIdrawable;
-typedef struct __GLXDRIcontextRec __GLXDRIcontext;
-
-#include "glxextensions.h"
-
-struct __GLXDRIdisplayRec
-{
- /**
- * Method to destroy the private DRI display data.
- */
- void (*destroyDisplay) (__GLXDRIdisplay * display);
-
- __GLXDRIscreen *(*createScreen) (__GLXscreenConfigs * psc, int screen,
- __GLXdisplayPrivate * priv);
-};
-
-struct __GLXDRIscreenRec {
-
- void (*destroyScreen)(__GLXscreenConfigs *psc);
-
- __GLXDRIcontext *(*createContext)(__GLXscreenConfigs *psc,
- const __GLcontextModes *mode,
- GLXContext gc,
- GLXContext shareList, int renderType);
-
- __GLXDRIdrawable *(*createDrawable)(__GLXscreenConfigs *psc,
- XID drawable,
- GLXDrawable glxDrawable,
- const __GLcontextModes *modes);
-
- int64_t (*swapBuffers)(__GLXDRIdrawable *pdraw, int64_t target_msc,
- int64_t divisor, int64_t remainder);
- void (*copySubBuffer)(__GLXDRIdrawable *pdraw,
- int x, int y, int width, int height);
- void (*waitX)(__GLXDRIdrawable *pdraw);
- void (*waitGL)(__GLXDRIdrawable *pdraw);
- int (*getDrawableMSC)(__GLXscreenConfigs *psc, __GLXDRIdrawable *pdraw,
- int64_t *ust, int64_t *msc, int64_t *sbc);
- int (*waitForMSC)(__GLXDRIdrawable *pdraw, int64_t target_msc,
- int64_t divisor, int64_t remainder, int64_t *ust,
- int64_t *msc, int64_t *sbc);
- int (*waitForSBC)(__GLXDRIdrawable *pdraw, int64_t target_sbc, int64_t *ust,
- int64_t *msc, int64_t *sbc);
- void (*setSwapInterval)(__GLXDRIdrawable *pdraw, int interval);
- int (*getSwapInterval)(__GLXDRIdrawable *pdraw);
-};
-
-struct __GLXDRIcontextRec
-{
- void (*destroyContext) (__GLXDRIcontext * context,
- __GLXscreenConfigs * psc, Display * dpy);
- Bool(*bindContext) (__GLXDRIcontext * context, __GLXDRIdrawable * pdraw,
- __GLXDRIdrawable * pread);
-
- void (*unbindContext) (__GLXDRIcontext * context);
-};
-
-struct __GLXDRIdrawableRec
-{
- void (*destroyDrawable) (__GLXDRIdrawable * drawable);
-
- XID xDrawable;
- XID drawable;
- __GLXscreenConfigs *psc;
- GLenum textureTarget;
- __DRIdrawable *driDrawable;
- GLenum textureFormat; /* EXT_texture_from_pixmap support */
-};
-
-/*
-** Function to create and DRI display data and initialize the display
-** dependent methods.
-*/
-extern __GLXDRIdisplay *driswCreateDisplay(Display * dpy);
-extern __GLXDRIdisplay *driCreateDisplay(Display * dpy);
-extern __GLXDRIdisplay *dri2CreateDisplay(Display * dpy);
-
-extern void DRI_glXUseXFont(Font font, int first, int count, int listbase);
-
-/*
-** Functions to obtain driver configuration information from a direct
-** rendering client application
-*/
-extern const char *glXGetScreenDriver(Display * dpy, int scrNum);
-
-extern const char *glXGetDriverConfig(const char *driverName);
-
-#endif
-
-/************************************************************************/
-
-#define __GL_CLIENT_ATTRIB_STACK_DEPTH 16
-
-typedef struct __GLXpixelStoreModeRec
-{
- GLboolean swapEndian;
- GLboolean lsbFirst;
- GLuint rowLength;
- GLuint imageHeight;
- GLuint imageDepth;
- GLuint skipRows;
- GLuint skipPixels;
- GLuint skipImages;
- GLuint alignment;
-} __GLXpixelStoreMode;
-
-
-typedef struct __GLXattributeRec
-{
- GLuint mask;
-
- /**
- * Pixel storage state. Most of the pixel store mode state is kept
- * here and used by the client code to manage the packing and
- * unpacking of data sent to/received from the server.
- */
- __GLXpixelStoreMode storePack, storeUnpack;
-
- /**
- * Is EXT_vertex_array / GL 1.1 DrawArrays protocol specifically
- * disabled?
- */
- GLboolean NoDrawArraysProtocol;
-
- /**
- * Vertex Array storage state. The vertex array component
- * state is stored here and is used to manage the packing of
- * DrawArrays data sent to the server.
- */
- struct array_state_vector *array_state;
-} __GLXattribute;
-
-typedef struct __GLXattributeMachineRec
-{
- __GLXattribute *stack[__GL_CLIENT_ATTRIB_STACK_DEPTH];
- __GLXattribute **stackPointer;
-} __GLXattributeMachine;
-
-/**
- * GLX state that needs to be kept on the client. One of these records
- * exist for each context that has been made current by this client.
- */
-struct __GLXcontextRec
-{
- /**
- * \name Drawing command buffer.
- *
- * Drawing commands are packed into this buffer before being sent as a
- * single GLX protocol request. The buffer is sent when it overflows or
- * is flushed by \c __glXFlushRenderBuffer. \c pc is the next location
- * in the buffer to be filled. \c limit is described above in the buffer
- * slop discussion.
- *
- * Commands that require large amounts of data to be transfered will
- * also use this buffer to hold a header that describes the large
- * command.
- *
- * These must be the first 6 fields since they are static initialized
- * in the dummy context in glxext.c
- */
- /*@{ */
- GLubyte *buf;
- GLubyte *pc;
- GLubyte *limit;
- GLubyte *bufEnd;
- GLint bufSize;
- /*@} */
-
- /**
- * The XID of this rendering context. When the context is created a
- * new XID is allocated. This is set to None when the context is
- * destroyed but is still current to some thread. In this case the
- * context will be freed on next MakeCurrent.
- */
- XID xid;
-
- /**
- * The XID of the \c shareList context.
- */
- XID share_xid;
-
- /**
- * Screen number.
- */
- GLint screen;
- __GLXscreenConfigs *psc;
-
- /**
- * \c GL_TRUE if the context was created with ImportContext, which
- * means the server-side context was created by another X client.
- */
- GLboolean imported;
-
- /**
- * The context tag returned by MakeCurrent when this context is made
- * current. This tag is used to identify the context that a thread has
- * current so that proper server context management can be done. It is
- * used for all context specific commands (i.e., \c Render, \c RenderLarge,
- * \c WaitX, \c WaitGL, \c UseXFont, and \c MakeCurrent (for the old
- * context)).
- */
- GLXContextTag currentContextTag;
-
- /**
- * \name Rendering mode
- *
- * The rendering mode is kept on the client as well as the server.
- * When \c glRenderMode is called, the buffer associated with the
- * previous rendering mode (feedback or select) is filled.
- */
- /*@{ */
- GLenum renderMode;
- GLfloat *feedbackBuf;
- GLuint *selectBuf;
- /*@} */
-
- /**
- * This is \c GL_TRUE if the pixel unpack modes are such that an image
- * can be unpacked from the clients memory by just copying. It may
- * still be true that the server will have to do some work. This
- * just promises that a straight copy will fetch the correct bytes.
- */
- GLboolean fastImageUnpack;
-
- /**
- * Fill newImage with the unpacked form of \c oldImage getting it
- * ready for transport to the server.
- */
- void (*fillImage) (__GLXcontext *, GLint, GLint, GLint, GLint, GLenum,
- GLenum, const GLvoid *, GLubyte *, GLubyte *);
-
- /**
- * Client side attribs.
- */
- __GLXattributeMachine attributes;
-
- /**
- * Client side error code. This is set when client side gl API
- * routines need to set an error because of a bad enumerant or
- * running out of memory, etc.
- */
- GLenum error;
-
- /**
- * Whether this context does direct rendering.
- */
- Bool isDirect;
-
- /**
- * \c dpy of current display for this context. Will be \c NULL if not
- * current to any display, or if this is the "dummy context".
- */
- Display *currentDpy;
-
- /**
- * The current drawable for this context. Will be None if this
- * context is not current to any drawable. currentReadable is below.
- */
- GLXDrawable currentDrawable;
-
- /**
- * \name GL Constant Strings
- *
- * Constant strings that describe the server implementation
- * These pertain to GL attributes, not to be confused with
- * GLX versioning attributes.
- */
- /*@{ */
- GLubyte *vendor;
- GLubyte *renderer;
- GLubyte *version;
- GLubyte *extensions;
- /*@} */
-
- /**
- * Record the dpy this context was created on for later freeing
- */
- Display *createDpy;
-
- /**
- * Maximum small render command size. This is the smaller of 64k and
- * the size of the above buffer.
- */
- GLint maxSmallRenderCommandSize;
-
- /**
- * Major opcode for the extension. Copied here so a lookup isn't
- * needed.
- */
- GLint majorOpcode;
-
- /**
- * Pointer to the mode used to create this context.
- */
- const __GLcontextModes *mode;
-
-#ifdef GLX_DIRECT_RENDERING
- __GLXDRIcontext *driContext;
- __DRIcontext *__driContext;
-#endif
-
- /**
- * The current read-drawable for this context. Will be None if this
- * context is not current to any drawable.
- *
- * \since Internal API version 20030606.
- */
- GLXDrawable currentReadable;
-
- /**
- * Pointer to client-state data that is private to libGL. This is only
- * used for indirect rendering contexts.
- *
- * No internal API version change was made for this change. Client-side
- * drivers should NEVER use this data or even care that it exists.
- */
- void *client_state_private;
-
- /**
- * Stored value for \c glXQueryContext attribute \c GLX_RENDER_TYPE.
- */
- int renderType;
-
- /**
- * \name Raw server GL version
- *
- * True core GL version supported by the server. This is the raw value
- * returned by the server, and it may not reflect what is actually
- * supported (or reported) by the client-side library.
- */
- /*@{ */
- int server_major; /**< Major version number. */
- int server_minor; /**< Minor version number. */
- /*@} */
-
- /**
- * Thread ID we're currently current in. Zero if none.
- */
- unsigned long thread_id;
-
- char gl_extension_bits[__GL_EXT_BYTES];
-};
-
-#define __glXSetError(gc,code) \
- if (!(gc)->error) { \
- (gc)->error = code; \
- }
-
-extern void __glFreeAttributeState(__GLXcontext *);
-
-/************************************************************************/
-
-/**
- * The size of the largest drawing command known to the implementation
- * that will use the GLXRender GLX command. In this case it is
- * \c glPolygonStipple.
- */
-#define __GLX_MAX_SMALL_RENDER_CMD_SIZE 156
-
-/**
- * To keep the implementation fast, the code uses a "limit" pointer
- * to determine when the drawing command buffer is too full to hold
- * another fixed size command. This constant defines the amount of
- * space that must always be available in the drawing command buffer
- * at all times for the implementation to work. It is important that
- * the number be just large enough, but not so large as to reduce the
- * efficacy of the buffer. The "+32" is just to keep the code working
- * in case somebody counts wrong.
- */
-#define __GLX_BUFFER_LIMIT_SIZE (__GLX_MAX_SMALL_RENDER_CMD_SIZE + 32)
-
-/**
- * This implementation uses a smaller threshold for switching
- * to the RenderLarge protocol than the protcol requires so that
- * large copies don't occur.
- */
-#define __GLX_RENDER_CMD_SIZE_LIMIT 4096
-
-/**
- * One of these records exists per screen of the display. It contains
- * a pointer to the config data for that screen (if the screen supports GL).
- */
-struct __GLXscreenConfigsRec
-{
- /**
- * GLX extension string reported by the X-server.
- */
- const char *serverGLXexts;
-
- /**
- * GLX extension string to be reported to applications. This is the
- * set of extensions that the application can actually use.
- */
- char *effectiveGLXexts;
-
-#ifdef GLX_DIRECT_RENDERING
- /**
- * Per screen direct rendering interface functions and data.
- */
- __DRIscreen *__driScreen;
- const __DRIcoreExtension *core;
- const __DRIlegacyExtension *legacy;
- const __DRIswrastExtension *swrast;
- const __DRIdri2Extension *dri2;
- __glxHashTable *drawHash;
- Display *dpy;
- int scr, fd;
- void *driver;
-
- __GLXDRIscreen *driScreen;
-
- const __DRIconfig **driver_configs;
-
-#ifdef __DRI_COPY_SUB_BUFFER
- const __DRIcopySubBufferExtension *driCopySubBuffer;
-#endif
-
-#ifdef __DRI_SWAP_CONTROL
- const __DRIswapControlExtension *swapControl;
-#endif
-
-#ifdef __DRI_ALLOCATE
- const __DRIallocateExtension *allocate;
-#endif
-
-#ifdef __DRI_FRAME_TRACKING
- const __DRIframeTrackingExtension *frameTracking;
-#endif
-
-#ifdef __DRI_MEDIA_STREAM_COUNTER
- const __DRImediaStreamCounterExtension *msc;
-#endif
-
-#ifdef __DRI_TEX_BUFFER
- const __DRItexBufferExtension *texBuffer;
-#endif
-
-#ifdef __DRI2_FLUSH
- const __DRI2flushExtension *f;
-#endif
-
-#endif
-
- /**
- * Linked list of glx visuals and fbconfigs for this screen.
- */
- __GLcontextModes *visuals, *configs;
-
- /**
- * Per-screen dynamic GLX extension tracking. The \c direct_support
- * field only contains enough bits for 64 extensions. Should libGL
- * ever need to track more than 64 GLX extensions, we can safely grow
- * this field. The \c __GLXscreenConfigs structure is not used outside
- * libGL.
- */
- /*@{ */
- unsigned char direct_support[8];
- GLboolean ext_list_first_time;
- /*@} */
-
-};
-
-/**
- * Per display private data. One of these records exists for each display
- * that is using the OpenGL (GLX) extension.
- */
-struct __GLXdisplayPrivateRec
-{
- /**
- * Back pointer to the display
- */
- Display *dpy;
-
- /**
- * The \c majorOpcode is common to all connections to the same server.
- * It is also copied into the context structure.
- */
- int majorOpcode;
-
- /**
- * \name Server Version
- *
- * Major and minor version returned by the server during initialization.
- */
- /*@{ */
- int majorVersion, minorVersion;
- /*@} */
-
- /**
- * \name Storage for the servers GLX vendor and versions strings.
- *
- * These are the same for all screens on this display. These fields will
- * be filled in on demand.
- */
- /*@{ */
- const char *serverGLXvendor;
- const char *serverGLXversion;
- /*@} */
-
- /**
- * Configurations of visuals for all screens on this display.
- * Also, per screen data which now includes the server \c GLX_EXTENSION
- * string.
- */
- __GLXscreenConfigs *screenConfigs;
-
-#ifdef GLX_DIRECT_RENDERING
- /**
- * Per display direct rendering interface functions and data.
- */
- __GLXDRIdisplay *driswDisplay;
- __GLXDRIdisplay *driDisplay;
- __GLXDRIdisplay *dri2Display;
-#endif
-};
-
-
-extern GLubyte *__glXFlushRenderBuffer(__GLXcontext *, GLubyte *);
-
-extern void __glXSendLargeChunk(__GLXcontext * gc, GLint requestNumber,
- GLint totalRequests,
- const GLvoid * data, GLint dataLen);
-
-extern void __glXSendLargeCommand(__GLXcontext *, const GLvoid *, GLint,
- const GLvoid *, GLint);
-
-/* Initialize the GLX extension for dpy */
-extern __GLXdisplayPrivate *__glXInitialize(Display *);
-
-extern void __glXPreferEGL(int state);
-
-/************************************************************************/
-
-extern int __glXDebug;
-
-/* This is per-thread storage in an MT environment */
-#if defined( PTHREADS )
-
-extern void __glXSetCurrentContext(__GLXcontext * c);
-
-# if defined( GLX_USE_TLS )
-
-extern __thread void *__glX_tls_Context
- __attribute__ ((tls_model("initial-exec")));
-
-# define __glXGetCurrentContext() __glX_tls_Context
-
-# else
-
-extern __GLXcontext *__glXGetCurrentContext(void);
-
-# endif /* defined( GLX_USE_TLS ) */
-
-#else
-
-extern __GLXcontext *__glXcurrentContext;
-#define __glXGetCurrentContext() __glXcurrentContext
-#define __glXSetCurrentContext(gc) __glXcurrentContext = gc
-
-#endif /* defined( PTHREADS ) */
-
-extern void __glXSetCurrentContextNull(void);
-
-extern void __glXFreeContext(__GLXcontext *);
-
-
-/*
-** Global lock for all threads in this address space using the GLX
-** extension
-*/
-#if defined( PTHREADS )
-extern pthread_mutex_t __glXmutex;
-#define __glXLock() pthread_mutex_lock(&__glXmutex)
-#define __glXUnlock() pthread_mutex_unlock(&__glXmutex)
-#else
-#define __glXLock()
-#define __glXUnlock()
-#endif
-
-/*
-** Setup for a command. Initialize the extension for dpy if necessary.
-*/
-extern CARD8 __glXSetupForCommand(Display * dpy);
-
-/************************************************************************/
-
-/*
-** Data conversion and packing support.
-*/
-
-extern const GLuint __glXDefaultPixelStore[9];
-
-/* Send an image to the server using RenderLarge. */
-extern void __glXSendLargeImage(__GLXcontext * gc, GLint compsize, GLint dim,
- GLint width, GLint height, GLint depth,
- GLenum format, GLenum type,
- const GLvoid * src, GLubyte * pc,
- GLubyte * modes);
-
-/* Return the size, in bytes, of some pixel data */
-extern GLint __glImageSize(GLint, GLint, GLint, GLenum, GLenum, GLenum);
-
-/* Return the number of elements per group of a specified format*/
-extern GLint __glElementsPerGroup(GLenum format, GLenum type);
-
-/* Return the number of bytes per element, based on the element type (other
-** than GL_BITMAP).
-*/
-extern GLint __glBytesPerElement(GLenum type);
-
-/*
-** Fill the transport buffer with the data from the users buffer,
-** applying some of the pixel store modes (unpack modes) to the data
-** first. As a side effect of this call, the "modes" field is
-** updated to contain the modes needed by the server to decode the
-** sent data.
-*/
-extern void __glFillImage(__GLXcontext *, GLint, GLint, GLint, GLint, GLenum,
- GLenum, const GLvoid *, GLubyte *, GLubyte *);
-
-/* Copy map data with a stride into a packed buffer */
-extern void __glFillMap1f(GLint, GLint, GLint, const GLfloat *, GLubyte *);
-extern void __glFillMap1d(GLint, GLint, GLint, const GLdouble *, GLubyte *);
-extern void __glFillMap2f(GLint, GLint, GLint, GLint, GLint,
- const GLfloat *, GLfloat *);
-extern void __glFillMap2d(GLint, GLint, GLint, GLint, GLint,
- const GLdouble *, GLdouble *);
-
-/*
-** Empty an image out of the reply buffer into the clients memory applying
-** the pack modes to pack back into the clients requested format.
-*/
-extern void __glEmptyImage(__GLXcontext *, GLint, GLint, GLint, GLint, GLenum,
- GLenum, const GLubyte *, GLvoid *);
-
-
-/*
-** Allocate and Initialize Vertex Array client state, and free.
-*/
-extern void __glXInitVertexArrayState(__GLXcontext *);
-extern void __glXFreeVertexArrayState(__GLXcontext *);
-
-/*
-** Inform the Server of the major and minor numbers and of the client
-** libraries extension string.
-*/
-extern void __glXClientInfo(Display * dpy, int opcode);
-
-/************************************************************************/
-
-/*
-** Declarations that should be in Xlib
-*/
-#ifdef __GL_USE_OUR_PROTOTYPES
-extern void _XFlush(Display *);
-extern Status _XReply(Display *, xReply *, int, Bool);
-extern void _XRead(Display *, void *, long);
-extern void _XSend(Display *, const void *, long);
-#endif
-
-
-extern void __glXInitializeVisualConfigFromTags(__GLcontextModes * config,
- int count, const INT32 * bp,
- Bool tagged_only,
- Bool fbconfig_style_tags);
-
-extern char *__glXQueryServerString(Display * dpy, int opcode,
- CARD32 screen, CARD32 name);
-extern char *__glXGetString(Display * dpy, int opcode,
- CARD32 screen, CARD32 name);
-
-extern char *__glXstrdup(const char *str);
-
-
-extern const char __glXGLClientVersion[];
-extern const char __glXGLClientExtensions[];
-
-/* Get the unadjusted system time */
-extern int __glXGetUST(int64_t * ust);
-
-extern GLboolean __glXGetMscRateOML(Display * dpy, GLXDrawable drawable,
- int32_t * numerator,
- int32_t * denominator);
-
-#ifdef GLX_DIRECT_RENDERING
-GLboolean
-__driGetMscRateOML(__DRIdrawable * draw,
- int32_t * numerator, int32_t * denominator, void *private);
-
-/* So that dri2.c:DRI2WireToEvent() can access
- * glx_info->codes->first_event */
-XExtDisplayInfo *__glXFindDisplay (Display *dpy);
-#endif
-
-#endif /* !__GLX_client_h__ */
diff --git a/src/glx/x11/glxcmds.c b/src/glx/x11/glxcmds.c
deleted file mode 100644
index c3be974ea91..00000000000
--- a/src/glx/x11/glxcmds.c
+++ /dev/null
@@ -1,3173 +0,0 @@
-/*
- * SGI FREE SOFTWARE LICENSE B (Version 2.0, Sept. 18, 2008)
- * Copyright (C) 1991-2000 Silicon Graphics, Inc. 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"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice including the dates of first publication and
- * either this permission notice or a reference to
- * http://oss.sgi.com/projects/FreeB/
- * shall be included in all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * SILICON GRAPHICS, INC. BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
- * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
- * OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- *
- * Except as contained in this notice, the name of Silicon Graphics, Inc.
- * shall not be used in advertising or otherwise to promote the sale, use or
- * other dealings in this Software without prior written authorization from
- * Silicon Graphics, Inc.
- */
-
-/**
- * \file glxcmds.c
- * Client-side GLX interface.
- */
-
-#include "glxclient.h"
-#include "glapi.h"
-#include "glxextensions.h"
-#include "glcontextmodes.h"
-
-#ifdef GLX_DIRECT_RENDERING
-#include <sys/time.h>
-#include <X11/extensions/xf86vmode.h>
-#include "xf86dri.h"
-#endif
-
-#if defined(USE_XCB)
-#include <X11/Xlib-xcb.h>
-#include <xcb/xcb.h>
-#include <xcb/glx.h>
-#endif
-
-static const char __glXGLXClientVendorName[] = "Mesa Project and SGI";
-static const char __glXGLXClientVersion[] = "1.4";
-
-
-/****************************************************************************/
-
-#ifdef GLX_DIRECT_RENDERING
-
-static Bool windowExistsFlag;
-static int
-windowExistsErrorHandler(Display * dpy, XErrorEvent * xerr)
-{
- if (xerr->error_code == BadWindow) {
- windowExistsFlag = GL_FALSE;
- }
- return 0;
-}
-
-/**
- * Find drawables in the local hash that have been destroyed on the
- * server.
- *
- * \param dpy Display to destroy drawables for
- * \param screen Screen number to destroy drawables for
- */
-static void
-GarbageCollectDRIDrawables(Display * dpy, __GLXscreenConfigs * sc)
-{
- XID draw;
- __GLXDRIdrawable *pdraw;
- XWindowAttributes xwa;
- int (*oldXErrorHandler) (Display *, XErrorEvent *);
-
- /* Set no-op error handler so Xlib doesn't bail out if the windows
- * has alreay been destroyed on the server. */
- XSync(dpy, GL_FALSE);
- oldXErrorHandler = XSetErrorHandler(windowExistsErrorHandler);
-
- if (__glxHashFirst(sc->drawHash, &draw, (void *) &pdraw) == 1) {
- do {
- windowExistsFlag = GL_TRUE;
- XGetWindowAttributes(dpy, draw, &xwa); /* dummy request */
- if (!windowExistsFlag) {
- /* Destroy the local drawable data, if the drawable no
- longer exists in the Xserver */
- (*pdraw->destroyDrawable) (pdraw);
- __glxHashDelete(sc->drawHash, draw);
- }
- } while (__glxHashNext(sc->drawHash, &draw, (void *) &pdraw) == 1);
- }
-
- XSync(dpy, GL_FALSE);
- XSetErrorHandler(oldXErrorHandler);
-}
-
-extern __GLXDRIdrawable *GetGLXDRIDrawable(Display * dpy,
- GLXDrawable drawable,
- int *const scrn_num);
-
-/**
- * Get the __DRIdrawable for the drawable associated with a GLXContext
- *
- * \param dpy The display associated with \c drawable.
- * \param drawable GLXDrawable whose __DRIdrawable part is to be retrieved.
- * \param scrn_num If non-NULL, the drawables screen is stored there
- * \returns A pointer to the context's __DRIdrawable on success, or NULL if
- * the drawable is not associated with a direct-rendering context.
- */
-_X_HIDDEN __GLXDRIdrawable *
-GetGLXDRIDrawable(Display * dpy, GLXDrawable drawable, int *const scrn_num)
-{
- __GLXdisplayPrivate *priv = __glXInitialize(dpy);
- __GLXDRIdrawable *pdraw;
- const unsigned screen_count = ScreenCount(dpy);
- unsigned i;
- __GLXscreenConfigs *psc;
-
- if (priv == NULL)
- return NULL;
-
- for (i = 0; i < screen_count; i++) {
- psc = &priv->screenConfigs[i];
- if (psc->drawHash == NULL)
- continue;
-
- if (__glxHashLookup(psc->drawHash, drawable, (void *) &pdraw) == 0) {
- if (scrn_num != NULL)
- *scrn_num = i;
- return pdraw;
- }
- }
-
- return NULL;
-}
-
-#endif
-
-
-/**
- * Get the GLX per-screen data structure associated with a GLX context.
- *
- * \param dpy Display for which the GLX per-screen information is to be
- * retrieved.
- * \param scrn Screen on \c dpy for which the GLX per-screen information is
- * to be retrieved.
- * \returns A pointer to the GLX per-screen data if \c dpy and \c scrn
- * specify a valid GLX screen, or NULL otherwise.
- *
- * \todo Should this function validate that \c scrn is within the screen
- * number range for \c dpy?
- */
-
-static __GLXscreenConfigs *
-GetGLXScreenConfigs(Display * dpy, int scrn)
-{
- __GLXdisplayPrivate *const priv = __glXInitialize(dpy);
-
- return (priv
- && priv->screenConfigs !=
- NULL) ? &priv->screenConfigs[scrn] : NULL;
-}
-
-
-static int
-GetGLXPrivScreenConfig(Display * dpy, int scrn, __GLXdisplayPrivate ** ppriv,
- __GLXscreenConfigs ** ppsc)
-{
- /* Initialize the extension, if needed . This has the added value
- * of initializing/allocating the display private
- */
-
- if (dpy == NULL) {
- return GLX_NO_EXTENSION;
- }
-
- *ppriv = __glXInitialize(dpy);
- if (*ppriv == NULL) {
- return GLX_NO_EXTENSION;
- }
-
- /* Check screen number to see if its valid */
- if ((scrn < 0) || (scrn >= ScreenCount(dpy))) {
- return GLX_BAD_SCREEN;
- }
-
- /* Check to see if the GL is supported on this screen */
- *ppsc = &((*ppriv)->screenConfigs[scrn]);
- if ((*ppsc)->configs == NULL) {
- /* No support for GL on this screen regardless of visual */
- return GLX_BAD_VISUAL;
- }
-
- return Success;
-}
-
-
-/**
- * Determine if a \c GLXFBConfig supplied by the application is valid.
- *
- * \param dpy Application supplied \c Display pointer.
- * \param config Application supplied \c GLXFBConfig.
- *
- * \returns If the \c GLXFBConfig is valid, the a pointer to the matching
- * \c __GLcontextModes structure is returned. Otherwise, \c NULL
- * is returned.
- */
-static __GLcontextModes *
-ValidateGLXFBConfig(Display * dpy, GLXFBConfig config)
-{
- __GLXdisplayPrivate *const priv = __glXInitialize(dpy);
- const unsigned num_screens = ScreenCount(dpy);
- unsigned i;
- const __GLcontextModes *modes;
-
-
- if (priv != NULL) {
- for (i = 0; i < num_screens; i++) {
- for (modes = priv->screenConfigs[i].configs; modes != NULL;
- modes = modes->next) {
- if (modes == (__GLcontextModes *) config) {
- return (__GLcontextModes *) config;
- }
- }
- }
- }
-
- return NULL;
-}
-
-
-/**
- * \todo It should be possible to move the allocate of \c client_state_private
- * later in the function for direct-rendering contexts. Direct-rendering
- * contexts don't need to track client state, so they don't need that memory
- * at all.
- *
- * \todo Eliminate \c __glXInitVertexArrayState. Replace it with a new
- * function called \c __glXAllocateClientState that allocates the memory and
- * does all the initialization (including the pixel pack / unpack).
- */
-static GLXContext
-AllocateGLXContext(Display * dpy)
-{
- GLXContext gc;
- int bufSize;
- CARD8 opcode;
- __GLXattribute *state;
-
- if (!dpy)
- return NULL;
-
- opcode = __glXSetupForCommand(dpy);
- if (!opcode) {
- return NULL;
- }
-
- /* Allocate our context record */
- gc = (GLXContext) Xmalloc(sizeof(struct __GLXcontextRec));
- if (!gc) {
- /* Out of memory */
- return NULL;
- }
- memset(gc, 0, sizeof(struct __GLXcontextRec));
-
- state = Xmalloc(sizeof(struct __GLXattributeRec));
- if (state == NULL) {
- /* Out of memory */
- Xfree(gc);
- return NULL;
- }
- gc->client_state_private = state;
- memset(gc->client_state_private, 0, sizeof(struct __GLXattributeRec));
- state->NoDrawArraysProtocol = (getenv("LIBGL_NO_DRAWARRAYS") != NULL);
-
- /*
- ** Create a temporary buffer to hold GLX rendering commands. The size
- ** of the buffer is selected so that the maximum number of GLX rendering
- ** commands can fit in a single X packet and still have room in the X
- ** packet for the GLXRenderReq header.
- */
-
- bufSize = (XMaxRequestSize(dpy) * 4) - sz_xGLXRenderReq;
- gc->buf = (GLubyte *) Xmalloc(bufSize);
- if (!gc->buf) {
- Xfree(gc->client_state_private);
- Xfree(gc);
- return NULL;
- }
- gc->bufSize = bufSize;
-
- /* Fill in the new context */
- gc->renderMode = GL_RENDER;
-
- state->storePack.alignment = 4;
- state->storeUnpack.alignment = 4;
-
- gc->attributes.stackPointer = &gc->attributes.stack[0];
-
- /*
- ** PERFORMANCE NOTE: A mode dependent fill image can speed things up.
- ** Other code uses the fastImageUnpack bit, but it is never set
- ** to GL_TRUE.
- */
- gc->fastImageUnpack = GL_FALSE;
- gc->fillImage = __glFillImage;
- gc->pc = gc->buf;
- gc->bufEnd = gc->buf + bufSize;
- gc->isDirect = GL_FALSE;
- if (__glXDebug) {
- /*
- ** Set limit register so that there will be one command per packet
- */
- gc->limit = gc->buf;
- }
- else {
- gc->limit = gc->buf + bufSize - __GLX_BUFFER_LIMIT_SIZE;
- }
- gc->createDpy = dpy;
- gc->majorOpcode = opcode;
-
- /*
- ** Constrain the maximum drawing command size allowed to be
- ** transfered using the X_GLXRender protocol request. First
- ** constrain by a software limit, then constrain by the protocl
- ** limit.
- */
- if (bufSize > __GLX_RENDER_CMD_SIZE_LIMIT) {
- bufSize = __GLX_RENDER_CMD_SIZE_LIMIT;
- }
- if (bufSize > __GLX_MAX_RENDER_CMD_SIZE) {
- bufSize = __GLX_MAX_RENDER_CMD_SIZE;
- }
- gc->maxSmallRenderCommandSize = bufSize;
- return gc;
-}
-
-
-/**
- * Create a new context. Exactly one of \c vis and \c fbconfig should be
- * non-NULL.
- *
- * \param use_glx_1_3 For FBConfigs, should GLX 1.3 protocol or
- * SGIX_fbconfig protocol be used?
- * \param renderType For FBConfigs, what is the rendering type?
- */
-
-static GLXContext
-CreateContext(Display * dpy, XVisualInfo * vis,
- const __GLcontextModes * const fbconfig,
- GLXContext shareList,
- Bool allowDirect, GLXContextID contextID,
- Bool use_glx_1_3, int renderType)
-{
- GLXContext gc;
-#ifdef GLX_DIRECT_RENDERING
- int screen = (fbconfig == NULL) ? vis->screen : fbconfig->screen;
- __GLXscreenConfigs *const psc = GetGLXScreenConfigs(dpy, screen);
-#endif
-
- if (dpy == NULL)
- return NULL;
-
- gc = AllocateGLXContext(dpy);
- if (!gc)
- return NULL;
-
- if (None == contextID) {
- if ((vis == NULL) && (fbconfig == NULL))
- return NULL;
-
-#ifdef GLX_DIRECT_RENDERING
- if (allowDirect && psc->driScreen) {
- const __GLcontextModes *mode;
-
- if (fbconfig == NULL) {
- mode = _gl_context_modes_find_visual(psc->visuals, vis->visualid);
- if (mode == NULL) {
- xError error;
-
- error.errorCode = BadValue;
- error.resourceID = vis->visualid;
- error.sequenceNumber = dpy->request;
- error.type = X_Error;
- error.majorCode = gc->majorOpcode;
- error.minorCode = X_GLXCreateContext;
- _XError(dpy, &error);
- return None;
- }
- if (renderType == 0) {
- /* Initialize renderType now */
- renderType = mode->rgbMode ? GLX_RGBA_TYPE : GLX_COLOR_INDEX_TYPE;
- }
- }
- else {
- mode = fbconfig;
- }
-
- gc->driContext = psc->driScreen->createContext(psc, mode, gc,
- shareList,
- renderType);
- if (gc->driContext != NULL) {
- gc->screen = mode->screen;
- gc->psc = psc;
- gc->mode = mode;
- gc->isDirect = GL_TRUE;
- }
- }
-#endif
-
- LockDisplay(dpy);
- if (fbconfig == NULL) {
- xGLXCreateContextReq *req;
-
- /* Send the glXCreateContext request */
- GetReq(GLXCreateContext, req);
- req->reqType = gc->majorOpcode;
- req->glxCode = X_GLXCreateContext;
- req->context = gc->xid = XAllocID(dpy);
- req->visual = vis->visualid;
- req->screen = vis->screen;
- req->shareList = shareList ? shareList->xid : None;
-#ifdef GLX_DIRECT_RENDERING
- req->isDirect = gc->driContext != NULL;
-#else
- req->isDirect = 0;
-#endif
- }
- else if (use_glx_1_3) {
- xGLXCreateNewContextReq *req;
-
- /* Send the glXCreateNewContext request */
- GetReq(GLXCreateNewContext, req);
- req->reqType = gc->majorOpcode;
- req->glxCode = X_GLXCreateNewContext;
- req->context = gc->xid = XAllocID(dpy);
- req->fbconfig = fbconfig->fbconfigID;
- req->screen = fbconfig->screen;
- req->renderType = renderType;
- req->shareList = shareList ? shareList->xid : None;
-#ifdef GLX_DIRECT_RENDERING
- req->isDirect = gc->driContext != NULL;
-#else
- req->isDirect = 0;
-#endif
- }
- else {
- xGLXVendorPrivateWithReplyReq *vpreq;
- xGLXCreateContextWithConfigSGIXReq *req;
-
- /* Send the glXCreateNewContext request */
- GetReqExtra(GLXVendorPrivateWithReply,
- sz_xGLXCreateContextWithConfigSGIXReq -
- sz_xGLXVendorPrivateWithReplyReq, vpreq);
- req = (xGLXCreateContextWithConfigSGIXReq *) vpreq;
- req->reqType = gc->majorOpcode;
- req->glxCode = X_GLXVendorPrivateWithReply;
- req->vendorCode = X_GLXvop_CreateContextWithConfigSGIX;
- req->context = gc->xid = XAllocID(dpy);
- req->fbconfig = fbconfig->fbconfigID;
- req->screen = fbconfig->screen;
- req->renderType = renderType;
- req->shareList = shareList ? shareList->xid : None;
-#ifdef GLX_DIRECT_RENDERING
- req->isDirect = gc->driContext != NULL;
-#else
- req->isDirect = 0;
-#endif
- }
-
- UnlockDisplay(dpy);
- SyncHandle();
- gc->imported = GL_FALSE;
- }
- else {
- gc->xid = contextID;
- gc->imported = GL_TRUE;
- }
-
- gc->renderType = renderType;
-
- return gc;
-}
-
-PUBLIC GLXContext
-glXCreateContext(Display * dpy, XVisualInfo * vis,
- GLXContext shareList, Bool allowDirect)
-{
- return CreateContext(dpy, vis, NULL, shareList, allowDirect, None,
- False, 0);
-}
-
-_X_HIDDEN void
-__glXFreeContext(__GLXcontext * gc)
-{
- if (gc->vendor)
- XFree((char *) gc->vendor);
- if (gc->renderer)
- XFree((char *) gc->renderer);
- if (gc->version)
- XFree((char *) gc->version);
- if (gc->extensions)
- XFree((char *) gc->extensions);
- __glFreeAttributeState(gc);
- XFree((char *) gc->buf);
- Xfree((char *) gc->client_state_private);
- XFree((char *) gc);
-
-}
-
-/*
-** Destroy the named context
-*/
-static void
-DestroyContext(Display * dpy, GLXContext gc)
-{
- xGLXDestroyContextReq *req;
- GLXContextID xid;
- CARD8 opcode;
- GLboolean imported;
-
- opcode = __glXSetupForCommand(dpy);
- if (!opcode || !gc) {
- return;
- }
-
- __glXLock();
- xid = gc->xid;
- imported = gc->imported;
- gc->xid = None;
-
- if (gc->currentDpy) {
- /* This context is bound to some thread. According to the man page,
- * we should not actually delete the context until it's unbound.
- * Note that we set gc->xid = None above. In MakeContextCurrent()
- * we check for that and delete the context there.
- */
- __glXUnlock();
- return;
- }
-
-#ifdef GLX_DIRECT_RENDERING
- /* Destroy the direct rendering context */
- if (gc->driContext) {
- (*gc->driContext->destroyContext) (gc->driContext, gc->psc, dpy);
- gc->driContext = NULL;
- GarbageCollectDRIDrawables(dpy, gc->psc);
- }
-#endif
-
- __glXFreeVertexArrayState(gc);
-
- if (gc->currentDpy) {
- /* Have to free later cuz it's in use now */
- __glXUnlock();
- }
- else {
- /* Destroy the handle if not current to anybody */
- __glXUnlock();
- __glXFreeContext(gc);
- }
-
- if (!imported) {
- /*
- ** This dpy also created the server side part of the context.
- ** Send the glXDestroyContext request.
- */
- LockDisplay(dpy);
- GetReq(GLXDestroyContext, req);
- req->reqType = opcode;
- req->glxCode = X_GLXDestroyContext;
- req->context = xid;
- UnlockDisplay(dpy);
- SyncHandle();
- }
-}
-
-PUBLIC void
-glXDestroyContext(Display * dpy, GLXContext gc)
-{
- DestroyContext(dpy, gc);
-}
-
-/*
-** Return the major and minor version #s for the GLX extension
-*/
-PUBLIC Bool
-glXQueryVersion(Display * dpy, int *major, int *minor)
-{
- __GLXdisplayPrivate *priv;
-
- /* Init the extension. This fetches the major and minor version. */
- priv = __glXInitialize(dpy);
- if (!priv)
- return GL_FALSE;
-
- if (major)
- *major = priv->majorVersion;
- if (minor)
- *minor = priv->minorVersion;
- return GL_TRUE;
-}
-
-/*
-** Query the existance of the GLX extension
-*/
-PUBLIC Bool
-glXQueryExtension(Display * dpy, int *errorBase, int *eventBase)
-{
- int major_op, erb, evb;
- Bool rv;
-
- rv = XQueryExtension(dpy, GLX_EXTENSION_NAME, &major_op, &evb, &erb);
- if (rv) {
- if (errorBase)
- *errorBase = erb;
- if (eventBase)
- *eventBase = evb;
- }
- return rv;
-}
-
-/*
-** Put a barrier in the token stream that forces the GL to finish its
-** work before X can proceed.
-*/
-PUBLIC void
-glXWaitGL(void)
-{
- xGLXWaitGLReq *req;
- GLXContext gc = __glXGetCurrentContext();
- Display *dpy = gc->currentDpy;
-
- if (!dpy)
- return;
-
- /* Flush any pending commands out */
- __glXFlushRenderBuffer(gc, gc->pc);
-
-#ifdef GLX_DIRECT_RENDERING
- if (gc->driContext) {
- int screen;
- __GLXDRIdrawable *pdraw =
- GetGLXDRIDrawable(dpy, gc->currentDrawable, &screen);
-
- if (pdraw != NULL) {
- __GLXscreenConfigs *const psc = GetGLXScreenConfigs(dpy, screen);
- glFlush();
- if (psc->driScreen->waitGL != NULL)
- (*psc->driScreen->waitGL) (pdraw);
- }
- return;
- }
-#endif
-
- /* Send the glXWaitGL request */
- LockDisplay(dpy);
- GetReq(GLXWaitGL, req);
- req->reqType = gc->majorOpcode;
- req->glxCode = X_GLXWaitGL;
- req->contextTag = gc->currentContextTag;
- UnlockDisplay(dpy);
- SyncHandle();
-}
-
-/*
-** Put a barrier in the token stream that forces X to finish its
-** work before GL can proceed.
-*/
-PUBLIC void
-glXWaitX(void)
-{
- xGLXWaitXReq *req;
- GLXContext gc = __glXGetCurrentContext();
- Display *dpy = gc->currentDpy;
-
- if (!dpy)
- return;
-
- /* Flush any pending commands out */
- __glXFlushRenderBuffer(gc, gc->pc);
-
-#ifdef GLX_DIRECT_RENDERING
- if (gc->driContext) {
- int screen;
- __GLXDRIdrawable *pdraw =
- GetGLXDRIDrawable(dpy, gc->currentDrawable, &screen);
-
- if (pdraw != NULL) {
- __GLXscreenConfigs *const psc = GetGLXScreenConfigs(dpy, screen);
- if (psc->driScreen->waitX != NULL)
- (*psc->driScreen->waitX) (pdraw);
- }
- else
- XSync(dpy, False);
- return;
- }
-#endif
-
- /*
- ** Send the glXWaitX request.
- */
- LockDisplay(dpy);
- GetReq(GLXWaitX, req);
- req->reqType = gc->majorOpcode;
- req->glxCode = X_GLXWaitX;
- req->contextTag = gc->currentContextTag;
- UnlockDisplay(dpy);
- SyncHandle();
-}
-
-PUBLIC void
-glXUseXFont(Font font, int first, int count, int listBase)
-{
- xGLXUseXFontReq *req;
- GLXContext gc = __glXGetCurrentContext();
- Display *dpy = gc->currentDpy;
-
- if (!dpy)
- return;
-
- /* Flush any pending commands out */
- (void) __glXFlushRenderBuffer(gc, gc->pc);
-
-#ifdef GLX_DIRECT_RENDERING
- if (gc->driContext) {
- DRI_glXUseXFont(font, first, count, listBase);
- return;
- }
-#endif
-
- /* Send the glXUseFont request */
- LockDisplay(dpy);
- GetReq(GLXUseXFont, req);
- req->reqType = gc->majorOpcode;
- req->glxCode = X_GLXUseXFont;
- req->contextTag = gc->currentContextTag;
- req->font = font;
- req->first = first;
- req->count = count;
- req->listBase = listBase;
- UnlockDisplay(dpy);
- SyncHandle();
-}
-
-/************************************************************************/
-
-/*
-** Copy the source context to the destination context using the
-** attribute "mask".
-*/
-PUBLIC void
-glXCopyContext(Display * dpy, GLXContext source,
- GLXContext dest, unsigned long mask)
-{
- xGLXCopyContextReq *req;
- GLXContext gc = __glXGetCurrentContext();
- GLXContextTag tag;
- CARD8 opcode;
-
- opcode = __glXSetupForCommand(dpy);
- if (!opcode) {
- return;
- }
-
-#ifdef GLX_DIRECT_RENDERING
- if (gc->driContext) {
- /* NOT_DONE: This does not work yet */
- }
-#endif
-
- /*
- ** If the source is the current context, send its tag so that the context
- ** can be flushed before the copy.
- */
- if (source == gc && dpy == gc->currentDpy) {
- tag = gc->currentContextTag;
- }
- else {
- tag = 0;
- }
-
- /* Send the glXCopyContext request */
- LockDisplay(dpy);
- GetReq(GLXCopyContext, req);
- req->reqType = opcode;
- req->glxCode = X_GLXCopyContext;
- req->source = source ? source->xid : None;
- req->dest = dest ? dest->xid : None;
- req->mask = mask;
- req->contextTag = tag;
- UnlockDisplay(dpy);
- SyncHandle();
-}
-
-
-/**
- * Determine if a context uses direct rendering.
- *
- * \param dpy Display where the context was created.
- * \param contextID ID of the context to be tested.
- *
- * \returns \c GL_TRUE if the context is direct rendering or not.
- */
-static Bool
-__glXIsDirect(Display * dpy, GLXContextID contextID)
-{
-#if !defined(USE_XCB)
- xGLXIsDirectReq *req;
- xGLXIsDirectReply reply;
-#endif
- CARD8 opcode;
-
- opcode = __glXSetupForCommand(dpy);
- if (!opcode) {
- return GL_FALSE;
- }
-
-#ifdef USE_XCB
- xcb_connection_t *c = XGetXCBConnection(dpy);
- xcb_glx_is_direct_reply_t *reply = xcb_glx_is_direct_reply(c,
- xcb_glx_is_direct
- (c, contextID),
- NULL);
-
- const Bool is_direct = reply->is_direct ? True : False;
- free(reply);
-
- return is_direct;
-#else
- /* Send the glXIsDirect request */
- LockDisplay(dpy);
- GetReq(GLXIsDirect, req);
- req->reqType = opcode;
- req->glxCode = X_GLXIsDirect;
- req->context = contextID;
- _XReply(dpy, (xReply *) & reply, 0, False);
- UnlockDisplay(dpy);
- SyncHandle();
-
- return reply.isDirect;
-#endif /* USE_XCB */
-}
-
-/**
- * \todo
- * Shouldn't this function \b always return \c GL_FALSE when
- * \c GLX_DIRECT_RENDERING is not defined? Do we really need to bother with
- * the GLX protocol here at all?
- */
-PUBLIC Bool
-glXIsDirect(Display * dpy, GLXContext gc)
-{
- if (!gc) {
- return GL_FALSE;
-#ifdef GLX_DIRECT_RENDERING
- }
- else if (gc->driContext) {
- return GL_TRUE;
-#endif
- }
- return __glXIsDirect(dpy, gc->xid);
-}
-
-PUBLIC GLXPixmap
-glXCreateGLXPixmap(Display * dpy, XVisualInfo * vis, Pixmap pixmap)
-{
- xGLXCreateGLXPixmapReq *req;
- GLXPixmap xid;
- CARD8 opcode;
-
- opcode = __glXSetupForCommand(dpy);
- if (!opcode) {
- return None;
- }
-
- /* Send the glXCreateGLXPixmap request */
- LockDisplay(dpy);
- GetReq(GLXCreateGLXPixmap, req);
- req->reqType = opcode;
- req->glxCode = X_GLXCreateGLXPixmap;
- req->screen = vis->screen;
- req->visual = vis->visualid;
- req->pixmap = pixmap;
- req->glxpixmap = xid = XAllocID(dpy);
- UnlockDisplay(dpy);
- SyncHandle();
-
-#ifdef GLX_DIRECT_RENDERING
- do {
- /* FIXME: Maybe delay __DRIdrawable creation until the drawable
- * is actually bound to a context... */
-
- __GLXdisplayPrivate *const priv = __glXInitialize(dpy);
- __GLXDRIdrawable *pdraw;
- __GLXscreenConfigs *psc;
- __GLcontextModes *modes;
-
- psc = &priv->screenConfigs[vis->screen];
- if (psc->driScreen == NULL)
- break;
- modes = _gl_context_modes_find_visual(psc->visuals, vis->visualid);
- pdraw = psc->driScreen->createDrawable(psc, pixmap, req->glxpixmap, modes);
- if (pdraw == NULL) {
- fprintf(stderr, "failed to create pixmap\n");
- break;
- }
-
- if (__glxHashInsert(psc->drawHash, req->glxpixmap, pdraw)) {
- (*pdraw->destroyDrawable) (pdraw);
- return None; /* FIXME: Check what we're supposed to do here... */
- }
- } while (0);
-#endif
-
- return xid;
-}
-
-/*
-** Destroy the named pixmap
-*/
-PUBLIC void
-glXDestroyGLXPixmap(Display * dpy, GLXPixmap glxpixmap)
-{
- xGLXDestroyGLXPixmapReq *req;
- CARD8 opcode;
-
- opcode = __glXSetupForCommand(dpy);
- if (!opcode) {
- return;
- }
-
- /* Send the glXDestroyGLXPixmap request */
- LockDisplay(dpy);
- GetReq(GLXDestroyGLXPixmap, req);
- req->reqType = opcode;
- req->glxCode = X_GLXDestroyGLXPixmap;
- req->glxpixmap = glxpixmap;
- UnlockDisplay(dpy);
- SyncHandle();
-
-#ifdef GLX_DIRECT_RENDERING
- {
- int screen;
- __GLXdisplayPrivate *const priv = __glXInitialize(dpy);
- __GLXDRIdrawable *pdraw = GetGLXDRIDrawable(dpy, glxpixmap, &screen);
- __GLXscreenConfigs *psc = &priv->screenConfigs[screen];
-
- if (pdraw != NULL) {
- (*pdraw->destroyDrawable) (pdraw);
- __glxHashDelete(psc->drawHash, glxpixmap);
- }
- }
-#endif
-}
-
-PUBLIC void
-glXSwapBuffers(Display * dpy, GLXDrawable drawable)
-{
- GLXContext gc;
- GLXContextTag tag;
- CARD8 opcode;
-#ifdef USE_XCB
- xcb_connection_t *c;
-#else
- xGLXSwapBuffersReq *req;
-#endif
-
-#ifdef GLX_DIRECT_RENDERING
- __GLXDRIdrawable *pdraw = GetGLXDRIDrawable(dpy, drawable, NULL);
-
- if (pdraw != NULL) {
- glFlush();
- (*pdraw->psc->driScreen->swapBuffers)(pdraw, 0, 0, 0);
- return;
- }
-#endif
-
- opcode = __glXSetupForCommand(dpy);
- if (!opcode) {
- return;
- }
-
- /*
- ** The calling thread may or may not have a current context. If it
- ** does, send the context tag so the server can do a flush.
- */
- gc = __glXGetCurrentContext();
- if ((gc != NULL) && (dpy == gc->currentDpy) &&
- ((drawable == gc->currentDrawable)
- || (drawable == gc->currentReadable))) {
- tag = gc->currentContextTag;
- }
- else {
- tag = 0;
- }
-
-#ifdef USE_XCB
- c = XGetXCBConnection(dpy);
- xcb_glx_swap_buffers(c, tag, drawable);
- xcb_flush(c);
-#else
- /* Send the glXSwapBuffers request */
- LockDisplay(dpy);
- GetReq(GLXSwapBuffers, req);
- req->reqType = opcode;
- req->glxCode = X_GLXSwapBuffers;
- req->drawable = drawable;
- req->contextTag = tag;
- UnlockDisplay(dpy);
- SyncHandle();
- XFlush(dpy);
-#endif /* USE_XCB */
-}
-
-
-/*
-** Return configuration information for the given display, screen and
-** visual combination.
-*/
-PUBLIC int
-glXGetConfig(Display * dpy, XVisualInfo * vis, int attribute,
- int *value_return)
-{
- __GLXdisplayPrivate *priv;
- __GLXscreenConfigs *psc;
- __GLcontextModes *modes;
- int status;
-
- status = GetGLXPrivScreenConfig(dpy, vis->screen, &priv, &psc);
- if (status == Success) {
- modes = _gl_context_modes_find_visual(psc->visuals, vis->visualid);
-
- /* Lookup attribute after first finding a match on the visual */
- if (modes != NULL) {
- return _gl_get_context_mode_data(modes, attribute, value_return);
- }
-
- status = GLX_BAD_VISUAL;
- }
-
- /*
- ** If we can't find the config for this visual, this visual is not
- ** supported by the OpenGL implementation on the server.
- */
- if ((status == GLX_BAD_VISUAL) && (attribute == GLX_USE_GL)) {
- *value_return = GL_FALSE;
- status = Success;
- }
-
- return status;
-}
-
-/************************************************************************/
-
-static void
-init_fbconfig_for_chooser(__GLcontextModes * config,
- GLboolean fbconfig_style_tags)
-{
- memset(config, 0, sizeof(__GLcontextModes));
- config->visualID = (XID) GLX_DONT_CARE;
- config->visualType = GLX_DONT_CARE;
-
- /* glXChooseFBConfig specifies different defaults for these two than
- * glXChooseVisual.
- */
- if (fbconfig_style_tags) {
- config->rgbMode = GL_TRUE;
- config->doubleBufferMode = GLX_DONT_CARE;
- }
-
- config->visualRating = GLX_DONT_CARE;
- config->transparentPixel = GLX_NONE;
- config->transparentRed = GLX_DONT_CARE;
- config->transparentGreen = GLX_DONT_CARE;
- config->transparentBlue = GLX_DONT_CARE;
- config->transparentAlpha = GLX_DONT_CARE;
- config->transparentIndex = GLX_DONT_CARE;
-
- config->drawableType = GLX_WINDOW_BIT;
- config->renderType =
- (config->rgbMode) ? GLX_RGBA_BIT : GLX_COLOR_INDEX_BIT;
- config->xRenderable = GLX_DONT_CARE;
- config->fbconfigID = (GLXFBConfigID) (GLX_DONT_CARE);
-
- config->swapMethod = GLX_DONT_CARE;
-}
-
-#define MATCH_DONT_CARE( param ) \
- do { \
- if ( (a-> param != GLX_DONT_CARE) \
- && (a-> param != b-> param) ) { \
- return False; \
- } \
- } while ( 0 )
-
-#define MATCH_MINIMUM( param ) \
- do { \
- if ( (a-> param != GLX_DONT_CARE) \
- && (a-> param > b-> param) ) { \
- return False; \
- } \
- } while ( 0 )
-
-#define MATCH_EXACT( param ) \
- do { \
- if ( a-> param != b-> param) { \
- return False; \
- } \
- } while ( 0 )
-
-/**
- * Determine if two GLXFBConfigs are compatible.
- *
- * \param a Application specified config to test.
- * \param b Server specified config to test against \c a.
- */
-static Bool
-fbconfigs_compatible(const __GLcontextModes * const a,
- const __GLcontextModes * const b)
-{
- MATCH_DONT_CARE(doubleBufferMode);
- MATCH_DONT_CARE(visualType);
- MATCH_DONT_CARE(visualRating);
- MATCH_DONT_CARE(xRenderable);
- MATCH_DONT_CARE(fbconfigID);
- MATCH_DONT_CARE(swapMethod);
-
- MATCH_MINIMUM(rgbBits);
- MATCH_MINIMUM(numAuxBuffers);
- MATCH_MINIMUM(redBits);
- MATCH_MINIMUM(greenBits);
- MATCH_MINIMUM(blueBits);
- MATCH_MINIMUM(alphaBits);
- MATCH_MINIMUM(depthBits);
- MATCH_MINIMUM(stencilBits);
- MATCH_MINIMUM(accumRedBits);
- MATCH_MINIMUM(accumGreenBits);
- MATCH_MINIMUM(accumBlueBits);
- MATCH_MINIMUM(accumAlphaBits);
- MATCH_MINIMUM(sampleBuffers);
- MATCH_MINIMUM(maxPbufferWidth);
- MATCH_MINIMUM(maxPbufferHeight);
- MATCH_MINIMUM(maxPbufferPixels);
- MATCH_MINIMUM(samples);
-
- MATCH_DONT_CARE(stereoMode);
- MATCH_EXACT(level);
-
- if (((a->drawableType & b->drawableType) == 0)
- || ((a->renderType & b->renderType) == 0)) {
- return False;
- }
-
-
- /* There is a bug in a few of the XFree86 DDX drivers. They contain
- * visuals with a "transparent type" of 0 when they really mean GLX_NONE.
- * Technically speaking, it is a bug in the DDX driver, but there is
- * enough of an installed base to work around the problem here. In any
- * case, 0 is not a valid value of the transparent type, so we'll treat 0
- * from the app as GLX_DONT_CARE. We'll consider GLX_NONE from the app and
- * 0 from the server to be a match to maintain backward compatibility with
- * the (broken) drivers.
- */
-
- if (a->transparentPixel != GLX_DONT_CARE && a->transparentPixel != 0) {
- if (a->transparentPixel == GLX_NONE) {
- if (b->transparentPixel != GLX_NONE && b->transparentPixel != 0)
- return False;
- }
- else {
- MATCH_EXACT(transparentPixel);
- }
-
- switch (a->transparentPixel) {
- case GLX_TRANSPARENT_RGB:
- MATCH_DONT_CARE(transparentRed);
- MATCH_DONT_CARE(transparentGreen);
- MATCH_DONT_CARE(transparentBlue);
- MATCH_DONT_CARE(transparentAlpha);
- break;
-
- case GLX_TRANSPARENT_INDEX:
- MATCH_DONT_CARE(transparentIndex);
- break;
-
- default:
- break;
- }
- }
-
- return True;
-}
-
-
-/* There's some trickly language in the GLX spec about how this is supposed
- * to work. Basically, if a given component size is either not specified
- * or the requested size is zero, it is supposed to act like PERFER_SMALLER.
- * Well, that's really hard to do with the code as-is. This behavior is
- * closer to correct, but still not technically right.
- */
-#define PREFER_LARGER_OR_ZERO(comp) \
- do { \
- if ( ((*a)-> comp) != ((*b)-> comp) ) { \
- if ( ((*a)-> comp) == 0 ) { \
- return -1; \
- } \
- else if ( ((*b)-> comp) == 0 ) { \
- return 1; \
- } \
- else { \
- return ((*b)-> comp) - ((*a)-> comp) ; \
- } \
- } \
- } while( 0 )
-
-#define PREFER_LARGER(comp) \
- do { \
- if ( ((*a)-> comp) != ((*b)-> comp) ) { \
- return ((*b)-> comp) - ((*a)-> comp) ; \
- } \
- } while( 0 )
-
-#define PREFER_SMALLER(comp) \
- do { \
- if ( ((*a)-> comp) != ((*b)-> comp) ) { \
- return ((*a)-> comp) - ((*b)-> comp) ; \
- } \
- } while( 0 )
-
-/**
- * Compare two GLXFBConfigs. This function is intended to be used as the
- * compare function passed in to qsort.
- *
- * \returns If \c a is a "better" config, according to the specification of
- * SGIX_fbconfig, a number less than zero is returned. If \c b is
- * better, then a number greater than zero is return. If both are
- * equal, zero is returned.
- * \sa qsort, glXChooseVisual, glXChooseFBConfig, glXChooseFBConfigSGIX
- */
-static int
-fbconfig_compare(const __GLcontextModes * const *const a,
- const __GLcontextModes * const *const b)
-{
- /* The order of these comparisons must NOT change. It is defined by
- * the GLX 1.3 spec and ARB_multisample.
- */
-
- PREFER_SMALLER(visualSelectGroup);
-
- /* The sort order for the visualRating is GLX_NONE, GLX_SLOW, and
- * GLX_NON_CONFORMANT_CONFIG. It just so happens that this is the
- * numerical sort order of the enums (0x8000, 0x8001, and 0x800D).
- */
- PREFER_SMALLER(visualRating);
-
- /* This isn't quite right. It is supposed to compare the sum of the
- * components the user specifically set minimums for.
- */
- PREFER_LARGER_OR_ZERO(redBits);
- PREFER_LARGER_OR_ZERO(greenBits);
- PREFER_LARGER_OR_ZERO(blueBits);
- PREFER_LARGER_OR_ZERO(alphaBits);
-
- PREFER_SMALLER(rgbBits);
-
- if (((*a)->doubleBufferMode != (*b)->doubleBufferMode)) {
- /* Prefer single-buffer.
- */
- return (!(*a)->doubleBufferMode) ? -1 : 1;
- }
-
- PREFER_SMALLER(numAuxBuffers);
-
- PREFER_LARGER_OR_ZERO(depthBits);
- PREFER_SMALLER(stencilBits);
-
- /* This isn't quite right. It is supposed to compare the sum of the
- * components the user specifically set minimums for.
- */
- PREFER_LARGER_OR_ZERO(accumRedBits);
- PREFER_LARGER_OR_ZERO(accumGreenBits);
- PREFER_LARGER_OR_ZERO(accumBlueBits);
- PREFER_LARGER_OR_ZERO(accumAlphaBits);
-
- PREFER_SMALLER(visualType);
-
- /* None of the multisample specs say where this comparison should happen,
- * so I put it near the end.
- */
- PREFER_SMALLER(sampleBuffers);
- PREFER_SMALLER(samples);
-
- /* None of the pbuffer or fbconfig specs say that this comparison needs
- * to happen at all, but it seems like it should.
- */
- PREFER_LARGER(maxPbufferWidth);
- PREFER_LARGER(maxPbufferHeight);
- PREFER_LARGER(maxPbufferPixels);
-
- return 0;
-}
-
-
-/**
- * Selects and sorts a subset of the supplied configs based on the attributes.
- * This function forms to basis of \c glXChooseVisual, \c glXChooseFBConfig,
- * and \c glXChooseFBConfigSGIX.
- *
- * \param configs Array of pointers to possible configs. The elements of
- * this array that do not meet the criteria will be set to
- * NULL. The remaining elements will be sorted according to
- * the various visual / FBConfig selection rules.
- * \param num_configs Number of elements in the \c configs array.
- * \param attribList Attributes used select from \c configs. This array is
- * terminated by a \c None tag. The array can either take
- * the form expected by \c glXChooseVisual (where boolean
- * tags do not have a value) or by \c glXChooseFBConfig
- * (where every tag has a value).
- * \param fbconfig_style_tags Selects whether \c attribList is in
- * \c glXChooseVisual style or
- * \c glXChooseFBConfig style.
- * \returns The number of valid elements left in \c configs.
- *
- * \sa glXChooseVisual, glXChooseFBConfig, glXChooseFBConfigSGIX
- */
-static int
-choose_visual(__GLcontextModes ** configs, int num_configs,
- const int *attribList, GLboolean fbconfig_style_tags)
-{
- __GLcontextModes test_config;
- int base;
- int i;
-
- /* This is a fairly direct implementation of the selection method
- * described by GLX_SGIX_fbconfig. Start by culling out all the
- * configs that are not compatible with the selected parameter
- * list.
- */
-
- init_fbconfig_for_chooser(&test_config, fbconfig_style_tags);
- __glXInitializeVisualConfigFromTags(&test_config, 512,
- (const INT32 *) attribList,
- GL_TRUE, fbconfig_style_tags);
-
- base = 0;
- for (i = 0; i < num_configs; i++) {
- if (fbconfigs_compatible(&test_config, configs[i])) {
- configs[base] = configs[i];
- base++;
- }
- }
-
- if (base == 0) {
- return 0;
- }
-
- if (base < num_configs) {
- (void) memset(&configs[base], 0, sizeof(void *) * (num_configs - base));
- }
-
- /* After the incompatible configs are removed, the resulting
- * list is sorted according to the rules set out in the various
- * specifications.
- */
-
- qsort(configs, base, sizeof(__GLcontextModes *),
- (int (*)(const void *, const void *)) fbconfig_compare);
- return base;
-}
-
-
-
-
-/*
-** Return the visual that best matches the template. Return None if no
-** visual matches the template.
-*/
-PUBLIC XVisualInfo *
-glXChooseVisual(Display * dpy, int screen, int *attribList)
-{
- XVisualInfo *visualList = NULL;
- __GLXdisplayPrivate *priv;
- __GLXscreenConfigs *psc;
- __GLcontextModes test_config;
- __GLcontextModes *modes;
- const __GLcontextModes *best_config = NULL;
-
- /*
- ** Get a list of all visuals, return if list is empty
- */
- if (GetGLXPrivScreenConfig(dpy, screen, &priv, &psc) != Success) {
- return None;
- }
-
-
- /*
- ** Build a template from the defaults and the attribute list
- ** Free visual list and return if an unexpected token is encountered
- */
- init_fbconfig_for_chooser(&test_config, GL_FALSE);
- __glXInitializeVisualConfigFromTags(&test_config, 512,
- (const INT32 *) attribList,
- GL_TRUE, GL_FALSE);
-
- /*
- ** Eliminate visuals that don't meet minimum requirements
- ** Compute a score for those that do
- ** Remember which visual, if any, got the highest score
- ** If no visual is acceptable, return None
- ** Otherwise, create an XVisualInfo list with just the selected X visual
- ** and return this.
- */
- for (modes = psc->visuals; modes != NULL; modes = modes->next) {
- if (fbconfigs_compatible(&test_config, modes)
- && ((best_config == NULL)
- ||
- (fbconfig_compare
- ((const __GLcontextModes * const *const) &modes,
- &best_config) < 0))) {
- XVisualInfo visualTemplate;
- XVisualInfo *newList;
- int i;
-
- visualTemplate.screen = screen;
- visualTemplate.visualid = modes->visualID;
- newList = XGetVisualInfo(dpy, VisualScreenMask | VisualIDMask,
- &visualTemplate, &i);
-
- if (newList) {
- Xfree(visualList);
- visualList = newList;
- best_config = modes;
- }
- }
- }
-
- return visualList;
-}
-
-
-PUBLIC const char *
-glXQueryExtensionsString(Display * dpy, int screen)
-{
- __GLXscreenConfigs *psc;
- __GLXdisplayPrivate *priv;
-
- if (GetGLXPrivScreenConfig(dpy, screen, &priv, &psc) != Success) {
- return NULL;
- }
-
- if (!psc->effectiveGLXexts) {
- if (!psc->serverGLXexts) {
- psc->serverGLXexts =
- __glXQueryServerString(dpy, priv->majorOpcode, screen,
- GLX_EXTENSIONS);
- }
-
- __glXCalculateUsableExtensions(psc,
-#ifdef GLX_DIRECT_RENDERING
- (psc->driScreen != NULL),
-#else
- GL_FALSE,
-#endif
- priv->minorVersion);
- }
-
- return psc->effectiveGLXexts;
-}
-
-PUBLIC const char *
-glXGetClientString(Display * dpy, int name)
-{
- switch (name) {
- case GLX_VENDOR:
- return (__glXGLXClientVendorName);
- case GLX_VERSION:
- return (__glXGLXClientVersion);
- case GLX_EXTENSIONS:
- return (__glXGetClientExtensions());
- default:
- return NULL;
- }
-}
-
-PUBLIC const char *
-glXQueryServerString(Display * dpy, int screen, int name)
-{
- __GLXscreenConfigs *psc;
- __GLXdisplayPrivate *priv;
- const char **str;
-
-
- if (GetGLXPrivScreenConfig(dpy, screen, &priv, &psc) != Success) {
- return NULL;
- }
-
- switch (name) {
- case GLX_VENDOR:
- str = &priv->serverGLXvendor;
- break;
- case GLX_VERSION:
- str = &priv->serverGLXversion;
- break;
- case GLX_EXTENSIONS:
- str = &psc->serverGLXexts;
- break;
- default:
- return NULL;
- }
-
- if (*str == NULL) {
- *str = __glXQueryServerString(dpy, priv->majorOpcode, screen, name);
- }
-
- return *str;
-}
-
-void
-__glXClientInfo(Display * dpy, int opcode)
-{
- char *ext_str = __glXGetClientGLExtensionString();
- int size = strlen(ext_str) + 1;
-
-#ifdef USE_XCB
- xcb_connection_t *c = XGetXCBConnection(dpy);
- xcb_glx_client_info(c,
- GLX_MAJOR_VERSION, GLX_MINOR_VERSION, size, ext_str);
-#else
- xGLXClientInfoReq *req;
-
- /* Send the glXClientInfo request */
- LockDisplay(dpy);
- GetReq(GLXClientInfo, req);
- req->reqType = opcode;
- req->glxCode = X_GLXClientInfo;
- req->major = GLX_MAJOR_VERSION;
- req->minor = GLX_MINOR_VERSION;
-
- req->length += (size + 3) >> 2;
- req->numbytes = size;
- Data(dpy, ext_str, size);
-
- UnlockDisplay(dpy);
- SyncHandle();
-#endif /* USE_XCB */
-
- Xfree(ext_str);
-}
-
-
-/*
-** EXT_import_context
-*/
-
-PUBLIC Display *
-glXGetCurrentDisplay(void)
-{
- GLXContext gc = __glXGetCurrentContext();
- if (NULL == gc)
- return NULL;
- return gc->currentDpy;
-}
-
-PUBLIC
-GLX_ALIAS(Display *, glXGetCurrentDisplayEXT, (void), (),
- glXGetCurrentDisplay)
-
-/**
- * Used internally by libGL to send \c xGLXQueryContextinfoExtReq requests
- * to the X-server.
- *
- * \param dpy Display where \c ctx was created.
- * \param ctx Context to query.
- * \returns \c Success on success. \c GLX_BAD_CONTEXT if \c ctx is invalid,
- * or zero if the request failed due to internal problems (i.e.,
- * unable to allocate temporary memory, etc.)
- *
- * \note
- * This function dynamically determines whether to use the EXT_import_context
- * version of the protocol or the GLX 1.3 version of the protocol.
- */
-static int __glXQueryContextInfo(Display * dpy, GLXContext ctx)
-{
- __GLXdisplayPrivate *priv = __glXInitialize(dpy);
- xGLXQueryContextReply reply;
- CARD8 opcode;
- GLuint numValues;
- int retval;
-
- if (ctx == NULL) {
- return GLX_BAD_CONTEXT;
- }
- opcode = __glXSetupForCommand(dpy);
- if (!opcode) {
- return 0;
- }
-
- /* Send the glXQueryContextInfoEXT request */
- LockDisplay(dpy);
-
- if ((priv->majorVersion > 1) || (priv->minorVersion >= 3)) {
- xGLXQueryContextReq *req;
-
- GetReq(GLXQueryContext, req);
-
- req->reqType = opcode;
- req->glxCode = X_GLXQueryContext;
- req->context = (unsigned int) (ctx->xid);
- }
- else {
- xGLXVendorPrivateReq *vpreq;
- xGLXQueryContextInfoEXTReq *req;
-
- GetReqExtra(GLXVendorPrivate,
- sz_xGLXQueryContextInfoEXTReq - sz_xGLXVendorPrivateReq,
- vpreq);
- req = (xGLXQueryContextInfoEXTReq *) vpreq;
- req->reqType = opcode;
- req->glxCode = X_GLXVendorPrivateWithReply;
- req->vendorCode = X_GLXvop_QueryContextInfoEXT;
- req->context = (unsigned int) (ctx->xid);
- }
-
- _XReply(dpy, (xReply *) & reply, 0, False);
-
- numValues = reply.n;
- if (numValues == 0)
- retval = Success;
- else if (numValues > __GLX_MAX_CONTEXT_PROPS)
- retval = 0;
- else {
- int *propList, *pProp;
- int nPropListBytes;
- int i;
-
- nPropListBytes = numValues << 3;
- propList = (int *) Xmalloc(nPropListBytes);
- if (NULL == propList) {
- retval = 0;
- }
- else {
- _XRead(dpy, (char *) propList, nPropListBytes);
- pProp = propList;
- for (i = 0; i < numValues; i++) {
- switch (*pProp++) {
- case GLX_SHARE_CONTEXT_EXT:
- ctx->share_xid = *pProp++;
- break;
- case GLX_VISUAL_ID_EXT:
- ctx->mode =
- _gl_context_modes_find_visual(ctx->psc->visuals, *pProp++);
- break;
- case GLX_SCREEN:
- ctx->screen = *pProp++;
- break;
- case GLX_FBCONFIG_ID:
- ctx->mode =
- _gl_context_modes_find_fbconfig(ctx->psc->configs,
- *pProp++);
- break;
- case GLX_RENDER_TYPE:
- ctx->renderType = *pProp++;
- break;
- default:
- pProp++;
- continue;
- }
- }
- Xfree((char *) propList);
- retval = Success;
- }
- }
- UnlockDisplay(dpy);
- SyncHandle();
- return retval;
-}
-
-PUBLIC int
-glXQueryContext(Display * dpy, GLXContext ctx, int attribute, int *value)
-{
- int retVal;
-
- /* get the information from the server if we don't have it already */
-#ifdef GLX_DIRECT_RENDERING
- if (!ctx->driContext && (ctx->mode == NULL)) {
-#else
- if (ctx->mode == NULL) {
-#endif
- retVal = __glXQueryContextInfo(dpy, ctx);
- if (Success != retVal)
- return retVal;
- }
- switch (attribute) {
- case GLX_SHARE_CONTEXT_EXT:
- *value = (int) (ctx->share_xid);
- break;
- case GLX_VISUAL_ID_EXT:
- *value = ctx->mode ? ctx->mode->visualID : None;
- break;
- case GLX_SCREEN:
- *value = (int) (ctx->screen);
- break;
- case GLX_FBCONFIG_ID:
- *value = ctx->mode ? ctx->mode->fbconfigID : None;
- break;
- case GLX_RENDER_TYPE:
- *value = (int) (ctx->renderType);
- break;
- default:
- return GLX_BAD_ATTRIBUTE;
- }
- return Success;
-}
-
-PUBLIC
-GLX_ALIAS(int, glXQueryContextInfoEXT,
- (Display * dpy, GLXContext ctx, int attribute, int *value),
- (dpy, ctx, attribute, value), glXQueryContext)
-
-PUBLIC GLXContextID glXGetContextIDEXT(const GLXContext ctx)
-{
- return ctx->xid;
-}
-
-PUBLIC GLXContext
-glXImportContextEXT(Display * dpy, GLXContextID contextID)
-{
- GLXContext ctx;
-
- if (contextID == None) {
- return NULL;
- }
- if (__glXIsDirect(dpy, contextID)) {
- return NULL;
- }
-
- ctx = CreateContext(dpy, NULL, NULL, NULL, False, contextID, False, 0);
- if (NULL != ctx) {
- if (Success != __glXQueryContextInfo(dpy, ctx)) {
- return NULL;
- }
- }
- return ctx;
-}
-
-PUBLIC void
-glXFreeContextEXT(Display * dpy, GLXContext ctx)
-{
- DestroyContext(dpy, ctx);
-}
-
-
-
-/*
- * GLX 1.3 functions - these are just stubs for now!
- */
-
-PUBLIC GLXFBConfig *
-glXChooseFBConfig(Display * dpy, int screen,
- const int *attribList, int *nitems)
-{
- __GLcontextModes **config_list;
- int list_size;
-
-
- config_list = (__GLcontextModes **)
- glXGetFBConfigs(dpy, screen, &list_size);
-
- if ((config_list != NULL) && (list_size > 0) && (attribList != NULL)) {
- list_size = choose_visual(config_list, list_size, attribList, GL_TRUE);
- if (list_size == 0) {
- XFree(config_list);
- config_list = NULL;
- }
- }
-
- *nitems = list_size;
- return (GLXFBConfig *) config_list;
-}
-
-
-PUBLIC GLXContext
-glXCreateNewContext(Display * dpy, GLXFBConfig config,
- int renderType, GLXContext shareList, Bool allowDirect)
-{
- return CreateContext(dpy, NULL, (__GLcontextModes *) config, shareList,
- allowDirect, None, True, renderType);
-}
-
-
-PUBLIC GLXDrawable
-glXGetCurrentReadDrawable(void)
-{
- GLXContext gc = __glXGetCurrentContext();
- return gc->currentReadable;
-}
-
-
-PUBLIC GLXFBConfig *
-glXGetFBConfigs(Display * dpy, int screen, int *nelements)
-{
- __GLXdisplayPrivate *priv = __glXInitialize(dpy);
- __GLcontextModes **config = NULL;
- int i;
-
- *nelements = 0;
- if (priv && (priv->screenConfigs != NULL)
- && (screen >= 0) && (screen <= ScreenCount(dpy))
- && (priv->screenConfigs[screen].configs != NULL)
- && (priv->screenConfigs[screen].configs->fbconfigID != GLX_DONT_CARE)) {
- unsigned num_configs = 0;
- __GLcontextModes *modes;
-
-
- for (modes = priv->screenConfigs[screen].configs; modes != NULL;
- modes = modes->next) {
- if (modes->fbconfigID != GLX_DONT_CARE) {
- num_configs++;
- }
- }
-
- config = (__GLcontextModes **) Xmalloc(sizeof(__GLcontextModes *)
- * num_configs);
- if (config != NULL) {
- *nelements = num_configs;
- i = 0;
- for (modes = priv->screenConfigs[screen].configs; modes != NULL;
- modes = modes->next) {
- if (modes->fbconfigID != GLX_DONT_CARE) {
- config[i] = modes;
- i++;
- }
- }
- }
- }
- return (GLXFBConfig *) config;
-}
-
-
-PUBLIC int
-glXGetFBConfigAttrib(Display * dpy, GLXFBConfig config,
- int attribute, int *value)
-{
- __GLcontextModes *const modes = ValidateGLXFBConfig(dpy, config);
-
- return (modes != NULL)
- ? _gl_get_context_mode_data(modes, attribute, value)
- : GLXBadFBConfig;
-}
-
-
-PUBLIC XVisualInfo *
-glXGetVisualFromFBConfig(Display * dpy, GLXFBConfig config)
-{
- XVisualInfo visualTemplate;
- __GLcontextModes *fbconfig = (__GLcontextModes *) config;
- int count;
-
- /*
- ** Get a list of all visuals, return if list is empty
- */
- visualTemplate.visualid = fbconfig->visualID;
- return XGetVisualInfo(dpy, VisualIDMask, &visualTemplate, &count);
-}
-
-
-/*
-** GLX_SGI_swap_control
-*/
-static int
-__glXSwapIntervalSGI(int interval)
-{
- xGLXVendorPrivateReq *req;
- GLXContext gc = __glXGetCurrentContext();
- __GLXscreenConfigs *psc;
- Display *dpy;
- CARD32 *interval_ptr;
- CARD8 opcode;
-
- if (gc == NULL) {
- return GLX_BAD_CONTEXT;
- }
-
- if (interval <= 0) {
- return GLX_BAD_VALUE;
- }
-
-#ifdef __DRI_SWAP_CONTROL
- if (gc->driContext) {
- __GLXscreenConfigs * const psc = GetGLXScreenConfigs( gc->currentDpy,
- gc->screen );
- __GLXDRIdrawable *pdraw = GetGLXDRIDrawable(gc->currentDpy,
- gc->currentDrawable,
- NULL);
- if (psc->swapControl != NULL && pdraw != NULL) {
- psc->swapControl->setSwapInterval(pdraw->driDrawable, interval);
- return 0;
- }
- else if (pdraw == NULL) {
- return GLX_BAD_CONTEXT;
- }
- }
-#endif
- psc = GetGLXScreenConfigs( gc->currentDpy, gc->screen);
-
- if (gc->driContext && psc->driScreen && psc->driScreen->setSwapInterval) {
- __GLXDRIdrawable *pdraw = GetGLXDRIDrawable(gc->currentDpy,
- gc->currentDrawable,
- NULL);
- psc->driScreen->setSwapInterval(pdraw, interval);
- return 0;
- }
-
- dpy = gc->currentDpy;
- opcode = __glXSetupForCommand(dpy);
- if (!opcode) {
- return 0;
- }
-
- /* Send the glXSwapIntervalSGI request */
- LockDisplay(dpy);
- GetReqExtra(GLXVendorPrivate, sizeof(CARD32), req);
- req->reqType = opcode;
- req->glxCode = X_GLXVendorPrivate;
- req->vendorCode = X_GLXvop_SwapIntervalSGI;
- req->contextTag = gc->currentContextTag;
-
- interval_ptr = (CARD32 *) (req + 1);
- *interval_ptr = interval;
-
- UnlockDisplay(dpy);
- SyncHandle();
- XFlush(dpy);
-
- return 0;
-}
-
-
-/*
-** GLX_MESA_swap_control
-*/
-static int
-__glXSwapIntervalMESA(unsigned int interval)
-{
- GLXContext gc = __glXGetCurrentContext();
-
- if (interval < 0) {
- return GLX_BAD_VALUE;
- }
-
-#ifdef __DRI_SWAP_CONTROL
- if (gc != NULL && gc->driContext) {
- __GLXscreenConfigs *const psc = GetGLXScreenConfigs(gc->currentDpy,
- gc->screen);
-
- if ((psc != NULL) && (psc->driScreen != NULL)) {
- __GLXDRIdrawable *pdraw =
- GetGLXDRIDrawable(gc->currentDpy, gc->currentDrawable, NULL);
- if (psc->swapControl != NULL && pdraw != NULL) {
- psc->swapControl->setSwapInterval(pdraw->driDrawable, interval);
- return 0;
- }
- }
- }
-#endif
-
- if (gc != NULL && gc->driContext) {
- __GLXscreenConfigs *psc;
-
- psc = GetGLXScreenConfigs( gc->currentDpy, gc->screen);
- if (psc->driScreen && psc->driScreen->setSwapInterval) {
- __GLXDRIdrawable *pdraw = GetGLXDRIDrawable(gc->currentDpy,
- gc->currentDrawable, NULL);
- psc->driScreen->setSwapInterval(pdraw, interval);
- return 0;
- }
- }
-
- return GLX_BAD_CONTEXT;
-}
-
-
-static int
-__glXGetSwapIntervalMESA(void)
-{
-#ifdef __DRI_SWAP_CONTROL
- GLXContext gc = __glXGetCurrentContext();
-
- if (gc != NULL && gc->driContext) {
- __GLXscreenConfigs *const psc = GetGLXScreenConfigs(gc->currentDpy,
- gc->screen);
-
- if ((psc != NULL) && (psc->driScreen != NULL)) {
- __GLXDRIdrawable *pdraw =
- GetGLXDRIDrawable(gc->currentDpy, gc->currentDrawable, NULL);
- if (psc->swapControl != NULL && pdraw != NULL) {
- return psc->swapControl->getSwapInterval(pdraw->driDrawable);
- }
- }
- }
-#endif
- if (gc != NULL && gc->driContext) {
- __GLXscreenConfigs *psc;
-
- psc = GetGLXScreenConfigs( gc->currentDpy, gc->screen);
- if (psc->driScreen && psc->driScreen->getSwapInterval) {
- __GLXDRIdrawable *pdraw = GetGLXDRIDrawable(gc->currentDpy,
- gc->currentDrawable, NULL);
- return psc->driScreen->getSwapInterval(pdraw);
- }
- }
-
- return 0;
-}
-
-
-/*
-** GLX_MESA_swap_frame_usage
-*/
-
-static GLint
-__glXBeginFrameTrackingMESA(Display * dpy, GLXDrawable drawable)
-{
- int status = GLX_BAD_CONTEXT;
-#ifdef __DRI_FRAME_TRACKING
- int screen = 0;
- __GLXDRIdrawable *pdraw = GetGLXDRIDrawable(dpy, drawable, &screen);
- __GLXscreenConfigs *const psc = GetGLXScreenConfigs(dpy, screen);
-
- if (pdraw != NULL && psc->frameTracking != NULL)
- status = psc->frameTracking->frameTracking(pdraw->driDrawable, GL_TRUE);
-#else
- (void) dpy;
- (void) drawable;
-#endif
- return status;
-}
-
-
-static GLint
-__glXEndFrameTrackingMESA(Display * dpy, GLXDrawable drawable)
-{
- int status = GLX_BAD_CONTEXT;
-#ifdef __DRI_FRAME_TRACKING
- int screen = 0;
- __GLXDRIdrawable *pdraw = GetGLXDRIDrawable(dpy, drawable, &screen);
- __GLXscreenConfigs *psc = GetGLXScreenConfigs(dpy, screen);
-
- if (pdraw != NULL && psc->frameTracking != NULL)
- status = psc->frameTracking->frameTracking(pdraw->driDrawable,
- GL_FALSE);
-#else
- (void) dpy;
- (void) drawable;
-#endif
- return status;
-}
-
-
-static GLint
-__glXGetFrameUsageMESA(Display * dpy, GLXDrawable drawable, GLfloat * usage)
-{
- int status = GLX_BAD_CONTEXT;
-#ifdef __DRI_FRAME_TRACKING
- int screen = 0;
- __GLXDRIdrawable *const pdraw = GetGLXDRIDrawable(dpy, drawable, &screen);
- __GLXscreenConfigs *const psc = GetGLXScreenConfigs(dpy, screen);
-
- if (pdraw != NULL && psc->frameTracking != NULL) {
- int64_t sbc, missedFrames;
- float lastMissedUsage;
-
- status = psc->frameTracking->queryFrameTracking(pdraw->driDrawable,
- &sbc,
- &missedFrames,
- &lastMissedUsage,
- usage);
- }
-#else
- (void) dpy;
- (void) drawable;
- (void) usage;
-#endif
- return status;
-}
-
-
-static GLint
-__glXQueryFrameTrackingMESA(Display * dpy, GLXDrawable drawable,
- int64_t * sbc, int64_t * missedFrames,
- GLfloat * lastMissedUsage)
-{
- int status = GLX_BAD_CONTEXT;
-#ifdef __DRI_FRAME_TRACKING
- int screen = 0;
- __GLXDRIdrawable *pdraw = GetGLXDRIDrawable(dpy, drawable, &screen);
- __GLXscreenConfigs *const psc = GetGLXScreenConfigs(dpy, screen);
-
- if (pdraw != NULL && psc->frameTracking != NULL) {
- float usage;
-
- status = psc->frameTracking->queryFrameTracking(pdraw->driDrawable,
- sbc, missedFrames,
- lastMissedUsage,
- &usage);
- }
-#else
- (void) dpy;
- (void) drawable;
- (void) sbc;
- (void) missedFrames;
- (void) lastMissedUsage;
-#endif
- return status;
-}
-
-
-/*
-** GLX_SGI_video_sync
-*/
-static int
-__glXGetVideoSyncSGI(unsigned int *count)
-{
- int64_t ust, msc, sbc;
- int ret;
- GLXContext gc = __glXGetCurrentContext();
- __GLXscreenConfigs *psc;
- __GLXDRIdrawable *pdraw;
-
- if (!gc || !gc->driContext)
- return GLX_BAD_CONTEXT;
-
- psc = GetGLXScreenConfigs(gc->currentDpy, gc->screen);
- pdraw = GetGLXDRIDrawable(gc->currentDpy, gc->currentDrawable, NULL);
-
- /* FIXME: Looking at the GLX_SGI_video_sync spec in the extension registry,
- * FIXME: there should be a GLX encoding for this call. I can find no
- * FIXME: documentation for the GLX encoding.
- */
-#ifdef __DRI_MEDIA_STREAM_COUNTER
- if ( psc->msc && psc->driScreen ) {
- ret = (*psc->msc->getDrawableMSC)(psc->__driScreen,
- pdraw->driDrawable, &msc);
- *count = (unsigned) msc;
-
- return (ret == 0) ? 0 : GLX_BAD_CONTEXT;
- }
-#endif
- if (psc->driScreen && psc->driScreen->getDrawableMSC) {
- ret = psc->driScreen->getDrawableMSC(psc, pdraw, &ust, &msc, &sbc);
- *count = (unsigned) msc;
- return (ret == True) ? 0 : GLX_BAD_CONTEXT;
- }
-
- return GLX_BAD_CONTEXT;
-}
-
-static int
-__glXWaitVideoSyncSGI(int divisor, int remainder, unsigned int *count)
-{
- GLXContext gc = __glXGetCurrentContext();
- __GLXscreenConfigs *psc;
- __GLXDRIdrawable *pdraw;
- int64_t ust, msc, sbc;
- int ret;
-
- if (divisor <= 0 || remainder < 0)
- return GLX_BAD_VALUE;
-
- if (!gc || !gc->driContext)
- return GLX_BAD_CONTEXT;
-
- psc = GetGLXScreenConfigs( gc->currentDpy, gc->screen);
- pdraw = GetGLXDRIDrawable(gc->currentDpy, gc->currentDrawable, NULL);
-
-#ifdef __DRI_MEDIA_STREAM_COUNTER
- if (psc->msc != NULL && psc->driScreen ) {
- ret = (*psc->msc->waitForMSC)(pdraw->driDrawable, 0,
- divisor, remainder, &msc, &sbc);
- *count = (unsigned) msc;
- return (ret == 0) ? 0 : GLX_BAD_CONTEXT;
- }
-#endif
- if (psc->driScreen && psc->driScreen->waitForMSC) {
- ret = psc->driScreen->waitForMSC(pdraw, 0, divisor, remainder, &ust, &msc,
- &sbc);
- *count = (unsigned) msc;
- return (ret == True) ? 0 : GLX_BAD_CONTEXT;
- }
-
- return GLX_BAD_CONTEXT;
-}
-
-
-/*
-** GLX_SGIX_fbconfig
-** Many of these functions are aliased to GLX 1.3 entry points in the
-** GLX_functions table.
-*/
-
-PUBLIC
-GLX_ALIAS(int, glXGetFBConfigAttribSGIX,
- (Display * dpy, GLXFBConfigSGIX config, int attribute, int *value),
- (dpy, config, attribute, value), glXGetFBConfigAttrib)
-
-PUBLIC GLX_ALIAS(GLXFBConfigSGIX *, glXChooseFBConfigSGIX,
- (Display * dpy, int screen, int *attrib_list,
- int *nelements), (dpy, screen, attrib_list, nelements),
- glXChooseFBConfig)
-
-PUBLIC GLX_ALIAS(XVisualInfo *, glXGetVisualFromFBConfigSGIX,
- (Display * dpy, GLXFBConfigSGIX config),
- (dpy, config), glXGetVisualFromFBConfig)
-
-PUBLIC GLXPixmap
-glXCreateGLXPixmapWithConfigSGIX(Display * dpy,
- GLXFBConfigSGIX config,
- Pixmap pixmap)
-{
- xGLXVendorPrivateWithReplyReq *vpreq;
- xGLXCreateGLXPixmapWithConfigSGIXReq *req;
- GLXPixmap xid = None;
- CARD8 opcode;
- const __GLcontextModes *const fbconfig = (__GLcontextModes *) config;
- __GLXscreenConfigs *psc;
-
-
- if ((dpy == NULL) || (config == NULL)) {
- return None;
- }
-
- psc = GetGLXScreenConfigs(dpy, fbconfig->screen);
- if ((psc != NULL)
- && __glXExtensionBitIsEnabled(psc, SGIX_fbconfig_bit)) {
- opcode = __glXSetupForCommand(dpy);
- if (!opcode) {
- return None;
- }
-
- /* Send the glXCreateGLXPixmapWithConfigSGIX request */
- LockDisplay(dpy);
- GetReqExtra(GLXVendorPrivateWithReply,
- sz_xGLXCreateGLXPixmapWithConfigSGIXReq -
- sz_xGLXVendorPrivateWithReplyReq, vpreq);
- req = (xGLXCreateGLXPixmapWithConfigSGIXReq *) vpreq;
- req->reqType = opcode;
- req->glxCode = X_GLXVendorPrivateWithReply;
- req->vendorCode = X_GLXvop_CreateGLXPixmapWithConfigSGIX;
- req->screen = fbconfig->screen;
- req->fbconfig = fbconfig->fbconfigID;
- req->pixmap = pixmap;
- req->glxpixmap = xid = XAllocID(dpy);
- UnlockDisplay(dpy);
- SyncHandle();
- }
-
- return xid;
-}
-
-PUBLIC GLXContext
-glXCreateContextWithConfigSGIX(Display * dpy,
- GLXFBConfigSGIX config, int renderType,
- GLXContext shareList, Bool allowDirect)
-{
- GLXContext gc = NULL;
- const __GLcontextModes *const fbconfig = (__GLcontextModes *) config;
- __GLXscreenConfigs *psc;
-
-
- if ((dpy == NULL) || (config == NULL)) {
- return None;
- }
-
- psc = GetGLXScreenConfigs(dpy, fbconfig->screen);
- if ((psc != NULL)
- && __glXExtensionBitIsEnabled(psc, SGIX_fbconfig_bit)) {
- gc = CreateContext(dpy, NULL, (__GLcontextModes *) config, shareList,
- allowDirect, None, False, renderType);
- }
-
- return gc;
-}
-
-
-PUBLIC GLXFBConfigSGIX
-glXGetFBConfigFromVisualSGIX(Display * dpy, XVisualInfo * vis)
-{
- __GLXdisplayPrivate *priv;
- __GLXscreenConfigs *psc = NULL;
-
- if ((GetGLXPrivScreenConfig(dpy, vis->screen, &priv, &psc) != Success)
- && __glXExtensionBitIsEnabled(psc, SGIX_fbconfig_bit)
- && (psc->configs->fbconfigID != GLX_DONT_CARE)) {
- return (GLXFBConfigSGIX) _gl_context_modes_find_visual(psc->configs,
- vis->visualid);
- }
-
- return NULL;
-}
-
-
-/*
-** GLX_SGIX_swap_group
-*/
-static void
-__glXJoinSwapGroupSGIX(Display * dpy, GLXDrawable drawable,
- GLXDrawable member)
-{
- (void) dpy;
- (void) drawable;
- (void) member;
-}
-
-
-/*
-** GLX_SGIX_swap_barrier
-*/
-static void
-__glXBindSwapBarrierSGIX(Display * dpy, GLXDrawable drawable, int barrier)
-{
- (void) dpy;
- (void) drawable;
- (void) barrier;
-}
-
-static Bool
-__glXQueryMaxSwapBarriersSGIX(Display * dpy, int screen, int *max)
-{
- (void) dpy;
- (void) screen;
- (void) max;
- return False;
-}
-
-
-/*
-** GLX_OML_sync_control
-*/
-static Bool
-__glXGetSyncValuesOML(Display * dpy, GLXDrawable drawable,
- int64_t * ust, int64_t * msc, int64_t * sbc)
-{
- __GLXdisplayPrivate * const priv = __glXInitialize(dpy);
- int i, ret;
- __GLXDRIdrawable *pdraw;
- __GLXscreenConfigs *psc;
-
- if (!priv)
- return False;
-
- pdraw = GetGLXDRIDrawable(dpy, drawable, &i);
- psc = &priv->screenConfigs[i];
-
-#if defined(__DRI_SWAP_BUFFER_COUNTER) && defined(__DRI_MEDIA_STREAM_COUNTER)
- if (pdraw && psc->sbc && psc->sbc)
- return ( (pdraw && psc->sbc && psc->msc)
- && ((*psc->msc->getMSC)(psc->driScreen, msc) == 0)
- && ((*psc->sbc->getSBC)(pdraw->driDrawable, sbc) == 0)
- && (__glXGetUST(ust) == 0) );
-#endif
- if (pdraw && psc && psc->driScreen && psc->driScreen->getDrawableMSC) {
- ret = psc->driScreen->getDrawableMSC(psc, pdraw, ust, msc, sbc);
- return ret;
- }
-
- return False;
-}
-
-#ifdef GLX_DIRECT_RENDERING
-_X_HIDDEN GLboolean
-__driGetMscRateOML(__DRIdrawable * draw,
- int32_t * numerator, int32_t * denominator, void *private)
-{
-#ifdef XF86VIDMODE
- __GLXscreenConfigs *psc;
- XF86VidModeModeLine mode_line;
- int dot_clock;
- int i;
- __GLXDRIdrawable *glxDraw = private;
-
- psc = glxDraw->psc;
- if (XF86VidModeQueryVersion(psc->dpy, &i, &i) &&
- XF86VidModeGetModeLine(psc->dpy, psc->scr, &dot_clock, &mode_line)) {
- unsigned n = dot_clock * 1000;
- unsigned d = mode_line.vtotal * mode_line.htotal;
-
-# define V_INTERLACE 0x010
-# define V_DBLSCAN 0x020
-
- if (mode_line.flags & V_INTERLACE)
- n *= 2;
- else if (mode_line.flags & V_DBLSCAN)
- d *= 2;
-
- /* The OML_sync_control spec requires that if the refresh rate is a
- * whole number, that the returned numerator be equal to the refresh
- * rate and the denominator be 1.
- */
-
- if (n % d == 0) {
- n /= d;
- d = 1;
- }
- else {
- static const unsigned f[] = { 13, 11, 7, 5, 3, 2, 0 };
-
- /* This is a poor man's way to reduce a fraction. It's far from
- * perfect, but it will work well enough for this situation.
- */
-
- for (i = 0; f[i] != 0; i++) {
- while (n % f[i] == 0 && d % f[i] == 0) {
- d /= f[i];
- n /= f[i];
- }
- }
- }
-
- *numerator = n;
- *denominator = d;
-
- return True;
- }
- else
- return False;
-#else
- return False;
-#endif
-}
-#endif
-
-/**
- * Determine the refresh rate of the specified drawable and display.
- *
- * \param dpy Display whose refresh rate is to be determined.
- * \param drawable Drawable whose refresh rate is to be determined.
- * \param numerator Numerator of the refresh rate.
- * \param demoninator Denominator of the refresh rate.
- * \return If the refresh rate for the specified display and drawable could
- * be calculated, True is returned. Otherwise False is returned.
- *
- * \note This function is implemented entirely client-side. A lot of other
- * functionality is required to export GLX_OML_sync_control, so on
- * XFree86 this function can be called for direct-rendering contexts
- * when GLX_OML_sync_control appears in the client extension string.
- */
-
-_X_HIDDEN GLboolean
-__glXGetMscRateOML(Display * dpy, GLXDrawable drawable,
- int32_t * numerator, int32_t * denominator)
-{
-#if defined( GLX_DIRECT_RENDERING ) && defined( XF86VIDMODE )
- __GLXDRIdrawable *draw = GetGLXDRIDrawable(dpy, drawable, NULL);
-
- if (draw == NULL)
- return False;
-
- return __driGetMscRateOML(draw->driDrawable, numerator, denominator, draw);
-#else
- (void) dpy;
- (void) drawable;
- (void) numerator;
- (void) denominator;
-#endif
- return False;
-}
-
-
-static int64_t
-__glXSwapBuffersMscOML(Display * dpy, GLXDrawable drawable,
- int64_t target_msc, int64_t divisor, int64_t remainder)
-{
- GLXContext gc = __glXGetCurrentContext();
- int screen;
- __GLXDRIdrawable *pdraw = GetGLXDRIDrawable(dpy, drawable, &screen);
- __GLXscreenConfigs *const psc = GetGLXScreenConfigs(dpy, screen);
-
- if (!pdraw || !gc->driContext) /* no GLX for this */
- return -1;
-
- /* The OML_sync_control spec says these should "generate a GLX_BAD_VALUE
- * error", but it also says "It [glXSwapBuffersMscOML] will return a value
- * of -1 if the function failed because of errors detected in the input
- * parameters"
- */
- if (divisor < 0 || remainder < 0 || target_msc < 0)
- return -1;
- if (divisor > 0 && remainder >= divisor)
- return -1;
-
-#ifdef __DRI_SWAP_BUFFER_COUNTER
- if (psc->counters != NULL)
- return (*psc->sbc->swapBuffersMSC)(pdraw->driDrawable, target_msc,
- divisor, remainder);
-#endif
-
-#ifdef GLX_DIRECT_RENDERING
- if (psc->driScreen && psc->driScreen->swapBuffers)
- return (*psc->driScreen->swapBuffers)(pdraw, target_msc, divisor,
- remainder);
-#endif
-
- return -1;
-}
-
-
-static Bool
-__glXWaitForMscOML(Display * dpy, GLXDrawable drawable,
- int64_t target_msc, int64_t divisor,
- int64_t remainder, int64_t * ust,
- int64_t * msc, int64_t * sbc)
-{
- int screen;
- __GLXDRIdrawable *pdraw = GetGLXDRIDrawable(dpy, drawable, &screen);
- __GLXscreenConfigs * const psc = GetGLXScreenConfigs( dpy, screen );
- int ret;
-
- fprintf(stderr, "waitmsc: %lld, %lld, %lld\n", target_msc, divisor,
- remainder);
-
- /* The OML_sync_control spec says these should "generate a GLX_BAD_VALUE
- * error", but the return type in the spec is Bool.
- */
- if (divisor < 0 || remainder < 0 || target_msc < 0)
- return False;
- if (divisor > 0 && remainder >= divisor)
- return False;
-
-#ifdef __DRI_MEDIA_STREAM_COUNTER
- if (pdraw != NULL && psc->msc != NULL) {
- fprintf(stderr, "dri1 msc\n");
- ret = (*psc->msc->waitForMSC) (pdraw->driDrawable, target_msc,
- divisor, remainder, msc, sbc);
-
- /* __glXGetUST returns zero on success and non-zero on failure.
- * This function returns True on success and False on failure.
- */
- return ((ret == 0) && (__glXGetUST(ust) == 0));
- }
-#endif
- if (pdraw && psc->driScreen && psc->driScreen->waitForMSC) {
- ret = psc->driScreen->waitForMSC(pdraw, target_msc, divisor, remainder,
- ust, msc, sbc);
- return ret;
- }
-
- fprintf(stderr, "no drawable??\n");
- return False;
-}
-
-
-static Bool
-__glXWaitForSbcOML(Display * dpy, GLXDrawable drawable,
- int64_t target_sbc, int64_t * ust,
- int64_t * msc, int64_t * sbc)
-{
- int screen;
- __GLXDRIdrawable *pdraw = GetGLXDRIDrawable(dpy, drawable, &screen);
- __GLXscreenConfigs *const psc = GetGLXScreenConfigs(dpy, screen);
- int ret;
-
- /* The OML_sync_control spec says this should "generate a GLX_BAD_VALUE
- * error", but the return type in the spec is Bool.
- */
- if (target_sbc < 0)
- return False;
-#ifdef __DRI_SWAP_BUFFER_COUNTER
- if (pdraw != NULL && psc->sbc != NULL) {
- ret =
- (*psc->sbc->waitForSBC) (pdraw->driDrawable, target_sbc, msc, sbc);
-
- /* __glXGetUST returns zero on success and non-zero on failure.
- * This function returns True on success and False on failure.
- */
- return ((ret == 0) && (__glXGetUST(ust) == 0));
- }
-#endif
- if (pdraw && psc->driScreen && psc->driScreen->waitForMSC) {
- ret = psc->driScreen->waitForSBC(pdraw, target_sbc, ust, msc, sbc);
- return ret;
- }
- return False;
-}
-
-
-/**
- * GLX_MESA_allocate_memory
- */
-/*@{*/
-
-PUBLIC void *
-glXAllocateMemoryMESA(Display * dpy, int scrn,
- size_t size, float readFreq,
- float writeFreq, float priority)
-{
-#ifdef __DRI_ALLOCATE
- __GLXscreenConfigs *const psc = GetGLXScreenConfigs(dpy, scrn);
-
- if (psc && psc->allocate)
- return (*psc->allocate->allocateMemory) (psc->__driScreen, size,
- readFreq, writeFreq, priority);
-
-#else
- (void) dpy;
- (void) scrn;
- (void) size;
- (void) readFreq;
- (void) writeFreq;
- (void) priority;
-#endif /* __DRI_ALLOCATE */
-
- return NULL;
-}
-
-
-PUBLIC void
-glXFreeMemoryMESA(Display * dpy, int scrn, void *pointer)
-{
-#ifdef __DRI_ALLOCATE
- __GLXscreenConfigs *const psc = GetGLXScreenConfigs(dpy, scrn);
-
- if (psc && psc->allocate)
- (*psc->allocate->freeMemory) (psc->__driScreen, pointer);
-
-#else
- (void) dpy;
- (void) scrn;
- (void) pointer;
-#endif /* __DRI_ALLOCATE */
-}
-
-
-PUBLIC GLuint
-glXGetMemoryOffsetMESA(Display * dpy, int scrn, const void *pointer)
-{
-#ifdef __DRI_ALLOCATE
- __GLXscreenConfigs *const psc = GetGLXScreenConfigs(dpy, scrn);
-
- if (psc && psc->allocate)
- return (*psc->allocate->memoryOffset) (psc->__driScreen, pointer);
-
-#else
- (void) dpy;
- (void) scrn;
- (void) pointer;
-#endif /* GLX_DIRECT_RENDERING */
-
- return ~0L;
-}
-
-/*@}*/
-
-
-/**
- * Mesa extension stubs. These will help reduce portability problems.
- */
-/*@{*/
-
-/**
- * Release all buffers associated with the specified GLX drawable.
- *
- * \todo
- * This function was intended for stand-alone Mesa. The issue there is that
- * the library doesn't get any notification when a window is closed. In
- * DRI there is a similar but slightly different issue. When GLX 1.3 is
- * supported, there are 3 different functions to destroy a drawable. It
- * should be possible to create GLX protocol (or have it determine which
- * protocol to use based on the type of the drawable) to have one function
- * do the work of 3. For the direct-rendering case, this function could
- * just call the driver's \c __DRIdrawableRec::destroyDrawable function.
- * This would reduce the frequency with which \c __driGarbageCollectDrawables
- * would need to be used. This really should be done as part of the new DRI
- * interface work.
- *
- * \sa http://oss.sgi.com/projects/ogl-sample/registry/MESA/release_buffers.txt
- * __driGarbageCollectDrawables
- * glXDestroyGLXPixmap
- * glXDestroyPbuffer glXDestroyPixmap glXDestroyWindow
- * glXDestroyGLXPbufferSGIX glXDestroyGLXVideoSourceSGIX
- */
-static Bool
-__glXReleaseBuffersMESA(Display * dpy, GLXDrawable d)
-{
- (void) dpy;
- (void) d;
- return False;
-}
-
-
-PUBLIC GLXPixmap
-glXCreateGLXPixmapMESA(Display * dpy, XVisualInfo * visual,
- Pixmap pixmap, Colormap cmap)
-{
- (void) dpy;
- (void) visual;
- (void) pixmap;
- (void) cmap;
- return 0;
-}
-
-/*@}*/
-
-
-/**
- * GLX_MESA_copy_sub_buffer
- */
-#define X_GLXvop_CopySubBufferMESA 5154 /* temporary */
-static void
-__glXCopySubBufferMESA(Display * dpy, GLXDrawable drawable,
- int x, int y, int width, int height)
-{
- xGLXVendorPrivateReq *req;
- GLXContext gc;
- GLXContextTag tag;
- CARD32 *drawable_ptr;
- INT32 *x_ptr, *y_ptr, *w_ptr, *h_ptr;
- CARD8 opcode;
-
-#ifdef __DRI_COPY_SUB_BUFFER
- int screen;
- __GLXDRIdrawable *pdraw = GetGLXDRIDrawable(dpy, drawable, &screen);
- if (pdraw != NULL) {
- __GLXscreenConfigs *const psc = GetGLXScreenConfigs(dpy, screen);
- if (psc->driScreen->copySubBuffer != NULL) {
- glFlush();
- (*psc->driScreen->copySubBuffer) (pdraw, x, y, width, height);
- }
-
- return;
- }
-#endif
-
- opcode = __glXSetupForCommand(dpy);
- if (!opcode)
- return;
-
- /*
- ** The calling thread may or may not have a current context. If it
- ** does, send the context tag so the server can do a flush.
- */
- gc = __glXGetCurrentContext();
- if ((gc != NULL) && (dpy == gc->currentDpy) &&
- ((drawable == gc->currentDrawable) ||
- (drawable == gc->currentReadable))) {
- tag = gc->currentContextTag;
- }
- else {
- tag = 0;
- }
-
- LockDisplay(dpy);
- GetReqExtra(GLXVendorPrivate, sizeof(CARD32) + sizeof(INT32) * 4, req);
- req->reqType = opcode;
- req->glxCode = X_GLXVendorPrivate;
- req->vendorCode = X_GLXvop_CopySubBufferMESA;
- req->contextTag = tag;
-
- drawable_ptr = (CARD32 *) (req + 1);
- x_ptr = (INT32 *) (drawable_ptr + 1);
- y_ptr = (INT32 *) (drawable_ptr + 2);
- w_ptr = (INT32 *) (drawable_ptr + 3);
- h_ptr = (INT32 *) (drawable_ptr + 4);
-
- *drawable_ptr = drawable;
- *x_ptr = x;
- *y_ptr = y;
- *w_ptr = width;
- *h_ptr = height;
-
- UnlockDisplay(dpy);
- SyncHandle();
-}
-
-
-/**
- * GLX_EXT_texture_from_pixmap
- */
-/*@{*/
-static void
-__glXBindTexImageEXT(Display * dpy,
- GLXDrawable drawable, int buffer, const int *attrib_list)
-{
- xGLXVendorPrivateReq *req;
- GLXContext gc = __glXGetCurrentContext();
- CARD32 *drawable_ptr;
- INT32 *buffer_ptr;
- CARD32 *num_attrib_ptr;
- CARD32 *attrib_ptr;
- CARD8 opcode;
- unsigned int i;
-
- if (gc == NULL)
- return;
-
- i = 0;
- if (attrib_list) {
- while (attrib_list[i * 2] != None)
- i++;
- }
-
-#ifdef GLX_DIRECT_RENDERING
- if (gc->driContext) {
- __GLXDRIdrawable *pdraw = GetGLXDRIDrawable(dpy, drawable, NULL);
-
- if (pdraw != NULL) {
- if (pdraw->psc->texBuffer->base.version >= 2 &&
- pdraw->psc->texBuffer->setTexBuffer2 != NULL) {
- (*pdraw->psc->texBuffer->setTexBuffer2) (gc->__driContext,
- pdraw->textureTarget,
- pdraw->textureFormat,
- pdraw->driDrawable);
- }
- else {
- (*pdraw->psc->texBuffer->setTexBuffer) (gc->__driContext,
- pdraw->textureTarget,
- pdraw->driDrawable);
- }
- }
- return;
- }
-#endif
-
- opcode = __glXSetupForCommand(dpy);
- if (!opcode)
- return;
-
- LockDisplay(dpy);
- GetReqExtra(GLXVendorPrivate, 12 + 8 * i, req);
- req->reqType = opcode;
- req->glxCode = X_GLXVendorPrivate;
- req->vendorCode = X_GLXvop_BindTexImageEXT;
- req->contextTag = gc->currentContextTag;
-
- drawable_ptr = (CARD32 *) (req + 1);
- buffer_ptr = (INT32 *) (drawable_ptr + 1);
- num_attrib_ptr = (CARD32 *) (buffer_ptr + 1);
- attrib_ptr = (CARD32 *) (num_attrib_ptr + 1);
-
- *drawable_ptr = drawable;
- *buffer_ptr = buffer;
- *num_attrib_ptr = (CARD32) i;
-
- i = 0;
- if (attrib_list) {
- while (attrib_list[i * 2] != None) {
- *attrib_ptr++ = (CARD32) attrib_list[i * 2 + 0];
- *attrib_ptr++ = (CARD32) attrib_list[i * 2 + 1];
- i++;
- }
- }
-
- UnlockDisplay(dpy);
- SyncHandle();
-}
-
-static void
-__glXReleaseTexImageEXT(Display * dpy, GLXDrawable drawable, int buffer)
-{
- xGLXVendorPrivateReq *req;
- GLXContext gc = __glXGetCurrentContext();
- CARD32 *drawable_ptr;
- INT32 *buffer_ptr;
- CARD8 opcode;
-
- if (gc == NULL)
- return;
-
-#ifdef GLX_DIRECT_RENDERING
- if (gc->driContext)
- return;
-#endif
-
- opcode = __glXSetupForCommand(dpy);
- if (!opcode)
- return;
-
- LockDisplay(dpy);
- GetReqExtra(GLXVendorPrivate, sizeof(CARD32) + sizeof(INT32), req);
- req->reqType = opcode;
- req->glxCode = X_GLXVendorPrivate;
- req->vendorCode = X_GLXvop_ReleaseTexImageEXT;
- req->contextTag = gc->currentContextTag;
-
- drawable_ptr = (CARD32 *) (req + 1);
- buffer_ptr = (INT32 *) (drawable_ptr + 1);
-
- *drawable_ptr = drawable;
- *buffer_ptr = buffer;
-
- UnlockDisplay(dpy);
- SyncHandle();
-}
-
-/*@}*/
-
-/**
- * \c strdup is actually not a standard ANSI C or POSIX routine.
- * Irix will not define it if ANSI mode is in effect.
- *
- * \sa strdup
- */
-_X_HIDDEN char *
-__glXstrdup(const char *str)
-{
- char *copy;
- copy = (char *) Xmalloc(strlen(str) + 1);
- if (!copy)
- return NULL;
- strcpy(copy, str);
- return copy;
-}
-
-/*
-** glXGetProcAddress support
-*/
-
-struct name_address_pair
-{
- const char *Name;
- GLvoid *Address;
-};
-
-#define GLX_FUNCTION(f) { # f, (GLvoid *) f }
-#define GLX_FUNCTION2(n,f) { # n, (GLvoid *) f }
-
-static const struct name_address_pair GLX_functions[] = {
- /*** GLX_VERSION_1_0 ***/
- GLX_FUNCTION(glXChooseVisual),
- GLX_FUNCTION(glXCopyContext),
- GLX_FUNCTION(glXCreateContext),
- GLX_FUNCTION(glXCreateGLXPixmap),
- GLX_FUNCTION(glXDestroyContext),
- GLX_FUNCTION(glXDestroyGLXPixmap),
- GLX_FUNCTION(glXGetConfig),
- GLX_FUNCTION(glXGetCurrentContext),
- GLX_FUNCTION(glXGetCurrentDrawable),
- GLX_FUNCTION(glXIsDirect),
- GLX_FUNCTION(glXMakeCurrent),
- GLX_FUNCTION(glXQueryExtension),
- GLX_FUNCTION(glXQueryVersion),
- GLX_FUNCTION(glXSwapBuffers),
- GLX_FUNCTION(glXUseXFont),
- GLX_FUNCTION(glXWaitGL),
- GLX_FUNCTION(glXWaitX),
-
- /*** GLX_VERSION_1_1 ***/
- GLX_FUNCTION(glXGetClientString),
- GLX_FUNCTION(glXQueryExtensionsString),
- GLX_FUNCTION(glXQueryServerString),
-
- /*** GLX_VERSION_1_2 ***/
- GLX_FUNCTION(glXGetCurrentDisplay),
-
- /*** GLX_VERSION_1_3 ***/
- GLX_FUNCTION(glXChooseFBConfig),
- GLX_FUNCTION(glXCreateNewContext),
- GLX_FUNCTION(glXCreatePbuffer),
- GLX_FUNCTION(glXCreatePixmap),
- GLX_FUNCTION(glXCreateWindow),
- GLX_FUNCTION(glXDestroyPbuffer),
- GLX_FUNCTION(glXDestroyPixmap),
- GLX_FUNCTION(glXDestroyWindow),
- GLX_FUNCTION(glXGetCurrentReadDrawable),
- GLX_FUNCTION(glXGetFBConfigAttrib),
- GLX_FUNCTION(glXGetFBConfigs),
- GLX_FUNCTION(glXGetSelectedEvent),
- GLX_FUNCTION(glXGetVisualFromFBConfig),
- GLX_FUNCTION(glXMakeContextCurrent),
- GLX_FUNCTION(glXQueryContext),
- GLX_FUNCTION(glXQueryDrawable),
- GLX_FUNCTION(glXSelectEvent),
-
- /*** GLX_SGI_swap_control ***/
- GLX_FUNCTION2(glXSwapIntervalSGI, __glXSwapIntervalSGI),
-
- /*** GLX_SGI_video_sync ***/
- GLX_FUNCTION2(glXGetVideoSyncSGI, __glXGetVideoSyncSGI),
- GLX_FUNCTION2(glXWaitVideoSyncSGI, __glXWaitVideoSyncSGI),
-
- /*** GLX_SGI_make_current_read ***/
- GLX_FUNCTION2(glXMakeCurrentReadSGI, glXMakeContextCurrent),
- GLX_FUNCTION2(glXGetCurrentReadDrawableSGI, glXGetCurrentReadDrawable),
-
- /*** GLX_EXT_import_context ***/
- GLX_FUNCTION(glXFreeContextEXT),
- GLX_FUNCTION(glXGetContextIDEXT),
- GLX_FUNCTION2(glXGetCurrentDisplayEXT, glXGetCurrentDisplay),
- GLX_FUNCTION(glXImportContextEXT),
- GLX_FUNCTION2(glXQueryContextInfoEXT, glXQueryContext),
-
- /*** GLX_SGIX_fbconfig ***/
- GLX_FUNCTION2(glXGetFBConfigAttribSGIX, glXGetFBConfigAttrib),
- GLX_FUNCTION2(glXChooseFBConfigSGIX, glXChooseFBConfig),
- GLX_FUNCTION(glXCreateGLXPixmapWithConfigSGIX),
- GLX_FUNCTION(glXCreateContextWithConfigSGIX),
- GLX_FUNCTION2(glXGetVisualFromFBConfigSGIX, glXGetVisualFromFBConfig),
- GLX_FUNCTION(glXGetFBConfigFromVisualSGIX),
-
- /*** GLX_SGIX_pbuffer ***/
- GLX_FUNCTION(glXCreateGLXPbufferSGIX),
- GLX_FUNCTION(glXDestroyGLXPbufferSGIX),
- GLX_FUNCTION(glXQueryGLXPbufferSGIX),
- GLX_FUNCTION(glXSelectEventSGIX),
- GLX_FUNCTION(glXGetSelectedEventSGIX),
-
- /*** GLX_SGIX_swap_group ***/
- GLX_FUNCTION2(glXJoinSwapGroupSGIX, __glXJoinSwapGroupSGIX),
-
- /*** GLX_SGIX_swap_barrier ***/
- GLX_FUNCTION2(glXBindSwapBarrierSGIX, __glXBindSwapBarrierSGIX),
- GLX_FUNCTION2(glXQueryMaxSwapBarriersSGIX, __glXQueryMaxSwapBarriersSGIX),
-
- /*** GLX_MESA_allocate_memory ***/
- GLX_FUNCTION(glXAllocateMemoryMESA),
- GLX_FUNCTION(glXFreeMemoryMESA),
- GLX_FUNCTION(glXGetMemoryOffsetMESA),
-
- /*** GLX_MESA_copy_sub_buffer ***/
- GLX_FUNCTION2(glXCopySubBufferMESA, __glXCopySubBufferMESA),
-
- /*** GLX_MESA_pixmap_colormap ***/
- GLX_FUNCTION(glXCreateGLXPixmapMESA),
-
- /*** GLX_MESA_release_buffers ***/
- GLX_FUNCTION2(glXReleaseBuffersMESA, __glXReleaseBuffersMESA),
-
- /*** GLX_MESA_swap_control ***/
- GLX_FUNCTION2(glXSwapIntervalMESA, __glXSwapIntervalMESA),
- GLX_FUNCTION2(glXGetSwapIntervalMESA, __glXGetSwapIntervalMESA),
-
- /*** GLX_MESA_swap_frame_usage ***/
- GLX_FUNCTION2(glXBeginFrameTrackingMESA, __glXBeginFrameTrackingMESA),
- GLX_FUNCTION2(glXEndFrameTrackingMESA, __glXEndFrameTrackingMESA),
- GLX_FUNCTION2(glXGetFrameUsageMESA, __glXGetFrameUsageMESA),
- GLX_FUNCTION2(glXQueryFrameTrackingMESA, __glXQueryFrameTrackingMESA),
-
- /*** GLX_ARB_get_proc_address ***/
- GLX_FUNCTION(glXGetProcAddressARB),
-
- /*** GLX 1.4 ***/
- GLX_FUNCTION2(glXGetProcAddress, glXGetProcAddressARB),
-
- /*** GLX_OML_sync_control ***/
- GLX_FUNCTION2(glXWaitForSbcOML, __glXWaitForSbcOML),
- GLX_FUNCTION2(glXWaitForMscOML, __glXWaitForMscOML),
- GLX_FUNCTION2(glXSwapBuffersMscOML, __glXSwapBuffersMscOML),
- GLX_FUNCTION2(glXGetMscRateOML, __glXGetMscRateOML),
- GLX_FUNCTION2(glXGetSyncValuesOML, __glXGetSyncValuesOML),
-
- /*** GLX_EXT_texture_from_pixmap ***/
- GLX_FUNCTION2(glXBindTexImageEXT, __glXBindTexImageEXT),
- GLX_FUNCTION2(glXReleaseTexImageEXT, __glXReleaseTexImageEXT),
-
-#ifdef GLX_DIRECT_RENDERING
- /*** DRI configuration ***/
- GLX_FUNCTION(glXGetScreenDriver),
- GLX_FUNCTION(glXGetDriverConfig),
-#endif
-
- {NULL, NULL} /* end of list */
-};
-
-
-static const GLvoid *
-get_glx_proc_address(const char *funcName)
-{
- GLuint i;
-
- /* try static functions */
- for (i = 0; GLX_functions[i].Name; i++) {
- if (strcmp(GLX_functions[i].Name, funcName) == 0)
- return GLX_functions[i].Address;
- }
-
- return NULL;
-}
-
-
-/**
- * Get the address of a named GL function. This is the pre-GLX 1.4 name for
- * \c glXGetProcAddress.
- *
- * \param procName Name of a GL or GLX function.
- * \returns A pointer to the named function
- *
- * \sa glXGetProcAddress
- */
-PUBLIC void (*glXGetProcAddressARB(const GLubyte * procName)) (void)
-{
- typedef void (*gl_function) (void);
- gl_function f;
-
-
- /* Search the table of GLX and internal functions first. If that
- * fails and the supplied name could be a valid core GL name, try
- * searching the core GL function table. This check is done to prevent
- * DRI based drivers from searching the core GL function table for
- * internal API functions.
- */
-
- f = (gl_function) get_glx_proc_address((const char *) procName);
- if ((f == NULL) && (procName[0] == 'g') && (procName[1] == 'l')
- && (procName[2] != 'X')) {
- f = (gl_function) _glapi_get_proc_address((const char *) procName);
- }
-
- return f;
-}
-
-/**
- * Get the address of a named GL function. This is the GLX 1.4 name for
- * \c glXGetProcAddressARB.
- *
- * \param procName Name of a GL or GLX function.
- * \returns A pointer to the named function
- *
- * \sa glXGetProcAddressARB
- */
-PUBLIC void (*glXGetProcAddress(const GLubyte * procName)) (void)
-#if defined(__GNUC__) && !defined(GLX_ALIAS_UNSUPPORTED)
- __attribute__ ((alias("glXGetProcAddressARB")));
-#else
-{
- return glXGetProcAddressARB(procName);
-}
-#endif /* __GNUC__ */
-
-
-#ifdef GLX_DIRECT_RENDERING
-/**
- * Get the unadjusted system time (UST). Currently, the UST is measured in
- * microseconds since Epoc. The actual resolution of the UST may vary from
- * system to system, and the units may vary from release to release.
- * Drivers should not call this function directly. They should instead use
- * \c glXGetProcAddress to obtain a pointer to the function.
- *
- * \param ust Location to store the 64-bit UST
- * \returns Zero on success or a negative errno value on failure.
- *
- * \sa glXGetProcAddress, PFNGLXGETUSTPROC
- *
- * \since Internal API version 20030317.
- */
-_X_HIDDEN int
-__glXGetUST(int64_t * ust)
-{
- struct timeval tv;
-
- if (ust == NULL) {
- return -EFAULT;
- }
-
- if (gettimeofday(&tv, NULL) == 0) {
- ust[0] = (tv.tv_sec * 1000000) + tv.tv_usec;
- return 0;
- }
- else {
- return -errno;
- }
-}
-#endif /* GLX_DIRECT_RENDERING */
diff --git a/src/glx/x11/glxcurrent.c b/src/glx/x11/glxcurrent.c
deleted file mode 100644
index c28360bdde9..00000000000
--- a/src/glx/x11/glxcurrent.c
+++ /dev/null
@@ -1,513 +0,0 @@
-/*
- * SGI FREE SOFTWARE LICENSE B (Version 2.0, Sept. 18, 2008)
- * Copyright (C) 1991-2000 Silicon Graphics, Inc. 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"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice including the dates of first publication and
- * either this permission notice or a reference to
- * http://oss.sgi.com/projects/FreeB/
- * shall be included in all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * SILICON GRAPHICS, INC. BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
- * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
- * OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- *
- * Except as contained in this notice, the name of Silicon Graphics, Inc.
- * shall not be used in advertising or otherwise to promote the sale, use or
- * other dealings in this Software without prior written authorization from
- * Silicon Graphics, Inc.
- */
-
-/**
- * \file glxcurrent.c
- * Client-side GLX interface for current context management.
- */
-
-#include "glxclient.h"
-#include "glapi.h"
-#include "indirect_init.h"
-
-/*
-** We setup some dummy structures here so that the API can be used
-** even if no context is current.
-*/
-
-static GLubyte dummyBuffer[__GLX_BUFFER_LIMIT_SIZE];
-
-/*
-** Dummy context used by small commands when there is no current context.
-** All the
-** gl and glx entry points are designed to operate as nop's when using
-** the dummy context structure.
-*/
-static __GLXcontext dummyContext = {
- &dummyBuffer[0],
- &dummyBuffer[0],
- &dummyBuffer[0],
- &dummyBuffer[__GLX_BUFFER_LIMIT_SIZE],
- sizeof(dummyBuffer),
-};
-
-
-/*
-** All indirect rendering contexts will share the same indirect dispatch table.
-*/
-static __GLapi *IndirectAPI = NULL;
-
-
-/*
- * Current context management and locking
- */
-
-#if defined( PTHREADS )
-
-_X_HIDDEN pthread_mutex_t __glXmutex = PTHREAD_MUTEX_INITIALIZER;
-
-# if defined( GLX_USE_TLS )
-
-/**
- * Per-thread GLX context pointer.
- *
- * \c __glXSetCurrentContext is written is such a way that this pointer can
- * \b never be \c NULL. This is important! Because of this
- * \c __glXGetCurrentContext can be implemented as trivial macro.
- */
-__thread void *__glX_tls_Context __attribute__ ((tls_model("initial-exec")))
- = &dummyContext;
-
-_X_HIDDEN void
-__glXSetCurrentContext(__GLXcontext * c)
-{
- __glX_tls_Context = (c != NULL) ? c : &dummyContext;
-}
-
-# else
-
-static pthread_once_t once_control = PTHREAD_ONCE_INIT;
-
-/**
- * Per-thread data key.
- *
- * Once \c init_thread_data has been called, the per-thread data key will
- * take a value of \c NULL. As each new thread is created the default
- * value, in that thread, will be \c NULL.
- */
-static pthread_key_t ContextTSD;
-
-/**
- * Initialize the per-thread data key.
- *
- * This function is called \b exactly once per-process (not per-thread!) to
- * initialize the per-thread data key. This is ideally done using the
- * \c pthread_once mechanism.
- */
-static void
-init_thread_data(void)
-{
- if (pthread_key_create(&ContextTSD, NULL) != 0) {
- perror("pthread_key_create");
- exit(-1);
- }
-}
-
-_X_HIDDEN void
-__glXSetCurrentContext(__GLXcontext * c)
-{
- pthread_once(&once_control, init_thread_data);
- pthread_setspecific(ContextTSD, c);
-}
-
-_X_HIDDEN __GLXcontext *
-__glXGetCurrentContext(void)
-{
- void *v;
-
- pthread_once(&once_control, init_thread_data);
-
- v = pthread_getspecific(ContextTSD);
- return (v == NULL) ? &dummyContext : (__GLXcontext *) v;
-}
-
-# endif /* defined( GLX_USE_TLS ) */
-
-#elif defined( THREADS )
-
-#error Unknown threading method specified.
-
-#else
-
-/* not thread safe */
-_X_HIDDEN __GLXcontext *__glXcurrentContext = &dummyContext;
-
-#endif
-
-
-_X_HIDDEN void
-__glXSetCurrentContextNull(void)
-{
- __glXSetCurrentContext(&dummyContext);
-#ifdef GLX_DIRECT_RENDERING
- _glapi_set_dispatch(NULL); /* no-op functions */
- _glapi_set_context(NULL);
-#endif
-}
-
-
-/************************************************************************/
-
-PUBLIC GLXContext
-glXGetCurrentContext(void)
-{
- GLXContext cx = __glXGetCurrentContext();
-
- if (cx == &dummyContext) {
- return NULL;
- }
- else {
- return cx;
- }
-}
-
-PUBLIC GLXDrawable
-glXGetCurrentDrawable(void)
-{
- GLXContext gc = __glXGetCurrentContext();
- return gc->currentDrawable;
-}
-
-
-/************************************************************************/
-
-/**
- * Sends a GLX protocol message to the specified display to make the context
- * and the drawables current.
- *
- * \param dpy Display to send the message to.
- * \param opcode Major opcode value for the display.
- * \param gc_id Context tag for the context to be made current.
- * \param draw Drawable ID for the "draw" drawable.
- * \param read Drawable ID for the "read" drawable.
- * \param reply Space to store the X-server's reply.
- *
- * \warning
- * This function assumes that \c dpy is locked with \c LockDisplay on entry.
- */
-static Bool
-SendMakeCurrentRequest(Display * dpy, CARD8 opcode,
- GLXContextID gc_id, GLXContextTag gc_tag,
- GLXDrawable draw, GLXDrawable read,
- xGLXMakeCurrentReply * reply)
-{
- Bool ret;
-
-
- LockDisplay(dpy);
-
- if (draw == read) {
- xGLXMakeCurrentReq *req;
-
- GetReq(GLXMakeCurrent, req);
- req->reqType = opcode;
- req->glxCode = X_GLXMakeCurrent;
- req->drawable = draw;
- req->context = gc_id;
- req->oldContextTag = gc_tag;
- }
- else {
- __GLXdisplayPrivate *priv = __glXInitialize(dpy);
-
- /* If the server can support the GLX 1.3 version, we should
- * perfer that. Not only that, some servers support GLX 1.3 but
- * not the SGI extension.
- */
-
- if ((priv->majorVersion > 1) || (priv->minorVersion >= 3)) {
- xGLXMakeContextCurrentReq *req;
-
- GetReq(GLXMakeContextCurrent, req);
- req->reqType = opcode;
- req->glxCode = X_GLXMakeContextCurrent;
- req->drawable = draw;
- req->readdrawable = read;
- req->context = gc_id;
- req->oldContextTag = gc_tag;
- }
- else {
- xGLXVendorPrivateWithReplyReq *vpreq;
- xGLXMakeCurrentReadSGIReq *req;
-
- GetReqExtra(GLXVendorPrivateWithReply,
- sz_xGLXMakeCurrentReadSGIReq -
- sz_xGLXVendorPrivateWithReplyReq, vpreq);
- req = (xGLXMakeCurrentReadSGIReq *) vpreq;
- req->reqType = opcode;
- req->glxCode = X_GLXVendorPrivateWithReply;
- req->vendorCode = X_GLXvop_MakeCurrentReadSGI;
- req->drawable = draw;
- req->readable = read;
- req->context = gc_id;
- req->oldContextTag = gc_tag;
- }
- }
-
- ret = _XReply(dpy, (xReply *) reply, 0, False);
-
- UnlockDisplay(dpy);
- SyncHandle();
-
- return ret;
-}
-
-
-#ifdef GLX_DIRECT_RENDERING
-static __GLXDRIdrawable *
-FetchDRIDrawable(Display * dpy, GLXDrawable glxDrawable, GLXContext gc)
-{
- __GLXdisplayPrivate *const priv = __glXInitialize(dpy);
- __GLXDRIdrawable *pdraw;
- __GLXscreenConfigs *psc;
-
- if (priv == NULL)
- return NULL;
-
- psc = &priv->screenConfigs[gc->screen];
- if (psc->drawHash == NULL)
- return NULL;
-
- if (__glxHashLookup(psc->drawHash, glxDrawable, (void *) &pdraw) == 0)
- return pdraw;
-
- pdraw = psc->driScreen->createDrawable(psc, glxDrawable,
- glxDrawable, gc->mode);
- if (__glxHashInsert(psc->drawHash, glxDrawable, pdraw)) {
- (*pdraw->destroyDrawable) (pdraw);
- return NULL;
- }
-
- return pdraw;
-}
-#endif /* GLX_DIRECT_RENDERING */
-
-static void
-__glXGenerateError(Display * dpy, GLXContext gc, XID resource,
- BYTE errorCode, CARD16 minorCode)
-{
- xError error;
-
- error.errorCode = errorCode;
- error.resourceID = resource;
- error.sequenceNumber = dpy->request;
- error.type = X_Error;
- error.majorCode = gc->majorOpcode;
- error.minorCode = minorCode;
- _XError(dpy, &error);
-}
-
-/**
- * Make a particular context current.
- *
- * \note This is in this file so that it can access dummyContext.
- */
-static Bool
-MakeContextCurrent(Display * dpy, GLXDrawable draw,
- GLXDrawable read, GLXContext gc)
-{
- xGLXMakeCurrentReply reply;
- const GLXContext oldGC = __glXGetCurrentContext();
- const CARD8 opcode = __glXSetupForCommand(dpy);
- const CARD8 oldOpcode = ((gc == oldGC) || (oldGC == &dummyContext))
- ? opcode : __glXSetupForCommand(oldGC->currentDpy);
- Bool bindReturnValue;
- __GLXattribute *state;
-
- if (!opcode || !oldOpcode) {
- return GL_FALSE;
- }
-
- /* Make sure that the new context has a nonzero ID. In the request,
- * a zero context ID is used only to mean that we bind to no current
- * context.
- */
- if ((gc != NULL) && (gc->xid == None)) {
- return GL_FALSE;
- }
-
- if (gc == NULL && (draw != None || read != None)) {
- __glXGenerateError(dpy, gc, (draw != None) ? draw : read,
- BadMatch, X_GLXMakeContextCurrent);
- return False;
- }
- if (gc != NULL && (draw == None || read == None)) {
- __glXGenerateError(dpy, gc, None, BadMatch, X_GLXMakeContextCurrent);
- return False;
- }
-
- _glapi_check_multithread();
-
- if (gc != NULL && gc->thread_id != 0 && gc->thread_id != _glthread_GetID()) {
- __glXGenerateError(dpy, gc, gc->xid,
- BadAccess, X_GLXMakeContextCurrent);
- return False;
- }
-
-#ifdef GLX_DIRECT_RENDERING
- /* Bind the direct rendering context to the drawable */
- if (gc && gc->driContext) {
- __GLXDRIdrawable *pdraw = FetchDRIDrawable(dpy, draw, gc);
- __GLXDRIdrawable *pread = FetchDRIDrawable(dpy, read, gc);
-
- if ((pdraw == NULL) || (pread == NULL)) {
- __glXGenerateError(dpy, gc, (pdraw == NULL) ? draw : read,
- GLXBadDrawable, X_GLXMakeContextCurrent);
- return False;
- }
-
- bindReturnValue =
- (gc->driContext->bindContext) (gc->driContext, pdraw, pread);
- }
- else if (!gc && oldGC && oldGC->driContext) {
- bindReturnValue = True;
- }
- else
-#endif
- {
- /* Send a glXMakeCurrent request to bind the new context. */
- bindReturnValue =
- SendMakeCurrentRequest(dpy, opcode, gc ? gc->xid : None,
- ((dpy != oldGC->currentDpy)
- || oldGC->isDirect)
- ? None : oldGC->currentContextTag, draw, read,
- &reply);
- }
-
-
- if (!bindReturnValue) {
- return False;
- }
-
-#ifdef GLX_DIRECT_RENDERING
- if ((dpy != oldGC->currentDpy || (gc && gc->driContext)) &&
- !oldGC->isDirect && oldGC != &dummyContext) {
-#else
- if ((dpy != oldGC->currentDpy) && oldGC != &dummyContext) {
-#endif
- xGLXMakeCurrentReply dummy_reply;
-
- /* We are either switching from one dpy to another and have to
- * send a request to the previous dpy to unbind the previous
- * context, or we are switching away from a indirect context to
- * a direct context and have to send a request to the dpy to
- * unbind the previous context.
- */
- (void) SendMakeCurrentRequest(oldGC->currentDpy, oldOpcode, None,
- oldGC->currentContextTag, None, None,
- &dummy_reply);
- }
-#ifdef GLX_DIRECT_RENDERING
- else if (oldGC->driContext && oldGC != gc) {
- oldGC->driContext->unbindContext(oldGC->driContext);
- }
-#endif
-
-
- /* Update our notion of what is current */
- __glXLock();
- if (gc == oldGC) {
- /* Even though the contexts are the same the drawable might have
- * changed. Note that gc cannot be the dummy, and that oldGC
- * cannot be NULL, therefore if they are the same, gc is not
- * NULL and not the dummy.
- */
- gc->currentDrawable = draw;
- gc->currentReadable = read;
- }
- else {
- if (oldGC != &dummyContext) {
- /* Old current context is no longer current to anybody */
- oldGC->currentDpy = 0;
- oldGC->currentDrawable = None;
- oldGC->currentReadable = None;
- oldGC->currentContextTag = 0;
- oldGC->thread_id = 0;
-
- if (oldGC->xid == None) {
- /* We are switching away from a context that was
- * previously destroyed, so we need to free the memory
- * for the old handle.
- */
-#ifdef GLX_DIRECT_RENDERING
- /* Destroy the old direct rendering context */
- if (oldGC->driContext) {
- oldGC->driContext->destroyContext(oldGC->driContext,
- oldGC->psc,
- oldGC->createDpy);
- oldGC->driContext = NULL;
- }
-#endif
- __glXFreeContext(oldGC);
- }
- }
- if (gc) {
- __glXSetCurrentContext(gc);
-
- gc->currentDpy = dpy;
- gc->currentDrawable = draw;
- gc->currentReadable = read;
- gc->thread_id = _glthread_GetID();
-
-#ifdef GLX_DIRECT_RENDERING
- if (!gc->driContext) {
-#endif
- if (!IndirectAPI)
- IndirectAPI = __glXNewIndirectAPI();
- _glapi_set_dispatch(IndirectAPI);
-
- state = (__GLXattribute *) (gc->client_state_private);
-
- gc->currentContextTag = reply.contextTag;
- if (state->array_state == NULL) {
- (void) glGetString(GL_EXTENSIONS);
- (void) glGetString(GL_VERSION);
- __glXInitVertexArrayState(gc);
- }
-#ifdef GLX_DIRECT_RENDERING
- }
- else {
- gc->currentContextTag = -1;
- }
-#endif
- }
- else {
- __glXSetCurrentContextNull();
- }
- }
- __glXUnlock();
- return GL_TRUE;
-}
-
-
-PUBLIC Bool
-glXMakeCurrent(Display * dpy, GLXDrawable draw, GLXContext gc)
-{
- return MakeContextCurrent(dpy, draw, draw, gc);
-}
-
-PUBLIC
-GLX_ALIAS(Bool, glXMakeCurrentReadSGI,
- (Display * dpy, GLXDrawable d, GLXDrawable r, GLXContext ctx),
- (dpy, d, r, ctx), MakeContextCurrent)
-
-PUBLIC
-GLX_ALIAS(Bool, glXMakeContextCurrent,
- (Display * dpy, GLXDrawable d, GLXDrawable r,
- GLXContext ctx), (dpy, d, r, ctx), MakeContextCurrent)
diff --git a/src/glx/x11/glxext.c b/src/glx/x11/glxext.c
deleted file mode 100644
index c2de1a3fff8..00000000000
--- a/src/glx/x11/glxext.c
+++ /dev/null
@@ -1,1060 +0,0 @@
-/*
- * SGI FREE SOFTWARE LICENSE B (Version 2.0, Sept. 18, 2008)
- * Copyright (C) 1991-2000 Silicon Graphics, Inc. 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"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice including the dates of first publication and
- * either this permission notice or a reference to
- * http://oss.sgi.com/projects/FreeB/
- * shall be included in all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * SILICON GRAPHICS, INC. BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
- * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
- * OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- *
- * Except as contained in this notice, the name of Silicon Graphics, Inc.
- * shall not be used in advertising or otherwise to promote the sale, use or
- * other dealings in this Software without prior written authorization from
- * Silicon Graphics, Inc.
- */
-
-/**
- * \file glxext.c
- * GLX protocol interface boot-strap code.
- *
- * Direct rendering support added by Precision Insight, Inc.
- *
- * \author Kevin E. Martin <[email protected]>
- */
-
-#include <assert.h>
-#include "glxclient.h"
-#include <X11/extensions/Xext.h>
-#include <X11/extensions/extutil.h>
-#include <X11/extensions/dri2proto.h>
-#include "glxextensions.h"
-#include "glcontextmodes.h"
-
-#ifdef USE_XCB
-#include <X11/Xlib-xcb.h>
-#include <xcb/xcb.h>
-#include <xcb/glx.h>
-#endif
-
-
-#ifdef DEBUG
-void __glXDumpDrawBuffer(__GLXcontext * ctx);
-#endif
-
-/*
-** You can set this cell to 1 to force the gl drawing stuff to be
-** one command per packet
-*/
-_X_HIDDEN int __glXDebug = 0;
-
-/* Extension required boiler plate */
-
-static char *__glXExtensionName = GLX_EXTENSION_NAME;
-XExtensionInfo *__glXExtensionInfo = NULL;
-
-static /* const */ char *error_list[] = {
- "GLXBadContext",
- "GLXBadContextState",
- "GLXBadDrawable",
- "GLXBadPixmap",
- "GLXBadContextTag",
- "GLXBadCurrentWindow",
- "GLXBadRenderRequest",
- "GLXBadLargeRequest",
- "GLXUnsupportedPrivateRequest",
- "GLXBadFBConfig",
- "GLXBadPbuffer",
- "GLXBadCurrentDrawable",
- "GLXBadWindow",
-};
-
-static int
-__glXCloseDisplay(Display * dpy, XExtCodes * codes)
-{
- GLXContext gc;
-
- gc = __glXGetCurrentContext();
- if (dpy == gc->currentDpy) {
- __glXSetCurrentContextNull();
- __glXFreeContext(gc);
- }
-
- return XextRemoveDisplay(__glXExtensionInfo, dpy);
-}
-
-
-static
-XEXT_GENERATE_ERROR_STRING(__glXErrorString, __glXExtensionName,
- __GLX_NUMBER_ERRORS, error_list)
-static Bool
-__glXWireToEvent(Display *dpy, XEvent *event, xEvent *wire);
-static Status
-__glXEventToWire(Display *dpy, XEvent *event, xEvent *wire);
-
-static /* const */ XExtensionHooks __glXExtensionHooks = {
- NULL, /* create_gc */
- NULL, /* copy_gc */
- NULL, /* flush_gc */
- NULL, /* free_gc */
- NULL, /* create_font */
- NULL, /* free_font */
- __glXCloseDisplay, /* close_display */
- __glXWireToEvent, /* wire_to_event */
- __glXEventToWire, /* event_to_wire */
- NULL, /* error */
- __glXErrorString, /* error_string */
-};
-
-XEXT_GENERATE_FIND_DISPLAY(__glXFindDisplay, __glXExtensionInfo,
- __glXExtensionName, &__glXExtensionHooks,
- __GLX_NUMBER_EVENTS, NULL)
-
-/*
- * GLX events are a bit funky. We don't stuff the X event code into
- * our user exposed (via XNextEvent) structure. Instead we use the GLX
- * private event code namespace (and hope it doesn't conflict). Clients
- * have to know that bit 15 in the event type field means they're getting
- * a GLX event, and then handle the various sub-event types there, rather
- * than simply checking the event code and handling it directly.
- */
-
-static Bool
-__glXWireToEvent(Display *dpy, XEvent *event, xEvent *wire)
-{
- XExtDisplayInfo *info = __glXFindDisplay(dpy);
-
- XextCheckExtension(dpy, info, __glXExtensionName, False);
-
- switch ((wire->u.u.type & 0x7f) - info->codes->first_event) {
- case GLX_PbufferClobber:
- {
- GLXPbufferClobberEvent *aevent = (GLXPbufferClobberEvent *)event;
- xGLXPbufferClobberEvent *awire = (xGLXPbufferClobberEvent *)wire;
- aevent->event_type = awire->type;
- aevent->serial = awire->sequenceNumber;
- aevent->event_type = awire->event_type;
- aevent->draw_type = awire->draw_type;
- aevent->drawable = awire->drawable;
- aevent->buffer_mask = awire->buffer_mask;
- aevent->aux_buffer = awire->aux_buffer;
- aevent->x = awire->x;
- aevent->y = awire->y;
- aevent->width = awire->width;
- aevent->height = awire->height;
- aevent->count = awire->count;
- return True;
- }
- /* No easy symbol to test for this, as GLX_BufferSwapComplete is
- * defined in the local glx.h header, but the
- * xGLXBufferSwapComplete typedef is only available in new versions
- * of the external glxproto.h header, which doesn't have any
- * testable versioning define.
- *
- * I'll use the related DRI2 define, in the hope that we won't
- * receive these events unless we know how to ask for them:
- */
-#ifdef X_DRI2SwapBuffers
- case GLX_BufferSwapComplete:
- {
- GLXBufferSwapComplete *aevent = (GLXBufferSwapComplete *)event;
- xGLXBufferSwapComplete *awire = (xGLXBufferSwapComplete *)wire;
- aevent->event_type = awire->event_type;
- aevent->drawable = awire->drawable;
- aevent->ust = ((CARD64)awire->ust_hi << 32) | awire->ust_lo;
- aevent->msc = ((CARD64)awire->msc_hi << 32) | awire->msc_lo;
- aevent->sbc = ((CARD64)awire->sbc_hi << 32) | awire->sbc_lo;
- return True;
- }
-#endif
- default:
- /* client doesn't support server event */
- break;
- }
-
- return False;
-}
-
-/* We don't actually support this. It doesn't make sense for clients to
- * send each other GLX events.
- */
-static Status
-__glXEventToWire(Display *dpy, XEvent *event, xEvent *wire)
-{
- XExtDisplayInfo *info = __glXFindDisplay(dpy);
-
- XextCheckExtension(dpy, info, __glXExtensionName, False);
-
- switch (event->type) {
- case GLX_DAMAGED:
- break;
- case GLX_SAVED:
- break;
- case GLX_EXCHANGE_COMPLETE_INTEL:
- break;
- case GLX_BLIT_COMPLETE_INTEL:
- break;
- case GLX_FLIP_COMPLETE_INTEL:
- break;
- default:
- /* client doesn't support server event */
- break;
- }
-
- return Success;
-}
-
-/************************************************************************/
-/*
-** Free the per screen configs data as well as the array of
-** __glXScreenConfigs.
-*/
-static void
-FreeScreenConfigs(__GLXdisplayPrivate * priv)
-{
- __GLXscreenConfigs *psc;
- GLint i, screens;
-
- /* Free screen configuration information */
- psc = priv->screenConfigs;
- screens = ScreenCount(priv->dpy);
- for (i = 0; i < screens; i++, psc++) {
- if (psc->configs) {
- _gl_context_modes_destroy(psc->configs);
- if (psc->effectiveGLXexts)
- Xfree(psc->effectiveGLXexts);
- psc->configs = NULL; /* NOTE: just for paranoia */
- }
- if (psc->visuals) {
- _gl_context_modes_destroy(psc->visuals);
- psc->visuals = NULL; /* NOTE: just for paranoia */
- }
- Xfree((char *) psc->serverGLXexts);
-
-#ifdef GLX_DIRECT_RENDERING
- if (psc->driver_configs) {
- unsigned int j;
- for (j = 0; psc->driver_configs[j]; j++)
- free((__DRIconfig *) psc->driver_configs[j]);
- free(psc->driver_configs);
- psc->driver_configs = NULL;
- }
- if (psc->driScreen) {
- psc->driScreen->destroyScreen(psc);
- __glxHashDestroy(psc->drawHash);
- XFree(psc->driScreen);
- psc->driScreen = NULL;
- }
-#endif
- }
- XFree((char *) priv->screenConfigs);
- priv->screenConfigs = NULL;
-}
-
-/*
-** Release the private memory referred to in a display private
-** structure. The caller will free the extension structure.
-*/
-static int
-__glXFreeDisplayPrivate(XExtData * extension)
-{
- __GLXdisplayPrivate *priv;
-
- priv = (__GLXdisplayPrivate *) extension->private_data;
- FreeScreenConfigs(priv);
- if (priv->serverGLXvendor) {
- Xfree((char *) priv->serverGLXvendor);
- priv->serverGLXvendor = 0x0; /* to protect against double free's */
- }
- if (priv->serverGLXversion) {
- Xfree((char *) priv->serverGLXversion);
- priv->serverGLXversion = 0x0; /* to protect against double free's */
- }
-
-#ifdef GLX_DIRECT_RENDERING
- /* Free the direct rendering per display data */
- if (priv->driswDisplay)
- (*priv->driswDisplay->destroyDisplay) (priv->driswDisplay);
- priv->driswDisplay = NULL;
-
- if (priv->driDisplay)
- (*priv->driDisplay->destroyDisplay) (priv->driDisplay);
- priv->driDisplay = NULL;
-
- if (priv->dri2Display)
- (*priv->dri2Display->destroyDisplay) (priv->dri2Display);
- priv->dri2Display = NULL;
-#endif
-
- Xfree((char *) priv);
- return 0;
-}
-
-/************************************************************************/
-
-/*
-** Query the version of the GLX extension. This procedure works even if
-** the client extension is not completely set up.
-*/
-static Bool
-QueryVersion(Display * dpy, int opcode, int *major, int *minor)
-{
-#ifdef USE_XCB
- xcb_connection_t *c = XGetXCBConnection(dpy);
- xcb_glx_query_version_reply_t *reply = xcb_glx_query_version_reply(c,
- xcb_glx_query_version
- (c,
- GLX_MAJOR_VERSION,
- GLX_MINOR_VERSION),
- NULL);
-
- if (reply->major_version != GLX_MAJOR_VERSION) {
- free(reply);
- return GL_FALSE;
- }
- *major = reply->major_version;
- *minor = min(reply->minor_version, GLX_MINOR_VERSION);
- free(reply);
- return GL_TRUE;
-#else
- xGLXQueryVersionReq *req;
- xGLXQueryVersionReply reply;
-
- /* Send the glXQueryVersion request */
- LockDisplay(dpy);
- GetReq(GLXQueryVersion, req);
- req->reqType = opcode;
- req->glxCode = X_GLXQueryVersion;
- req->majorVersion = GLX_MAJOR_VERSION;
- req->minorVersion = GLX_MINOR_VERSION;
- _XReply(dpy, (xReply *) & reply, 0, False);
- UnlockDisplay(dpy);
- SyncHandle();
-
- if (reply.majorVersion != GLX_MAJOR_VERSION) {
- /*
- ** The server does not support the same major release as this
- ** client.
- */
- return GL_FALSE;
- }
- *major = reply.majorVersion;
- *minor = min(reply.minorVersion, GLX_MINOR_VERSION);
- return GL_TRUE;
-#endif /* USE_XCB */
-}
-
-
-_X_HIDDEN void
-__glXInitializeVisualConfigFromTags(__GLcontextModes * config, int count,
- const INT32 * bp, Bool tagged_only,
- Bool fbconfig_style_tags)
-{
- int i;
-
- if (!tagged_only) {
- /* Copy in the first set of properties */
- config->visualID = *bp++;
-
- config->visualType = _gl_convert_from_x_visual_type(*bp++);
-
- config->rgbMode = *bp++;
-
- config->redBits = *bp++;
- config->greenBits = *bp++;
- config->blueBits = *bp++;
- config->alphaBits = *bp++;
- config->accumRedBits = *bp++;
- config->accumGreenBits = *bp++;
- config->accumBlueBits = *bp++;
- config->accumAlphaBits = *bp++;
-
- config->doubleBufferMode = *bp++;
- config->stereoMode = *bp++;
-
- config->rgbBits = *bp++;
- config->depthBits = *bp++;
- config->stencilBits = *bp++;
- config->numAuxBuffers = *bp++;
- config->level = *bp++;
-
- count -= __GLX_MIN_CONFIG_PROPS;
- }
-
- /*
- ** Additional properties may be in a list at the end
- ** of the reply. They are in pairs of property type
- ** and property value.
- */
-
-#define FETCH_OR_SET(tag) \
- config-> tag = ( fbconfig_style_tags ) ? *bp++ : 1
-
- for (i = 0; i < count; i += 2) {
- switch (*bp++) {
- case GLX_RGBA:
- FETCH_OR_SET(rgbMode);
- break;
- case GLX_BUFFER_SIZE:
- config->rgbBits = *bp++;
- break;
- case GLX_LEVEL:
- config->level = *bp++;
- break;
- case GLX_DOUBLEBUFFER:
- FETCH_OR_SET(doubleBufferMode);
- break;
- case GLX_STEREO:
- FETCH_OR_SET(stereoMode);
- break;
- case GLX_AUX_BUFFERS:
- config->numAuxBuffers = *bp++;
- break;
- case GLX_RED_SIZE:
- config->redBits = *bp++;
- break;
- case GLX_GREEN_SIZE:
- config->greenBits = *bp++;
- break;
- case GLX_BLUE_SIZE:
- config->blueBits = *bp++;
- break;
- case GLX_ALPHA_SIZE:
- config->alphaBits = *bp++;
- break;
- case GLX_DEPTH_SIZE:
- config->depthBits = *bp++;
- break;
- case GLX_STENCIL_SIZE:
- config->stencilBits = *bp++;
- break;
- case GLX_ACCUM_RED_SIZE:
- config->accumRedBits = *bp++;
- break;
- case GLX_ACCUM_GREEN_SIZE:
- config->accumGreenBits = *bp++;
- break;
- case GLX_ACCUM_BLUE_SIZE:
- config->accumBlueBits = *bp++;
- break;
- case GLX_ACCUM_ALPHA_SIZE:
- config->accumAlphaBits = *bp++;
- break;
- case GLX_VISUAL_CAVEAT_EXT:
- config->visualRating = *bp++;
- break;
- case GLX_X_VISUAL_TYPE:
- config->visualType = *bp++;
- break;
- case GLX_TRANSPARENT_TYPE:
- config->transparentPixel = *bp++;
- break;
- case GLX_TRANSPARENT_INDEX_VALUE:
- config->transparentIndex = *bp++;
- break;
- case GLX_TRANSPARENT_RED_VALUE:
- config->transparentRed = *bp++;
- break;
- case GLX_TRANSPARENT_GREEN_VALUE:
- config->transparentGreen = *bp++;
- break;
- case GLX_TRANSPARENT_BLUE_VALUE:
- config->transparentBlue = *bp++;
- break;
- case GLX_TRANSPARENT_ALPHA_VALUE:
- config->transparentAlpha = *bp++;
- break;
- case GLX_VISUAL_ID:
- config->visualID = *bp++;
- break;
- case GLX_DRAWABLE_TYPE:
- config->drawableType = *bp++;
- break;
- case GLX_RENDER_TYPE:
- config->renderType = *bp++;
- break;
- case GLX_X_RENDERABLE:
- config->xRenderable = *bp++;
- break;
- case GLX_FBCONFIG_ID:
- config->fbconfigID = *bp++;
- break;
- case GLX_MAX_PBUFFER_WIDTH:
- config->maxPbufferWidth = *bp++;
- break;
- case GLX_MAX_PBUFFER_HEIGHT:
- config->maxPbufferHeight = *bp++;
- break;
- case GLX_MAX_PBUFFER_PIXELS:
- config->maxPbufferPixels = *bp++;
- break;
- case GLX_OPTIMAL_PBUFFER_WIDTH_SGIX:
- config->optimalPbufferWidth = *bp++;
- break;
- case GLX_OPTIMAL_PBUFFER_HEIGHT_SGIX:
- config->optimalPbufferHeight = *bp++;
- break;
- case GLX_VISUAL_SELECT_GROUP_SGIX:
- config->visualSelectGroup = *bp++;
- break;
- case GLX_SWAP_METHOD_OML:
- config->swapMethod = *bp++;
- break;
- case GLX_SAMPLE_BUFFERS_SGIS:
- config->sampleBuffers = *bp++;
- break;
- case GLX_SAMPLES_SGIS:
- config->samples = *bp++;
- break;
- case GLX_BIND_TO_TEXTURE_RGB_EXT:
- config->bindToTextureRgb = *bp++;
- break;
- case GLX_BIND_TO_TEXTURE_RGBA_EXT:
- config->bindToTextureRgba = *bp++;
- break;
- case GLX_BIND_TO_MIPMAP_TEXTURE_EXT:
- config->bindToMipmapTexture = *bp++;
- break;
- case GLX_BIND_TO_TEXTURE_TARGETS_EXT:
- config->bindToTextureTargets = *bp++;
- break;
- case GLX_Y_INVERTED_EXT:
- config->yInverted = *bp++;
- break;
- case None:
- i = count;
- break;
- default:
- break;
- }
- }
-
- config->renderType =
- (config->rgbMode) ? GLX_RGBA_BIT : GLX_COLOR_INDEX_BIT;
-
- config->haveAccumBuffer = ((config->accumRedBits +
- config->accumGreenBits +
- config->accumBlueBits +
- config->accumAlphaBits) > 0);
- config->haveDepthBuffer = (config->depthBits > 0);
- config->haveStencilBuffer = (config->stencilBits > 0);
-}
-
-static __GLcontextModes *
-createConfigsFromProperties(Display * dpy, int nvisuals, int nprops,
- int screen, GLboolean tagged_only)
-{
- INT32 buf[__GLX_TOTAL_CONFIG], *props;
- unsigned prop_size;
- __GLcontextModes *modes, *m;
- int i;
-
- if (nprops == 0)
- return NULL;
-
- /* FIXME: Is the __GLX_MIN_CONFIG_PROPS test correct for FBconfigs? */
-
- /* Check number of properties */
- if (nprops < __GLX_MIN_CONFIG_PROPS || nprops > __GLX_MAX_CONFIG_PROPS)
- return NULL;
-
- /* Allocate memory for our config structure */
- modes = _gl_context_modes_create(nvisuals, sizeof(__GLcontextModes));
- if (!modes)
- return NULL;
-
- prop_size = nprops * __GLX_SIZE_INT32;
- if (prop_size <= sizeof(buf))
- props = buf;
- else
- props = Xmalloc(prop_size);
-
- /* Read each config structure and convert it into our format */
- m = modes;
- for (i = 0; i < nvisuals; i++) {
- _XRead(dpy, (char *) props, prop_size);
- /* Older X servers don't send this so we default it here. */
- m->drawableType = GLX_WINDOW_BIT;
- __glXInitializeVisualConfigFromTags(m, nprops, props,
- tagged_only, GL_TRUE);
- m->screen = screen;
- m = m->next;
- }
-
- if (props != buf)
- Xfree(props);
-
- return modes;
-}
-
-static GLboolean
-getVisualConfigs(Display * dpy, __GLXdisplayPrivate * priv, int screen)
-{
- xGLXGetVisualConfigsReq *req;
- __GLXscreenConfigs *psc;
- xGLXGetVisualConfigsReply reply;
-
- LockDisplay(dpy);
-
- psc = priv->screenConfigs + screen;
- psc->visuals = NULL;
- GetReq(GLXGetVisualConfigs, req);
- req->reqType = priv->majorOpcode;
- req->glxCode = X_GLXGetVisualConfigs;
- req->screen = screen;
-
- if (!_XReply(dpy, (xReply *) & reply, 0, False))
- goto out;
-
- psc->visuals = createConfigsFromProperties(dpy,
- reply.numVisuals,
- reply.numProps,
- screen, GL_FALSE);
-
- out:
- UnlockDisplay(dpy);
- return psc->visuals != NULL;
-}
-
-static GLboolean
-getFBConfigs(Display * dpy, __GLXdisplayPrivate * priv, int screen)
-{
- xGLXGetFBConfigsReq *fb_req;
- xGLXGetFBConfigsSGIXReq *sgi_req;
- xGLXVendorPrivateWithReplyReq *vpreq;
- xGLXGetFBConfigsReply reply;
- __GLXscreenConfigs *psc;
-
- psc = priv->screenConfigs + screen;
- psc->serverGLXexts =
- __glXQueryServerString(dpy, priv->majorOpcode, screen, GLX_EXTENSIONS);
-
- LockDisplay(dpy);
-
- psc->configs = NULL;
- if (atof(priv->serverGLXversion) >= 1.3) {
- GetReq(GLXGetFBConfigs, fb_req);
- fb_req->reqType = priv->majorOpcode;
- fb_req->glxCode = X_GLXGetFBConfigs;
- fb_req->screen = screen;
- }
- else if (strstr(psc->serverGLXexts, "GLX_SGIX_fbconfig") != NULL) {
- GetReqExtra(GLXVendorPrivateWithReply,
- sz_xGLXGetFBConfigsSGIXReq +
- sz_xGLXVendorPrivateWithReplyReq, vpreq);
- sgi_req = (xGLXGetFBConfigsSGIXReq *) vpreq;
- sgi_req->reqType = priv->majorOpcode;
- sgi_req->glxCode = X_GLXVendorPrivateWithReply;
- sgi_req->vendorCode = X_GLXvop_GetFBConfigsSGIX;
- sgi_req->screen = screen;
- }
- else
- goto out;
-
- if (!_XReply(dpy, (xReply *) & reply, 0, False))
- goto out;
-
- psc->configs = createConfigsFromProperties(dpy,
- reply.numFBConfigs,
- reply.numAttribs * 2,
- screen, GL_TRUE);
-
- out:
- UnlockDisplay(dpy);
- return psc->configs != NULL;
-}
-
-/*
-** Allocate the memory for the per screen configs for each screen.
-** If that works then fetch the per screen configs data.
-*/
-static Bool
-AllocAndFetchScreenConfigs(Display * dpy, __GLXdisplayPrivate * priv)
-{
- __GLXscreenConfigs *psc;
- GLint i, screens;
-
- /*
- ** First allocate memory for the array of per screen configs.
- */
- screens = ScreenCount(dpy);
- psc = (__GLXscreenConfigs *) Xmalloc(screens * sizeof(__GLXscreenConfigs));
- if (!psc) {
- return GL_FALSE;
- }
- memset(psc, 0, screens * sizeof(__GLXscreenConfigs));
- priv->screenConfigs = psc;
-
- priv->serverGLXversion =
- __glXQueryServerString(dpy, priv->majorOpcode, 0, GLX_VERSION);
- if (priv->serverGLXversion == NULL) {
- FreeScreenConfigs(priv);
- return GL_FALSE;
- }
-
- for (i = 0; i < screens; i++, psc++) {
- getVisualConfigs(dpy, priv, i);
- getFBConfigs(dpy, priv, i);
-
-#ifdef GLX_DIRECT_RENDERING
- psc->scr = i;
- psc->dpy = dpy;
- psc->drawHash = __glxHashCreate();
- if (psc->drawHash == NULL)
- continue;
-
- if (priv->dri2Display)
- psc->driScreen = (*priv->dri2Display->createScreen) (psc, i, priv);
-
- if (psc->driScreen == NULL && priv->driDisplay)
- psc->driScreen = (*priv->driDisplay->createScreen) (psc, i, priv);
-
- if (psc->driScreen == NULL && priv->driswDisplay)
- psc->driScreen = (*priv->driswDisplay->createScreen) (psc, i, priv);
-
- if (psc->driScreen == NULL) {
- __glxHashDestroy(psc->drawHash);
- psc->drawHash = NULL;
- }
-#endif
- }
- SyncHandle();
- return GL_TRUE;
-}
-
-/*
-** Initialize the client side extension code.
-*/
-_X_HIDDEN __GLXdisplayPrivate *
-__glXInitialize(Display * dpy)
-{
- XExtDisplayInfo *info = __glXFindDisplay(dpy);
- XExtData **privList, *private, *found;
- __GLXdisplayPrivate *dpyPriv;
- XEDataObject dataObj;
- int major, minor;
-#ifdef GLX_DIRECT_RENDERING
- Bool glx_direct, glx_accel;
-#endif
-
- /* The one and only long long lock */
- __glXLock();
-
- if (!XextHasExtension(info)) {
- /* No GLX extension supported by this server. Oh well. */
- __glXUnlock();
- XMissingExtension(dpy, __glXExtensionName);
- return 0;
- }
-
- /* See if a display private already exists. If so, return it */
- dataObj.display = dpy;
- privList = XEHeadOfExtensionList(dataObj);
- found = XFindOnExtensionList(privList, info->codes->extension);
- if (found) {
- __glXUnlock();
- return (__GLXdisplayPrivate *) found->private_data;
- }
-
- /* See if the versions are compatible */
- if (!QueryVersion(dpy, info->codes->major_opcode, &major, &minor)) {
- /* The client and server do not agree on versions. Punt. */
- __glXUnlock();
- return 0;
- }
-
- /*
- ** Allocate memory for all the pieces needed for this buffer.
- */
- private = (XExtData *) Xmalloc(sizeof(XExtData));
- if (!private) {
- __glXUnlock();
- return 0;
- }
- dpyPriv = (__GLXdisplayPrivate *) Xcalloc(1, sizeof(__GLXdisplayPrivate));
- if (!dpyPriv) {
- __glXUnlock();
- Xfree((char *) private);
- return 0;
- }
-
- /*
- ** Init the display private and then read in the screen config
- ** structures from the server.
- */
- dpyPriv->majorOpcode = info->codes->major_opcode;
- dpyPriv->majorVersion = major;
- dpyPriv->minorVersion = minor;
- dpyPriv->dpy = dpy;
-
- dpyPriv->serverGLXvendor = 0x0;
- dpyPriv->serverGLXversion = 0x0;
-
-#ifdef GLX_DIRECT_RENDERING
- glx_direct = (getenv("LIBGL_ALWAYS_INDIRECT") == NULL);
- glx_accel = (getenv("LIBGL_ALWAYS_SOFTWARE") == NULL);
-
- /*
- ** Initialize the direct rendering per display data and functions.
- ** Note: This _must_ be done before calling any other DRI routines
- ** (e.g., those called in AllocAndFetchScreenConfigs).
- */
- if (glx_direct && glx_accel) {
- dpyPriv->dri2Display = dri2CreateDisplay(dpy);
- dpyPriv->driDisplay = driCreateDisplay(dpy);
- }
- if (glx_direct)
- dpyPriv->driswDisplay = driswCreateDisplay(dpy);
-#endif
-
- if (!AllocAndFetchScreenConfigs(dpy, dpyPriv)) {
- __glXUnlock();
- Xfree((char *) dpyPriv);
- Xfree((char *) private);
- return 0;
- }
-
- /*
- ** Fill in the private structure. This is the actual structure that
- ** hangs off of the Display structure. Our private structure is
- ** referred to by this structure. Got that?
- */
- private->number = info->codes->extension;
- private->next = 0;
- private->free_private = __glXFreeDisplayPrivate;
- private->private_data = (char *) dpyPriv;
- XAddToExtensionList(privList, private);
-
- if (dpyPriv->majorVersion == 1 && dpyPriv->minorVersion >= 1) {
- __glXClientInfo(dpy, dpyPriv->majorOpcode);
- }
- __glXUnlock();
-
- return dpyPriv;
-}
-
-/*
-** Setup for sending a GLX command on dpy. Make sure the extension is
-** initialized. Try to avoid calling __glXInitialize as its kinda slow.
-*/
-_X_HIDDEN CARD8
-__glXSetupForCommand(Display * dpy)
-{
- GLXContext gc;
- __GLXdisplayPrivate *priv;
-
- /* If this thread has a current context, flush its rendering commands */
- gc = __glXGetCurrentContext();
- if (gc->currentDpy) {
- /* Flush rendering buffer of the current context, if any */
- (void) __glXFlushRenderBuffer(gc, gc->pc);
-
- if (gc->currentDpy == dpy) {
- /* Use opcode from gc because its right */
- return gc->majorOpcode;
- }
- else {
- /*
- ** Have to get info about argument dpy because it might be to
- ** a different server
- */
- }
- }
-
- /* Forced to lookup extension via the slow initialize route */
- priv = __glXInitialize(dpy);
- if (!priv) {
- return 0;
- }
- return priv->majorOpcode;
-}
-
-/**
- * Flush the drawing command transport buffer.
- *
- * \param ctx Context whose transport buffer is to be flushed.
- * \param pc Pointer to first unused buffer location.
- *
- * \todo
- * Modify this function to use \c ctx->pc instead of the explicit
- * \c pc parameter.
- */
-_X_HIDDEN GLubyte *
-__glXFlushRenderBuffer(__GLXcontext * ctx, GLubyte * pc)
-{
- Display *const dpy = ctx->currentDpy;
-#ifdef USE_XCB
- xcb_connection_t *c = XGetXCBConnection(dpy);
-#else
- xGLXRenderReq *req;
-#endif /* USE_XCB */
- const GLint size = pc - ctx->buf;
-
- if ((dpy != NULL) && (size > 0)) {
-#ifdef USE_XCB
- xcb_glx_render(c, ctx->currentContextTag, size,
- (const uint8_t *) ctx->buf);
-#else
- /* Send the entire buffer as an X request */
- LockDisplay(dpy);
- GetReq(GLXRender, req);
- req->reqType = ctx->majorOpcode;
- req->glxCode = X_GLXRender;
- req->contextTag = ctx->currentContextTag;
- req->length += (size + 3) >> 2;
- _XSend(dpy, (char *) ctx->buf, size);
- UnlockDisplay(dpy);
- SyncHandle();
-#endif
- }
-
- /* Reset pointer and return it */
- ctx->pc = ctx->buf;
- return ctx->pc;
-}
-
-
-/**
- * Send a portion of a GLXRenderLarge command to the server. The advantage of
- * this function over \c __glXSendLargeCommand is that callers can use the
- * data buffer in the GLX context and may be able to avoid allocating an
- * extra buffer. The disadvantage is the clients will have to do more
- * GLX protocol work (i.e., calculating \c totalRequests, etc.).
- *
- * \sa __glXSendLargeCommand
- *
- * \param gc GLX context
- * \param requestNumber Which part of the whole command is this? The first
- * request is 1.
- * \param totalRequests How many requests will there be?
- * \param data Command data.
- * \param dataLen Size, in bytes, of the command data.
- */
-_X_HIDDEN void
-__glXSendLargeChunk(__GLXcontext * gc, GLint requestNumber,
- GLint totalRequests, const GLvoid * data, GLint dataLen)
-{
- Display *dpy = gc->currentDpy;
-#ifdef USE_XCB
- xcb_connection_t *c = XGetXCBConnection(dpy);
- xcb_glx_render_large(c, gc->currentContextTag, requestNumber,
- totalRequests, dataLen, data);
-#else
- xGLXRenderLargeReq *req;
-
- if (requestNumber == 1) {
- LockDisplay(dpy);
- }
-
- GetReq(GLXRenderLarge, req);
- req->reqType = gc->majorOpcode;
- req->glxCode = X_GLXRenderLarge;
- req->contextTag = gc->currentContextTag;
- req->length += (dataLen + 3) >> 2;
- req->requestNumber = requestNumber;
- req->requestTotal = totalRequests;
- req->dataBytes = dataLen;
- Data(dpy, data, dataLen);
-
- if (requestNumber == totalRequests) {
- UnlockDisplay(dpy);
- SyncHandle();
- }
-#endif /* USE_XCB */
-}
-
-
-/**
- * Send a command that is too large for the GLXRender protocol request.
- *
- * Send a large command, one that is too large for some reason to
- * send using the GLXRender protocol request. One reason to send
- * a large command is to avoid copying the data.
- *
- * \param ctx GLX context
- * \param header Header data.
- * \param headerLen Size, in bytes, of the header data. It is assumed that
- * the header data will always be small enough to fit in
- * a single X protocol packet.
- * \param data Command data.
- * \param dataLen Size, in bytes, of the command data.
- */
-_X_HIDDEN void
-__glXSendLargeCommand(__GLXcontext * ctx,
- const GLvoid * header, GLint headerLen,
- const GLvoid * data, GLint dataLen)
-{
- GLint maxSize;
- GLint totalRequests, requestNumber;
-
- /*
- ** Calculate the maximum amount of data can be stuffed into a single
- ** packet. sz_xGLXRenderReq is added because bufSize is the maximum
- ** packet size minus sz_xGLXRenderReq.
- */
- maxSize = (ctx->bufSize + sz_xGLXRenderReq) - sz_xGLXRenderLargeReq;
- totalRequests = 1 + (dataLen / maxSize);
- if (dataLen % maxSize)
- totalRequests++;
-
- /*
- ** Send all of the command, except the large array, as one request.
- */
- assert(headerLen <= maxSize);
- __glXSendLargeChunk(ctx, 1, totalRequests, header, headerLen);
-
- /*
- ** Send enough requests until the whole array is sent.
- */
- for (requestNumber = 2; requestNumber <= (totalRequests - 1);
- requestNumber++) {
- __glXSendLargeChunk(ctx, requestNumber, totalRequests, data, maxSize);
- data = (const GLvoid *) (((const GLubyte *) data) + maxSize);
- dataLen -= maxSize;
- assert(dataLen > 0);
- }
-
- assert(dataLen <= maxSize);
- __glXSendLargeChunk(ctx, requestNumber, totalRequests, data, dataLen);
-}
-
-/************************************************************************/
-
-#ifdef DEBUG
-_X_HIDDEN void
-__glXDumpDrawBuffer(__GLXcontext * ctx)
-{
- GLubyte *p = ctx->buf;
- GLubyte *end = ctx->pc;
- GLushort opcode, length;
-
- while (p < end) {
- /* Fetch opcode */
- opcode = *((GLushort *) p);
- length = *((GLushort *) (p + 2));
- printf("%2x: %5d: ", opcode, length);
- length -= 4;
- p += 4;
- while (length > 0) {
- printf("%08x ", *((unsigned *) p));
- p += 4;
- length -= 4;
- }
- printf("\n");
- }
-}
-#endif
diff --git a/src/glx/x11/glxextensions.c b/src/glx/x11/glxextensions.c
deleted file mode 100644
index 56c69cbfcba..00000000000
--- a/src/glx/x11/glxextensions.c
+++ /dev/null
@@ -1,714 +0,0 @@
-/*
- * (C) Copyright IBM Corporation 2002, 2004
- * 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"),
- * to deal in the Software without restriction, including without limitation
- * on the rights to use, copy, modify, merge, publish, distribute, sub
- * license, and/or sell copies of the Software, and to permit persons to whom
- * the Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice (including the next
- * paragraph) shall be included in all copies or substantial portions of the
- * Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL
- * THE COPYRIGHT HOLDERS AND/OR THEIR SUPPLIERS BE LIABLE FOR ANY CLAIM,
- * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
- * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
- * USE OR OTHER DEALINGS IN THE SOFTWARE.
- */
-
-/**
- * \file glxextensions.c
- *
- * \author Ian Romanick <[email protected]>
- */
-
-#include "glxclient.h"
-#include <X11/extensions/extutil.h>
-#include <X11/extensions/Xext.h>
-#include <string.h>
-#include "glxextensions.h"
-
-
-#define SET_BIT(m,b) (m[ (b) / 8 ] |= (1U << ((b) % 8)))
-#define CLR_BIT(m,b) (m[ (b) / 8 ] &= ~(1U << ((b) % 8)))
-#define IS_SET(m,b) ((m[ (b) / 8 ] & (1U << ((b) % 8))) != 0)
-#define CONCAT(a,b) a ## b
-#define GLX(n) "GLX_" # n, 4 + sizeof( # n ) - 1, CONCAT(n,_bit)
-#define GL(n) "GL_" # n, 3 + sizeof( # n ) - 1, GL_ ## n ## _bit
-#define VER(a,b) a, b
-#define Y 1
-#define N 0
-#define EXT_ENABLED(bit,supported) (IS_SET( supported, bit ))
-
-
-struct extension_info
-{
- const char *const name;
- unsigned name_len;
-
- unsigned char bit;
-
- /* This is the lowest version of GLX that "requires" this extension.
- * For example, GLX 1.3 requires SGIX_fbconfig, SGIX_pbuffer, and
- * SGI_make_current_read. If the extension is not required by any known
- * version of GLX, use 0, 0.
- */
- unsigned char version_major;
- unsigned char version_minor;
- unsigned char client_support;
- unsigned char direct_support;
- unsigned char client_only; /** Is the extension client-side only? */
- unsigned char direct_only; /** Is the extension for direct
- * contexts only?
- */
-};
-
-/* *INDENT-OFF* */
-static const struct extension_info known_glx_extensions[] = {
- { GLX(ARB_get_proc_address), VER(1,4), Y, N, Y, N },
- { GLX(ARB_multisample), VER(1,4), Y, Y, N, N },
- { GLX(ARB_render_texture), VER(0,0), N, N, N, N },
- { GLX(ATI_pixel_format_float), VER(0,0), N, N, N, N },
- { GLX(EXT_import_context), VER(0,0), Y, Y, N, N },
- { GLX(EXT_visual_info), VER(0,0), Y, Y, N, N },
- { GLX(EXT_visual_rating), VER(0,0), Y, Y, N, N },
- { GLX(MESA_agp_offset), VER(0,0), N, N, N, Y }, /* Deprecated */
- { GLX(MESA_allocate_memory), VER(0,0), Y, N, N, Y },
- { GLX(MESA_copy_sub_buffer), VER(0,0), Y, N, N, N },
- { GLX(MESA_pixmap_colormap), VER(0,0), N, N, N, N }, /* Deprecated */
- { GLX(MESA_release_buffers), VER(0,0), N, N, N, N }, /* Deprecated */
- { GLX(MESA_swap_control), VER(0,0), Y, N, N, Y },
- { GLX(MESA_swap_frame_usage), VER(0,0), Y, N, N, Y },
- { GLX(NV_float_buffer), VER(0,0), N, N, N, N },
- { GLX(NV_render_depth_texture), VER(0,0), N, N, N, N },
- { GLX(NV_render_texture_rectangle), VER(0,0), N, N, N, N },
- { GLX(NV_vertex_array_range), VER(0,0), N, N, N, Y }, /* Deprecated */
- { GLX(OML_swap_method), VER(0,0), Y, Y, N, N },
- { GLX(OML_sync_control), VER(0,0), Y, N, N, Y },
- { GLX(SGI_make_current_read), VER(1,3), Y, N, N, N },
- { GLX(SGI_swap_control), VER(0,0), Y, N, N, N },
- { GLX(SGI_video_sync), VER(0,0), Y, N, N, Y },
- { GLX(SGIS_blended_overlay), VER(0,0), N, N, N, N },
- { GLX(SGIS_color_range), VER(0,0), N, N, N, N },
- { GLX(SGIS_multisample), VER(0,0), Y, Y, N, N },
- { GLX(SGIX_fbconfig), VER(1,3), Y, Y, N, N },
- { GLX(SGIX_pbuffer), VER(1,3), Y, Y, N, N },
- { GLX(SGIX_swap_barrier), VER(0,0), N, N, N, N },
- { GLX(SGIX_swap_group), VER(0,0), N, N, N, N },
- { GLX(SGIX_visual_select_group), VER(0,0), Y, Y, N, N },
- { GLX(EXT_texture_from_pixmap), VER(0,0), Y, N, N, N },
- { GLX(INTEL_swap_event), VER(1,4), Y, Y, N, N },
- { NULL }
-};
-
-static const struct extension_info known_gl_extensions[] = {
- { GL(ARB_depth_texture), VER(1,4), Y, N, N, N },
- { GL(ARB_draw_buffers), VER(0,0), Y, N, N, N },
- { GL(ARB_fragment_program), VER(0,0), Y, N, N, N },
- { GL(ARB_fragment_program_shadow), VER(0,0), Y, N, N, N },
- { GL(ARB_framebuffer_object), VER(0,0), Y, N, N, N },
- { GL(ARB_imaging), VER(0,0), Y, N, N, N },
- { GL(ARB_multisample), VER(1,3), Y, N, N, N },
- { GL(ARB_multitexture), VER(1,3), Y, N, N, N },
- { GL(ARB_occlusion_query), VER(1,5), Y, N, N, N },
- { GL(ARB_point_parameters), VER(1,4), Y, N, N, N },
- { GL(ARB_point_sprite), VER(0,0), Y, N, N, N },
- { GL(ARB_shadow), VER(1,4), Y, N, N, N },
- { GL(ARB_shadow_ambient), VER(0,0), Y, N, N, N },
- { GL(ARB_texture_border_clamp), VER(1,3), Y, N, N, N },
- { GL(ARB_texture_compression), VER(1,3), Y, N, N, N },
- { GL(ARB_texture_cube_map), VER(1,3), Y, N, N, N },
- { GL(ARB_texture_env_add), VER(1,3), Y, N, N, N },
- { GL(ARB_texture_env_combine), VER(1,3), Y, N, N, N },
- { GL(ARB_texture_env_crossbar), VER(1,4), Y, N, N, N },
- { GL(ARB_texture_env_dot3), VER(1,3), Y, N, N, N },
- { GL(ARB_texture_mirrored_repeat), VER(1,4), Y, N, N, N },
- { GL(ARB_texture_non_power_of_two), VER(1,5), Y, N, N, N },
- { GL(ARB_texture_rectangle), VER(0,0), Y, N, N, N },
- { GL(ARB_transpose_matrix), VER(1,3), Y, N, Y, N },
- { GL(ARB_vertex_buffer_object), VER(1,5), N, N, N, N },
- { GL(ARB_vertex_program), VER(0,0), Y, N, N, N },
- { GL(ARB_window_pos), VER(1,4), Y, N, N, N },
- { GL(EXT_abgr), VER(0,0), Y, N, N, N },
- { GL(EXT_bgra), VER(1,2), Y, N, N, N },
- { GL(EXT_blend_color), VER(1,4), Y, N, N, N },
- { GL(EXT_blend_equation_separate), VER(0,0), Y, N, N, N },
- { GL(EXT_blend_func_separate), VER(1,4), Y, N, N, N },
- { GL(EXT_blend_logic_op), VER(1,4), Y, N, N, N },
- { GL(EXT_blend_minmax), VER(1,4), Y, N, N, N },
- { GL(EXT_blend_subtract), VER(1,4), Y, N, N, N },
- { GL(EXT_clip_volume_hint), VER(0,0), Y, N, N, N },
- { GL(EXT_compiled_vertex_array), VER(0,0), N, N, N, N },
- { GL(EXT_convolution), VER(0,0), N, N, N, N },
- { GL(EXT_copy_texture), VER(1,1), Y, N, N, N },
- { GL(EXT_cull_vertex), VER(0,0), N, N, N, N },
- { GL(EXT_depth_bounds_test), VER(0,0), N, N, N, N },
- { GL(EXT_draw_range_elements), VER(1,2), Y, N, Y, N },
- { GL(EXT_fog_coord), VER(1,4), Y, N, N, N },
- { GL(EXT_framebuffer_blit), VER(0,0), Y, N, N, N },
- { GL(EXT_framebuffer_multisample), VER(0,0), Y, N, N, N },
- { GL(EXT_framebuffer_object), VER(0,0), Y, N, N, N },
- { GL(EXT_multi_draw_arrays), VER(1,4), Y, N, Y, N },
- { GL(EXT_packed_depth_stencil), VER(0,0), Y, N, N, N },
- { GL(EXT_packed_pixels), VER(1,2), Y, N, N, N },
- { GL(EXT_paletted_texture), VER(0,0), Y, N, N, N },
- { GL(EXT_pixel_buffer_object), VER(0,0), N, N, N, N },
- { GL(EXT_point_parameters), VER(1,4), Y, N, N, N },
- { GL(EXT_polygon_offset), VER(1,1), Y, N, N, N },
- { GL(EXT_rescale_normal), VER(1,2), Y, N, N, N },
- { GL(EXT_secondary_color), VER(1,4), Y, N, N, N },
- { GL(EXT_separate_specular_color), VER(1,2), Y, N, N, N },
- { GL(EXT_shadow_funcs), VER(1,5), Y, N, N, N },
- { GL(EXT_shared_texture_palette), VER(0,0), Y, N, N, N },
- { GL(EXT_stencil_two_side), VER(0,0), Y, N, N, N },
- { GL(EXT_stencil_wrap), VER(1,4), Y, N, N, N },
- { GL(EXT_subtexture), VER(1,1), Y, N, N, N },
- { GL(EXT_texture), VER(1,1), Y, N, N, N },
- { GL(EXT_texture3D), VER(1,2), Y, N, N, N },
- { GL(EXT_texture_compression_dxt1), VER(0,0), Y, N, N, N },
- { GL(EXT_texture_compression_s3tc), VER(0,0), Y, N, N, N },
- { GL(EXT_texture_edge_clamp), VER(1,2), Y, N, N, N },
- { GL(EXT_texture_env_add), VER(1,3), Y, N, N, N },
- { GL(EXT_texture_env_combine), VER(1,3), Y, N, N, N },
- { GL(EXT_texture_env_dot3), VER(0,0), Y, N, N, N },
- { GL(EXT_texture_filter_anisotropic), VER(0,0), Y, N, N, N },
- { GL(EXT_texture_lod), VER(1,2), Y, N, N, N },
- { GL(EXT_texture_lod_bias), VER(1,4), Y, N, N, N },
- { GL(EXT_texture_mirror_clamp), VER(0,0), Y, N, N, N },
- { GL(EXT_texture_object), VER(1,1), Y, N, N, N },
- { GL(EXT_texture_rectangle), VER(0,0), Y, N, N, N },
- { GL(EXT_vertex_array), VER(0,0), Y, N, N, N },
- { GL(3DFX_texture_compression_FXT1), VER(0,0), Y, N, N, N },
- { GL(APPLE_packed_pixels), VER(1,2), Y, N, N, N },
- { GL(APPLE_ycbcr_422), VER(0,0), Y, N, N, N },
- { GL(ATI_draw_buffers), VER(0,0), Y, N, N, N },
- { GL(ATI_text_fragment_shader), VER(0,0), Y, N, N, N },
- { GL(ATI_texture_env_combine3), VER(0,0), Y, N, N, N },
- { GL(ATI_texture_float), VER(0,0), Y, N, N, N },
- { GL(ATI_texture_mirror_once), VER(0,0), Y, N, N, N },
- { GL(ATIX_texture_env_combine3), VER(0,0), Y, N, N, N },
- { GL(HP_convolution_border_modes), VER(0,0), Y, N, N, N },
- { GL(HP_occlusion_test), VER(0,0), Y, N, N, N },
- { GL(IBM_cull_vertex), VER(0,0), Y, N, N, N },
- { GL(IBM_pixel_filter_hint), VER(0,0), Y, N, N, N },
- { GL(IBM_rasterpos_clip), VER(0,0), Y, N, N, N },
- { GL(IBM_texture_clamp_nodraw), VER(0,0), Y, N, N, N },
- { GL(IBM_texture_mirrored_repeat), VER(0,0), Y, N, N, N },
- { GL(INGR_blend_func_separate), VER(0,0), Y, N, N, N },
- { GL(INGR_interlace_read), VER(0,0), Y, N, N, N },
- { GL(MESA_pack_invert), VER(0,0), Y, N, N, N },
- { GL(MESA_ycbcr_texture), VER(0,0), Y, N, N, N },
- { GL(NV_blend_square), VER(1,4), Y, N, N, N },
- { GL(NV_copy_depth_to_color), VER(0,0), Y, N, N, N },
- { GL(NV_depth_clamp), VER(0,0), Y, N, N, N },
- { GL(NV_fog_distance), VER(0,0), Y, N, N, N },
- { GL(NV_fragment_program), VER(0,0), Y, N, N, N },
- { GL(NV_fragment_program_option), VER(0,0), Y, N, N, N },
- { GL(NV_fragment_program2), VER(0,0), Y, N, N, N },
- { GL(NV_light_max_exponent), VER(0,0), Y, N, N, N },
- { GL(NV_multisample_filter_hint), VER(0,0), Y, N, N, N },
- { GL(NV_packed_depth_stencil), VER(0,0), Y, N, N, N },
- { GL(NV_point_sprite), VER(0,0), Y, N, N, N },
- { GL(NV_texgen_reflection), VER(0,0), Y, N, N, N },
- { GL(NV_texture_compression_vtc), VER(0,0), Y, N, N, N },
- { GL(NV_texture_env_combine4), VER(0,0), Y, N, N, N },
- { GL(NV_texture_rectangle), VER(0,0), Y, N, N, N },
- { GL(NV_vertex_program), VER(0,0), Y, N, N, N },
- { GL(NV_vertex_program1_1), VER(0,0), Y, N, N, N },
- { GL(NV_vertex_program2), VER(0,0), Y, N, N, N },
- { GL(NV_vertex_program2_option), VER(0,0), Y, N, N, N },
- { GL(NV_vertex_program3), VER(0,0), Y, N, N, N },
- { GL(OES_read_format), VER(0,0), Y, N, N, N },
- { GL(OES_compressed_paletted_texture),VER(0,0), Y, N, N, N },
- { GL(SGI_color_matrix), VER(0,0), Y, N, N, N },
- { GL(SGI_color_table), VER(0,0), Y, N, N, N },
- { GL(SGI_texture_color_table), VER(0,0), Y, N, N, N },
- { GL(SGIS_generate_mipmap), VER(1,4), Y, N, N, N },
- { GL(SGIS_multisample), VER(0,0), Y, N, N, N },
- { GL(SGIS_texture_border_clamp), VER(1,3), Y, N, N, N },
- { GL(SGIS_texture_edge_clamp), VER(1,2), Y, N, N, N },
- { GL(SGIS_texture_lod), VER(1,2), Y, N, N, N },
- { GL(SGIX_blend_alpha_minmax), VER(0,0), Y, N, N, N },
- { GL(SGIX_clipmap), VER(0,0), Y, N, N, N },
- { GL(SGIX_depth_texture), VER(0,0), Y, N, N, N },
- { GL(SGIX_fog_offset), VER(0,0), Y, N, N, N },
- { GL(SGIX_shadow), VER(0,0), Y, N, N, N },
- { GL(SGIX_shadow_ambient), VER(0,0), Y, N, N, N },
- { GL(SGIX_texture_coordinate_clamp), VER(0,0), Y, N, N, N },
- { GL(SGIX_texture_lod_bias), VER(0,0), Y, N, N, N },
- { GL(SGIX_texture_range), VER(0,0), Y, N, N, N },
- { GL(SGIX_texture_scale_bias), VER(0,0), Y, N, N, N },
- { GL(SGIX_vertex_preclip), VER(0,0), Y, N, N, N },
- { GL(SGIX_vertex_preclip_hint), VER(0,0), Y, N, N, N },
- { GL(SGIX_ycrcb), VER(0,0), Y, N, N, N },
- { GL(SUN_convolution_border_modes), VER(0,0), Y, N, N, N },
- { GL(SUN_multi_draw_arrays), VER(0,0), Y, N, Y, N },
- { GL(SUN_slice_accum), VER(0,0), Y, N, N, N },
- { NULL }
-};
-/* *INDENT-ON* */
-
-
-/* global bit-fields of available extensions and their characteristics */
-static unsigned char client_glx_support[8];
-static unsigned char client_glx_only[8];
-static unsigned char direct_glx_only[8];
-static unsigned char client_gl_support[__GL_EXT_BYTES];
-static unsigned char client_gl_only[__GL_EXT_BYTES];
-
-/**
- * Bits representing the set of extensions that are enabled by default in all
- * direct rendering drivers.
- */
-static unsigned char direct_glx_support[8];
-
-/**
- * Highest core GL version that can be supported for indirect rendering.
- */
-static const unsigned gl_major = 1;
-static const unsigned gl_minor = 4;
-
-/* client extensions string */
-static const char *__glXGLXClientExtensions = NULL;
-
-static void __glXExtensionsCtr(void);
-static void __glXExtensionsCtrScreen(__GLXscreenConfigs * psc);
-static void __glXProcessServerString(const struct extension_info *ext,
- const char *server_string,
- unsigned char *server_support);
-
-/**
- * Set the state of a GLX extension.
- *
- * \param name Name of the extension.
- * \param name_len Length, in characters, of the extension name.
- * \param state New state (either enabled or disabled) of the extension.
- * \param supported Table in which the state of the extension is to be set.
- */
-static void
-set_glx_extension(const struct extension_info *ext,
- const char *name, unsigned name_len, GLboolean state,
- unsigned char *supported)
-{
- unsigned i;
-
-
- for (i = 0; ext[i].name != NULL; i++) {
- if ((name_len == ext[i].name_len)
- && (strncmp(ext[i].name, name, name_len) == 0)) {
- if (state) {
- SET_BIT(supported, ext[i].bit);
- }
- else {
- CLR_BIT(supported, ext[i].bit);
- }
-
- return;
- }
- }
-}
-
-
-#define NUL '\0'
-#define SEPARATOR ' '
-
-/**
- * Convert the server's extension string to a bit-field.
- *
- * \param server_string GLX extension string from the server.
- * \param server_support Bit-field of supported extensions.
- *
- * \note
- * This function is used to process both GLX and GL extension strings. The
- * bit-fields used to track each of these have different sizes. Therefore,
- * the data pointed by \c server_support must be preinitialized to zero.
- */
-static void
-__glXProcessServerString(const struct extension_info *ext,
- const char *server_string,
- unsigned char *server_support)
-{
- unsigned base;
- unsigned len;
-
- for (base = 0; server_string[base] != NUL; /* empty */ ) {
- /* Determine the length of the next extension name.
- */
- for (len = 0; (server_string[base + len] != SEPARATOR)
- && (server_string[base + len] != NUL); len++) {
- /* empty */
- }
-
- /* Set the bit for the extension in the server_support table.
- */
- set_glx_extension(ext, &server_string[base], len, GL_TRUE,
- server_support);
-
-
- /* Advance to the next extension string. This means that we skip
- * over the previous string and any trialing white-space.
- */
- for (base += len; (server_string[base] == SEPARATOR)
- && (server_string[base] != NUL); base++) {
- /* empty */
- }
- }
-}
-
-void
-__glXEnableDirectExtension(__GLXscreenConfigs * psc, const char *name)
-{
- __glXExtensionsCtr();
- __glXExtensionsCtrScreen(psc);
-
- set_glx_extension(known_glx_extensions,
- name, strlen(name), GL_TRUE, psc->direct_support);
-}
-
-/**
- * Initialize global extension support tables.
- */
-
-static void
-__glXExtensionsCtr(void)
-{
- unsigned i;
- static GLboolean ext_list_first_time = GL_TRUE;
-
-
- if (ext_list_first_time) {
- ext_list_first_time = GL_FALSE;
-
- (void) memset(client_glx_support, 0, sizeof(client_glx_support));
- (void) memset(direct_glx_support, 0, sizeof(direct_glx_support));
- (void) memset(client_glx_only, 0, sizeof(client_glx_only));
- (void) memset(direct_glx_only, 0, sizeof(direct_glx_only));
-
- (void) memset(client_gl_support, 0, sizeof(client_gl_support));
- (void) memset(client_gl_only, 0, sizeof(client_gl_only));
-
- for (i = 0; known_glx_extensions[i].name != NULL; i++) {
- const unsigned bit = known_glx_extensions[i].bit;
-
- if (known_glx_extensions[i].client_support) {
- SET_BIT(client_glx_support, bit);
- }
-
- if (known_glx_extensions[i].direct_support) {
- SET_BIT(direct_glx_support, bit);
- }
-
- if (known_glx_extensions[i].client_only) {
- SET_BIT(client_glx_only, bit);
- }
-
- if (known_glx_extensions[i].direct_only) {
- SET_BIT(direct_glx_only, bit);
- }
- }
-
- for (i = 0; known_gl_extensions[i].name != NULL; i++) {
- const unsigned bit = known_gl_extensions[i].bit;
-
- if (known_gl_extensions[i].client_support) {
- SET_BIT(client_gl_support, bit);
- }
-
- if (known_gl_extensions[i].client_only) {
- SET_BIT(client_gl_only, bit);
- }
- }
-
-#if 0
- fprintf(stderr, "[%s:%u] Maximum client library version: %u.%u\n",
- __func__, __LINE__, gl_major, gl_minor);
-#endif
- }
-}
-
-
-/**
- * Make sure that per-screen direct-support table is initialized.
- *
- * \param psc Pointer to GLX per-screen record.
- */
-
-static void
-__glXExtensionsCtrScreen(__GLXscreenConfigs * psc)
-{
- if (psc->ext_list_first_time) {
- psc->ext_list_first_time = GL_FALSE;
- (void) memcpy(psc->direct_support, direct_glx_support,
- sizeof(direct_glx_support));
- }
-}
-
-
-/**
- * Check if a certain extension is enabled on a given screen.
- *
- * \param psc Pointer to GLX per-screen record.
- * \param bit Bit index in the direct-support table.
- * \returns If the extension bit is enabled for the screen, \c GL_TRUE is
- * returned. If the extension bit is not enabled or if \c psc is
- * \c NULL, then \c GL_FALSE is returned.
- */
-GLboolean
-__glXExtensionBitIsEnabled(__GLXscreenConfigs * psc, unsigned bit)
-{
- GLboolean enabled = GL_FALSE;
-
- if (psc != NULL) {
- __glXExtensionsCtr();
- __glXExtensionsCtrScreen(psc);
- enabled = EXT_ENABLED(bit, psc->direct_support);
- }
-
- return enabled;
-}
-
-
-/**
- * Check if a certain extension is enabled in a given context.
- *
- */
-GLboolean
-__glExtensionBitIsEnabled(const __GLXcontext * gc, unsigned bit)
-{
- GLboolean enabled = GL_FALSE;
-
- if (gc != NULL) {
- enabled = EXT_ENABLED(bit, gc->gl_extension_bits);
- }
-
- return enabled;
-}
-
-
-
-/**
- * Convert a bit-field to a string of supported extensions.
- */
-static char *
-__glXGetStringFromTable(const struct extension_info *ext,
- const unsigned char *supported)
-{
- unsigned i;
- unsigned ext_str_len;
- char *ext_str;
- char *point;
-
-
- ext_str_len = 0;
- for (i = 0; ext[i].name != NULL; i++) {
- if (EXT_ENABLED(ext[i].bit, supported)) {
- ext_str_len += ext[i].name_len + 1;
- }
- }
-
- ext_str = Xmalloc(ext_str_len + 1);
- if (ext_str != NULL) {
- point = ext_str;
-
- for (i = 0; ext[i].name != NULL; i++) {
- if (EXT_ENABLED(ext[i].bit, supported)) {
- (void) memcpy(point, ext[i].name, ext[i].name_len);
- point += ext[i].name_len;
-
- *point = ' ';
- point++;
- }
- }
-
- *point = '\0';
- }
-
- return ext_str;
-}
-
-
-/**
- * Get the string of client library supported extensions.
- */
-const char *
-__glXGetClientExtensions(void)
-{
- if (__glXGLXClientExtensions == NULL) {
- __glXExtensionsCtr();
- __glXGLXClientExtensions = __glXGetStringFromTable(known_glx_extensions,
- client_glx_support);
- }
-
- return __glXGLXClientExtensions;
-}
-
-
-/**
- * Calculate the list of application usable extensions. The resulting
- * string is stored in \c psc->effectiveGLXexts.
- *
- * \param psc Pointer to GLX per-screen record.
- * \param display_is_direct_capable True if the display is capable of
- * direct rendering.
- * \param minor_version GLX minor version from the server.
- */
-
-void
-__glXCalculateUsableExtensions(__GLXscreenConfigs * psc,
- GLboolean display_is_direct_capable,
- int minor_version)
-{
- unsigned char server_support[8];
- unsigned char usable[8];
- unsigned i;
-
- __glXExtensionsCtr();
- __glXExtensionsCtrScreen(psc);
-
- (void) memset(server_support, 0, sizeof(server_support));
- __glXProcessServerString(known_glx_extensions,
- psc->serverGLXexts, server_support);
-
-
- /* This is a hack. Some servers support GLX 1.3 but don't export
- * all of the extensions implied by GLX 1.3. If the server claims
- * support for GLX 1.3, enable support for the extensions that can be
- * "emulated" as well.
- */
-
- if (minor_version >= 3) {
- SET_BIT(server_support, EXT_visual_info_bit);
- SET_BIT(server_support, EXT_visual_rating_bit);
- SET_BIT(server_support, SGI_make_current_read_bit);
- SET_BIT(server_support, SGIX_fbconfig_bit);
- SET_BIT(server_support, SGIX_pbuffer_bit);
-
- /* This one is a little iffy. GLX 1.3 doesn't incorporate all of this
- * extension. However, the only part that is not strictly client-side
- * is shared. That's the glXQueryContext / glXQueryContextInfoEXT
- * function.
- */
-
- SET_BIT(server_support, EXT_import_context_bit);
- }
-
-
- /* An extension is supported if the client-side (i.e., libGL) supports
- * it and the "server" supports it. In this case that means that either
- * the true server supports it or it is only for direct-rendering and
- * the direct rendering driver supports it.
- *
- * If the display is not capable of direct rendering, then the extension
- * is enabled if and only if the client-side library and the server
- * support it.
- */
-
- if (display_is_direct_capable) {
- for (i = 0; i < 8; i++) {
- usable[i] = (client_glx_support[i] & client_glx_only[i])
- | (client_glx_support[i] & psc->direct_support[i] &
- server_support[i])
- | (client_glx_support[i] & psc->direct_support[i] &
- direct_glx_only[i]);
- }
- }
- else {
- for (i = 0; i < 8; i++) {
- usable[i] = (client_glx_support[i] & client_glx_only[i])
- | (client_glx_support[i] & server_support[i]);
- }
- }
-
- psc->effectiveGLXexts = __glXGetStringFromTable(known_glx_extensions,
- usable);
-}
-
-
-/**
- * Calculate the list of application usable extensions. The resulting
- * string is stored in \c gc->extensions.
- *
- * \param gc Pointer to GLX context.
- * \param server_string Extension string from the server.
- * \param major_version GL major version from the server.
- * \param minor_version GL minor version from the server.
- */
-
-void
-__glXCalculateUsableGLExtensions(__GLXcontext * gc,
- const char *server_string,
- int major_version, int minor_version)
-{
- unsigned char server_support[__GL_EXT_BYTES];
- unsigned char usable[__GL_EXT_BYTES];
- unsigned i;
-
-
- __glXExtensionsCtr();
-
- (void) memset(server_support, 0, sizeof(server_support));
- __glXProcessServerString(known_gl_extensions, server_string,
- server_support);
-
-
- /* Handle lazy servers that don't export all the extensions strings that
- * are part of the GL core version that they support.
- */
-
- for (i = 0; i < __GL_EXT_BYTES; i++) {
- if ((known_gl_extensions[i].version_major != 0)
- && ((major_version > known_gl_extensions[i].version_major)
- || ((major_version == known_gl_extensions[i].version_major)
- && (minor_version >=
- known_gl_extensions[i].version_minor)))) {
- SET_BIT(server_support, known_gl_extensions[i].bit);
- }
- }
-
-
- /* An extension is supported if the client-side (i.e., libGL) supports
- * it and the server supports it or the client-side library supports it
- * and it only needs client-side support.
- */
-
- for (i = 0; i < __GL_EXT_BYTES; i++) {
- usable[i] = (client_gl_support[i] & client_gl_only[i])
- | (client_gl_support[i] & server_support[i]);
- }
-
- gc->extensions = (unsigned char *)
- __glXGetStringFromTable(known_gl_extensions, usable);
- (void) memcpy(gc->gl_extension_bits, usable, sizeof(usable));
-}
-
-
-/**
- * Calculates the maximum core GL version that can be supported for indirect
- * rendering.
- */
-void
-__glXGetGLVersion(int *major_version, int *minor_version)
-{
- __glXExtensionsCtr();
- *major_version = gl_major;
- *minor_version = gl_minor;
-}
-
-
-/**
- * Get a string representing the set of extensions supported by the client
- * library. This is currently only used to send the list of extensions
- * supported by the client to the server.
- */
-char *
-__glXGetClientGLExtensionString(void)
-{
- __glXExtensionsCtr();
- return __glXGetStringFromTable(known_gl_extensions, client_gl_support);
-}
diff --git a/src/glx/x11/glxextensions.h b/src/glx/x11/glxextensions.h
deleted file mode 100644
index f556b1239c9..00000000000
--- a/src/glx/x11/glxextensions.h
+++ /dev/null
@@ -1,292 +0,0 @@
-/*
- * (C) Copyright IBM Corporation 2002, 2004
- * 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"),
- * to deal in the Software without restriction, including without limitation
- * on the rights to use, copy, modify, merge, publish, distribute, sub
- * license, and/or sell copies of the Software, and to permit persons to whom
- * the Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice (including the next
- * paragraph) shall be included in all copies or substantial portions of the
- * Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL
- * THE COPYRIGHT HOLDERS AND/OR THEIR SUPPLIERS BE LIABLE FOR ANY CLAIM,
- * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
- * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
- * USE OR OTHER DEALINGS IN THE SOFTWARE.
- */
-
-/**
- * \file glxextensions.h
- *
- * \author Ian Romanick <[email protected]>
- */
-
-#ifndef GLX_GLXEXTENSIONS_H
-#define GLX_GLXEXTENSIONS_H
-
-enum
-{
- ARB_get_proc_address_bit = 0,
- ARB_multisample_bit,
- ARB_render_texture_bit,
- ATI_pixel_format_float_bit,
- EXT_visual_info_bit,
- EXT_visual_rating_bit,
- EXT_import_context_bit,
- MESA_agp_offset_bit,
- MESA_allocate_memory_bit, /* Replaces MESA_agp_offset & NV_vertex_array_range */
- MESA_copy_sub_buffer_bit,
- MESA_depth_float_bit,
- MESA_pixmap_colormap_bit,
- MESA_release_buffers_bit,
- MESA_swap_control_bit,
- MESA_swap_frame_usage_bit,
- NV_float_buffer_bit,
- NV_render_depth_texture_bit,
- NV_render_texture_rectangle_bit,
- NV_vertex_array_range_bit,
- OML_swap_method_bit,
- OML_sync_control_bit,
- SGI_make_current_read_bit,
- SGI_swap_control_bit,
- SGI_video_sync_bit,
- SGIS_blended_overlay_bit,
- SGIS_color_range_bit,
- SGIS_multisample_bit,
- SGIX_fbconfig_bit,
- SGIX_pbuffer_bit,
- SGIX_swap_barrier_bit,
- SGIX_swap_group_bit,
- SGIX_visual_select_group_bit,
- EXT_texture_from_pixmap_bit,
- INTEL_swap_event_bit,
-};
-
-enum
-{
- GL_ARB_depth_texture_bit = 0,
- GL_ARB_draw_buffers_bit,
- GL_ARB_fragment_program_bit,
- GL_ARB_fragment_program_shadow_bit,
- GL_ARB_framebuffer_object_bit,
- GL_ARB_imaging_bit,
- GL_ARB_multisample_bit,
- GL_ARB_multitexture_bit,
- GL_ARB_occlusion_query_bit,
- GL_ARB_point_parameters_bit,
- GL_ARB_point_sprite_bit,
- GL_ARB_shadow_bit,
- GL_ARB_shadow_ambient_bit,
- GL_ARB_texture_border_clamp_bit,
- GL_ARB_texture_cube_map_bit,
- GL_ARB_texture_compression_bit,
- GL_ARB_texture_env_add_bit,
- GL_ARB_texture_env_combine_bit,
- GL_ARB_texture_env_crossbar_bit,
- GL_ARB_texture_env_dot3_bit,
- GL_ARB_texture_mirrored_repeat_bit,
- GL_ARB_texture_non_power_of_two_bit,
- GL_ARB_texture_rectangle_bit,
- GL_ARB_transpose_matrix_bit,
- GL_ARB_vertex_buffer_object_bit,
- GL_ARB_vertex_program_bit,
- GL_ARB_window_pos_bit,
- GL_EXT_abgr_bit,
- GL_EXT_bgra_bit,
- GL_EXT_blend_color_bit,
- GL_EXT_blend_equation_separate_bit,
- GL_EXT_blend_func_separate_bit,
- GL_EXT_blend_logic_op_bit,
- GL_EXT_blend_minmax_bit,
- GL_EXT_blend_subtract_bit,
- GL_EXT_clip_volume_hint_bit,
- GL_EXT_compiled_vertex_array_bit,
- GL_EXT_convolution_bit,
- GL_EXT_copy_texture_bit,
- GL_EXT_cull_vertex_bit,
- GL_EXT_depth_bounds_test_bit,
- GL_EXT_draw_range_elements_bit,
- GL_EXT_fog_coord_bit,
- GL_EXT_framebuffer_blit_bit,
- GL_EXT_framebuffer_multisample_bit,
- GL_EXT_framebuffer_object_bit,
- GL_EXT_multi_draw_arrays_bit,
- GL_EXT_packed_depth_stencil_bit,
- GL_EXT_packed_pixels_bit,
- GL_EXT_paletted_texture_bit,
- GL_EXT_pixel_buffer_object_bit,
- GL_EXT_polygon_offset_bit,
- GL_EXT_rescale_normal_bit,
- GL_EXT_secondary_color_bit,
- GL_EXT_separate_specular_color_bit,
- GL_EXT_shadow_funcs_bit,
- GL_EXT_shared_texture_palette_bit,
- GL_EXT_stencil_two_side_bit,
- GL_EXT_stencil_wrap_bit,
- GL_EXT_subtexture_bit,
- GL_EXT_texture_bit,
- GL_EXT_texture3D_bit,
- GL_EXT_texture_compression_dxt1_bit,
- GL_EXT_texture_compression_s3tc_bit,
- GL_EXT_texture_edge_clamp_bit,
- GL_EXT_texture_env_combine_bit,
- GL_EXT_texture_env_dot3_bit,
- GL_EXT_texture_filter_anisotropic_bit,
- GL_EXT_texture_lod_bit,
- GL_EXT_texture_lod_bias_bit,
- GL_EXT_texture_mirror_clamp_bit,
- GL_EXT_texture_object_bit,
- GL_EXT_vertex_array_bit,
- GL_3DFX_texture_compression_FXT1_bit,
- GL_APPLE_packed_pixels_bit,
- GL_APPLE_ycbcr_422_bit,
- GL_ATI_text_fragment_shader_bit,
- GL_ATI_texture_env_combine3_bit,
- GL_ATI_texture_float_bit,
- GL_ATI_texture_mirror_once_bit,
- GL_HP_convolution_border_modes_bit,
- GL_HP_occlusion_test_bit,
- GL_IBM_cull_vertex_bit,
- GL_IBM_pixel_filter_hint_bit,
- GL_IBM_rasterpos_clip_bit,
- GL_IBM_texture_clamp_nodraw_bit,
- GL_INGR_interlace_read_bit,
- GL_MESA_pack_invert_bit,
- GL_MESA_ycbcr_texture_bit,
- GL_NV_blend_square_bit,
- GL_NV_copy_depth_to_color_bit,
- GL_NV_depth_clamp_bit,
- GL_NV_fog_distance_bit,
- GL_NV_fragment_program_bit,
- GL_NV_fragment_program_option_bit,
- GL_NV_fragment_program2_bit,
- GL_NV_light_max_exponent_bit,
- GL_NV_multisample_filter_hint_bit,
- GL_NV_packed_depth_stencil_bit,
- GL_NV_point_sprite_bit,
- GL_NV_texgen_reflection_bit,
- GL_NV_texture_compression_vtc_bit,
- GL_NV_texture_env_combine4_bit,
- GL_NV_vertex_program_bit,
- GL_NV_vertex_program1_1_bit,
- GL_NV_vertex_program2_bit,
- GL_NV_vertex_program2_option_bit,
- GL_NV_vertex_program3_bit,
- GL_OES_compressed_paletted_texture_bit,
- GL_OES_read_format_bit,
- GL_SGI_color_matrix_bit,
- GL_SGI_color_table_bit,
- GL_SGI_texture_color_table_bit,
- GL_SGIS_generate_mipmap_bit,
- GL_SGIS_multisample_bit,
- GL_SGIS_texture_lod_bit,
- GL_SGIX_blend_alpha_minmax_bit,
- GL_SGIX_clipmap_bit,
- GL_SGIX_depth_texture_bit,
- GL_SGIX_fog_offset_bit,
- GL_SGIX_shadow_bit,
- GL_SGIX_texture_coordinate_clamp_bit,
- GL_SGIX_texture_lod_bias_bit,
- GL_SGIX_texture_range_bit,
- GL_SGIX_texture_scale_bias_bit,
- GL_SGIX_vertex_preclip_bit,
- GL_SGIX_vertex_preclip_hint_bit,
- GL_SGIX_ycrcb_bit,
- GL_SUN_convolution_border_modes_bit,
- GL_SUN_slice_accum_bit,
-
- /* This *MUST* go here. If it gets put after the duplicate values it will
- * get the value after the last duplicate.
- */
- __NUM_GL_EXTS,
-
-
- /* Alias extension bits. These extensions exist in either vendor-specific
- * or EXT form and were later promoted to either EXT or ARB form. In all
- * cases, the meaning is *exactly* the same. That's why
- * EXT_texture_env_combine is *NOT* an alias of ARB_texture_env_combine and
- * EXT_texture_env_dot3 is *NOT* an alias of ARB_texture_env_dot3. Be
- * careful! When in doubt, src/mesa/main/extensions.c in the Mesa tree
- * is a great reference.
- */
-
- GL_ATI_blend_equation_separate_bit = GL_EXT_blend_equation_separate_bit,
- GL_ATI_draw_buffers_bit = GL_ARB_draw_buffers_bit,
- GL_ATIX_texture_env_combine3_bit = GL_ATI_texture_env_combine3_bit,
- GL_EXT_point_parameters_bit = GL_ARB_point_parameters_bit,
- GL_EXT_texture_env_add_bit = GL_ARB_texture_env_add_bit,
- GL_EXT_texture_rectangle_bit = GL_ARB_texture_rectangle_bit,
- GL_IBM_texture_mirrored_repeat_bit = GL_ARB_texture_mirrored_repeat_bit,
- GL_INGR_blend_func_separate_bit = GL_EXT_blend_func_separate_bit,
- GL_MESA_window_pos_bit = GL_ARB_window_pos_bit,
- GL_NV_texture_rectangle_bit = GL_ARB_texture_rectangle_bit,
- GL_SGIS_texture_border_clamp_bit = GL_ARB_texture_border_clamp_bit,
- GL_SGIS_texture_edge_clamp_bit = GL_EXT_texture_edge_clamp_bit,
- GL_SGIX_shadow_ambient_bit = GL_ARB_shadow_ambient_bit,
- GL_SUN_multi_draw_arrays_bit = GL_EXT_multi_draw_arrays_bit
-};
-
-#define __GL_EXT_BYTES ((__NUM_GL_EXTS + 7) / 8)
-
-struct __GLXscreenConfigsRec;
-struct __GLXcontextRec;
-
-extern GLboolean __glXExtensionBitIsEnabled(struct __GLXscreenConfigsRec *psc,
- unsigned bit);
-extern const char *__glXGetClientExtensions(void);
-extern void __glXCalculateUsableExtensions(struct __GLXscreenConfigsRec *psc,
- GLboolean
- display_is_direct_capable,
- int server_minor_version);
-
-extern void __glXCalculateUsableGLExtensions(struct __GLXcontextRec *gc,
- const char *server_string,
- int major_version,
- int minor_version);
-extern void __glXGetGLVersion(int *major_version, int *minor_version);
-extern char *__glXGetClientGLExtensionString(void);
-
-extern GLboolean __glExtensionBitIsEnabled(const struct __GLXcontextRec *gc,
- unsigned bit);
-
-extern void
-__glXEnableDirectExtension(struct __GLXscreenConfigsRec *psc,
- const char *name);
-
-/* Source-level backwards compatibility with old drivers. They won't
- * find the respective functions, though.
- */
-typedef void (*PFNGLXENABLEEXTENSIONPROC) (const char *name,
- GLboolean force_client);
-typedef void (*PFNGLXDISABLEEXTENSIONPROC) (const char *name);
-
-/* GLX_ALIAS should be used for functions with a non-void return type.
- GLX_ALIAS_VOID is for functions with a void return type. */
-#ifdef GLX_NO_STATIC_EXTENSION_FUNCTIONS
-# define GLX_ALIAS(return_type, real_func, proto_args, args, aliased_func)
-# define GLX_ALIAS_VOID(real_func, proto_args, args, aliased_func)
-#else
-# if defined(__GNUC__) && !defined(GLX_ALIAS_UNSUPPORTED)
-# define GLX_ALIAS(return_type, real_func, proto_args, args, aliased_func) \
- return_type real_func proto_args \
- __attribute__ ((alias( # aliased_func ) ));
-# define GLX_ALIAS_VOID(real_func, proto_args, args, aliased_func) \
- GLX_ALIAS(void, real_func, proto_args, args, aliased_func)
-# else
-# define GLX_ALIAS(return_type, real_func, proto_args, args, aliased_func) \
- return_type real_func proto_args \
- { return aliased_func args ; }
-# define GLX_ALIAS_VOID(real_func, proto_args, args, aliased_func) \
- void real_func proto_args \
- { aliased_func args ; }
-# endif /* __GNUC__ */
-#endif /* GLX_NO_STATIC_EXTENSION_FUNCTIONS */
-
-#endif /* GLX_GLXEXTENSIONS_H */
diff --git a/src/glx/x11/glxhash.c b/src/glx/x11/glxhash.c
deleted file mode 100644
index b76ec323459..00000000000
--- a/src/glx/x11/glxhash.c
+++ /dev/null
@@ -1,473 +0,0 @@
-/* glxhash.c -- Small hash table support for integer -> integer mapping
- * Taken from libdrm.
- *
- * Created: Sun Apr 18 09:35:45 1999 by [email protected]
- *
- * Copyright 1999 Precision Insight, Inc., Cedar Park, Texas.
- * 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"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice (including the next
- * paragraph) shall be included in all copies or substantial portions of the
- * Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR ANY CLAIM, DAMAGES OR
- * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
- * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
- * DEALINGS IN THE SOFTWARE.
- *
- * Authors: Rickard E. (Rik) Faith <[email protected]>
- *
- * DESCRIPTION
- *
- * This file contains a straightforward implementation of a fixed-sized
- * hash table using self-organizing linked lists [Knuth73, pp. 398-399] for
- * collision resolution. There are two potentially interesting things
- * about this implementation:
- *
- * 1) The table is power-of-two sized. Prime sized tables are more
- * traditional, but do not have a significant advantage over power-of-two
- * sized table, especially when double hashing is not used for collision
- * resolution.
- *
- * 2) The hash computation uses a table of random integers [Hanson97,
- * pp. 39-41].
- *
- * FUTURE ENHANCEMENTS
- *
- * With a table size of 512, the current implementation is sufficient for a
- * few hundred keys. Since this is well above the expected size of the
- * tables for which this implementation was designed, the implementation of
- * dynamic hash tables was postponed until the need arises. A common (and
- * naive) approach to dynamic hash table implementation simply creates a
- * new hash table when necessary, rehashes all the data into the new table,
- * and destroys the old table. The approach in [Larson88] is superior in
- * two ways: 1) only a portion of the table is expanded when needed,
- * distributing the expansion cost over several insertions, and 2) portions
- * of the table can be locked, enabling a scalable thread-safe
- * implementation.
- *
- * REFERENCES
- *
- * [Hanson97] David R. Hanson. C Interfaces and Implementations:
- * Techniques for Creating Reusable Software. Reading, Massachusetts:
- * Addison-Wesley, 1997.
- *
- * [Knuth73] Donald E. Knuth. The Art of Computer Programming. Volume 3:
- * Sorting and Searching. Reading, Massachusetts: Addison-Wesley, 1973.
- *
- * [Larson88] Per-Ake Larson. "Dynamic Hash Tables". CACM 31(4), April
- * 1988, pp. 446-457.
- *
- */
-
-#include "glxhash.h"
-#include <X11/Xfuncproto.h>
-
-#define HASH_MAIN 0
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-#define HASH_MAGIC 0xdeadbeef
-#define HASH_DEBUG 0
-#define HASH_SIZE 512 /* Good for about 100 entries */
- /* If you change this value, you probably
- have to change the HashHash hashing
- function! */
-
-#define HASH_ALLOC malloc
-#define HASH_FREE free
-#ifndef __GLIBC__
-#define HASH_RANDOM_DECL char *ps, rs[256]
-#define HASH_RANDOM_INIT(seed) ps = initstate(seed, rs, sizeof(rs))
-#define HASH_RANDOM random()
-#define HASH_RANDOM_DESTROY setstate(ps)
-#else
-#define HASH_RANDOM_DECL struct random_data rd; int32_t rv; char rs[256]
-#define HASH_RANDOM_INIT(seed) \
- do { \
- (void) memset(&rd, 0, sizeof(rd)); \
- (void) initstate_r(seed, rs, sizeof(rs), &rd); \
- } while(0)
-#define HASH_RANDOM ((void) random_r(&rd, &rv), rv)
-#define HASH_RANDOM_DESTROY
-#endif
-
-typedef struct __glxHashBucket
-{
- unsigned long key;
- void *value;
- struct __glxHashBucket *next;
-} __glxHashBucket, *__glxHashBucketPtr;
-
-typedef struct __glxHashTable *__glxHashTablePtr;
-struct __glxHashTable
-{
- unsigned long magic;
- unsigned long hits; /* At top of linked list */
- unsigned long partials; /* Not at top of linked list */
- unsigned long misses; /* Not in table */
- __glxHashBucketPtr buckets[HASH_SIZE];
- int p0;
- __glxHashBucketPtr p1;
-};
-
-static unsigned long
-HashHash(unsigned long key)
-{
- unsigned long hash = 0;
- unsigned long tmp = key;
- static int init = 0;
- static unsigned long scatter[256];
- int i;
-
- if (!init) {
- HASH_RANDOM_DECL;
- HASH_RANDOM_INIT(37);
- for (i = 0; i < 256; i++)
- scatter[i] = HASH_RANDOM;
- HASH_RANDOM_DESTROY;
- ++init;
- }
-
- while (tmp) {
- hash = (hash << 1) + scatter[tmp & 0xff];
- tmp >>= 8;
- }
-
- hash %= HASH_SIZE;
-#if HASH_DEBUG
- printf("Hash(%d) = %d\n", key, hash);
-#endif
- return hash;
-}
-
-_X_HIDDEN __glxHashTable *
-__glxHashCreate(void)
-{
- __glxHashTablePtr table;
- int i;
-
- table = HASH_ALLOC(sizeof(*table));
- if (!table)
- return NULL;
- table->magic = HASH_MAGIC;
- table->hits = 0;
- table->partials = 0;
- table->misses = 0;
-
- for (i = 0; i < HASH_SIZE; i++)
- table->buckets[i] = NULL;
- return table;
-}
-
-_X_HIDDEN int
-__glxHashDestroy(__glxHashTable * t)
-{
- __glxHashTablePtr table = (__glxHashTablePtr) t;
- __glxHashBucketPtr bucket;
- __glxHashBucketPtr next;
- int i;
-
- if (table->magic != HASH_MAGIC)
- return -1; /* Bad magic */
-
- for (i = 0; i < HASH_SIZE; i++) {
- for (bucket = table->buckets[i]; bucket;) {
- next = bucket->next;
- HASH_FREE(bucket);
- bucket = next;
- }
- }
- HASH_FREE(table);
- return 0;
-}
-
-/* Find the bucket and organize the list so that this bucket is at the
- top. */
-
-static __glxHashBucketPtr
-HashFind(__glxHashTablePtr table, unsigned long key, unsigned long *h)
-{
- unsigned long hash = HashHash(key);
- __glxHashBucketPtr prev = NULL;
- __glxHashBucketPtr bucket;
-
- if (h)
- *h = hash;
-
- for (bucket = table->buckets[hash]; bucket; bucket = bucket->next) {
- if (bucket->key == key) {
- if (prev) {
- /* Organize */
- prev->next = bucket->next;
- bucket->next = table->buckets[hash];
- table->buckets[hash] = bucket;
- ++table->partials;
- }
- else {
- ++table->hits;
- }
- return bucket;
- }
- prev = bucket;
- }
- ++table->misses;
- return NULL;
-}
-
-_X_HIDDEN int
-__glxHashLookup(__glxHashTable * t, unsigned long key, void **value)
-{
- __glxHashTablePtr table = (__glxHashTablePtr) t;
- __glxHashBucketPtr bucket;
-
- if (!table || table->magic != HASH_MAGIC)
- return -1; /* Bad magic */
-
- bucket = HashFind(table, key, NULL);
- if (!bucket)
- return 1; /* Not found */
- *value = bucket->value;
- return 0; /* Found */
-}
-
-_X_HIDDEN int
-__glxHashInsert(__glxHashTable * t, unsigned long key, void *value)
-{
- __glxHashTablePtr table = (__glxHashTablePtr) t;
- __glxHashBucketPtr bucket;
- unsigned long hash;
-
- if (table->magic != HASH_MAGIC)
- return -1; /* Bad magic */
-
- if (HashFind(table, key, &hash))
- return 1; /* Already in table */
-
- bucket = HASH_ALLOC(sizeof(*bucket));
- if (!bucket)
- return -1; /* Error */
- bucket->key = key;
- bucket->value = value;
- bucket->next = table->buckets[hash];
- table->buckets[hash] = bucket;
-#if HASH_DEBUG
- printf("Inserted %d at %d/%p\n", key, hash, bucket);
-#endif
- return 0; /* Added to table */
-}
-
-_X_HIDDEN int
-__glxHashDelete(__glxHashTable * t, unsigned long key)
-{
- __glxHashTablePtr table = (__glxHashTablePtr) t;
- unsigned long hash;
- __glxHashBucketPtr bucket;
-
- if (table->magic != HASH_MAGIC)
- return -1; /* Bad magic */
-
- bucket = HashFind(table, key, &hash);
-
- if (!bucket)
- return 1; /* Not found */
-
- table->buckets[hash] = bucket->next;
- HASH_FREE(bucket);
- return 0;
-}
-
-_X_HIDDEN int
-__glxHashNext(__glxHashTable * t, unsigned long *key, void **value)
-{
- __glxHashTablePtr table = (__glxHashTablePtr) t;
-
- while (table->p0 < HASH_SIZE) {
- if (table->p1) {
- *key = table->p1->key;
- *value = table->p1->value;
- table->p1 = table->p1->next;
- return 1;
- }
- table->p1 = table->buckets[table->p0];
- ++table->p0;
- }
- return 0;
-}
-
-_X_HIDDEN int
-__glxHashFirst(__glxHashTable * t, unsigned long *key, void **value)
-{
- __glxHashTablePtr table = (__glxHashTablePtr) t;
-
- if (table->magic != HASH_MAGIC)
- return -1; /* Bad magic */
-
- table->p0 = 0;
- table->p1 = table->buckets[0];
- return __glxHashNext(table, key, value);
-}
-
-#if HASH_MAIN
-#define DIST_LIMIT 10
-static int dist[DIST_LIMIT];
-
-static void
-clear_dist(void)
-{
- int i;
-
- for (i = 0; i < DIST_LIMIT; i++)
- dist[i] = 0;
-}
-
-static int
-count_entries(__glxHashBucketPtr bucket)
-{
- int count = 0;
-
- for (; bucket; bucket = bucket->next)
- ++count;
- return count;
-}
-
-static void
-update_dist(int count)
-{
- if (count >= DIST_LIMIT)
- ++dist[DIST_LIMIT - 1];
- else
- ++dist[count];
-}
-
-static void
-compute_dist(__glxHashTablePtr table)
-{
- int i;
- __glxHashBucketPtr bucket;
-
- printf("Hits = %ld, partials = %ld, misses = %ld\n",
- table->hits, table->partials, table->misses);
- clear_dist();
- for (i = 0; i < HASH_SIZE; i++) {
- bucket = table->buckets[i];
- update_dist(count_entries(bucket));
- }
- for (i = 0; i < DIST_LIMIT; i++) {
- if (i != DIST_LIMIT - 1)
- printf("%5d %10d\n", i, dist[i]);
- else
- printf("other %10d\n", dist[i]);
- }
-}
-
-static void
-check_table(__glxHashTablePtr table, unsigned long key, unsigned long value)
-{
- unsigned long retval = 0;
- int retcode = __glxHashLookup(table, key, &retval);
-
- switch (retcode) {
- case -1:
- printf("Bad magic = 0x%08lx:"
- " key = %lu, expected = %lu, returned = %lu\n",
- table->magic, key, value, retval);
- break;
- case 1:
- printf("Not found: key = %lu, expected = %lu returned = %lu\n",
- key, value, retval);
- break;
- case 0:
- if (value != retval)
- printf("Bad value: key = %lu, expected = %lu, returned = %lu\n",
- key, value, retval);
- break;
- default:
- printf("Bad retcode = %d: key = %lu, expected = %lu, returned = %lu\n",
- retcode, key, value, retval);
- break;
- }
-}
-
-int
-main(void)
-{
- __glxHashTablePtr table;
- int i;
-
- printf("\n***** 256 consecutive integers ****\n");
- table = __glxHashCreate();
- for (i = 0; i < 256; i++)
- __glxHashInsert(table, i, i);
- for (i = 0; i < 256; i++)
- check_table(table, i, i);
- for (i = 256; i >= 0; i--)
- check_table(table, i, i);
- compute_dist(table);
- __glxHashDestroy(table);
-
- printf("\n***** 1024 consecutive integers ****\n");
- table = __glxHashCreate();
- for (i = 0; i < 1024; i++)
- __glxHashInsert(table, i, i);
- for (i = 0; i < 1024; i++)
- check_table(table, i, i);
- for (i = 1024; i >= 0; i--)
- check_table(table, i, i);
- compute_dist(table);
- __glxHashDestroy(table);
-
- printf("\n***** 1024 consecutive page addresses (4k pages) ****\n");
- table = __glxHashCreate();
- for (i = 0; i < 1024; i++)
- __glxHashInsert(table, i * 4096, i);
- for (i = 0; i < 1024; i++)
- check_table(table, i * 4096, i);
- for (i = 1024; i >= 0; i--)
- check_table(table, i * 4096, i);
- compute_dist(table);
- __glxHashDestroy(table);
-
- printf("\n***** 1024 random integers ****\n");
- table = __glxHashCreate();
- srandom(0xbeefbeef);
- for (i = 0; i < 1024; i++)
- __glxHashInsert(table, random(), i);
- srandom(0xbeefbeef);
- for (i = 0; i < 1024; i++)
- check_table(table, random(), i);
- srandom(0xbeefbeef);
- for (i = 0; i < 1024; i++)
- check_table(table, random(), i);
- compute_dist(table);
- __glxHashDestroy(table);
-
- printf("\n***** 5000 random integers ****\n");
- table = __glxHashCreate();
- srandom(0xbeefbeef);
- for (i = 0; i < 5000; i++)
- __glxHashInsert(table, random(), i);
- srandom(0xbeefbeef);
- for (i = 0; i < 5000; i++)
- check_table(table, random(), i);
- srandom(0xbeefbeef);
- for (i = 0; i < 5000; i++)
- check_table(table, random(), i);
- compute_dist(table);
- __glxHashDestroy(table);
-
- return 0;
-}
-#endif
diff --git a/src/glx/x11/glxhash.h b/src/glx/x11/glxhash.h
deleted file mode 100644
index 710712dd28a..00000000000
--- a/src/glx/x11/glxhash.h
+++ /dev/null
@@ -1,20 +0,0 @@
-#ifndef _GLX_HASH_H_
-#define _GLX_HASH_H_
-
-
-typedef struct __glxHashTable __glxHashTable;
-
-/* Hash table routines */
-extern __glxHashTable *__glxHashCreate(void);
-extern int __glxHashDestroy(__glxHashTable * t);
-extern int __glxHashLookup(__glxHashTable * t, unsigned long key,
- void **value);
-extern int __glxHashInsert(__glxHashTable * t, unsigned long key,
- void *value);
-extern int __glxHashDelete(__glxHashTable * t, unsigned long key);
-extern int __glxHashFirst(__glxHashTable * t, unsigned long *key,
- void **value);
-extern int __glxHashNext(__glxHashTable * t, unsigned long *key,
- void **value);
-
-#endif /* _GLX_HASH_H_ */
diff --git a/src/glx/x11/indirect.c b/src/glx/x11/indirect.c
deleted file mode 100644
index 48bae1478f4..00000000000
--- a/src/glx/x11/indirect.c
+++ /dev/null
@@ -1,10669 +0,0 @@
-/* DO NOT EDIT - This file generated automatically by glX_proto_send.py (from Mesa) script */
-
-/*
- * (C) Copyright IBM Corporation 2004, 2005
- * 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"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sub license,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice (including the next
- * paragraph) shall be included in all copies or substantial portions of the
- * Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL
- * IBM,
- * AND/OR THEIR SUPPLIERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
- * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
- * OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- */
-
-
-#include <GL/gl.h>
-#include "indirect.h"
-#include "glxclient.h"
-#include "indirect_size.h"
-#include "glapitable.h"
-#include "glapidispatch.h"
-#include "glapi.h"
-#include "glthread.h"
-#include <GL/glxproto.h>
-#ifdef USE_XCB
-#include <X11/Xlib-xcb.h>
-#include <xcb/xcb.h>
-#include <xcb/glx.h>
-#endif /* USE_XCB */
-
-#define __GLX_PAD(n) (((n) + 3) & ~3)
-
-# if defined(__i386__) && defined(__GNUC__) && !defined(__CYGWIN__) && !defined(__MINGW32__)
-# define FASTCALL __attribute__((fastcall))
-# else
-# define FASTCALL
-# endif
-# if defined(__GNUC__) || (defined(__SUNPRO_C) && (__SUNPRO_C >= 0x590))
-# define NOINLINE __attribute__((noinline))
-# else
-# define NOINLINE
-# endif
-
-#if !defined __GNUC__ || __GNUC__ < 3
-# define __builtin_expect(x, y) x
-#endif
-
-/* If the size and opcode values are known at compile-time, this will, on
- * x86 at least, emit them with a single instruction.
- */
-#define emit_header(dest, op, size) \
- do { union { short s[2]; int i; } temp; \
- temp.s[0] = (size); temp.s[1] = (op); \
- *((int *)(dest)) = temp.i; } while(0)
-
-NOINLINE CARD32
-__glXReadReply(Display * dpy, size_t size, void *dest,
- GLboolean reply_is_always_array)
-{
- xGLXSingleReply reply;
-
- (void) _XReply(dpy, (xReply *) & reply, 0, False);
- if (size != 0) {
- if ((reply.length > 0) || reply_is_always_array) {
- const GLint bytes = (reply_is_always_array)
- ? (4 * reply.length) : (reply.size * size);
- const GLint extra = 4 - (bytes & 3);
-
- _XRead(dpy, dest, bytes);
- if (extra < 4) {
- _XEatData(dpy, extra);
- }
- } else {
- (void) memcpy(dest, &(reply.pad3), size);
- }
- }
-
- return reply.retval;
-}
-
-NOINLINE void
-__glXReadPixelReply(Display * dpy, __GLXcontext * gc, unsigned max_dim,
- GLint width, GLint height, GLint depth, GLenum format,
- GLenum type, void *dest, GLboolean dimensions_in_reply)
-{
- xGLXSingleReply reply;
- GLint size;
-
- (void) _XReply(dpy, (xReply *) & reply, 0, False);
-
- if (dimensions_in_reply) {
- width = reply.pad3;
- height = reply.pad4;
- depth = reply.pad5;
-
- if ((height == 0) || (max_dim < 2)) {
- height = 1;
- }
- if ((depth == 0) || (max_dim < 3)) {
- depth = 1;
- }
- }
-
- size = reply.length * 4;
- if (size != 0) {
- void *buf = Xmalloc(size);
-
- if (buf == NULL) {
- _XEatData(dpy, size);
- __glXSetError(gc, GL_OUT_OF_MEMORY);
- } else {
- const GLint extra = 4 - (size & 3);
-
- _XRead(dpy, buf, size);
- if (extra < 4) {
- _XEatData(dpy, extra);
- }
-
- __glEmptyImage(gc, 3, width, height, depth, format, type,
- buf, dest);
- Xfree(buf);
- }
- }
-}
-
-#define X_GLXSingle 0
-
-NOINLINE FASTCALL GLubyte *
-__glXSetupSingleRequest(__GLXcontext * gc, GLint sop, GLint cmdlen)
-{
- xGLXSingleReq *req;
- Display *const dpy = gc->currentDpy;
-
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- LockDisplay(dpy);
- GetReqExtra(GLXSingle, cmdlen, req);
- req->reqType = gc->majorOpcode;
- req->contextTag = gc->currentContextTag;
- req->glxCode = sop;
- return (GLubyte *) (req) + sz_xGLXSingleReq;
-}
-
-NOINLINE FASTCALL GLubyte *
-__glXSetupVendorRequest(__GLXcontext * gc, GLint code, GLint vop,
- GLint cmdlen)
-{
- xGLXVendorPrivateReq *req;
- Display *const dpy = gc->currentDpy;
-
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- LockDisplay(dpy);
- GetReqExtra(GLXVendorPrivate, cmdlen, req);
- req->reqType = gc->majorOpcode;
- req->glxCode = code;
- req->vendorCode = vop;
- req->contextTag = gc->currentContextTag;
- return (GLubyte *) (req) + sz_xGLXVendorPrivateReq;
-}
-
-const GLuint __glXDefaultPixelStore[9] = { 0, 0, 0, 0, 0, 0, 0, 0, 1 };
-
-#define zero (__glXDefaultPixelStore+0)
-#define one (__glXDefaultPixelStore+8)
-#define default_pixel_store_1D (__glXDefaultPixelStore+4)
-#define default_pixel_store_1D_size 20
-#define default_pixel_store_2D (__glXDefaultPixelStore+4)
-#define default_pixel_store_2D_size 20
-#define default_pixel_store_3D (__glXDefaultPixelStore+0)
-#define default_pixel_store_3D_size 36
-#define default_pixel_store_4D (__glXDefaultPixelStore+0)
-#define default_pixel_store_4D_size 36
-
-static FASTCALL NOINLINE void
-generic_3_byte(GLint rop, const void *ptr)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 8;
-
- emit_header(gc->pc, rop, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), ptr, 4);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-static FASTCALL NOINLINE void
-generic_4_byte(GLint rop, const void *ptr)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 8;
-
- emit_header(gc->pc, rop, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), ptr, 4);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-static FASTCALL NOINLINE void
-generic_6_byte(GLint rop, const void *ptr)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 12;
-
- emit_header(gc->pc, rop, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), ptr, 8);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-static FASTCALL NOINLINE void
-generic_8_byte(GLint rop, const void *ptr)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 12;
-
- emit_header(gc->pc, rop, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), ptr, 8);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-static FASTCALL NOINLINE void
-generic_12_byte(GLint rop, const void *ptr)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 16;
-
- emit_header(gc->pc, rop, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), ptr, 12);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-static FASTCALL NOINLINE void
-generic_16_byte(GLint rop, const void *ptr)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 20;
-
- emit_header(gc->pc, rop, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), ptr, 16);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-static FASTCALL NOINLINE void
-generic_24_byte(GLint rop, const void *ptr)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 28;
-
- emit_header(gc->pc, rop, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), ptr, 24);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-static FASTCALL NOINLINE void
-generic_32_byte(GLint rop, const void *ptr)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 36;
-
- emit_header(gc->pc, rop, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), ptr, 32);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLsop_NewList 101
-void
-__indirect_glNewList(GLuint list, GLenum mode)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- Display *const dpy = gc->currentDpy;
-#ifndef USE_XCB
- const GLuint cmdlen = 8;
-#endif
- if (__builtin_expect(dpy != NULL, 1)) {
-#ifdef USE_XCB
- xcb_connection_t *c = XGetXCBConnection(dpy);
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- xcb_glx_new_list(c, gc->currentContextTag, list, mode);
-#else
- GLubyte const *pc =
- __glXSetupSingleRequest(gc, X_GLsop_NewList, cmdlen);
- (void) memcpy((void *) (pc + 0), (void *) (&list), 4);
- (void) memcpy((void *) (pc + 4), (void *) (&mode), 4);
- UnlockDisplay(dpy);
- SyncHandle();
-#endif /* USE_XCB */
- }
- return;
-}
-
-#define X_GLsop_EndList 102
-void
-__indirect_glEndList(void)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- Display *const dpy = gc->currentDpy;
-#ifndef USE_XCB
- const GLuint cmdlen = 0;
-#endif
- if (__builtin_expect(dpy != NULL, 1)) {
-#ifdef USE_XCB
- xcb_connection_t *c = XGetXCBConnection(dpy);
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- xcb_glx_end_list(c, gc->currentContextTag);
-#else
- (void) __glXSetupSingleRequest(gc, X_GLsop_EndList, cmdlen);
- UnlockDisplay(dpy);
- SyncHandle();
-#endif /* USE_XCB */
- }
- return;
-}
-
-#define X_GLrop_CallList 1
-void
-__indirect_glCallList(GLuint list)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 8;
- emit_header(gc->pc, X_GLrop_CallList, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&list), 4);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_CallLists 2
-void
-__indirect_glCallLists(GLsizei n, GLenum type, const GLvoid * lists)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint compsize = __glCallLists_size(type);
- const GLuint cmdlen = 12 + __GLX_PAD((compsize * n));
- if (n < 0) {
- __glXSetError(gc, GL_INVALID_VALUE);
- return;
- }
- if (__builtin_expect((n >= 0) && (gc->currentDpy != NULL), 1)) {
- if (cmdlen <= gc->maxSmallRenderCommandSize) {
- if ((gc->pc + cmdlen) > gc->bufEnd) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
- emit_header(gc->pc, X_GLrop_CallLists, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&n), 4);
- (void) memcpy((void *) (gc->pc + 8), (void *) (&type), 4);
- (void) memcpy((void *) (gc->pc + 12), (void *) (lists),
- (compsize * n));
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
- } else {
- const GLint op = X_GLrop_CallLists;
- const GLuint cmdlenLarge = cmdlen + 4;
- GLubyte *const pc = __glXFlushRenderBuffer(gc, gc->pc);
- (void) memcpy((void *) (pc + 0), (void *) (&cmdlenLarge), 4);
- (void) memcpy((void *) (pc + 4), (void *) (&op), 4);
- (void) memcpy((void *) (pc + 8), (void *) (&n), 4);
- (void) memcpy((void *) (pc + 12), (void *) (&type), 4);
- __glXSendLargeCommand(gc, pc, 16, lists, (compsize * n));
- }
- }
-}
-
-#define X_GLsop_DeleteLists 103
-void
-__indirect_glDeleteLists(GLuint list, GLsizei range)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- Display *const dpy = gc->currentDpy;
-#ifndef USE_XCB
- const GLuint cmdlen = 8;
-#endif
- if (__builtin_expect(dpy != NULL, 1)) {
-#ifdef USE_XCB
- xcb_connection_t *c = XGetXCBConnection(dpy);
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- xcb_glx_delete_lists(c, gc->currentContextTag, list, range);
-#else
- GLubyte const *pc =
- __glXSetupSingleRequest(gc, X_GLsop_DeleteLists, cmdlen);
- (void) memcpy((void *) (pc + 0), (void *) (&list), 4);
- (void) memcpy((void *) (pc + 4), (void *) (&range), 4);
- UnlockDisplay(dpy);
- SyncHandle();
-#endif /* USE_XCB */
- }
- return;
-}
-
-#define X_GLsop_GenLists 104
-GLuint
-__indirect_glGenLists(GLsizei range)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- Display *const dpy = gc->currentDpy;
- GLuint retval = (GLuint) 0;
-#ifndef USE_XCB
- const GLuint cmdlen = 4;
-#endif
- if (__builtin_expect(dpy != NULL, 1)) {
-#ifdef USE_XCB
- xcb_connection_t *c = XGetXCBConnection(dpy);
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- xcb_glx_gen_lists_reply_t *reply =
- xcb_glx_gen_lists_reply(c,
- xcb_glx_gen_lists(c,
- gc->currentContextTag,
- range), NULL);
- retval = reply->ret_val;
- free(reply);
-#else
- GLubyte const *pc =
- __glXSetupSingleRequest(gc, X_GLsop_GenLists, cmdlen);
- (void) memcpy((void *) (pc + 0), (void *) (&range), 4);
- retval = (GLuint) __glXReadReply(dpy, 0, NULL, GL_FALSE);
- UnlockDisplay(dpy);
- SyncHandle();
-#endif /* USE_XCB */
- }
- return retval;
-}
-
-#define X_GLrop_ListBase 3
-void
-__indirect_glListBase(GLuint base)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 8;
- emit_header(gc->pc, X_GLrop_ListBase, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&base), 4);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_Begin 4
-void
-__indirect_glBegin(GLenum mode)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 8;
- emit_header(gc->pc, X_GLrop_Begin, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&mode), 4);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_Bitmap 5
-void
-__indirect_glBitmap(GLsizei width, GLsizei height, GLfloat xorig,
- GLfloat yorig, GLfloat xmove, GLfloat ymove,
- const GLubyte *bitmap)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint compsize =
- (bitmap != NULL) ? __glImageSize(width, height, 1, GL_COLOR_INDEX,
- GL_BITMAP, 0) : 0;
- const GLuint cmdlen = 48 + __GLX_PAD(compsize);
- if (__builtin_expect(gc->currentDpy != NULL, 1)) {
- if (cmdlen <= gc->maxSmallRenderCommandSize) {
- if ((gc->pc + cmdlen) > gc->bufEnd) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
- emit_header(gc->pc, X_GLrop_Bitmap, cmdlen);
- (void) memcpy((void *) (gc->pc + 24), (void *) (&width), 4);
- (void) memcpy((void *) (gc->pc + 28), (void *) (&height), 4);
- (void) memcpy((void *) (gc->pc + 32), (void *) (&xorig), 4);
- (void) memcpy((void *) (gc->pc + 36), (void *) (&yorig), 4);
- (void) memcpy((void *) (gc->pc + 40), (void *) (&xmove), 4);
- (void) memcpy((void *) (gc->pc + 44), (void *) (&ymove), 4);
- if (compsize > 0) {
- (*gc->fillImage) (gc, 2, width, height, 1, GL_COLOR_INDEX,
- GL_BITMAP, bitmap, gc->pc + 48, gc->pc + 4);
- } else {
- (void) memcpy(gc->pc + 4, default_pixel_store_2D,
- default_pixel_store_2D_size);
- }
- gc->pc += cmdlen;
- if (gc->pc > gc->limit) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
- } else {
- const GLint op = X_GLrop_Bitmap;
- const GLuint cmdlenLarge = cmdlen + 4;
- GLubyte *const pc = __glXFlushRenderBuffer(gc, gc->pc);
- (void) memcpy((void *) (pc + 0), (void *) (&cmdlenLarge), 4);
- (void) memcpy((void *) (pc + 4), (void *) (&op), 4);
- (void) memcpy((void *) (pc + 28), (void *) (&width), 4);
- (void) memcpy((void *) (pc + 32), (void *) (&height), 4);
- (void) memcpy((void *) (pc + 36), (void *) (&xorig), 4);
- (void) memcpy((void *) (pc + 40), (void *) (&yorig), 4);
- (void) memcpy((void *) (pc + 44), (void *) (&xmove), 4);
- (void) memcpy((void *) (pc + 48), (void *) (&ymove), 4);
- __glXSendLargeImage(gc, compsize, 2, width, height, 1,
- GL_COLOR_INDEX, GL_BITMAP, bitmap, pc + 52,
- pc + 8);
- }
- }
-}
-
-#define X_GLrop_Color3bv 6
-void
-__indirect_glColor3b(GLbyte red, GLbyte green, GLbyte blue)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 8;
- emit_header(gc->pc, X_GLrop_Color3bv, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&red), 1);
- (void) memcpy((void *) (gc->pc + 5), (void *) (&green), 1);
- (void) memcpy((void *) (gc->pc + 6), (void *) (&blue), 1);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_Color3bv 6
-void
-__indirect_glColor3bv(const GLbyte *v)
-{
- generic_3_byte(X_GLrop_Color3bv, v);
-}
-
-#define X_GLrop_Color3dv 7
-void
-__indirect_glColor3d(GLdouble red, GLdouble green, GLdouble blue)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 28;
- emit_header(gc->pc, X_GLrop_Color3dv, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&red), 8);
- (void) memcpy((void *) (gc->pc + 12), (void *) (&green), 8);
- (void) memcpy((void *) (gc->pc + 20), (void *) (&blue), 8);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_Color3dv 7
-void
-__indirect_glColor3dv(const GLdouble * v)
-{
- generic_24_byte(X_GLrop_Color3dv, v);
-}
-
-#define X_GLrop_Color3fv 8
-void
-__indirect_glColor3f(GLfloat red, GLfloat green, GLfloat blue)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 16;
- emit_header(gc->pc, X_GLrop_Color3fv, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&red), 4);
- (void) memcpy((void *) (gc->pc + 8), (void *) (&green), 4);
- (void) memcpy((void *) (gc->pc + 12), (void *) (&blue), 4);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_Color3fv 8
-void
-__indirect_glColor3fv(const GLfloat * v)
-{
- generic_12_byte(X_GLrop_Color3fv, v);
-}
-
-#define X_GLrop_Color3iv 9
-void
-__indirect_glColor3i(GLint red, GLint green, GLint blue)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 16;
- emit_header(gc->pc, X_GLrop_Color3iv, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&red), 4);
- (void) memcpy((void *) (gc->pc + 8), (void *) (&green), 4);
- (void) memcpy((void *) (gc->pc + 12), (void *) (&blue), 4);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_Color3iv 9
-void
-__indirect_glColor3iv(const GLint * v)
-{
- generic_12_byte(X_GLrop_Color3iv, v);
-}
-
-#define X_GLrop_Color3sv 10
-void
-__indirect_glColor3s(GLshort red, GLshort green, GLshort blue)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 12;
- emit_header(gc->pc, X_GLrop_Color3sv, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&red), 2);
- (void) memcpy((void *) (gc->pc + 6), (void *) (&green), 2);
- (void) memcpy((void *) (gc->pc + 8), (void *) (&blue), 2);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_Color3sv 10
-void
-__indirect_glColor3sv(const GLshort * v)
-{
- generic_6_byte(X_GLrop_Color3sv, v);
-}
-
-#define X_GLrop_Color3ubv 11
-void
-__indirect_glColor3ub(GLubyte red, GLubyte green, GLubyte blue)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 8;
- emit_header(gc->pc, X_GLrop_Color3ubv, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&red), 1);
- (void) memcpy((void *) (gc->pc + 5), (void *) (&green), 1);
- (void) memcpy((void *) (gc->pc + 6), (void *) (&blue), 1);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_Color3ubv 11
-void
-__indirect_glColor3ubv(const GLubyte *v)
-{
- generic_3_byte(X_GLrop_Color3ubv, v);
-}
-
-#define X_GLrop_Color3uiv 12
-void
-__indirect_glColor3ui(GLuint red, GLuint green, GLuint blue)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 16;
- emit_header(gc->pc, X_GLrop_Color3uiv, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&red), 4);
- (void) memcpy((void *) (gc->pc + 8), (void *) (&green), 4);
- (void) memcpy((void *) (gc->pc + 12), (void *) (&blue), 4);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_Color3uiv 12
-void
-__indirect_glColor3uiv(const GLuint * v)
-{
- generic_12_byte(X_GLrop_Color3uiv, v);
-}
-
-#define X_GLrop_Color3usv 13
-void
-__indirect_glColor3us(GLushort red, GLushort green, GLushort blue)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 12;
- emit_header(gc->pc, X_GLrop_Color3usv, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&red), 2);
- (void) memcpy((void *) (gc->pc + 6), (void *) (&green), 2);
- (void) memcpy((void *) (gc->pc + 8), (void *) (&blue), 2);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_Color3usv 13
-void
-__indirect_glColor3usv(const GLushort * v)
-{
- generic_6_byte(X_GLrop_Color3usv, v);
-}
-
-#define X_GLrop_Color4bv 14
-void
-__indirect_glColor4b(GLbyte red, GLbyte green, GLbyte blue, GLbyte alpha)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 8;
- emit_header(gc->pc, X_GLrop_Color4bv, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&red), 1);
- (void) memcpy((void *) (gc->pc + 5), (void *) (&green), 1);
- (void) memcpy((void *) (gc->pc + 6), (void *) (&blue), 1);
- (void) memcpy((void *) (gc->pc + 7), (void *) (&alpha), 1);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_Color4bv 14
-void
-__indirect_glColor4bv(const GLbyte *v)
-{
- generic_4_byte(X_GLrop_Color4bv, v);
-}
-
-#define X_GLrop_Color4dv 15
-void
-__indirect_glColor4d(GLdouble red, GLdouble green, GLdouble blue,
- GLdouble alpha)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 36;
- emit_header(gc->pc, X_GLrop_Color4dv, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&red), 8);
- (void) memcpy((void *) (gc->pc + 12), (void *) (&green), 8);
- (void) memcpy((void *) (gc->pc + 20), (void *) (&blue), 8);
- (void) memcpy((void *) (gc->pc + 28), (void *) (&alpha), 8);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_Color4dv 15
-void
-__indirect_glColor4dv(const GLdouble * v)
-{
- generic_32_byte(X_GLrop_Color4dv, v);
-}
-
-#define X_GLrop_Color4fv 16
-void
-__indirect_glColor4f(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 20;
- emit_header(gc->pc, X_GLrop_Color4fv, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&red), 4);
- (void) memcpy((void *) (gc->pc + 8), (void *) (&green), 4);
- (void) memcpy((void *) (gc->pc + 12), (void *) (&blue), 4);
- (void) memcpy((void *) (gc->pc + 16), (void *) (&alpha), 4);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_Color4fv 16
-void
-__indirect_glColor4fv(const GLfloat * v)
-{
- generic_16_byte(X_GLrop_Color4fv, v);
-}
-
-#define X_GLrop_Color4iv 17
-void
-__indirect_glColor4i(GLint red, GLint green, GLint blue, GLint alpha)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 20;
- emit_header(gc->pc, X_GLrop_Color4iv, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&red), 4);
- (void) memcpy((void *) (gc->pc + 8), (void *) (&green), 4);
- (void) memcpy((void *) (gc->pc + 12), (void *) (&blue), 4);
- (void) memcpy((void *) (gc->pc + 16), (void *) (&alpha), 4);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_Color4iv 17
-void
-__indirect_glColor4iv(const GLint * v)
-{
- generic_16_byte(X_GLrop_Color4iv, v);
-}
-
-#define X_GLrop_Color4sv 18
-void
-__indirect_glColor4s(GLshort red, GLshort green, GLshort blue, GLshort alpha)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 12;
- emit_header(gc->pc, X_GLrop_Color4sv, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&red), 2);
- (void) memcpy((void *) (gc->pc + 6), (void *) (&green), 2);
- (void) memcpy((void *) (gc->pc + 8), (void *) (&blue), 2);
- (void) memcpy((void *) (gc->pc + 10), (void *) (&alpha), 2);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_Color4sv 18
-void
-__indirect_glColor4sv(const GLshort * v)
-{
- generic_8_byte(X_GLrop_Color4sv, v);
-}
-
-#define X_GLrop_Color4ubv 19
-void
-__indirect_glColor4ub(GLubyte red, GLubyte green, GLubyte blue, GLubyte alpha)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 8;
- emit_header(gc->pc, X_GLrop_Color4ubv, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&red), 1);
- (void) memcpy((void *) (gc->pc + 5), (void *) (&green), 1);
- (void) memcpy((void *) (gc->pc + 6), (void *) (&blue), 1);
- (void) memcpy((void *) (gc->pc + 7), (void *) (&alpha), 1);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_Color4ubv 19
-void
-__indirect_glColor4ubv(const GLubyte *v)
-{
- generic_4_byte(X_GLrop_Color4ubv, v);
-}
-
-#define X_GLrop_Color4uiv 20
-void
-__indirect_glColor4ui(GLuint red, GLuint green, GLuint blue, GLuint alpha)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 20;
- emit_header(gc->pc, X_GLrop_Color4uiv, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&red), 4);
- (void) memcpy((void *) (gc->pc + 8), (void *) (&green), 4);
- (void) memcpy((void *) (gc->pc + 12), (void *) (&blue), 4);
- (void) memcpy((void *) (gc->pc + 16), (void *) (&alpha), 4);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_Color4uiv 20
-void
-__indirect_glColor4uiv(const GLuint * v)
-{
- generic_16_byte(X_GLrop_Color4uiv, v);
-}
-
-#define X_GLrop_Color4usv 21
-void
-__indirect_glColor4us(GLushort red, GLushort green, GLushort blue,
- GLushort alpha)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 12;
- emit_header(gc->pc, X_GLrop_Color4usv, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&red), 2);
- (void) memcpy((void *) (gc->pc + 6), (void *) (&green), 2);
- (void) memcpy((void *) (gc->pc + 8), (void *) (&blue), 2);
- (void) memcpy((void *) (gc->pc + 10), (void *) (&alpha), 2);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_Color4usv 21
-void
-__indirect_glColor4usv(const GLushort * v)
-{
- generic_8_byte(X_GLrop_Color4usv, v);
-}
-
-#define X_GLrop_EdgeFlagv 22
-void
-__indirect_glEdgeFlag(GLboolean flag)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 8;
- emit_header(gc->pc, X_GLrop_EdgeFlagv, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&flag), 1);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_EdgeFlagv 22
-void
-__indirect_glEdgeFlagv(const GLboolean * flag)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 8;
- emit_header(gc->pc, X_GLrop_EdgeFlagv, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (flag), 1);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_End 23
-void
-__indirect_glEnd(void)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 4;
- emit_header(gc->pc, X_GLrop_End, cmdlen);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_Indexdv 24
-void
-__indirect_glIndexd(GLdouble c)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 12;
- emit_header(gc->pc, X_GLrop_Indexdv, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&c), 8);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_Indexdv 24
-void
-__indirect_glIndexdv(const GLdouble * c)
-{
- generic_8_byte(X_GLrop_Indexdv, c);
-}
-
-#define X_GLrop_Indexfv 25
-void
-__indirect_glIndexf(GLfloat c)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 8;
- emit_header(gc->pc, X_GLrop_Indexfv, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&c), 4);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_Indexfv 25
-void
-__indirect_glIndexfv(const GLfloat * c)
-{
- generic_4_byte(X_GLrop_Indexfv, c);
-}
-
-#define X_GLrop_Indexiv 26
-void
-__indirect_glIndexi(GLint c)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 8;
- emit_header(gc->pc, X_GLrop_Indexiv, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&c), 4);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_Indexiv 26
-void
-__indirect_glIndexiv(const GLint * c)
-{
- generic_4_byte(X_GLrop_Indexiv, c);
-}
-
-#define X_GLrop_Indexsv 27
-void
-__indirect_glIndexs(GLshort c)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 8;
- emit_header(gc->pc, X_GLrop_Indexsv, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&c), 2);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_Indexsv 27
-void
-__indirect_glIndexsv(const GLshort * c)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 8;
- emit_header(gc->pc, X_GLrop_Indexsv, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (c), 2);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_Normal3bv 28
-void
-__indirect_glNormal3b(GLbyte nx, GLbyte ny, GLbyte nz)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 8;
- emit_header(gc->pc, X_GLrop_Normal3bv, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&nx), 1);
- (void) memcpy((void *) (gc->pc + 5), (void *) (&ny), 1);
- (void) memcpy((void *) (gc->pc + 6), (void *) (&nz), 1);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_Normal3bv 28
-void
-__indirect_glNormal3bv(const GLbyte *v)
-{
- generic_3_byte(X_GLrop_Normal3bv, v);
-}
-
-#define X_GLrop_Normal3dv 29
-void
-__indirect_glNormal3d(GLdouble nx, GLdouble ny, GLdouble nz)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 28;
- emit_header(gc->pc, X_GLrop_Normal3dv, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&nx), 8);
- (void) memcpy((void *) (gc->pc + 12), (void *) (&ny), 8);
- (void) memcpy((void *) (gc->pc + 20), (void *) (&nz), 8);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_Normal3dv 29
-void
-__indirect_glNormal3dv(const GLdouble * v)
-{
- generic_24_byte(X_GLrop_Normal3dv, v);
-}
-
-#define X_GLrop_Normal3fv 30
-void
-__indirect_glNormal3f(GLfloat nx, GLfloat ny, GLfloat nz)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 16;
- emit_header(gc->pc, X_GLrop_Normal3fv, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&nx), 4);
- (void) memcpy((void *) (gc->pc + 8), (void *) (&ny), 4);
- (void) memcpy((void *) (gc->pc + 12), (void *) (&nz), 4);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_Normal3fv 30
-void
-__indirect_glNormal3fv(const GLfloat * v)
-{
- generic_12_byte(X_GLrop_Normal3fv, v);
-}
-
-#define X_GLrop_Normal3iv 31
-void
-__indirect_glNormal3i(GLint nx, GLint ny, GLint nz)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 16;
- emit_header(gc->pc, X_GLrop_Normal3iv, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&nx), 4);
- (void) memcpy((void *) (gc->pc + 8), (void *) (&ny), 4);
- (void) memcpy((void *) (gc->pc + 12), (void *) (&nz), 4);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_Normal3iv 31
-void
-__indirect_glNormal3iv(const GLint * v)
-{
- generic_12_byte(X_GLrop_Normal3iv, v);
-}
-
-#define X_GLrop_Normal3sv 32
-void
-__indirect_glNormal3s(GLshort nx, GLshort ny, GLshort nz)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 12;
- emit_header(gc->pc, X_GLrop_Normal3sv, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&nx), 2);
- (void) memcpy((void *) (gc->pc + 6), (void *) (&ny), 2);
- (void) memcpy((void *) (gc->pc + 8), (void *) (&nz), 2);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_Normal3sv 32
-void
-__indirect_glNormal3sv(const GLshort * v)
-{
- generic_6_byte(X_GLrop_Normal3sv, v);
-}
-
-#define X_GLrop_RasterPos2dv 33
-void
-__indirect_glRasterPos2d(GLdouble x, GLdouble y)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 20;
- emit_header(gc->pc, X_GLrop_RasterPos2dv, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&x), 8);
- (void) memcpy((void *) (gc->pc + 12), (void *) (&y), 8);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_RasterPos2dv 33
-void
-__indirect_glRasterPos2dv(const GLdouble * v)
-{
- generic_16_byte(X_GLrop_RasterPos2dv, v);
-}
-
-#define X_GLrop_RasterPos2fv 34
-void
-__indirect_glRasterPos2f(GLfloat x, GLfloat y)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 12;
- emit_header(gc->pc, X_GLrop_RasterPos2fv, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&x), 4);
- (void) memcpy((void *) (gc->pc + 8), (void *) (&y), 4);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_RasterPos2fv 34
-void
-__indirect_glRasterPos2fv(const GLfloat * v)
-{
- generic_8_byte(X_GLrop_RasterPos2fv, v);
-}
-
-#define X_GLrop_RasterPos2iv 35
-void
-__indirect_glRasterPos2i(GLint x, GLint y)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 12;
- emit_header(gc->pc, X_GLrop_RasterPos2iv, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&x), 4);
- (void) memcpy((void *) (gc->pc + 8), (void *) (&y), 4);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_RasterPos2iv 35
-void
-__indirect_glRasterPos2iv(const GLint * v)
-{
- generic_8_byte(X_GLrop_RasterPos2iv, v);
-}
-
-#define X_GLrop_RasterPos2sv 36
-void
-__indirect_glRasterPos2s(GLshort x, GLshort y)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 8;
- emit_header(gc->pc, X_GLrop_RasterPos2sv, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&x), 2);
- (void) memcpy((void *) (gc->pc + 6), (void *) (&y), 2);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_RasterPos2sv 36
-void
-__indirect_glRasterPos2sv(const GLshort * v)
-{
- generic_4_byte(X_GLrop_RasterPos2sv, v);
-}
-
-#define X_GLrop_RasterPos3dv 37
-void
-__indirect_glRasterPos3d(GLdouble x, GLdouble y, GLdouble z)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 28;
- emit_header(gc->pc, X_GLrop_RasterPos3dv, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&x), 8);
- (void) memcpy((void *) (gc->pc + 12), (void *) (&y), 8);
- (void) memcpy((void *) (gc->pc + 20), (void *) (&z), 8);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_RasterPos3dv 37
-void
-__indirect_glRasterPos3dv(const GLdouble * v)
-{
- generic_24_byte(X_GLrop_RasterPos3dv, v);
-}
-
-#define X_GLrop_RasterPos3fv 38
-void
-__indirect_glRasterPos3f(GLfloat x, GLfloat y, GLfloat z)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 16;
- emit_header(gc->pc, X_GLrop_RasterPos3fv, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&x), 4);
- (void) memcpy((void *) (gc->pc + 8), (void *) (&y), 4);
- (void) memcpy((void *) (gc->pc + 12), (void *) (&z), 4);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_RasterPos3fv 38
-void
-__indirect_glRasterPos3fv(const GLfloat * v)
-{
- generic_12_byte(X_GLrop_RasterPos3fv, v);
-}
-
-#define X_GLrop_RasterPos3iv 39
-void
-__indirect_glRasterPos3i(GLint x, GLint y, GLint z)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 16;
- emit_header(gc->pc, X_GLrop_RasterPos3iv, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&x), 4);
- (void) memcpy((void *) (gc->pc + 8), (void *) (&y), 4);
- (void) memcpy((void *) (gc->pc + 12), (void *) (&z), 4);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_RasterPos3iv 39
-void
-__indirect_glRasterPos3iv(const GLint * v)
-{
- generic_12_byte(X_GLrop_RasterPos3iv, v);
-}
-
-#define X_GLrop_RasterPos3sv 40
-void
-__indirect_glRasterPos3s(GLshort x, GLshort y, GLshort z)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 12;
- emit_header(gc->pc, X_GLrop_RasterPos3sv, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&x), 2);
- (void) memcpy((void *) (gc->pc + 6), (void *) (&y), 2);
- (void) memcpy((void *) (gc->pc + 8), (void *) (&z), 2);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_RasterPos3sv 40
-void
-__indirect_glRasterPos3sv(const GLshort * v)
-{
- generic_6_byte(X_GLrop_RasterPos3sv, v);
-}
-
-#define X_GLrop_RasterPos4dv 41
-void
-__indirect_glRasterPos4d(GLdouble x, GLdouble y, GLdouble z, GLdouble w)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 36;
- emit_header(gc->pc, X_GLrop_RasterPos4dv, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&x), 8);
- (void) memcpy((void *) (gc->pc + 12), (void *) (&y), 8);
- (void) memcpy((void *) (gc->pc + 20), (void *) (&z), 8);
- (void) memcpy((void *) (gc->pc + 28), (void *) (&w), 8);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_RasterPos4dv 41
-void
-__indirect_glRasterPos4dv(const GLdouble * v)
-{
- generic_32_byte(X_GLrop_RasterPos4dv, v);
-}
-
-#define X_GLrop_RasterPos4fv 42
-void
-__indirect_glRasterPos4f(GLfloat x, GLfloat y, GLfloat z, GLfloat w)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 20;
- emit_header(gc->pc, X_GLrop_RasterPos4fv, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&x), 4);
- (void) memcpy((void *) (gc->pc + 8), (void *) (&y), 4);
- (void) memcpy((void *) (gc->pc + 12), (void *) (&z), 4);
- (void) memcpy((void *) (gc->pc + 16), (void *) (&w), 4);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_RasterPos4fv 42
-void
-__indirect_glRasterPos4fv(const GLfloat * v)
-{
- generic_16_byte(X_GLrop_RasterPos4fv, v);
-}
-
-#define X_GLrop_RasterPos4iv 43
-void
-__indirect_glRasterPos4i(GLint x, GLint y, GLint z, GLint w)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 20;
- emit_header(gc->pc, X_GLrop_RasterPos4iv, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&x), 4);
- (void) memcpy((void *) (gc->pc + 8), (void *) (&y), 4);
- (void) memcpy((void *) (gc->pc + 12), (void *) (&z), 4);
- (void) memcpy((void *) (gc->pc + 16), (void *) (&w), 4);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_RasterPos4iv 43
-void
-__indirect_glRasterPos4iv(const GLint * v)
-{
- generic_16_byte(X_GLrop_RasterPos4iv, v);
-}
-
-#define X_GLrop_RasterPos4sv 44
-void
-__indirect_glRasterPos4s(GLshort x, GLshort y, GLshort z, GLshort w)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 12;
- emit_header(gc->pc, X_GLrop_RasterPos4sv, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&x), 2);
- (void) memcpy((void *) (gc->pc + 6), (void *) (&y), 2);
- (void) memcpy((void *) (gc->pc + 8), (void *) (&z), 2);
- (void) memcpy((void *) (gc->pc + 10), (void *) (&w), 2);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_RasterPos4sv 44
-void
-__indirect_glRasterPos4sv(const GLshort * v)
-{
- generic_8_byte(X_GLrop_RasterPos4sv, v);
-}
-
-#define X_GLrop_Rectdv 45
-void
-__indirect_glRectd(GLdouble x1, GLdouble y1, GLdouble x2, GLdouble y2)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 36;
- emit_header(gc->pc, X_GLrop_Rectdv, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&x1), 8);
- (void) memcpy((void *) (gc->pc + 12), (void *) (&y1), 8);
- (void) memcpy((void *) (gc->pc + 20), (void *) (&x2), 8);
- (void) memcpy((void *) (gc->pc + 28), (void *) (&y2), 8);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_Rectdv 45
-void
-__indirect_glRectdv(const GLdouble * v1, const GLdouble * v2)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 36;
- emit_header(gc->pc, X_GLrop_Rectdv, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (v1), 16);
- (void) memcpy((void *) (gc->pc + 20), (void *) (v2), 16);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_Rectfv 46
-void
-__indirect_glRectf(GLfloat x1, GLfloat y1, GLfloat x2, GLfloat y2)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 20;
- emit_header(gc->pc, X_GLrop_Rectfv, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&x1), 4);
- (void) memcpy((void *) (gc->pc + 8), (void *) (&y1), 4);
- (void) memcpy((void *) (gc->pc + 12), (void *) (&x2), 4);
- (void) memcpy((void *) (gc->pc + 16), (void *) (&y2), 4);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_Rectfv 46
-void
-__indirect_glRectfv(const GLfloat * v1, const GLfloat * v2)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 20;
- emit_header(gc->pc, X_GLrop_Rectfv, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (v1), 8);
- (void) memcpy((void *) (gc->pc + 12), (void *) (v2), 8);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_Rectiv 47
-void
-__indirect_glRecti(GLint x1, GLint y1, GLint x2, GLint y2)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 20;
- emit_header(gc->pc, X_GLrop_Rectiv, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&x1), 4);
- (void) memcpy((void *) (gc->pc + 8), (void *) (&y1), 4);
- (void) memcpy((void *) (gc->pc + 12), (void *) (&x2), 4);
- (void) memcpy((void *) (gc->pc + 16), (void *) (&y2), 4);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_Rectiv 47
-void
-__indirect_glRectiv(const GLint * v1, const GLint * v2)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 20;
- emit_header(gc->pc, X_GLrop_Rectiv, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (v1), 8);
- (void) memcpy((void *) (gc->pc + 12), (void *) (v2), 8);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_Rectsv 48
-void
-__indirect_glRects(GLshort x1, GLshort y1, GLshort x2, GLshort y2)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 12;
- emit_header(gc->pc, X_GLrop_Rectsv, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&x1), 2);
- (void) memcpy((void *) (gc->pc + 6), (void *) (&y1), 2);
- (void) memcpy((void *) (gc->pc + 8), (void *) (&x2), 2);
- (void) memcpy((void *) (gc->pc + 10), (void *) (&y2), 2);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_Rectsv 48
-void
-__indirect_glRectsv(const GLshort * v1, const GLshort * v2)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 12;
- emit_header(gc->pc, X_GLrop_Rectsv, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (v1), 4);
- (void) memcpy((void *) (gc->pc + 8), (void *) (v2), 4);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_TexCoord1dv 49
-void
-__indirect_glTexCoord1d(GLdouble s)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 12;
- emit_header(gc->pc, X_GLrop_TexCoord1dv, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&s), 8);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_TexCoord1dv 49
-void
-__indirect_glTexCoord1dv(const GLdouble * v)
-{
- generic_8_byte(X_GLrop_TexCoord1dv, v);
-}
-
-#define X_GLrop_TexCoord1fv 50
-void
-__indirect_glTexCoord1f(GLfloat s)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 8;
- emit_header(gc->pc, X_GLrop_TexCoord1fv, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&s), 4);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_TexCoord1fv 50
-void
-__indirect_glTexCoord1fv(const GLfloat * v)
-{
- generic_4_byte(X_GLrop_TexCoord1fv, v);
-}
-
-#define X_GLrop_TexCoord1iv 51
-void
-__indirect_glTexCoord1i(GLint s)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 8;
- emit_header(gc->pc, X_GLrop_TexCoord1iv, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&s), 4);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_TexCoord1iv 51
-void
-__indirect_glTexCoord1iv(const GLint * v)
-{
- generic_4_byte(X_GLrop_TexCoord1iv, v);
-}
-
-#define X_GLrop_TexCoord1sv 52
-void
-__indirect_glTexCoord1s(GLshort s)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 8;
- emit_header(gc->pc, X_GLrop_TexCoord1sv, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&s), 2);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_TexCoord1sv 52
-void
-__indirect_glTexCoord1sv(const GLshort * v)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 8;
- emit_header(gc->pc, X_GLrop_TexCoord1sv, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (v), 2);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_TexCoord2dv 53
-void
-__indirect_glTexCoord2d(GLdouble s, GLdouble t)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 20;
- emit_header(gc->pc, X_GLrop_TexCoord2dv, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&s), 8);
- (void) memcpy((void *) (gc->pc + 12), (void *) (&t), 8);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_TexCoord2dv 53
-void
-__indirect_glTexCoord2dv(const GLdouble * v)
-{
- generic_16_byte(X_GLrop_TexCoord2dv, v);
-}
-
-#define X_GLrop_TexCoord2fv 54
-void
-__indirect_glTexCoord2f(GLfloat s, GLfloat t)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 12;
- emit_header(gc->pc, X_GLrop_TexCoord2fv, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&s), 4);
- (void) memcpy((void *) (gc->pc + 8), (void *) (&t), 4);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_TexCoord2fv 54
-void
-__indirect_glTexCoord2fv(const GLfloat * v)
-{
- generic_8_byte(X_GLrop_TexCoord2fv, v);
-}
-
-#define X_GLrop_TexCoord2iv 55
-void
-__indirect_glTexCoord2i(GLint s, GLint t)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 12;
- emit_header(gc->pc, X_GLrop_TexCoord2iv, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&s), 4);
- (void) memcpy((void *) (gc->pc + 8), (void *) (&t), 4);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_TexCoord2iv 55
-void
-__indirect_glTexCoord2iv(const GLint * v)
-{
- generic_8_byte(X_GLrop_TexCoord2iv, v);
-}
-
-#define X_GLrop_TexCoord2sv 56
-void
-__indirect_glTexCoord2s(GLshort s, GLshort t)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 8;
- emit_header(gc->pc, X_GLrop_TexCoord2sv, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&s), 2);
- (void) memcpy((void *) (gc->pc + 6), (void *) (&t), 2);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_TexCoord2sv 56
-void
-__indirect_glTexCoord2sv(const GLshort * v)
-{
- generic_4_byte(X_GLrop_TexCoord2sv, v);
-}
-
-#define X_GLrop_TexCoord3dv 57
-void
-__indirect_glTexCoord3d(GLdouble s, GLdouble t, GLdouble r)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 28;
- emit_header(gc->pc, X_GLrop_TexCoord3dv, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&s), 8);
- (void) memcpy((void *) (gc->pc + 12), (void *) (&t), 8);
- (void) memcpy((void *) (gc->pc + 20), (void *) (&r), 8);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_TexCoord3dv 57
-void
-__indirect_glTexCoord3dv(const GLdouble * v)
-{
- generic_24_byte(X_GLrop_TexCoord3dv, v);
-}
-
-#define X_GLrop_TexCoord3fv 58
-void
-__indirect_glTexCoord3f(GLfloat s, GLfloat t, GLfloat r)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 16;
- emit_header(gc->pc, X_GLrop_TexCoord3fv, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&s), 4);
- (void) memcpy((void *) (gc->pc + 8), (void *) (&t), 4);
- (void) memcpy((void *) (gc->pc + 12), (void *) (&r), 4);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_TexCoord3fv 58
-void
-__indirect_glTexCoord3fv(const GLfloat * v)
-{
- generic_12_byte(X_GLrop_TexCoord3fv, v);
-}
-
-#define X_GLrop_TexCoord3iv 59
-void
-__indirect_glTexCoord3i(GLint s, GLint t, GLint r)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 16;
- emit_header(gc->pc, X_GLrop_TexCoord3iv, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&s), 4);
- (void) memcpy((void *) (gc->pc + 8), (void *) (&t), 4);
- (void) memcpy((void *) (gc->pc + 12), (void *) (&r), 4);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_TexCoord3iv 59
-void
-__indirect_glTexCoord3iv(const GLint * v)
-{
- generic_12_byte(X_GLrop_TexCoord3iv, v);
-}
-
-#define X_GLrop_TexCoord3sv 60
-void
-__indirect_glTexCoord3s(GLshort s, GLshort t, GLshort r)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 12;
- emit_header(gc->pc, X_GLrop_TexCoord3sv, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&s), 2);
- (void) memcpy((void *) (gc->pc + 6), (void *) (&t), 2);
- (void) memcpy((void *) (gc->pc + 8), (void *) (&r), 2);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_TexCoord3sv 60
-void
-__indirect_glTexCoord3sv(const GLshort * v)
-{
- generic_6_byte(X_GLrop_TexCoord3sv, v);
-}
-
-#define X_GLrop_TexCoord4dv 61
-void
-__indirect_glTexCoord4d(GLdouble s, GLdouble t, GLdouble r, GLdouble q)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 36;
- emit_header(gc->pc, X_GLrop_TexCoord4dv, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&s), 8);
- (void) memcpy((void *) (gc->pc + 12), (void *) (&t), 8);
- (void) memcpy((void *) (gc->pc + 20), (void *) (&r), 8);
- (void) memcpy((void *) (gc->pc + 28), (void *) (&q), 8);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_TexCoord4dv 61
-void
-__indirect_glTexCoord4dv(const GLdouble * v)
-{
- generic_32_byte(X_GLrop_TexCoord4dv, v);
-}
-
-#define X_GLrop_TexCoord4fv 62
-void
-__indirect_glTexCoord4f(GLfloat s, GLfloat t, GLfloat r, GLfloat q)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 20;
- emit_header(gc->pc, X_GLrop_TexCoord4fv, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&s), 4);
- (void) memcpy((void *) (gc->pc + 8), (void *) (&t), 4);
- (void) memcpy((void *) (gc->pc + 12), (void *) (&r), 4);
- (void) memcpy((void *) (gc->pc + 16), (void *) (&q), 4);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_TexCoord4fv 62
-void
-__indirect_glTexCoord4fv(const GLfloat * v)
-{
- generic_16_byte(X_GLrop_TexCoord4fv, v);
-}
-
-#define X_GLrop_TexCoord4iv 63
-void
-__indirect_glTexCoord4i(GLint s, GLint t, GLint r, GLint q)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 20;
- emit_header(gc->pc, X_GLrop_TexCoord4iv, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&s), 4);
- (void) memcpy((void *) (gc->pc + 8), (void *) (&t), 4);
- (void) memcpy((void *) (gc->pc + 12), (void *) (&r), 4);
- (void) memcpy((void *) (gc->pc + 16), (void *) (&q), 4);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_TexCoord4iv 63
-void
-__indirect_glTexCoord4iv(const GLint * v)
-{
- generic_16_byte(X_GLrop_TexCoord4iv, v);
-}
-
-#define X_GLrop_TexCoord4sv 64
-void
-__indirect_glTexCoord4s(GLshort s, GLshort t, GLshort r, GLshort q)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 12;
- emit_header(gc->pc, X_GLrop_TexCoord4sv, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&s), 2);
- (void) memcpy((void *) (gc->pc + 6), (void *) (&t), 2);
- (void) memcpy((void *) (gc->pc + 8), (void *) (&r), 2);
- (void) memcpy((void *) (gc->pc + 10), (void *) (&q), 2);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_TexCoord4sv 64
-void
-__indirect_glTexCoord4sv(const GLshort * v)
-{
- generic_8_byte(X_GLrop_TexCoord4sv, v);
-}
-
-#define X_GLrop_Vertex2dv 65
-void
-__indirect_glVertex2d(GLdouble x, GLdouble y)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 20;
- emit_header(gc->pc, X_GLrop_Vertex2dv, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&x), 8);
- (void) memcpy((void *) (gc->pc + 12), (void *) (&y), 8);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_Vertex2dv 65
-void
-__indirect_glVertex2dv(const GLdouble * v)
-{
- generic_16_byte(X_GLrop_Vertex2dv, v);
-}
-
-#define X_GLrop_Vertex2fv 66
-void
-__indirect_glVertex2f(GLfloat x, GLfloat y)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 12;
- emit_header(gc->pc, X_GLrop_Vertex2fv, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&x), 4);
- (void) memcpy((void *) (gc->pc + 8), (void *) (&y), 4);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_Vertex2fv 66
-void
-__indirect_glVertex2fv(const GLfloat * v)
-{
- generic_8_byte(X_GLrop_Vertex2fv, v);
-}
-
-#define X_GLrop_Vertex2iv 67
-void
-__indirect_glVertex2i(GLint x, GLint y)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 12;
- emit_header(gc->pc, X_GLrop_Vertex2iv, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&x), 4);
- (void) memcpy((void *) (gc->pc + 8), (void *) (&y), 4);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_Vertex2iv 67
-void
-__indirect_glVertex2iv(const GLint * v)
-{
- generic_8_byte(X_GLrop_Vertex2iv, v);
-}
-
-#define X_GLrop_Vertex2sv 68
-void
-__indirect_glVertex2s(GLshort x, GLshort y)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 8;
- emit_header(gc->pc, X_GLrop_Vertex2sv, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&x), 2);
- (void) memcpy((void *) (gc->pc + 6), (void *) (&y), 2);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_Vertex2sv 68
-void
-__indirect_glVertex2sv(const GLshort * v)
-{
- generic_4_byte(X_GLrop_Vertex2sv, v);
-}
-
-#define X_GLrop_Vertex3dv 69
-void
-__indirect_glVertex3d(GLdouble x, GLdouble y, GLdouble z)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 28;
- emit_header(gc->pc, X_GLrop_Vertex3dv, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&x), 8);
- (void) memcpy((void *) (gc->pc + 12), (void *) (&y), 8);
- (void) memcpy((void *) (gc->pc + 20), (void *) (&z), 8);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_Vertex3dv 69
-void
-__indirect_glVertex3dv(const GLdouble * v)
-{
- generic_24_byte(X_GLrop_Vertex3dv, v);
-}
-
-#define X_GLrop_Vertex3fv 70
-void
-__indirect_glVertex3f(GLfloat x, GLfloat y, GLfloat z)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 16;
- emit_header(gc->pc, X_GLrop_Vertex3fv, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&x), 4);
- (void) memcpy((void *) (gc->pc + 8), (void *) (&y), 4);
- (void) memcpy((void *) (gc->pc + 12), (void *) (&z), 4);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_Vertex3fv 70
-void
-__indirect_glVertex3fv(const GLfloat * v)
-{
- generic_12_byte(X_GLrop_Vertex3fv, v);
-}
-
-#define X_GLrop_Vertex3iv 71
-void
-__indirect_glVertex3i(GLint x, GLint y, GLint z)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 16;
- emit_header(gc->pc, X_GLrop_Vertex3iv, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&x), 4);
- (void) memcpy((void *) (gc->pc + 8), (void *) (&y), 4);
- (void) memcpy((void *) (gc->pc + 12), (void *) (&z), 4);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_Vertex3iv 71
-void
-__indirect_glVertex3iv(const GLint * v)
-{
- generic_12_byte(X_GLrop_Vertex3iv, v);
-}
-
-#define X_GLrop_Vertex3sv 72
-void
-__indirect_glVertex3s(GLshort x, GLshort y, GLshort z)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 12;
- emit_header(gc->pc, X_GLrop_Vertex3sv, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&x), 2);
- (void) memcpy((void *) (gc->pc + 6), (void *) (&y), 2);
- (void) memcpy((void *) (gc->pc + 8), (void *) (&z), 2);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_Vertex3sv 72
-void
-__indirect_glVertex3sv(const GLshort * v)
-{
- generic_6_byte(X_GLrop_Vertex3sv, v);
-}
-
-#define X_GLrop_Vertex4dv 73
-void
-__indirect_glVertex4d(GLdouble x, GLdouble y, GLdouble z, GLdouble w)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 36;
- emit_header(gc->pc, X_GLrop_Vertex4dv, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&x), 8);
- (void) memcpy((void *) (gc->pc + 12), (void *) (&y), 8);
- (void) memcpy((void *) (gc->pc + 20), (void *) (&z), 8);
- (void) memcpy((void *) (gc->pc + 28), (void *) (&w), 8);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_Vertex4dv 73
-void
-__indirect_glVertex4dv(const GLdouble * v)
-{
- generic_32_byte(X_GLrop_Vertex4dv, v);
-}
-
-#define X_GLrop_Vertex4fv 74
-void
-__indirect_glVertex4f(GLfloat x, GLfloat y, GLfloat z, GLfloat w)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 20;
- emit_header(gc->pc, X_GLrop_Vertex4fv, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&x), 4);
- (void) memcpy((void *) (gc->pc + 8), (void *) (&y), 4);
- (void) memcpy((void *) (gc->pc + 12), (void *) (&z), 4);
- (void) memcpy((void *) (gc->pc + 16), (void *) (&w), 4);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_Vertex4fv 74
-void
-__indirect_glVertex4fv(const GLfloat * v)
-{
- generic_16_byte(X_GLrop_Vertex4fv, v);
-}
-
-#define X_GLrop_Vertex4iv 75
-void
-__indirect_glVertex4i(GLint x, GLint y, GLint z, GLint w)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 20;
- emit_header(gc->pc, X_GLrop_Vertex4iv, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&x), 4);
- (void) memcpy((void *) (gc->pc + 8), (void *) (&y), 4);
- (void) memcpy((void *) (gc->pc + 12), (void *) (&z), 4);
- (void) memcpy((void *) (gc->pc + 16), (void *) (&w), 4);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_Vertex4iv 75
-void
-__indirect_glVertex4iv(const GLint * v)
-{
- generic_16_byte(X_GLrop_Vertex4iv, v);
-}
-
-#define X_GLrop_Vertex4sv 76
-void
-__indirect_glVertex4s(GLshort x, GLshort y, GLshort z, GLshort w)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 12;
- emit_header(gc->pc, X_GLrop_Vertex4sv, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&x), 2);
- (void) memcpy((void *) (gc->pc + 6), (void *) (&y), 2);
- (void) memcpy((void *) (gc->pc + 8), (void *) (&z), 2);
- (void) memcpy((void *) (gc->pc + 10), (void *) (&w), 2);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_Vertex4sv 76
-void
-__indirect_glVertex4sv(const GLshort * v)
-{
- generic_8_byte(X_GLrop_Vertex4sv, v);
-}
-
-#define X_GLrop_ClipPlane 77
-void
-__indirect_glClipPlane(GLenum plane, const GLdouble * equation)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 40;
- emit_header(gc->pc, X_GLrop_ClipPlane, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (equation), 32);
- (void) memcpy((void *) (gc->pc + 36), (void *) (&plane), 4);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_ColorMaterial 78
-void
-__indirect_glColorMaterial(GLenum face, GLenum mode)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 12;
- emit_header(gc->pc, X_GLrop_ColorMaterial, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&face), 4);
- (void) memcpy((void *) (gc->pc + 8), (void *) (&mode), 4);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_CullFace 79
-void
-__indirect_glCullFace(GLenum mode)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 8;
- emit_header(gc->pc, X_GLrop_CullFace, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&mode), 4);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_Fogf 80
-void
-__indirect_glFogf(GLenum pname, GLfloat param)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 12;
- emit_header(gc->pc, X_GLrop_Fogf, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&pname), 4);
- (void) memcpy((void *) (gc->pc + 8), (void *) (&param), 4);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_Fogfv 81
-void
-__indirect_glFogfv(GLenum pname, const GLfloat * params)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint compsize = __glFogfv_size(pname);
- const GLuint cmdlen = 8 + __GLX_PAD((compsize * 4));
- emit_header(gc->pc, X_GLrop_Fogfv, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&pname), 4);
- (void) memcpy((void *) (gc->pc + 8), (void *) (params), (compsize * 4));
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_Fogi 82
-void
-__indirect_glFogi(GLenum pname, GLint param)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 12;
- emit_header(gc->pc, X_GLrop_Fogi, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&pname), 4);
- (void) memcpy((void *) (gc->pc + 8), (void *) (&param), 4);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_Fogiv 83
-void
-__indirect_glFogiv(GLenum pname, const GLint * params)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint compsize = __glFogiv_size(pname);
- const GLuint cmdlen = 8 + __GLX_PAD((compsize * 4));
- emit_header(gc->pc, X_GLrop_Fogiv, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&pname), 4);
- (void) memcpy((void *) (gc->pc + 8), (void *) (params), (compsize * 4));
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_FrontFace 84
-void
-__indirect_glFrontFace(GLenum mode)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 8;
- emit_header(gc->pc, X_GLrop_FrontFace, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&mode), 4);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_Hint 85
-void
-__indirect_glHint(GLenum target, GLenum mode)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 12;
- emit_header(gc->pc, X_GLrop_Hint, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&target), 4);
- (void) memcpy((void *) (gc->pc + 8), (void *) (&mode), 4);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_Lightf 86
-void
-__indirect_glLightf(GLenum light, GLenum pname, GLfloat param)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 16;
- emit_header(gc->pc, X_GLrop_Lightf, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&light), 4);
- (void) memcpy((void *) (gc->pc + 8), (void *) (&pname), 4);
- (void) memcpy((void *) (gc->pc + 12), (void *) (&param), 4);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_Lightfv 87
-void
-__indirect_glLightfv(GLenum light, GLenum pname, const GLfloat * params)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint compsize = __glLightfv_size(pname);
- const GLuint cmdlen = 12 + __GLX_PAD((compsize * 4));
- emit_header(gc->pc, X_GLrop_Lightfv, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&light), 4);
- (void) memcpy((void *) (gc->pc + 8), (void *) (&pname), 4);
- (void) memcpy((void *) (gc->pc + 12), (void *) (params), (compsize * 4));
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_Lighti 88
-void
-__indirect_glLighti(GLenum light, GLenum pname, GLint param)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 16;
- emit_header(gc->pc, X_GLrop_Lighti, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&light), 4);
- (void) memcpy((void *) (gc->pc + 8), (void *) (&pname), 4);
- (void) memcpy((void *) (gc->pc + 12), (void *) (&param), 4);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_Lightiv 89
-void
-__indirect_glLightiv(GLenum light, GLenum pname, const GLint * params)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint compsize = __glLightiv_size(pname);
- const GLuint cmdlen = 12 + __GLX_PAD((compsize * 4));
- emit_header(gc->pc, X_GLrop_Lightiv, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&light), 4);
- (void) memcpy((void *) (gc->pc + 8), (void *) (&pname), 4);
- (void) memcpy((void *) (gc->pc + 12), (void *) (params), (compsize * 4));
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_LightModelf 90
-void
-__indirect_glLightModelf(GLenum pname, GLfloat param)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 12;
- emit_header(gc->pc, X_GLrop_LightModelf, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&pname), 4);
- (void) memcpy((void *) (gc->pc + 8), (void *) (&param), 4);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_LightModelfv 91
-void
-__indirect_glLightModelfv(GLenum pname, const GLfloat * params)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint compsize = __glLightModelfv_size(pname);
- const GLuint cmdlen = 8 + __GLX_PAD((compsize * 4));
- emit_header(gc->pc, X_GLrop_LightModelfv, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&pname), 4);
- (void) memcpy((void *) (gc->pc + 8), (void *) (params), (compsize * 4));
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_LightModeli 92
-void
-__indirect_glLightModeli(GLenum pname, GLint param)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 12;
- emit_header(gc->pc, X_GLrop_LightModeli, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&pname), 4);
- (void) memcpy((void *) (gc->pc + 8), (void *) (&param), 4);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_LightModeliv 93
-void
-__indirect_glLightModeliv(GLenum pname, const GLint * params)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint compsize = __glLightModeliv_size(pname);
- const GLuint cmdlen = 8 + __GLX_PAD((compsize * 4));
- emit_header(gc->pc, X_GLrop_LightModeliv, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&pname), 4);
- (void) memcpy((void *) (gc->pc + 8), (void *) (params), (compsize * 4));
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_LineStipple 94
-void
-__indirect_glLineStipple(GLint factor, GLushort pattern)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 12;
- emit_header(gc->pc, X_GLrop_LineStipple, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&factor), 4);
- (void) memcpy((void *) (gc->pc + 8), (void *) (&pattern), 2);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_LineWidth 95
-void
-__indirect_glLineWidth(GLfloat width)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 8;
- emit_header(gc->pc, X_GLrop_LineWidth, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&width), 4);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_Materialf 96
-void
-__indirect_glMaterialf(GLenum face, GLenum pname, GLfloat param)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 16;
- emit_header(gc->pc, X_GLrop_Materialf, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&face), 4);
- (void) memcpy((void *) (gc->pc + 8), (void *) (&pname), 4);
- (void) memcpy((void *) (gc->pc + 12), (void *) (&param), 4);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_Materialfv 97
-void
-__indirect_glMaterialfv(GLenum face, GLenum pname, const GLfloat * params)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint compsize = __glMaterialfv_size(pname);
- const GLuint cmdlen = 12 + __GLX_PAD((compsize * 4));
- emit_header(gc->pc, X_GLrop_Materialfv, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&face), 4);
- (void) memcpy((void *) (gc->pc + 8), (void *) (&pname), 4);
- (void) memcpy((void *) (gc->pc + 12), (void *) (params), (compsize * 4));
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_Materiali 98
-void
-__indirect_glMateriali(GLenum face, GLenum pname, GLint param)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 16;
- emit_header(gc->pc, X_GLrop_Materiali, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&face), 4);
- (void) memcpy((void *) (gc->pc + 8), (void *) (&pname), 4);
- (void) memcpy((void *) (gc->pc + 12), (void *) (&param), 4);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_Materialiv 99
-void
-__indirect_glMaterialiv(GLenum face, GLenum pname, const GLint * params)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint compsize = __glMaterialiv_size(pname);
- const GLuint cmdlen = 12 + __GLX_PAD((compsize * 4));
- emit_header(gc->pc, X_GLrop_Materialiv, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&face), 4);
- (void) memcpy((void *) (gc->pc + 8), (void *) (&pname), 4);
- (void) memcpy((void *) (gc->pc + 12), (void *) (params), (compsize * 4));
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_PointSize 100
-void
-__indirect_glPointSize(GLfloat size)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 8;
- emit_header(gc->pc, X_GLrop_PointSize, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&size), 4);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_PolygonMode 101
-void
-__indirect_glPolygonMode(GLenum face, GLenum mode)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 12;
- emit_header(gc->pc, X_GLrop_PolygonMode, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&face), 4);
- (void) memcpy((void *) (gc->pc + 8), (void *) (&mode), 4);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_PolygonStipple 102
-void
-__indirect_glPolygonStipple(const GLubyte *mask)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint compsize =
- (mask != NULL) ? __glImageSize(32, 32, 1, GL_COLOR_INDEX, GL_BITMAP,
- 0) : 0;
- const GLuint cmdlen = 24 + __GLX_PAD(compsize);
- emit_header(gc->pc, X_GLrop_PolygonStipple, cmdlen);
- if (compsize > 0) {
- (*gc->fillImage) (gc, 2, 32, 32, 1, GL_COLOR_INDEX, GL_BITMAP, mask,
- gc->pc + 24, gc->pc + 4);
- } else {
- (void) memcpy(gc->pc + 4, default_pixel_store_2D,
- default_pixel_store_2D_size);
- }
- gc->pc += cmdlen;
- if (gc->pc > gc->limit) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_Scissor 103
-void
-__indirect_glScissor(GLint x, GLint y, GLsizei width, GLsizei height)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 20;
- emit_header(gc->pc, X_GLrop_Scissor, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&x), 4);
- (void) memcpy((void *) (gc->pc + 8), (void *) (&y), 4);
- (void) memcpy((void *) (gc->pc + 12), (void *) (&width), 4);
- (void) memcpy((void *) (gc->pc + 16), (void *) (&height), 4);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_ShadeModel 104
-void
-__indirect_glShadeModel(GLenum mode)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 8;
- emit_header(gc->pc, X_GLrop_ShadeModel, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&mode), 4);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_TexParameterf 105
-void
-__indirect_glTexParameterf(GLenum target, GLenum pname, GLfloat param)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 16;
- emit_header(gc->pc, X_GLrop_TexParameterf, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&target), 4);
- (void) memcpy((void *) (gc->pc + 8), (void *) (&pname), 4);
- (void) memcpy((void *) (gc->pc + 12), (void *) (&param), 4);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_TexParameterfv 106
-void
-__indirect_glTexParameterfv(GLenum target, GLenum pname,
- const GLfloat * params)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint compsize = __glTexParameterfv_size(pname);
- const GLuint cmdlen = 12 + __GLX_PAD((compsize * 4));
- emit_header(gc->pc, X_GLrop_TexParameterfv, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&target), 4);
- (void) memcpy((void *) (gc->pc + 8), (void *) (&pname), 4);
- (void) memcpy((void *) (gc->pc + 12), (void *) (params), (compsize * 4));
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_TexParameteri 107
-void
-__indirect_glTexParameteri(GLenum target, GLenum pname, GLint param)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 16;
- emit_header(gc->pc, X_GLrop_TexParameteri, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&target), 4);
- (void) memcpy((void *) (gc->pc + 8), (void *) (&pname), 4);
- (void) memcpy((void *) (gc->pc + 12), (void *) (&param), 4);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_TexParameteriv 108
-void
-__indirect_glTexParameteriv(GLenum target, GLenum pname, const GLint * params)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint compsize = __glTexParameteriv_size(pname);
- const GLuint cmdlen = 12 + __GLX_PAD((compsize * 4));
- emit_header(gc->pc, X_GLrop_TexParameteriv, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&target), 4);
- (void) memcpy((void *) (gc->pc + 8), (void *) (&pname), 4);
- (void) memcpy((void *) (gc->pc + 12), (void *) (params), (compsize * 4));
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-static void
-__glx_TexImage_1D2D(unsigned opcode, unsigned dim, GLenum target, GLint level,
- GLint internalformat, GLsizei width, GLsizei height,
- GLint border, GLenum format, GLenum type,
- const GLvoid * pixels)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint compsize =
- __glImageSize(width, height, 1, format, type, target);
- const GLuint cmdlen = 56 + __GLX_PAD(compsize);
- if (__builtin_expect(gc->currentDpy != NULL, 1)) {
- if (cmdlen <= gc->maxSmallRenderCommandSize) {
- if ((gc->pc + cmdlen) > gc->bufEnd) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
- emit_header(gc->pc, opcode, cmdlen);
- (void) memcpy((void *) (gc->pc + 24), (void *) (&target), 4);
- (void) memcpy((void *) (gc->pc + 28), (void *) (&level), 4);
- (void) memcpy((void *) (gc->pc + 32), (void *) (&internalformat),
- 4);
- (void) memcpy((void *) (gc->pc + 36), (void *) (&width), 4);
- (void) memcpy((void *) (gc->pc + 40), (void *) (&height), 4);
- (void) memcpy((void *) (gc->pc + 44), (void *) (&border), 4);
- (void) memcpy((void *) (gc->pc + 48), (void *) (&format), 4);
- (void) memcpy((void *) (gc->pc + 52), (void *) (&type), 4);
- if ((compsize > 0) && (pixels != NULL)) {
- (*gc->fillImage) (gc, dim, width, height, 1, format, type,
- pixels, gc->pc + 56, gc->pc + 4);
- } else {
- (void) memcpy(gc->pc + 4, default_pixel_store_2D,
- default_pixel_store_2D_size);
- }
- gc->pc += cmdlen;
- if (gc->pc > gc->limit) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
- } else {
- const GLint op = opcode;
- const GLuint cmdlenLarge = cmdlen + 4;
- GLubyte *const pc = __glXFlushRenderBuffer(gc, gc->pc);
- (void) memcpy((void *) (pc + 0), (void *) (&cmdlenLarge), 4);
- (void) memcpy((void *) (pc + 4), (void *) (&op), 4);
- (void) memcpy((void *) (pc + 28), (void *) (&target), 4);
- (void) memcpy((void *) (pc + 32), (void *) (&level), 4);
- (void) memcpy((void *) (pc + 36), (void *) (&internalformat), 4);
- (void) memcpy((void *) (pc + 40), (void *) (&width), 4);
- (void) memcpy((void *) (pc + 44), (void *) (&height), 4);
- (void) memcpy((void *) (pc + 48), (void *) (&border), 4);
- (void) memcpy((void *) (pc + 52), (void *) (&format), 4);
- (void) memcpy((void *) (pc + 56), (void *) (&type), 4);
- __glXSendLargeImage(gc, compsize, dim, width, height, 1, format,
- type, pixels, pc + 60, pc + 8);
- }
- }
-}
-
-#define X_GLrop_TexImage1D 109
-void
-__indirect_glTexImage1D(GLenum target, GLint level, GLint internalformat,
- GLsizei width, GLint border, GLenum format,
- GLenum type, const GLvoid * pixels)
-{
- __glx_TexImage_1D2D(X_GLrop_TexImage1D, 1, target, level, internalformat,
- width, 1, border, format, type, pixels);
-}
-
-#define X_GLrop_TexImage2D 110
-void
-__indirect_glTexImage2D(GLenum target, GLint level, GLint internalformat,
- GLsizei width, GLsizei height, GLint border,
- GLenum format, GLenum type, const GLvoid * pixels)
-{
- __glx_TexImage_1D2D(X_GLrop_TexImage2D, 2, target, level, internalformat,
- width, height, border, format, type, pixels);
-}
-
-#define X_GLrop_TexEnvf 111
-void
-__indirect_glTexEnvf(GLenum target, GLenum pname, GLfloat param)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 16;
- emit_header(gc->pc, X_GLrop_TexEnvf, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&target), 4);
- (void) memcpy((void *) (gc->pc + 8), (void *) (&pname), 4);
- (void) memcpy((void *) (gc->pc + 12), (void *) (&param), 4);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_TexEnvfv 112
-void
-__indirect_glTexEnvfv(GLenum target, GLenum pname, const GLfloat * params)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint compsize = __glTexEnvfv_size(pname);
- const GLuint cmdlen = 12 + __GLX_PAD((compsize * 4));
- emit_header(gc->pc, X_GLrop_TexEnvfv, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&target), 4);
- (void) memcpy((void *) (gc->pc + 8), (void *) (&pname), 4);
- (void) memcpy((void *) (gc->pc + 12), (void *) (params), (compsize * 4));
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_TexEnvi 113
-void
-__indirect_glTexEnvi(GLenum target, GLenum pname, GLint param)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 16;
- emit_header(gc->pc, X_GLrop_TexEnvi, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&target), 4);
- (void) memcpy((void *) (gc->pc + 8), (void *) (&pname), 4);
- (void) memcpy((void *) (gc->pc + 12), (void *) (&param), 4);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_TexEnviv 114
-void
-__indirect_glTexEnviv(GLenum target, GLenum pname, const GLint * params)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint compsize = __glTexEnviv_size(pname);
- const GLuint cmdlen = 12 + __GLX_PAD((compsize * 4));
- emit_header(gc->pc, X_GLrop_TexEnviv, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&target), 4);
- (void) memcpy((void *) (gc->pc + 8), (void *) (&pname), 4);
- (void) memcpy((void *) (gc->pc + 12), (void *) (params), (compsize * 4));
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_TexGend 115
-void
-__indirect_glTexGend(GLenum coord, GLenum pname, GLdouble param)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 20;
- emit_header(gc->pc, X_GLrop_TexGend, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&param), 8);
- (void) memcpy((void *) (gc->pc + 12), (void *) (&coord), 4);
- (void) memcpy((void *) (gc->pc + 16), (void *) (&pname), 4);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_TexGendv 116
-void
-__indirect_glTexGendv(GLenum coord, GLenum pname, const GLdouble * params)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint compsize = __glTexGendv_size(pname);
- const GLuint cmdlen = 12 + __GLX_PAD((compsize * 8));
- emit_header(gc->pc, X_GLrop_TexGendv, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&coord), 4);
- (void) memcpy((void *) (gc->pc + 8), (void *) (&pname), 4);
- (void) memcpy((void *) (gc->pc + 12), (void *) (params), (compsize * 8));
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_TexGenf 117
-void
-__indirect_glTexGenf(GLenum coord, GLenum pname, GLfloat param)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 16;
- emit_header(gc->pc, X_GLrop_TexGenf, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&coord), 4);
- (void) memcpy((void *) (gc->pc + 8), (void *) (&pname), 4);
- (void) memcpy((void *) (gc->pc + 12), (void *) (&param), 4);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_TexGenfv 118
-void
-__indirect_glTexGenfv(GLenum coord, GLenum pname, const GLfloat * params)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint compsize = __glTexGenfv_size(pname);
- const GLuint cmdlen = 12 + __GLX_PAD((compsize * 4));
- emit_header(gc->pc, X_GLrop_TexGenfv, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&coord), 4);
- (void) memcpy((void *) (gc->pc + 8), (void *) (&pname), 4);
- (void) memcpy((void *) (gc->pc + 12), (void *) (params), (compsize * 4));
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_TexGeni 119
-void
-__indirect_glTexGeni(GLenum coord, GLenum pname, GLint param)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 16;
- emit_header(gc->pc, X_GLrop_TexGeni, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&coord), 4);
- (void) memcpy((void *) (gc->pc + 8), (void *) (&pname), 4);
- (void) memcpy((void *) (gc->pc + 12), (void *) (&param), 4);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_TexGeniv 120
-void
-__indirect_glTexGeniv(GLenum coord, GLenum pname, const GLint * params)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint compsize = __glTexGeniv_size(pname);
- const GLuint cmdlen = 12 + __GLX_PAD((compsize * 4));
- emit_header(gc->pc, X_GLrop_TexGeniv, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&coord), 4);
- (void) memcpy((void *) (gc->pc + 8), (void *) (&pname), 4);
- (void) memcpy((void *) (gc->pc + 12), (void *) (params), (compsize * 4));
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_InitNames 121
-void
-__indirect_glInitNames(void)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 4;
- emit_header(gc->pc, X_GLrop_InitNames, cmdlen);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_LoadName 122
-void
-__indirect_glLoadName(GLuint name)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 8;
- emit_header(gc->pc, X_GLrop_LoadName, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&name), 4);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_PassThrough 123
-void
-__indirect_glPassThrough(GLfloat token)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 8;
- emit_header(gc->pc, X_GLrop_PassThrough, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&token), 4);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_PopName 124
-void
-__indirect_glPopName(void)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 4;
- emit_header(gc->pc, X_GLrop_PopName, cmdlen);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_PushName 125
-void
-__indirect_glPushName(GLuint name)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 8;
- emit_header(gc->pc, X_GLrop_PushName, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&name), 4);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_DrawBuffer 126
-void
-__indirect_glDrawBuffer(GLenum mode)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 8;
- emit_header(gc->pc, X_GLrop_DrawBuffer, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&mode), 4);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_Clear 127
-void
-__indirect_glClear(GLbitfield mask)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 8;
- emit_header(gc->pc, X_GLrop_Clear, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&mask), 4);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_ClearAccum 128
-void
-__indirect_glClearAccum(GLfloat red, GLfloat green, GLfloat blue,
- GLfloat alpha)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 20;
- emit_header(gc->pc, X_GLrop_ClearAccum, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&red), 4);
- (void) memcpy((void *) (gc->pc + 8), (void *) (&green), 4);
- (void) memcpy((void *) (gc->pc + 12), (void *) (&blue), 4);
- (void) memcpy((void *) (gc->pc + 16), (void *) (&alpha), 4);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_ClearIndex 129
-void
-__indirect_glClearIndex(GLfloat c)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 8;
- emit_header(gc->pc, X_GLrop_ClearIndex, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&c), 4);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_ClearColor 130
-void
-__indirect_glClearColor(GLclampf red, GLclampf green, GLclampf blue,
- GLclampf alpha)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 20;
- emit_header(gc->pc, X_GLrop_ClearColor, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&red), 4);
- (void) memcpy((void *) (gc->pc + 8), (void *) (&green), 4);
- (void) memcpy((void *) (gc->pc + 12), (void *) (&blue), 4);
- (void) memcpy((void *) (gc->pc + 16), (void *) (&alpha), 4);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_ClearStencil 131
-void
-__indirect_glClearStencil(GLint s)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 8;
- emit_header(gc->pc, X_GLrop_ClearStencil, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&s), 4);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_ClearDepth 132
-void
-__indirect_glClearDepth(GLclampd depth)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 12;
- emit_header(gc->pc, X_GLrop_ClearDepth, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&depth), 8);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_StencilMask 133
-void
-__indirect_glStencilMask(GLuint mask)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 8;
- emit_header(gc->pc, X_GLrop_StencilMask, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&mask), 4);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_ColorMask 134
-void
-__indirect_glColorMask(GLboolean red, GLboolean green, GLboolean blue,
- GLboolean alpha)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 8;
- emit_header(gc->pc, X_GLrop_ColorMask, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&red), 1);
- (void) memcpy((void *) (gc->pc + 5), (void *) (&green), 1);
- (void) memcpy((void *) (gc->pc + 6), (void *) (&blue), 1);
- (void) memcpy((void *) (gc->pc + 7), (void *) (&alpha), 1);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_DepthMask 135
-void
-__indirect_glDepthMask(GLboolean flag)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 8;
- emit_header(gc->pc, X_GLrop_DepthMask, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&flag), 1);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_IndexMask 136
-void
-__indirect_glIndexMask(GLuint mask)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 8;
- emit_header(gc->pc, X_GLrop_IndexMask, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&mask), 4);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_Accum 137
-void
-__indirect_glAccum(GLenum op, GLfloat value)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 12;
- emit_header(gc->pc, X_GLrop_Accum, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&op), 4);
- (void) memcpy((void *) (gc->pc + 8), (void *) (&value), 4);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_PopAttrib 141
-void
-__indirect_glPopAttrib(void)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 4;
- emit_header(gc->pc, X_GLrop_PopAttrib, cmdlen);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_PushAttrib 142
-void
-__indirect_glPushAttrib(GLbitfield mask)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 8;
- emit_header(gc->pc, X_GLrop_PushAttrib, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&mask), 4);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_MapGrid1d 147
-void
-__indirect_glMapGrid1d(GLint un, GLdouble u1, GLdouble u2)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 24;
- emit_header(gc->pc, X_GLrop_MapGrid1d, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&u1), 8);
- (void) memcpy((void *) (gc->pc + 12), (void *) (&u2), 8);
- (void) memcpy((void *) (gc->pc + 20), (void *) (&un), 4);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_MapGrid1f 148
-void
-__indirect_glMapGrid1f(GLint un, GLfloat u1, GLfloat u2)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 16;
- emit_header(gc->pc, X_GLrop_MapGrid1f, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&un), 4);
- (void) memcpy((void *) (gc->pc + 8), (void *) (&u1), 4);
- (void) memcpy((void *) (gc->pc + 12), (void *) (&u2), 4);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_MapGrid2d 149
-void
-__indirect_glMapGrid2d(GLint un, GLdouble u1, GLdouble u2, GLint vn,
- GLdouble v1, GLdouble v2)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 44;
- emit_header(gc->pc, X_GLrop_MapGrid2d, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&u1), 8);
- (void) memcpy((void *) (gc->pc + 12), (void *) (&u2), 8);
- (void) memcpy((void *) (gc->pc + 20), (void *) (&v1), 8);
- (void) memcpy((void *) (gc->pc + 28), (void *) (&v2), 8);
- (void) memcpy((void *) (gc->pc + 36), (void *) (&un), 4);
- (void) memcpy((void *) (gc->pc + 40), (void *) (&vn), 4);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_MapGrid2f 150
-void
-__indirect_glMapGrid2f(GLint un, GLfloat u1, GLfloat u2, GLint vn, GLfloat v1,
- GLfloat v2)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 28;
- emit_header(gc->pc, X_GLrop_MapGrid2f, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&un), 4);
- (void) memcpy((void *) (gc->pc + 8), (void *) (&u1), 4);
- (void) memcpy((void *) (gc->pc + 12), (void *) (&u2), 4);
- (void) memcpy((void *) (gc->pc + 16), (void *) (&vn), 4);
- (void) memcpy((void *) (gc->pc + 20), (void *) (&v1), 4);
- (void) memcpy((void *) (gc->pc + 24), (void *) (&v2), 4);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_EvalCoord1dv 151
-void
-__indirect_glEvalCoord1d(GLdouble u)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 12;
- emit_header(gc->pc, X_GLrop_EvalCoord1dv, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&u), 8);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_EvalCoord1dv 151
-void
-__indirect_glEvalCoord1dv(const GLdouble * u)
-{
- generic_8_byte(X_GLrop_EvalCoord1dv, u);
-}
-
-#define X_GLrop_EvalCoord1fv 152
-void
-__indirect_glEvalCoord1f(GLfloat u)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 8;
- emit_header(gc->pc, X_GLrop_EvalCoord1fv, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&u), 4);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_EvalCoord1fv 152
-void
-__indirect_glEvalCoord1fv(const GLfloat * u)
-{
- generic_4_byte(X_GLrop_EvalCoord1fv, u);
-}
-
-#define X_GLrop_EvalCoord2dv 153
-void
-__indirect_glEvalCoord2d(GLdouble u, GLdouble v)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 20;
- emit_header(gc->pc, X_GLrop_EvalCoord2dv, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&u), 8);
- (void) memcpy((void *) (gc->pc + 12), (void *) (&v), 8);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_EvalCoord2dv 153
-void
-__indirect_glEvalCoord2dv(const GLdouble * u)
-{
- generic_16_byte(X_GLrop_EvalCoord2dv, u);
-}
-
-#define X_GLrop_EvalCoord2fv 154
-void
-__indirect_glEvalCoord2f(GLfloat u, GLfloat v)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 12;
- emit_header(gc->pc, X_GLrop_EvalCoord2fv, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&u), 4);
- (void) memcpy((void *) (gc->pc + 8), (void *) (&v), 4);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_EvalCoord2fv 154
-void
-__indirect_glEvalCoord2fv(const GLfloat * u)
-{
- generic_8_byte(X_GLrop_EvalCoord2fv, u);
-}
-
-#define X_GLrop_EvalMesh1 155
-void
-__indirect_glEvalMesh1(GLenum mode, GLint i1, GLint i2)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 16;
- emit_header(gc->pc, X_GLrop_EvalMesh1, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&mode), 4);
- (void) memcpy((void *) (gc->pc + 8), (void *) (&i1), 4);
- (void) memcpy((void *) (gc->pc + 12), (void *) (&i2), 4);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_EvalPoint1 156
-void
-__indirect_glEvalPoint1(GLint i)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 8;
- emit_header(gc->pc, X_GLrop_EvalPoint1, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&i), 4);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_EvalMesh2 157
-void
-__indirect_glEvalMesh2(GLenum mode, GLint i1, GLint i2, GLint j1, GLint j2)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 24;
- emit_header(gc->pc, X_GLrop_EvalMesh2, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&mode), 4);
- (void) memcpy((void *) (gc->pc + 8), (void *) (&i1), 4);
- (void) memcpy((void *) (gc->pc + 12), (void *) (&i2), 4);
- (void) memcpy((void *) (gc->pc + 16), (void *) (&j1), 4);
- (void) memcpy((void *) (gc->pc + 20), (void *) (&j2), 4);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_EvalPoint2 158
-void
-__indirect_glEvalPoint2(GLint i, GLint j)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 12;
- emit_header(gc->pc, X_GLrop_EvalPoint2, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&i), 4);
- (void) memcpy((void *) (gc->pc + 8), (void *) (&j), 4);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_AlphaFunc 159
-void
-__indirect_glAlphaFunc(GLenum func, GLclampf ref)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 12;
- emit_header(gc->pc, X_GLrop_AlphaFunc, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&func), 4);
- (void) memcpy((void *) (gc->pc + 8), (void *) (&ref), 4);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_BlendFunc 160
-void
-__indirect_glBlendFunc(GLenum sfactor, GLenum dfactor)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 12;
- emit_header(gc->pc, X_GLrop_BlendFunc, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&sfactor), 4);
- (void) memcpy((void *) (gc->pc + 8), (void *) (&dfactor), 4);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_LogicOp 161
-void
-__indirect_glLogicOp(GLenum opcode)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 8;
- emit_header(gc->pc, X_GLrop_LogicOp, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&opcode), 4);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_StencilFunc 162
-void
-__indirect_glStencilFunc(GLenum func, GLint ref, GLuint mask)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 16;
- emit_header(gc->pc, X_GLrop_StencilFunc, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&func), 4);
- (void) memcpy((void *) (gc->pc + 8), (void *) (&ref), 4);
- (void) memcpy((void *) (gc->pc + 12), (void *) (&mask), 4);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_StencilOp 163
-void
-__indirect_glStencilOp(GLenum fail, GLenum zfail, GLenum zpass)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 16;
- emit_header(gc->pc, X_GLrop_StencilOp, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&fail), 4);
- (void) memcpy((void *) (gc->pc + 8), (void *) (&zfail), 4);
- (void) memcpy((void *) (gc->pc + 12), (void *) (&zpass), 4);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_DepthFunc 164
-void
-__indirect_glDepthFunc(GLenum func)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 8;
- emit_header(gc->pc, X_GLrop_DepthFunc, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&func), 4);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_PixelZoom 165
-void
-__indirect_glPixelZoom(GLfloat xfactor, GLfloat yfactor)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 12;
- emit_header(gc->pc, X_GLrop_PixelZoom, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&xfactor), 4);
- (void) memcpy((void *) (gc->pc + 8), (void *) (&yfactor), 4);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_PixelTransferf 166
-void
-__indirect_glPixelTransferf(GLenum pname, GLfloat param)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 12;
- emit_header(gc->pc, X_GLrop_PixelTransferf, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&pname), 4);
- (void) memcpy((void *) (gc->pc + 8), (void *) (&param), 4);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_PixelTransferi 167
-void
-__indirect_glPixelTransferi(GLenum pname, GLint param)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 12;
- emit_header(gc->pc, X_GLrop_PixelTransferi, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&pname), 4);
- (void) memcpy((void *) (gc->pc + 8), (void *) (&param), 4);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_PixelMapfv 168
-void
-__indirect_glPixelMapfv(GLenum map, GLsizei mapsize, const GLfloat * values)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 12 + __GLX_PAD((mapsize * 4));
- if (mapsize < 0) {
- __glXSetError(gc, GL_INVALID_VALUE);
- return;
- }
- if (__builtin_expect((mapsize >= 0) && (gc->currentDpy != NULL), 1)) {
- if (cmdlen <= gc->maxSmallRenderCommandSize) {
- if ((gc->pc + cmdlen) > gc->bufEnd) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
- emit_header(gc->pc, X_GLrop_PixelMapfv, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&map), 4);
- (void) memcpy((void *) (gc->pc + 8), (void *) (&mapsize), 4);
- (void) memcpy((void *) (gc->pc + 12), (void *) (values),
- (mapsize * 4));
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
- } else {
- const GLint op = X_GLrop_PixelMapfv;
- const GLuint cmdlenLarge = cmdlen + 4;
- GLubyte *const pc = __glXFlushRenderBuffer(gc, gc->pc);
- (void) memcpy((void *) (pc + 0), (void *) (&cmdlenLarge), 4);
- (void) memcpy((void *) (pc + 4), (void *) (&op), 4);
- (void) memcpy((void *) (pc + 8), (void *) (&map), 4);
- (void) memcpy((void *) (pc + 12), (void *) (&mapsize), 4);
- __glXSendLargeCommand(gc, pc, 16, values, (mapsize * 4));
- }
- }
-}
-
-#define X_GLrop_PixelMapuiv 169
-void
-__indirect_glPixelMapuiv(GLenum map, GLsizei mapsize, const GLuint * values)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 12 + __GLX_PAD((mapsize * 4));
- if (mapsize < 0) {
- __glXSetError(gc, GL_INVALID_VALUE);
- return;
- }
- if (__builtin_expect((mapsize >= 0) && (gc->currentDpy != NULL), 1)) {
- if (cmdlen <= gc->maxSmallRenderCommandSize) {
- if ((gc->pc + cmdlen) > gc->bufEnd) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
- emit_header(gc->pc, X_GLrop_PixelMapuiv, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&map), 4);
- (void) memcpy((void *) (gc->pc + 8), (void *) (&mapsize), 4);
- (void) memcpy((void *) (gc->pc + 12), (void *) (values),
- (mapsize * 4));
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
- } else {
- const GLint op = X_GLrop_PixelMapuiv;
- const GLuint cmdlenLarge = cmdlen + 4;
- GLubyte *const pc = __glXFlushRenderBuffer(gc, gc->pc);
- (void) memcpy((void *) (pc + 0), (void *) (&cmdlenLarge), 4);
- (void) memcpy((void *) (pc + 4), (void *) (&op), 4);
- (void) memcpy((void *) (pc + 8), (void *) (&map), 4);
- (void) memcpy((void *) (pc + 12), (void *) (&mapsize), 4);
- __glXSendLargeCommand(gc, pc, 16, values, (mapsize * 4));
- }
- }
-}
-
-#define X_GLrop_PixelMapusv 170
-void
-__indirect_glPixelMapusv(GLenum map, GLsizei mapsize, const GLushort * values)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 12 + __GLX_PAD((mapsize * 2));
- if (mapsize < 0) {
- __glXSetError(gc, GL_INVALID_VALUE);
- return;
- }
- if (__builtin_expect((mapsize >= 0) && (gc->currentDpy != NULL), 1)) {
- if (cmdlen <= gc->maxSmallRenderCommandSize) {
- if ((gc->pc + cmdlen) > gc->bufEnd) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
- emit_header(gc->pc, X_GLrop_PixelMapusv, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&map), 4);
- (void) memcpy((void *) (gc->pc + 8), (void *) (&mapsize), 4);
- (void) memcpy((void *) (gc->pc + 12), (void *) (values),
- (mapsize * 2));
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
- } else {
- const GLint op = X_GLrop_PixelMapusv;
- const GLuint cmdlenLarge = cmdlen + 4;
- GLubyte *const pc = __glXFlushRenderBuffer(gc, gc->pc);
- (void) memcpy((void *) (pc + 0), (void *) (&cmdlenLarge), 4);
- (void) memcpy((void *) (pc + 4), (void *) (&op), 4);
- (void) memcpy((void *) (pc + 8), (void *) (&map), 4);
- (void) memcpy((void *) (pc + 12), (void *) (&mapsize), 4);
- __glXSendLargeCommand(gc, pc, 16, values, (mapsize * 2));
- }
- }
-}
-
-#define X_GLrop_ReadBuffer 171
-void
-__indirect_glReadBuffer(GLenum mode)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 8;
- emit_header(gc->pc, X_GLrop_ReadBuffer, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&mode), 4);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_CopyPixels 172
-void
-__indirect_glCopyPixels(GLint x, GLint y, GLsizei width, GLsizei height,
- GLenum type)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 24;
- emit_header(gc->pc, X_GLrop_CopyPixels, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&x), 4);
- (void) memcpy((void *) (gc->pc + 8), (void *) (&y), 4);
- (void) memcpy((void *) (gc->pc + 12), (void *) (&width), 4);
- (void) memcpy((void *) (gc->pc + 16), (void *) (&height), 4);
- (void) memcpy((void *) (gc->pc + 20), (void *) (&type), 4);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLsop_ReadPixels 111
-void
-__indirect_glReadPixels(GLint x, GLint y, GLsizei width, GLsizei height,
- GLenum format, GLenum type, GLvoid * pixels)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const __GLXattribute *const state = gc->client_state_private;
- Display *const dpy = gc->currentDpy;
-#ifndef USE_XCB
- const GLuint cmdlen = 28;
-#endif
- if (__builtin_expect(dpy != NULL, 1)) {
-#ifdef USE_XCB
- xcb_connection_t *c = XGetXCBConnection(dpy);
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- xcb_glx_read_pixels_reply_t *reply =
- xcb_glx_read_pixels_reply(c,
- xcb_glx_read_pixels(c,
- gc->
- currentContextTag,
- x, y, width, height,
- format, type,
- state->storePack.
- swapEndian, 0),
- NULL);
- (void) memcpy(pixels, xcb_glx_read_pixels_data(reply),
- xcb_glx_read_pixels_data_length(reply) *
- sizeof(GLvoid));
- free(reply);
-#else
- GLubyte const *pc =
- __glXSetupSingleRequest(gc, X_GLsop_ReadPixels, cmdlen);
- (void) memcpy((void *) (pc + 0), (void *) (&x), 4);
- (void) memcpy((void *) (pc + 4), (void *) (&y), 4);
- (void) memcpy((void *) (pc + 8), (void *) (&width), 4);
- (void) memcpy((void *) (pc + 12), (void *) (&height), 4);
- (void) memcpy((void *) (pc + 16), (void *) (&format), 4);
- (void) memcpy((void *) (pc + 20), (void *) (&type), 4);
- *(int32_t *) (pc + 24) = 0;
- *(int8_t *) (pc + 24) = state->storePack.swapEndian;
- __glXReadPixelReply(dpy, gc, 2, width, height, 1, format, type,
- pixels, GL_FALSE);
- UnlockDisplay(dpy);
- SyncHandle();
-#endif /* USE_XCB */
- }
- return;
-}
-
-#define X_GLrop_DrawPixels 173
-void
-__indirect_glDrawPixels(GLsizei width, GLsizei height, GLenum format,
- GLenum type, const GLvoid * pixels)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint compsize =
- (pixels != NULL) ? __glImageSize(width, height, 1, format, type,
- 0) : 0;
- const GLuint cmdlen = 40 + __GLX_PAD(compsize);
- if (__builtin_expect(gc->currentDpy != NULL, 1)) {
- if (cmdlen <= gc->maxSmallRenderCommandSize) {
- if ((gc->pc + cmdlen) > gc->bufEnd) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
- emit_header(gc->pc, X_GLrop_DrawPixels, cmdlen);
- (void) memcpy((void *) (gc->pc + 24), (void *) (&width), 4);
- (void) memcpy((void *) (gc->pc + 28), (void *) (&height), 4);
- (void) memcpy((void *) (gc->pc + 32), (void *) (&format), 4);
- (void) memcpy((void *) (gc->pc + 36), (void *) (&type), 4);
- if (compsize > 0) {
- (*gc->fillImage) (gc, 2, width, height, 1, format, type,
- pixels, gc->pc + 40, gc->pc + 4);
- } else {
- (void) memcpy(gc->pc + 4, default_pixel_store_2D,
- default_pixel_store_2D_size);
- }
- gc->pc += cmdlen;
- if (gc->pc > gc->limit) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
- } else {
- const GLint op = X_GLrop_DrawPixels;
- const GLuint cmdlenLarge = cmdlen + 4;
- GLubyte *const pc = __glXFlushRenderBuffer(gc, gc->pc);
- (void) memcpy((void *) (pc + 0), (void *) (&cmdlenLarge), 4);
- (void) memcpy((void *) (pc + 4), (void *) (&op), 4);
- (void) memcpy((void *) (pc + 28), (void *) (&width), 4);
- (void) memcpy((void *) (pc + 32), (void *) (&height), 4);
- (void) memcpy((void *) (pc + 36), (void *) (&format), 4);
- (void) memcpy((void *) (pc + 40), (void *) (&type), 4);
- __glXSendLargeImage(gc, compsize, 2, width, height, 1, format,
- type, pixels, pc + 44, pc + 8);
- }
- }
-}
-
-#define X_GLsop_GetClipPlane 113
-void
-__indirect_glGetClipPlane(GLenum plane, GLdouble * equation)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- Display *const dpy = gc->currentDpy;
-#ifndef USE_XCB
- const GLuint cmdlen = 4;
-#endif
- if (__builtin_expect(dpy != NULL, 1)) {
-#ifdef USE_XCB
- xcb_connection_t *c = XGetXCBConnection(dpy);
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- xcb_glx_get_clip_plane_reply_t *reply =
- xcb_glx_get_clip_plane_reply(c,
- xcb_glx_get_clip_plane(c,
- gc->
- currentContextTag,
- plane), NULL);
- (void) memcpy(equation, xcb_glx_get_clip_plane_data(reply),
- xcb_glx_get_clip_plane_data_length(reply) *
- sizeof(GLdouble));
- free(reply);
-#else
- GLubyte const *pc =
- __glXSetupSingleRequest(gc, X_GLsop_GetClipPlane, cmdlen);
- (void) memcpy((void *) (pc + 0), (void *) (&plane), 4);
- (void) __glXReadReply(dpy, 8, equation, GL_TRUE);
- UnlockDisplay(dpy);
- SyncHandle();
-#endif /* USE_XCB */
- }
- return;
-}
-
-#define X_GLsop_GetLightfv 118
-void
-__indirect_glGetLightfv(GLenum light, GLenum pname, GLfloat * params)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- Display *const dpy = gc->currentDpy;
-#ifndef USE_XCB
- const GLuint cmdlen = 8;
-#endif
- if (__builtin_expect(dpy != NULL, 1)) {
-#ifdef USE_XCB
- xcb_connection_t *c = XGetXCBConnection(dpy);
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- xcb_glx_get_lightfv_reply_t *reply =
- xcb_glx_get_lightfv_reply(c,
- xcb_glx_get_lightfv(c,
- gc->
- currentContextTag,
- light, pname),
- NULL);
- if (xcb_glx_get_lightfv_data_length(reply) == 0)
- (void) memcpy(params, &reply->datum, sizeof(reply->datum));
- else
- (void) memcpy(params, xcb_glx_get_lightfv_data(reply),
- xcb_glx_get_lightfv_data_length(reply) *
- sizeof(GLfloat));
- free(reply);
-#else
- GLubyte const *pc =
- __glXSetupSingleRequest(gc, X_GLsop_GetLightfv, cmdlen);
- (void) memcpy((void *) (pc + 0), (void *) (&light), 4);
- (void) memcpy((void *) (pc + 4), (void *) (&pname), 4);
- (void) __glXReadReply(dpy, 4, params, GL_FALSE);
- UnlockDisplay(dpy);
- SyncHandle();
-#endif /* USE_XCB */
- }
- return;
-}
-
-#define X_GLsop_GetLightiv 119
-void
-__indirect_glGetLightiv(GLenum light, GLenum pname, GLint * params)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- Display *const dpy = gc->currentDpy;
-#ifndef USE_XCB
- const GLuint cmdlen = 8;
-#endif
- if (__builtin_expect(dpy != NULL, 1)) {
-#ifdef USE_XCB
- xcb_connection_t *c = XGetXCBConnection(dpy);
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- xcb_glx_get_lightiv_reply_t *reply =
- xcb_glx_get_lightiv_reply(c,
- xcb_glx_get_lightiv(c,
- gc->
- currentContextTag,
- light, pname),
- NULL);
- if (xcb_glx_get_lightiv_data_length(reply) == 0)
- (void) memcpy(params, &reply->datum, sizeof(reply->datum));
- else
- (void) memcpy(params, xcb_glx_get_lightiv_data(reply),
- xcb_glx_get_lightiv_data_length(reply) *
- sizeof(GLint));
- free(reply);
-#else
- GLubyte const *pc =
- __glXSetupSingleRequest(gc, X_GLsop_GetLightiv, cmdlen);
- (void) memcpy((void *) (pc + 0), (void *) (&light), 4);
- (void) memcpy((void *) (pc + 4), (void *) (&pname), 4);
- (void) __glXReadReply(dpy, 4, params, GL_FALSE);
- UnlockDisplay(dpy);
- SyncHandle();
-#endif /* USE_XCB */
- }
- return;
-}
-
-#define X_GLsop_GetMapdv 120
-void
-__indirect_glGetMapdv(GLenum target, GLenum query, GLdouble * v)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- Display *const dpy = gc->currentDpy;
-#ifndef USE_XCB
- const GLuint cmdlen = 8;
-#endif
- if (__builtin_expect(dpy != NULL, 1)) {
-#ifdef USE_XCB
- xcb_connection_t *c = XGetXCBConnection(dpy);
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- xcb_glx_get_mapdv_reply_t *reply =
- xcb_glx_get_mapdv_reply(c,
- xcb_glx_get_mapdv(c,
- gc->currentContextTag,
- target, query), NULL);
- if (xcb_glx_get_mapdv_data_length(reply) == 0)
- (void) memcpy(v, &reply->datum, sizeof(reply->datum));
- else
- (void) memcpy(v, xcb_glx_get_mapdv_data(reply),
- xcb_glx_get_mapdv_data_length(reply) *
- sizeof(GLdouble));
- free(reply);
-#else
- GLubyte const *pc =
- __glXSetupSingleRequest(gc, X_GLsop_GetMapdv, cmdlen);
- (void) memcpy((void *) (pc + 0), (void *) (&target), 4);
- (void) memcpy((void *) (pc + 4), (void *) (&query), 4);
- (void) __glXReadReply(dpy, 8, v, GL_FALSE);
- UnlockDisplay(dpy);
- SyncHandle();
-#endif /* USE_XCB */
- }
- return;
-}
-
-#define X_GLsop_GetMapfv 121
-void
-__indirect_glGetMapfv(GLenum target, GLenum query, GLfloat * v)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- Display *const dpy = gc->currentDpy;
-#ifndef USE_XCB
- const GLuint cmdlen = 8;
-#endif
- if (__builtin_expect(dpy != NULL, 1)) {
-#ifdef USE_XCB
- xcb_connection_t *c = XGetXCBConnection(dpy);
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- xcb_glx_get_mapfv_reply_t *reply =
- xcb_glx_get_mapfv_reply(c,
- xcb_glx_get_mapfv(c,
- gc->currentContextTag,
- target, query), NULL);
- if (xcb_glx_get_mapfv_data_length(reply) == 0)
- (void) memcpy(v, &reply->datum, sizeof(reply->datum));
- else
- (void) memcpy(v, xcb_glx_get_mapfv_data(reply),
- xcb_glx_get_mapfv_data_length(reply) *
- sizeof(GLfloat));
- free(reply);
-#else
- GLubyte const *pc =
- __glXSetupSingleRequest(gc, X_GLsop_GetMapfv, cmdlen);
- (void) memcpy((void *) (pc + 0), (void *) (&target), 4);
- (void) memcpy((void *) (pc + 4), (void *) (&query), 4);
- (void) __glXReadReply(dpy, 4, v, GL_FALSE);
- UnlockDisplay(dpy);
- SyncHandle();
-#endif /* USE_XCB */
- }
- return;
-}
-
-#define X_GLsop_GetMapiv 122
-void
-__indirect_glGetMapiv(GLenum target, GLenum query, GLint * v)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- Display *const dpy = gc->currentDpy;
-#ifndef USE_XCB
- const GLuint cmdlen = 8;
-#endif
- if (__builtin_expect(dpy != NULL, 1)) {
-#ifdef USE_XCB
- xcb_connection_t *c = XGetXCBConnection(dpy);
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- xcb_glx_get_mapiv_reply_t *reply =
- xcb_glx_get_mapiv_reply(c,
- xcb_glx_get_mapiv(c,
- gc->currentContextTag,
- target, query), NULL);
- if (xcb_glx_get_mapiv_data_length(reply) == 0)
- (void) memcpy(v, &reply->datum, sizeof(reply->datum));
- else
- (void) memcpy(v, xcb_glx_get_mapiv_data(reply),
- xcb_glx_get_mapiv_data_length(reply) *
- sizeof(GLint));
- free(reply);
-#else
- GLubyte const *pc =
- __glXSetupSingleRequest(gc, X_GLsop_GetMapiv, cmdlen);
- (void) memcpy((void *) (pc + 0), (void *) (&target), 4);
- (void) memcpy((void *) (pc + 4), (void *) (&query), 4);
- (void) __glXReadReply(dpy, 4, v, GL_FALSE);
- UnlockDisplay(dpy);
- SyncHandle();
-#endif /* USE_XCB */
- }
- return;
-}
-
-#define X_GLsop_GetMaterialfv 123
-void
-__indirect_glGetMaterialfv(GLenum face, GLenum pname, GLfloat * params)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- Display *const dpy = gc->currentDpy;
-#ifndef USE_XCB
- const GLuint cmdlen = 8;
-#endif
- if (__builtin_expect(dpy != NULL, 1)) {
-#ifdef USE_XCB
- xcb_connection_t *c = XGetXCBConnection(dpy);
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- xcb_glx_get_materialfv_reply_t *reply =
- xcb_glx_get_materialfv_reply(c,
- xcb_glx_get_materialfv(c,
- gc->
- currentContextTag,
- face, pname),
- NULL);
- if (xcb_glx_get_materialfv_data_length(reply) == 0)
- (void) memcpy(params, &reply->datum, sizeof(reply->datum));
- else
- (void) memcpy(params, xcb_glx_get_materialfv_data(reply),
- xcb_glx_get_materialfv_data_length(reply) *
- sizeof(GLfloat));
- free(reply);
-#else
- GLubyte const *pc =
- __glXSetupSingleRequest(gc, X_GLsop_GetMaterialfv, cmdlen);
- (void) memcpy((void *) (pc + 0), (void *) (&face), 4);
- (void) memcpy((void *) (pc + 4), (void *) (&pname), 4);
- (void) __glXReadReply(dpy, 4, params, GL_FALSE);
- UnlockDisplay(dpy);
- SyncHandle();
-#endif /* USE_XCB */
- }
- return;
-}
-
-#define X_GLsop_GetMaterialiv 124
-void
-__indirect_glGetMaterialiv(GLenum face, GLenum pname, GLint * params)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- Display *const dpy = gc->currentDpy;
-#ifndef USE_XCB
- const GLuint cmdlen = 8;
-#endif
- if (__builtin_expect(dpy != NULL, 1)) {
-#ifdef USE_XCB
- xcb_connection_t *c = XGetXCBConnection(dpy);
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- xcb_glx_get_materialiv_reply_t *reply =
- xcb_glx_get_materialiv_reply(c,
- xcb_glx_get_materialiv(c,
- gc->
- currentContextTag,
- face, pname),
- NULL);
- if (xcb_glx_get_materialiv_data_length(reply) == 0)
- (void) memcpy(params, &reply->datum, sizeof(reply->datum));
- else
- (void) memcpy(params, xcb_glx_get_materialiv_data(reply),
- xcb_glx_get_materialiv_data_length(reply) *
- sizeof(GLint));
- free(reply);
-#else
- GLubyte const *pc =
- __glXSetupSingleRequest(gc, X_GLsop_GetMaterialiv, cmdlen);
- (void) memcpy((void *) (pc + 0), (void *) (&face), 4);
- (void) memcpy((void *) (pc + 4), (void *) (&pname), 4);
- (void) __glXReadReply(dpy, 4, params, GL_FALSE);
- UnlockDisplay(dpy);
- SyncHandle();
-#endif /* USE_XCB */
- }
- return;
-}
-
-#define X_GLsop_GetPixelMapfv 125
-void
-__indirect_glGetPixelMapfv(GLenum map, GLfloat * values)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- Display *const dpy = gc->currentDpy;
-#ifndef USE_XCB
- const GLuint cmdlen = 4;
-#endif
- if (__builtin_expect(dpy != NULL, 1)) {
-#ifdef USE_XCB
- xcb_connection_t *c = XGetXCBConnection(dpy);
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- xcb_glx_get_pixel_mapfv_reply_t *reply =
- xcb_glx_get_pixel_mapfv_reply(c,
- xcb_glx_get_pixel_mapfv(c,
- gc->
- currentContextTag,
- map), NULL);
- if (xcb_glx_get_pixel_mapfv_data_length(reply) == 0)
- (void) memcpy(values, &reply->datum, sizeof(reply->datum));
- else
- (void) memcpy(values, xcb_glx_get_pixel_mapfv_data(reply),
- xcb_glx_get_pixel_mapfv_data_length(reply) *
- sizeof(GLfloat));
- free(reply);
-#else
- GLubyte const *pc =
- __glXSetupSingleRequest(gc, X_GLsop_GetPixelMapfv, cmdlen);
- (void) memcpy((void *) (pc + 0), (void *) (&map), 4);
- (void) __glXReadReply(dpy, 4, values, GL_FALSE);
- UnlockDisplay(dpy);
- SyncHandle();
-#endif /* USE_XCB */
- }
- return;
-}
-
-#define X_GLsop_GetPixelMapuiv 126
-void
-__indirect_glGetPixelMapuiv(GLenum map, GLuint * values)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- Display *const dpy = gc->currentDpy;
-#ifndef USE_XCB
- const GLuint cmdlen = 4;
-#endif
- if (__builtin_expect(dpy != NULL, 1)) {
-#ifdef USE_XCB
- xcb_connection_t *c = XGetXCBConnection(dpy);
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- xcb_glx_get_pixel_mapuiv_reply_t *reply =
- xcb_glx_get_pixel_mapuiv_reply(c,
- xcb_glx_get_pixel_mapuiv(c,
- gc->
- currentContextTag,
- map),
- NULL);
- if (xcb_glx_get_pixel_mapuiv_data_length(reply) == 0)
- (void) memcpy(values, &reply->datum, sizeof(reply->datum));
- else
- (void) memcpy(values, xcb_glx_get_pixel_mapuiv_data(reply),
- xcb_glx_get_pixel_mapuiv_data_length(reply) *
- sizeof(GLuint));
- free(reply);
-#else
- GLubyte const *pc =
- __glXSetupSingleRequest(gc, X_GLsop_GetPixelMapuiv, cmdlen);
- (void) memcpy((void *) (pc + 0), (void *) (&map), 4);
- (void) __glXReadReply(dpy, 4, values, GL_FALSE);
- UnlockDisplay(dpy);
- SyncHandle();
-#endif /* USE_XCB */
- }
- return;
-}
-
-#define X_GLsop_GetPixelMapusv 127
-void
-__indirect_glGetPixelMapusv(GLenum map, GLushort * values)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- Display *const dpy = gc->currentDpy;
-#ifndef USE_XCB
- const GLuint cmdlen = 4;
-#endif
- if (__builtin_expect(dpy != NULL, 1)) {
-#ifdef USE_XCB
- xcb_connection_t *c = XGetXCBConnection(dpy);
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- xcb_glx_get_pixel_mapusv_reply_t *reply =
- xcb_glx_get_pixel_mapusv_reply(c,
- xcb_glx_get_pixel_mapusv(c,
- gc->
- currentContextTag,
- map),
- NULL);
- if (xcb_glx_get_pixel_mapusv_data_length(reply) == 0)
- (void) memcpy(values, &reply->datum, sizeof(reply->datum));
- else
- (void) memcpy(values, xcb_glx_get_pixel_mapusv_data(reply),
- xcb_glx_get_pixel_mapusv_data_length(reply) *
- sizeof(GLushort));
- free(reply);
-#else
- GLubyte const *pc =
- __glXSetupSingleRequest(gc, X_GLsop_GetPixelMapusv, cmdlen);
- (void) memcpy((void *) (pc + 0), (void *) (&map), 4);
- (void) __glXReadReply(dpy, 2, values, GL_FALSE);
- UnlockDisplay(dpy);
- SyncHandle();
-#endif /* USE_XCB */
- }
- return;
-}
-
-#define X_GLsop_GetPolygonStipple 128
-void
-__indirect_glGetPolygonStipple(GLubyte *mask)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- Display *const dpy = gc->currentDpy;
-#ifndef USE_XCB
- const GLuint cmdlen = 4;
-#endif
- if (__builtin_expect(dpy != NULL, 1)) {
-#ifdef USE_XCB
- xcb_connection_t *c = XGetXCBConnection(dpy);
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- xcb_glx_get_polygon_stipple_reply_t *reply =
- xcb_glx_get_polygon_stipple_reply(c,
- xcb_glx_get_polygon_stipple(c,
- gc->
- currentContextTag,
- 0),
- NULL);
- (void) memcpy(mask, xcb_glx_get_polygon_stipple_data(reply),
- xcb_glx_get_polygon_stipple_data_length(reply) *
- sizeof(GLubyte));
- free(reply);
-#else
- GLubyte const *pc =
- __glXSetupSingleRequest(gc, X_GLsop_GetPolygonStipple, cmdlen);
- *(int32_t *) (pc + 0) = 0;
- __glXReadPixelReply(dpy, gc, 2, 32, 32, 1, GL_COLOR_INDEX, GL_BITMAP,
- mask, GL_FALSE);
- UnlockDisplay(dpy);
- SyncHandle();
-#endif /* USE_XCB */
- }
- return;
-}
-
-#define X_GLsop_GetTexEnvfv 130
-void
-__indirect_glGetTexEnvfv(GLenum target, GLenum pname, GLfloat * params)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- Display *const dpy = gc->currentDpy;
-#ifndef USE_XCB
- const GLuint cmdlen = 8;
-#endif
- if (__builtin_expect(dpy != NULL, 1)) {
-#ifdef USE_XCB
- xcb_connection_t *c = XGetXCBConnection(dpy);
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- xcb_glx_get_tex_envfv_reply_t *reply =
- xcb_glx_get_tex_envfv_reply(c,
- xcb_glx_get_tex_envfv(c,
- gc->
- currentContextTag,
- target, pname),
- NULL);
- if (xcb_glx_get_tex_envfv_data_length(reply) == 0)
- (void) memcpy(params, &reply->datum, sizeof(reply->datum));
- else
- (void) memcpy(params, xcb_glx_get_tex_envfv_data(reply),
- xcb_glx_get_tex_envfv_data_length(reply) *
- sizeof(GLfloat));
- free(reply);
-#else
- GLubyte const *pc =
- __glXSetupSingleRequest(gc, X_GLsop_GetTexEnvfv, cmdlen);
- (void) memcpy((void *) (pc + 0), (void *) (&target), 4);
- (void) memcpy((void *) (pc + 4), (void *) (&pname), 4);
- (void) __glXReadReply(dpy, 4, params, GL_FALSE);
- UnlockDisplay(dpy);
- SyncHandle();
-#endif /* USE_XCB */
- }
- return;
-}
-
-#define X_GLsop_GetTexEnviv 131
-void
-__indirect_glGetTexEnviv(GLenum target, GLenum pname, GLint * params)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- Display *const dpy = gc->currentDpy;
-#ifndef USE_XCB
- const GLuint cmdlen = 8;
-#endif
- if (__builtin_expect(dpy != NULL, 1)) {
-#ifdef USE_XCB
- xcb_connection_t *c = XGetXCBConnection(dpy);
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- xcb_glx_get_tex_enviv_reply_t *reply =
- xcb_glx_get_tex_enviv_reply(c,
- xcb_glx_get_tex_enviv(c,
- gc->
- currentContextTag,
- target, pname),
- NULL);
- if (xcb_glx_get_tex_enviv_data_length(reply) == 0)
- (void) memcpy(params, &reply->datum, sizeof(reply->datum));
- else
- (void) memcpy(params, xcb_glx_get_tex_enviv_data(reply),
- xcb_glx_get_tex_enviv_data_length(reply) *
- sizeof(GLint));
- free(reply);
-#else
- GLubyte const *pc =
- __glXSetupSingleRequest(gc, X_GLsop_GetTexEnviv, cmdlen);
- (void) memcpy((void *) (pc + 0), (void *) (&target), 4);
- (void) memcpy((void *) (pc + 4), (void *) (&pname), 4);
- (void) __glXReadReply(dpy, 4, params, GL_FALSE);
- UnlockDisplay(dpy);
- SyncHandle();
-#endif /* USE_XCB */
- }
- return;
-}
-
-#define X_GLsop_GetTexGendv 132
-void
-__indirect_glGetTexGendv(GLenum coord, GLenum pname, GLdouble * params)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- Display *const dpy = gc->currentDpy;
-#ifndef USE_XCB
- const GLuint cmdlen = 8;
-#endif
- if (__builtin_expect(dpy != NULL, 1)) {
-#ifdef USE_XCB
- xcb_connection_t *c = XGetXCBConnection(dpy);
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- xcb_glx_get_tex_gendv_reply_t *reply =
- xcb_glx_get_tex_gendv_reply(c,
- xcb_glx_get_tex_gendv(c,
- gc->
- currentContextTag,
- coord, pname),
- NULL);
- if (xcb_glx_get_tex_gendv_data_length(reply) == 0)
- (void) memcpy(params, &reply->datum, sizeof(reply->datum));
- else
- (void) memcpy(params, xcb_glx_get_tex_gendv_data(reply),
- xcb_glx_get_tex_gendv_data_length(reply) *
- sizeof(GLdouble));
- free(reply);
-#else
- GLubyte const *pc =
- __glXSetupSingleRequest(gc, X_GLsop_GetTexGendv, cmdlen);
- (void) memcpy((void *) (pc + 0), (void *) (&coord), 4);
- (void) memcpy((void *) (pc + 4), (void *) (&pname), 4);
- (void) __glXReadReply(dpy, 8, params, GL_FALSE);
- UnlockDisplay(dpy);
- SyncHandle();
-#endif /* USE_XCB */
- }
- return;
-}
-
-#define X_GLsop_GetTexGenfv 133
-void
-__indirect_glGetTexGenfv(GLenum coord, GLenum pname, GLfloat * params)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- Display *const dpy = gc->currentDpy;
-#ifndef USE_XCB
- const GLuint cmdlen = 8;
-#endif
- if (__builtin_expect(dpy != NULL, 1)) {
-#ifdef USE_XCB
- xcb_connection_t *c = XGetXCBConnection(dpy);
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- xcb_glx_get_tex_genfv_reply_t *reply =
- xcb_glx_get_tex_genfv_reply(c,
- xcb_glx_get_tex_genfv(c,
- gc->
- currentContextTag,
- coord, pname),
- NULL);
- if (xcb_glx_get_tex_genfv_data_length(reply) == 0)
- (void) memcpy(params, &reply->datum, sizeof(reply->datum));
- else
- (void) memcpy(params, xcb_glx_get_tex_genfv_data(reply),
- xcb_glx_get_tex_genfv_data_length(reply) *
- sizeof(GLfloat));
- free(reply);
-#else
- GLubyte const *pc =
- __glXSetupSingleRequest(gc, X_GLsop_GetTexGenfv, cmdlen);
- (void) memcpy((void *) (pc + 0), (void *) (&coord), 4);
- (void) memcpy((void *) (pc + 4), (void *) (&pname), 4);
- (void) __glXReadReply(dpy, 4, params, GL_FALSE);
- UnlockDisplay(dpy);
- SyncHandle();
-#endif /* USE_XCB */
- }
- return;
-}
-
-#define X_GLsop_GetTexGeniv 134
-void
-__indirect_glGetTexGeniv(GLenum coord, GLenum pname, GLint * params)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- Display *const dpy = gc->currentDpy;
-#ifndef USE_XCB
- const GLuint cmdlen = 8;
-#endif
- if (__builtin_expect(dpy != NULL, 1)) {
-#ifdef USE_XCB
- xcb_connection_t *c = XGetXCBConnection(dpy);
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- xcb_glx_get_tex_geniv_reply_t *reply =
- xcb_glx_get_tex_geniv_reply(c,
- xcb_glx_get_tex_geniv(c,
- gc->
- currentContextTag,
- coord, pname),
- NULL);
- if (xcb_glx_get_tex_geniv_data_length(reply) == 0)
- (void) memcpy(params, &reply->datum, sizeof(reply->datum));
- else
- (void) memcpy(params, xcb_glx_get_tex_geniv_data(reply),
- xcb_glx_get_tex_geniv_data_length(reply) *
- sizeof(GLint));
- free(reply);
-#else
- GLubyte const *pc =
- __glXSetupSingleRequest(gc, X_GLsop_GetTexGeniv, cmdlen);
- (void) memcpy((void *) (pc + 0), (void *) (&coord), 4);
- (void) memcpy((void *) (pc + 4), (void *) (&pname), 4);
- (void) __glXReadReply(dpy, 4, params, GL_FALSE);
- UnlockDisplay(dpy);
- SyncHandle();
-#endif /* USE_XCB */
- }
- return;
-}
-
-#define X_GLsop_GetTexImage 135
-void
-__indirect_glGetTexImage(GLenum target, GLint level, GLenum format,
- GLenum type, GLvoid * pixels)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const __GLXattribute *const state = gc->client_state_private;
- Display *const dpy = gc->currentDpy;
-#ifndef USE_XCB
- const GLuint cmdlen = 20;
-#endif
- if (__builtin_expect(dpy != NULL, 1)) {
-#ifdef USE_XCB
- xcb_connection_t *c = XGetXCBConnection(dpy);
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- xcb_glx_get_tex_image_reply_t *reply =
- xcb_glx_get_tex_image_reply(c,
- xcb_glx_get_tex_image(c,
- gc->
- currentContextTag,
- target, level,
- format, type,
- state->
- storePack.
- swapEndian),
- NULL);
- (void) memcpy(pixels, xcb_glx_get_tex_image_data(reply),
- xcb_glx_get_tex_image_data_length(reply) *
- sizeof(GLvoid));
- free(reply);
-#else
- GLubyte const *pc =
- __glXSetupSingleRequest(gc, X_GLsop_GetTexImage, cmdlen);
- (void) memcpy((void *) (pc + 0), (void *) (&target), 4);
- (void) memcpy((void *) (pc + 4), (void *) (&level), 4);
- (void) memcpy((void *) (pc + 8), (void *) (&format), 4);
- (void) memcpy((void *) (pc + 12), (void *) (&type), 4);
- *(int32_t *) (pc + 16) = 0;
- *(int8_t *) (pc + 16) = state->storePack.swapEndian;
- __glXReadPixelReply(dpy, gc, 3, 0, 0, 0, format, type, pixels,
- GL_TRUE);
- UnlockDisplay(dpy);
- SyncHandle();
-#endif /* USE_XCB */
- }
- return;
-}
-
-#define X_GLsop_GetTexParameterfv 136
-void
-__indirect_glGetTexParameterfv(GLenum target, GLenum pname, GLfloat * params)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- Display *const dpy = gc->currentDpy;
-#ifndef USE_XCB
- const GLuint cmdlen = 8;
-#endif
- if (__builtin_expect(dpy != NULL, 1)) {
-#ifdef USE_XCB
- xcb_connection_t *c = XGetXCBConnection(dpy);
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- xcb_glx_get_tex_parameterfv_reply_t *reply =
- xcb_glx_get_tex_parameterfv_reply(c,
- xcb_glx_get_tex_parameterfv(c,
- gc->
- currentContextTag,
- target,
- pname),
- NULL);
- if (xcb_glx_get_tex_parameterfv_data_length(reply) == 0)
- (void) memcpy(params, &reply->datum, sizeof(reply->datum));
- else
- (void) memcpy(params, xcb_glx_get_tex_parameterfv_data(reply),
- xcb_glx_get_tex_parameterfv_data_length(reply) *
- sizeof(GLfloat));
- free(reply);
-#else
- GLubyte const *pc =
- __glXSetupSingleRequest(gc, X_GLsop_GetTexParameterfv, cmdlen);
- (void) memcpy((void *) (pc + 0), (void *) (&target), 4);
- (void) memcpy((void *) (pc + 4), (void *) (&pname), 4);
- (void) __glXReadReply(dpy, 4, params, GL_FALSE);
- UnlockDisplay(dpy);
- SyncHandle();
-#endif /* USE_XCB */
- }
- return;
-}
-
-#define X_GLsop_GetTexParameteriv 137
-void
-__indirect_glGetTexParameteriv(GLenum target, GLenum pname, GLint * params)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- Display *const dpy = gc->currentDpy;
-#ifndef USE_XCB
- const GLuint cmdlen = 8;
-#endif
- if (__builtin_expect(dpy != NULL, 1)) {
-#ifdef USE_XCB
- xcb_connection_t *c = XGetXCBConnection(dpy);
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- xcb_glx_get_tex_parameteriv_reply_t *reply =
- xcb_glx_get_tex_parameteriv_reply(c,
- xcb_glx_get_tex_parameteriv(c,
- gc->
- currentContextTag,
- target,
- pname),
- NULL);
- if (xcb_glx_get_tex_parameteriv_data_length(reply) == 0)
- (void) memcpy(params, &reply->datum, sizeof(reply->datum));
- else
- (void) memcpy(params, xcb_glx_get_tex_parameteriv_data(reply),
- xcb_glx_get_tex_parameteriv_data_length(reply) *
- sizeof(GLint));
- free(reply);
-#else
- GLubyte const *pc =
- __glXSetupSingleRequest(gc, X_GLsop_GetTexParameteriv, cmdlen);
- (void) memcpy((void *) (pc + 0), (void *) (&target), 4);
- (void) memcpy((void *) (pc + 4), (void *) (&pname), 4);
- (void) __glXReadReply(dpy, 4, params, GL_FALSE);
- UnlockDisplay(dpy);
- SyncHandle();
-#endif /* USE_XCB */
- }
- return;
-}
-
-#define X_GLsop_GetTexLevelParameterfv 138
-void
-__indirect_glGetTexLevelParameterfv(GLenum target, GLint level, GLenum pname,
- GLfloat * params)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- Display *const dpy = gc->currentDpy;
-#ifndef USE_XCB
- const GLuint cmdlen = 12;
-#endif
- if (__builtin_expect(dpy != NULL, 1)) {
-#ifdef USE_XCB
- xcb_connection_t *c = XGetXCBConnection(dpy);
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- xcb_glx_get_tex_level_parameterfv_reply_t *reply =
- xcb_glx_get_tex_level_parameterfv_reply(c,
- xcb_glx_get_tex_level_parameterfv
- (c, gc->currentContextTag,
- target, level, pname),
- NULL);
- if (xcb_glx_get_tex_level_parameterfv_data_length(reply) == 0)
- (void) memcpy(params, &reply->datum, sizeof(reply->datum));
- else
- (void) memcpy(params,
- xcb_glx_get_tex_level_parameterfv_data(reply),
- xcb_glx_get_tex_level_parameterfv_data_length(reply)
- * sizeof(GLfloat));
- free(reply);
-#else
- GLubyte const *pc =
- __glXSetupSingleRequest(gc, X_GLsop_GetTexLevelParameterfv,
- cmdlen);
- (void) memcpy((void *) (pc + 0), (void *) (&target), 4);
- (void) memcpy((void *) (pc + 4), (void *) (&level), 4);
- (void) memcpy((void *) (pc + 8), (void *) (&pname), 4);
- (void) __glXReadReply(dpy, 4, params, GL_FALSE);
- UnlockDisplay(dpy);
- SyncHandle();
-#endif /* USE_XCB */
- }
- return;
-}
-
-#define X_GLsop_GetTexLevelParameteriv 139
-void
-__indirect_glGetTexLevelParameteriv(GLenum target, GLint level, GLenum pname,
- GLint * params)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- Display *const dpy = gc->currentDpy;
-#ifndef USE_XCB
- const GLuint cmdlen = 12;
-#endif
- if (__builtin_expect(dpy != NULL, 1)) {
-#ifdef USE_XCB
- xcb_connection_t *c = XGetXCBConnection(dpy);
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- xcb_glx_get_tex_level_parameteriv_reply_t *reply =
- xcb_glx_get_tex_level_parameteriv_reply(c,
- xcb_glx_get_tex_level_parameteriv
- (c, gc->currentContextTag,
- target, level, pname),
- NULL);
- if (xcb_glx_get_tex_level_parameteriv_data_length(reply) == 0)
- (void) memcpy(params, &reply->datum, sizeof(reply->datum));
- else
- (void) memcpy(params,
- xcb_glx_get_tex_level_parameteriv_data(reply),
- xcb_glx_get_tex_level_parameteriv_data_length(reply)
- * sizeof(GLint));
- free(reply);
-#else
- GLubyte const *pc =
- __glXSetupSingleRequest(gc, X_GLsop_GetTexLevelParameteriv,
- cmdlen);
- (void) memcpy((void *) (pc + 0), (void *) (&target), 4);
- (void) memcpy((void *) (pc + 4), (void *) (&level), 4);
- (void) memcpy((void *) (pc + 8), (void *) (&pname), 4);
- (void) __glXReadReply(dpy, 4, params, GL_FALSE);
- UnlockDisplay(dpy);
- SyncHandle();
-#endif /* USE_XCB */
- }
- return;
-}
-
-#define X_GLsop_IsList 141
-GLboolean
-__indirect_glIsList(GLuint list)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- Display *const dpy = gc->currentDpy;
- GLboolean retval = (GLboolean) 0;
-#ifndef USE_XCB
- const GLuint cmdlen = 4;
-#endif
- if (__builtin_expect(dpy != NULL, 1)) {
-#ifdef USE_XCB
- xcb_connection_t *c = XGetXCBConnection(dpy);
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- xcb_glx_is_list_reply_t *reply =
- xcb_glx_is_list_reply(c,
- xcb_glx_is_list(c, gc->currentContextTag,
- list), NULL);
- retval = reply->ret_val;
- free(reply);
-#else
- GLubyte const *pc =
- __glXSetupSingleRequest(gc, X_GLsop_IsList, cmdlen);
- (void) memcpy((void *) (pc + 0), (void *) (&list), 4);
- retval = (GLboolean) __glXReadReply(dpy, 0, NULL, GL_FALSE);
- UnlockDisplay(dpy);
- SyncHandle();
-#endif /* USE_XCB */
- }
- return retval;
-}
-
-#define X_GLrop_DepthRange 174
-void
-__indirect_glDepthRange(GLclampd zNear, GLclampd zFar)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 20;
- emit_header(gc->pc, X_GLrop_DepthRange, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&zNear), 8);
- (void) memcpy((void *) (gc->pc + 12), (void *) (&zFar), 8);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_Frustum 175
-void
-__indirect_glFrustum(GLdouble left, GLdouble right, GLdouble bottom,
- GLdouble top, GLdouble zNear, GLdouble zFar)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 52;
- emit_header(gc->pc, X_GLrop_Frustum, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&left), 8);
- (void) memcpy((void *) (gc->pc + 12), (void *) (&right), 8);
- (void) memcpy((void *) (gc->pc + 20), (void *) (&bottom), 8);
- (void) memcpy((void *) (gc->pc + 28), (void *) (&top), 8);
- (void) memcpy((void *) (gc->pc + 36), (void *) (&zNear), 8);
- (void) memcpy((void *) (gc->pc + 44), (void *) (&zFar), 8);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_LoadIdentity 176
-void
-__indirect_glLoadIdentity(void)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 4;
- emit_header(gc->pc, X_GLrop_LoadIdentity, cmdlen);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_LoadMatrixf 177
-void
-__indirect_glLoadMatrixf(const GLfloat * m)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 68;
- emit_header(gc->pc, X_GLrop_LoadMatrixf, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (m), 64);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_LoadMatrixd 178
-void
-__indirect_glLoadMatrixd(const GLdouble * m)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 132;
- emit_header(gc->pc, X_GLrop_LoadMatrixd, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (m), 128);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_MatrixMode 179
-void
-__indirect_glMatrixMode(GLenum mode)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 8;
- emit_header(gc->pc, X_GLrop_MatrixMode, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&mode), 4);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_MultMatrixf 180
-void
-__indirect_glMultMatrixf(const GLfloat * m)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 68;
- emit_header(gc->pc, X_GLrop_MultMatrixf, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (m), 64);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_MultMatrixd 181
-void
-__indirect_glMultMatrixd(const GLdouble * m)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 132;
- emit_header(gc->pc, X_GLrop_MultMatrixd, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (m), 128);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_Ortho 182
-void
-__indirect_glOrtho(GLdouble left, GLdouble right, GLdouble bottom,
- GLdouble top, GLdouble zNear, GLdouble zFar)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 52;
- emit_header(gc->pc, X_GLrop_Ortho, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&left), 8);
- (void) memcpy((void *) (gc->pc + 12), (void *) (&right), 8);
- (void) memcpy((void *) (gc->pc + 20), (void *) (&bottom), 8);
- (void) memcpy((void *) (gc->pc + 28), (void *) (&top), 8);
- (void) memcpy((void *) (gc->pc + 36), (void *) (&zNear), 8);
- (void) memcpy((void *) (gc->pc + 44), (void *) (&zFar), 8);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_PopMatrix 183
-void
-__indirect_glPopMatrix(void)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 4;
- emit_header(gc->pc, X_GLrop_PopMatrix, cmdlen);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_PushMatrix 184
-void
-__indirect_glPushMatrix(void)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 4;
- emit_header(gc->pc, X_GLrop_PushMatrix, cmdlen);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_Rotated 185
-void
-__indirect_glRotated(GLdouble angle, GLdouble x, GLdouble y, GLdouble z)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 36;
- emit_header(gc->pc, X_GLrop_Rotated, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&angle), 8);
- (void) memcpy((void *) (gc->pc + 12), (void *) (&x), 8);
- (void) memcpy((void *) (gc->pc + 20), (void *) (&y), 8);
- (void) memcpy((void *) (gc->pc + 28), (void *) (&z), 8);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_Rotatef 186
-void
-__indirect_glRotatef(GLfloat angle, GLfloat x, GLfloat y, GLfloat z)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 20;
- emit_header(gc->pc, X_GLrop_Rotatef, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&angle), 4);
- (void) memcpy((void *) (gc->pc + 8), (void *) (&x), 4);
- (void) memcpy((void *) (gc->pc + 12), (void *) (&y), 4);
- (void) memcpy((void *) (gc->pc + 16), (void *) (&z), 4);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_Scaled 187
-void
-__indirect_glScaled(GLdouble x, GLdouble y, GLdouble z)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 28;
- emit_header(gc->pc, X_GLrop_Scaled, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&x), 8);
- (void) memcpy((void *) (gc->pc + 12), (void *) (&y), 8);
- (void) memcpy((void *) (gc->pc + 20), (void *) (&z), 8);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_Scalef 188
-void
-__indirect_glScalef(GLfloat x, GLfloat y, GLfloat z)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 16;
- emit_header(gc->pc, X_GLrop_Scalef, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&x), 4);
- (void) memcpy((void *) (gc->pc + 8), (void *) (&y), 4);
- (void) memcpy((void *) (gc->pc + 12), (void *) (&z), 4);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_Translated 189
-void
-__indirect_glTranslated(GLdouble x, GLdouble y, GLdouble z)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 28;
- emit_header(gc->pc, X_GLrop_Translated, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&x), 8);
- (void) memcpy((void *) (gc->pc + 12), (void *) (&y), 8);
- (void) memcpy((void *) (gc->pc + 20), (void *) (&z), 8);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_Translatef 190
-void
-__indirect_glTranslatef(GLfloat x, GLfloat y, GLfloat z)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 16;
- emit_header(gc->pc, X_GLrop_Translatef, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&x), 4);
- (void) memcpy((void *) (gc->pc + 8), (void *) (&y), 4);
- (void) memcpy((void *) (gc->pc + 12), (void *) (&z), 4);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_Viewport 191
-void
-__indirect_glViewport(GLint x, GLint y, GLsizei width, GLsizei height)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 20;
- emit_header(gc->pc, X_GLrop_Viewport, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&x), 4);
- (void) memcpy((void *) (gc->pc + 8), (void *) (&y), 4);
- (void) memcpy((void *) (gc->pc + 12), (void *) (&width), 4);
- (void) memcpy((void *) (gc->pc + 16), (void *) (&height), 4);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_BindTexture 4117
-void
-__indirect_glBindTexture(GLenum target, GLuint texture)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 12;
- emit_header(gc->pc, X_GLrop_BindTexture, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&target), 4);
- (void) memcpy((void *) (gc->pc + 8), (void *) (&texture), 4);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_Indexubv 194
-void
-__indirect_glIndexub(GLubyte c)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 8;
- emit_header(gc->pc, X_GLrop_Indexubv, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&c), 1);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_Indexubv 194
-void
-__indirect_glIndexubv(const GLubyte *c)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 8;
- emit_header(gc->pc, X_GLrop_Indexubv, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (c), 1);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_PolygonOffset 192
-void
-__indirect_glPolygonOffset(GLfloat factor, GLfloat units)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 12;
- emit_header(gc->pc, X_GLrop_PolygonOffset, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&factor), 4);
- (void) memcpy((void *) (gc->pc + 8), (void *) (&units), 4);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_CopyTexImage1D 4119
-void
-__indirect_glCopyTexImage1D(GLenum target, GLint level, GLenum internalformat,
- GLint x, GLint y, GLsizei width, GLint border)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 32;
- emit_header(gc->pc, X_GLrop_CopyTexImage1D, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&target), 4);
- (void) memcpy((void *) (gc->pc + 8), (void *) (&level), 4);
- (void) memcpy((void *) (gc->pc + 12), (void *) (&internalformat), 4);
- (void) memcpy((void *) (gc->pc + 16), (void *) (&x), 4);
- (void) memcpy((void *) (gc->pc + 20), (void *) (&y), 4);
- (void) memcpy((void *) (gc->pc + 24), (void *) (&width), 4);
- (void) memcpy((void *) (gc->pc + 28), (void *) (&border), 4);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_CopyTexImage2D 4120
-void
-__indirect_glCopyTexImage2D(GLenum target, GLint level, GLenum internalformat,
- GLint x, GLint y, GLsizei width, GLsizei height,
- GLint border)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 36;
- emit_header(gc->pc, X_GLrop_CopyTexImage2D, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&target), 4);
- (void) memcpy((void *) (gc->pc + 8), (void *) (&level), 4);
- (void) memcpy((void *) (gc->pc + 12), (void *) (&internalformat), 4);
- (void) memcpy((void *) (gc->pc + 16), (void *) (&x), 4);
- (void) memcpy((void *) (gc->pc + 20), (void *) (&y), 4);
- (void) memcpy((void *) (gc->pc + 24), (void *) (&width), 4);
- (void) memcpy((void *) (gc->pc + 28), (void *) (&height), 4);
- (void) memcpy((void *) (gc->pc + 32), (void *) (&border), 4);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_CopyTexSubImage1D 4121
-void
-__indirect_glCopyTexSubImage1D(GLenum target, GLint level, GLint xoffset,
- GLint x, GLint y, GLsizei width)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 28;
- emit_header(gc->pc, X_GLrop_CopyTexSubImage1D, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&target), 4);
- (void) memcpy((void *) (gc->pc + 8), (void *) (&level), 4);
- (void) memcpy((void *) (gc->pc + 12), (void *) (&xoffset), 4);
- (void) memcpy((void *) (gc->pc + 16), (void *) (&x), 4);
- (void) memcpy((void *) (gc->pc + 20), (void *) (&y), 4);
- (void) memcpy((void *) (gc->pc + 24), (void *) (&width), 4);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_CopyTexSubImage2D 4122
-void
-__indirect_glCopyTexSubImage2D(GLenum target, GLint level, GLint xoffset,
- GLint yoffset, GLint x, GLint y, GLsizei width,
- GLsizei height)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 36;
- emit_header(gc->pc, X_GLrop_CopyTexSubImage2D, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&target), 4);
- (void) memcpy((void *) (gc->pc + 8), (void *) (&level), 4);
- (void) memcpy((void *) (gc->pc + 12), (void *) (&xoffset), 4);
- (void) memcpy((void *) (gc->pc + 16), (void *) (&yoffset), 4);
- (void) memcpy((void *) (gc->pc + 20), (void *) (&x), 4);
- (void) memcpy((void *) (gc->pc + 24), (void *) (&y), 4);
- (void) memcpy((void *) (gc->pc + 28), (void *) (&width), 4);
- (void) memcpy((void *) (gc->pc + 32), (void *) (&height), 4);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLsop_DeleteTextures 144
-void
-__indirect_glDeleteTextures(GLsizei n, const GLuint * textures)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- Display *const dpy = gc->currentDpy;
-#ifndef USE_XCB
- const GLuint cmdlen = 4 + __GLX_PAD((n * 4));
-#endif
- if (n < 0) {
- __glXSetError(gc, GL_INVALID_VALUE);
- return;
- }
- if (__builtin_expect((n >= 0) && (dpy != NULL), 1)) {
-#ifdef USE_XCB
- xcb_connection_t *c = XGetXCBConnection(dpy);
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- xcb_glx_delete_textures(c, gc->currentContextTag, n, textures);
-#else
- GLubyte const *pc =
- __glXSetupSingleRequest(gc, X_GLsop_DeleteTextures, cmdlen);
- (void) memcpy((void *) (pc + 0), (void *) (&n), 4);
- (void) memcpy((void *) (pc + 4), (void *) (textures), (n * 4));
- UnlockDisplay(dpy);
- SyncHandle();
-#endif /* USE_XCB */
- }
- return;
-}
-
-#define X_GLvop_DeleteTexturesEXT 12
-void
-glDeleteTexturesEXT(GLsizei n, const GLuint * textures)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
-
-#ifdef GLX_DIRECT_RENDERING
- if (gc->driContext) {
- CALL_DeleteTextures(GET_DISPATCH(), (n, textures));
- } else
-#endif
- {
- __GLXcontext *const gc = __glXGetCurrentContext();
- Display *const dpy = gc->currentDpy;
- const GLuint cmdlen = 4 + __GLX_PAD((n * 4));
- if (n < 0) {
- __glXSetError(gc, GL_INVALID_VALUE);
- return;
- }
- if (__builtin_expect((n >= 0) && (dpy != NULL), 1)) {
- GLubyte const *pc =
- __glXSetupVendorRequest(gc, X_GLXVendorPrivate,
- X_GLvop_DeleteTexturesEXT, cmdlen);
- (void) memcpy((void *) (pc + 0), (void *) (&n), 4);
- (void) memcpy((void *) (pc + 4), (void *) (textures), (n * 4));
- UnlockDisplay(dpy);
- SyncHandle();
- }
- return;
- }
-}
-
-#define X_GLsop_GenTextures 145
-void
-__indirect_glGenTextures(GLsizei n, GLuint * textures)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- Display *const dpy = gc->currentDpy;
-#ifndef USE_XCB
- const GLuint cmdlen = 4;
-#endif
- if (n < 0) {
- __glXSetError(gc, GL_INVALID_VALUE);
- return;
- }
- if (__builtin_expect((n >= 0) && (dpy != NULL), 1)) {
-#ifdef USE_XCB
- xcb_connection_t *c = XGetXCBConnection(dpy);
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- xcb_glx_gen_textures_reply_t *reply =
- xcb_glx_gen_textures_reply(c,
- xcb_glx_gen_textures(c,
- gc->
- currentContextTag,
- n), NULL);
- (void) memcpy(textures, xcb_glx_gen_textures_data(reply),
- xcb_glx_gen_textures_data_length(reply) *
- sizeof(GLuint));
- free(reply);
-#else
- GLubyte const *pc =
- __glXSetupSingleRequest(gc, X_GLsop_GenTextures, cmdlen);
- (void) memcpy((void *) (pc + 0), (void *) (&n), 4);
- (void) __glXReadReply(dpy, 4, textures, GL_TRUE);
- UnlockDisplay(dpy);
- SyncHandle();
-#endif /* USE_XCB */
- }
- return;
-}
-
-#define X_GLvop_GenTexturesEXT 13
-void
-glGenTexturesEXT(GLsizei n, GLuint * textures)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
-
-#ifdef GLX_DIRECT_RENDERING
- if (gc->driContext) {
- CALL_GenTextures(GET_DISPATCH(), (n, textures));
- } else
-#endif
- {
- __GLXcontext *const gc = __glXGetCurrentContext();
- Display *const dpy = gc->currentDpy;
- const GLuint cmdlen = 4;
- if (n < 0) {
- __glXSetError(gc, GL_INVALID_VALUE);
- return;
- }
- if (__builtin_expect((n >= 0) && (dpy != NULL), 1)) {
- GLubyte const *pc =
- __glXSetupVendorRequest(gc, X_GLXVendorPrivateWithReply,
- X_GLvop_GenTexturesEXT, cmdlen);
- (void) memcpy((void *) (pc + 0), (void *) (&n), 4);
- (void) __glXReadReply(dpy, 4, textures, GL_TRUE);
- UnlockDisplay(dpy);
- SyncHandle();
- }
- return;
- }
-}
-
-#define X_GLsop_IsTexture 146
-GLboolean
-__indirect_glIsTexture(GLuint texture)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- Display *const dpy = gc->currentDpy;
- GLboolean retval = (GLboolean) 0;
-#ifndef USE_XCB
- const GLuint cmdlen = 4;
-#endif
- if (__builtin_expect(dpy != NULL, 1)) {
-#ifdef USE_XCB
- xcb_connection_t *c = XGetXCBConnection(dpy);
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- xcb_glx_is_texture_reply_t *reply =
- xcb_glx_is_texture_reply(c,
- xcb_glx_is_texture(c,
- gc->currentContextTag,
- texture), NULL);
- retval = reply->ret_val;
- free(reply);
-#else
- GLubyte const *pc =
- __glXSetupSingleRequest(gc, X_GLsop_IsTexture, cmdlen);
- (void) memcpy((void *) (pc + 0), (void *) (&texture), 4);
- retval = (GLboolean) __glXReadReply(dpy, 0, NULL, GL_FALSE);
- UnlockDisplay(dpy);
- SyncHandle();
-#endif /* USE_XCB */
- }
- return retval;
-}
-
-#define X_GLvop_IsTextureEXT 14
-GLboolean
-glIsTextureEXT(GLuint texture)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
-
-#ifdef GLX_DIRECT_RENDERING
- if (gc->driContext) {
- return CALL_IsTexture(GET_DISPATCH(), (texture));
- } else
-#endif
- {
- __GLXcontext *const gc = __glXGetCurrentContext();
- Display *const dpy = gc->currentDpy;
- GLboolean retval = (GLboolean) 0;
- const GLuint cmdlen = 4;
- if (__builtin_expect(dpy != NULL, 1)) {
- GLubyte const *pc =
- __glXSetupVendorRequest(gc, X_GLXVendorPrivateWithReply,
- X_GLvop_IsTextureEXT, cmdlen);
- (void) memcpy((void *) (pc + 0), (void *) (&texture), 4);
- retval = (GLboolean) __glXReadReply(dpy, 0, NULL, GL_FALSE);
- UnlockDisplay(dpy);
- SyncHandle();
- }
- return retval;
- }
-}
-
-#define X_GLrop_PrioritizeTextures 4118
-void
-__indirect_glPrioritizeTextures(GLsizei n, const GLuint * textures,
- const GLclampf * priorities)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 8 + __GLX_PAD((n * 4)) + __GLX_PAD((n * 4));
- if (n < 0) {
- __glXSetError(gc, GL_INVALID_VALUE);
- return;
- }
- if (__builtin_expect(n >= 0, 1)) {
- emit_header(gc->pc, X_GLrop_PrioritizeTextures, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&n), 4);
- (void) memcpy((void *) (gc->pc + 8), (void *) (textures), (n * 4));
- (void) memcpy((void *) (gc->pc + 8 + (n * 4)), (void *) (priorities),
- (n * 4));
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
- }
-}
-
-static void
-__glx_TexSubImage_1D2D(unsigned opcode, unsigned dim, GLenum target,
- GLint level, GLint xoffset, GLint yoffset,
- GLsizei width, GLsizei height, GLenum format,
- GLenum type, const GLvoid * pixels)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint compsize =
- (pixels != NULL) ? __glImageSize(width, height, 1, format, type,
- target) : 0;
- const GLuint cmdlen = 60 + __GLX_PAD(compsize);
- if (__builtin_expect(gc->currentDpy != NULL, 1)) {
- if (cmdlen <= gc->maxSmallRenderCommandSize) {
- if ((gc->pc + cmdlen) > gc->bufEnd) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
- emit_header(gc->pc, opcode, cmdlen);
- (void) memcpy((void *) (gc->pc + 24), (void *) (&target), 4);
- (void) memcpy((void *) (gc->pc + 28), (void *) (&level), 4);
- (void) memcpy((void *) (gc->pc + 32), (void *) (&xoffset), 4);
- (void) memcpy((void *) (gc->pc + 36), (void *) (&yoffset), 4);
- (void) memcpy((void *) (gc->pc + 40), (void *) (&width), 4);
- (void) memcpy((void *) (gc->pc + 44), (void *) (&height), 4);
- (void) memcpy((void *) (gc->pc + 48), (void *) (&format), 4);
- (void) memcpy((void *) (gc->pc + 52), (void *) (&type), 4);
- (void) memset((void *) (gc->pc + 56), 0, 4);
- if (compsize > 0) {
- (*gc->fillImage) (gc, dim, width, height, 1, format, type,
- pixels, gc->pc + 60, gc->pc + 4);
- } else {
- (void) memcpy(gc->pc + 4, default_pixel_store_2D,
- default_pixel_store_2D_size);
- }
- gc->pc += cmdlen;
- if (gc->pc > gc->limit) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
- } else {
- const GLint op = opcode;
- const GLuint cmdlenLarge = cmdlen + 4;
- GLubyte *const pc = __glXFlushRenderBuffer(gc, gc->pc);
- (void) memcpy((void *) (pc + 0), (void *) (&cmdlenLarge), 4);
- (void) memcpy((void *) (pc + 4), (void *) (&op), 4);
- (void) memcpy((void *) (pc + 28), (void *) (&target), 4);
- (void) memcpy((void *) (pc + 32), (void *) (&level), 4);
- (void) memcpy((void *) (pc + 36), (void *) (&xoffset), 4);
- (void) memcpy((void *) (pc + 40), (void *) (&yoffset), 4);
- (void) memcpy((void *) (pc + 44), (void *) (&width), 4);
- (void) memcpy((void *) (pc + 48), (void *) (&height), 4);
- (void) memcpy((void *) (pc + 52), (void *) (&format), 4);
- (void) memcpy((void *) (pc + 56), (void *) (&type), 4);
- (void) memset((void *) (pc + 60), 0, 4);
- __glXSendLargeImage(gc, compsize, dim, width, height, 1, format,
- type, pixels, pc + 64, pc + 8);
- }
- }
-}
-
-#define X_GLrop_TexSubImage1D 4099
-void
-__indirect_glTexSubImage1D(GLenum target, GLint level, GLint xoffset,
- GLsizei width, GLenum format, GLenum type,
- const GLvoid * pixels)
-{
- __glx_TexSubImage_1D2D(X_GLrop_TexSubImage1D, 1, target, level, xoffset,
- 1, width, 1, format, type, pixels);
-}
-
-#define X_GLrop_TexSubImage2D 4100
-void
-__indirect_glTexSubImage2D(GLenum target, GLint level, GLint xoffset,
- GLint yoffset, GLsizei width, GLsizei height,
- GLenum format, GLenum type, const GLvoid * pixels)
-{
- __glx_TexSubImage_1D2D(X_GLrop_TexSubImage2D, 2, target, level, xoffset,
- yoffset, width, height, format, type, pixels);
-}
-
-#define X_GLrop_BlendColor 4096
-void
-__indirect_glBlendColor(GLclampf red, GLclampf green, GLclampf blue,
- GLclampf alpha)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 20;
- emit_header(gc->pc, X_GLrop_BlendColor, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&red), 4);
- (void) memcpy((void *) (gc->pc + 8), (void *) (&green), 4);
- (void) memcpy((void *) (gc->pc + 12), (void *) (&blue), 4);
- (void) memcpy((void *) (gc->pc + 16), (void *) (&alpha), 4);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_BlendEquation 4097
-void
-__indirect_glBlendEquation(GLenum mode)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 8;
- emit_header(gc->pc, X_GLrop_BlendEquation, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&mode), 4);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_ColorTable 2053
-void
-__indirect_glColorTable(GLenum target, GLenum internalformat, GLsizei width,
- GLenum format, GLenum type, const GLvoid * table)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint compsize =
- (table != NULL) ? __glImageSize(width, 1, 1, format, type,
- target) : 0;
- const GLuint cmdlen = 44 + __GLX_PAD(compsize);
- if (__builtin_expect(gc->currentDpy != NULL, 1)) {
- if (cmdlen <= gc->maxSmallRenderCommandSize) {
- if ((gc->pc + cmdlen) > gc->bufEnd) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
- emit_header(gc->pc, X_GLrop_ColorTable, cmdlen);
- (void) memcpy((void *) (gc->pc + 24), (void *) (&target), 4);
- (void) memcpy((void *) (gc->pc + 28), (void *) (&internalformat),
- 4);
- (void) memcpy((void *) (gc->pc + 32), (void *) (&width), 4);
- (void) memcpy((void *) (gc->pc + 36), (void *) (&format), 4);
- (void) memcpy((void *) (gc->pc + 40), (void *) (&type), 4);
- if (compsize > 0) {
- (*gc->fillImage) (gc, 1, width, 1, 1, format, type, table,
- gc->pc + 44, gc->pc + 4);
- } else {
- (void) memcpy(gc->pc + 4, default_pixel_store_1D,
- default_pixel_store_1D_size);
- }
- gc->pc += cmdlen;
- if (gc->pc > gc->limit) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
- } else {
- const GLint op = X_GLrop_ColorTable;
- const GLuint cmdlenLarge = cmdlen + 4;
- GLubyte *const pc = __glXFlushRenderBuffer(gc, gc->pc);
- (void) memcpy((void *) (pc + 0), (void *) (&cmdlenLarge), 4);
- (void) memcpy((void *) (pc + 4), (void *) (&op), 4);
- (void) memcpy((void *) (pc + 28), (void *) (&target), 4);
- (void) memcpy((void *) (pc + 32), (void *) (&internalformat), 4);
- (void) memcpy((void *) (pc + 36), (void *) (&width), 4);
- (void) memcpy((void *) (pc + 40), (void *) (&format), 4);
- (void) memcpy((void *) (pc + 44), (void *) (&type), 4);
- __glXSendLargeImage(gc, compsize, 1, width, 1, 1, format, type,
- table, pc + 48, pc + 8);
- }
- }
-}
-
-#define X_GLrop_ColorTableParameterfv 2054
-void
-__indirect_glColorTableParameterfv(GLenum target, GLenum pname,
- const GLfloat * params)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint compsize = __glColorTableParameterfv_size(pname);
- const GLuint cmdlen = 12 + __GLX_PAD((compsize * 4));
- emit_header(gc->pc, X_GLrop_ColorTableParameterfv, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&target), 4);
- (void) memcpy((void *) (gc->pc + 8), (void *) (&pname), 4);
- (void) memcpy((void *) (gc->pc + 12), (void *) (params), (compsize * 4));
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_ColorTableParameteriv 2055
-void
-__indirect_glColorTableParameteriv(GLenum target, GLenum pname,
- const GLint * params)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint compsize = __glColorTableParameteriv_size(pname);
- const GLuint cmdlen = 12 + __GLX_PAD((compsize * 4));
- emit_header(gc->pc, X_GLrop_ColorTableParameteriv, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&target), 4);
- (void) memcpy((void *) (gc->pc + 8), (void *) (&pname), 4);
- (void) memcpy((void *) (gc->pc + 12), (void *) (params), (compsize * 4));
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_CopyColorTable 2056
-void
-__indirect_glCopyColorTable(GLenum target, GLenum internalformat, GLint x,
- GLint y, GLsizei width)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 24;
- emit_header(gc->pc, X_GLrop_CopyColorTable, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&target), 4);
- (void) memcpy((void *) (gc->pc + 8), (void *) (&internalformat), 4);
- (void) memcpy((void *) (gc->pc + 12), (void *) (&x), 4);
- (void) memcpy((void *) (gc->pc + 16), (void *) (&y), 4);
- (void) memcpy((void *) (gc->pc + 20), (void *) (&width), 4);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLsop_GetColorTable 147
-void
-__indirect_glGetColorTable(GLenum target, GLenum format, GLenum type,
- GLvoid * table)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const __GLXattribute *const state = gc->client_state_private;
- Display *const dpy = gc->currentDpy;
-#ifndef USE_XCB
- const GLuint cmdlen = 16;
-#endif
- if (__builtin_expect(dpy != NULL, 1)) {
-#ifdef USE_XCB
- xcb_connection_t *c = XGetXCBConnection(dpy);
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- xcb_glx_get_color_table_reply_t *reply =
- xcb_glx_get_color_table_reply(c,
- xcb_glx_get_color_table(c,
- gc->
- currentContextTag,
- target,
- format,
- type,
- state->
- storePack.
- swapEndian),
- NULL);
- (void) memcpy(table, xcb_glx_get_color_table_data(reply),
- xcb_glx_get_color_table_data_length(reply) *
- sizeof(GLvoid));
- free(reply);
-#else
- GLubyte const *pc =
- __glXSetupSingleRequest(gc, X_GLsop_GetColorTable, cmdlen);
- (void) memcpy((void *) (pc + 0), (void *) (&target), 4);
- (void) memcpy((void *) (pc + 4), (void *) (&format), 4);
- (void) memcpy((void *) (pc + 8), (void *) (&type), 4);
- *(int32_t *) (pc + 12) = 0;
- *(int8_t *) (pc + 12) = state->storePack.swapEndian;
- __glXReadPixelReply(dpy, gc, 1, 0, 0, 0, format, type, table,
- GL_TRUE);
- UnlockDisplay(dpy);
- SyncHandle();
-#endif /* USE_XCB */
- }
- return;
-}
-
-#define X_GLvop_GetColorTableSGI 4098
-void
-glGetColorTableEXT(GLenum target, GLenum format, GLenum type, GLvoid * table)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
-
-#ifdef GLX_DIRECT_RENDERING
- if (gc->driContext) {
- CALL_GetColorTable(GET_DISPATCH(), (target, format, type, table));
- } else
-#endif
- {
- __GLXcontext *const gc = __glXGetCurrentContext();
- const __GLXattribute *const state = gc->client_state_private;
- Display *const dpy = gc->currentDpy;
- const GLuint cmdlen = 16;
- if (__builtin_expect(dpy != NULL, 1)) {
- GLubyte const *pc =
- __glXSetupVendorRequest(gc, X_GLXVendorPrivateWithReply,
- X_GLvop_GetColorTableSGI, cmdlen);
- (void) memcpy((void *) (pc + 0), (void *) (&target), 4);
- (void) memcpy((void *) (pc + 4), (void *) (&format), 4);
- (void) memcpy((void *) (pc + 8), (void *) (&type), 4);
- *(int32_t *) (pc + 12) = 0;
- *(int8_t *) (pc + 12) = state->storePack.swapEndian;
- __glXReadPixelReply(dpy, gc, 1, 0, 0, 0, format, type, table,
- GL_TRUE);
- UnlockDisplay(dpy);
- SyncHandle();
- }
- return;
- }
-}
-
-#define X_GLsop_GetColorTableParameterfv 148
-void
-__indirect_glGetColorTableParameterfv(GLenum target, GLenum pname,
- GLfloat * params)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- Display *const dpy = gc->currentDpy;
-#ifndef USE_XCB
- const GLuint cmdlen = 8;
-#endif
- if (__builtin_expect(dpy != NULL, 1)) {
-#ifdef USE_XCB
- xcb_connection_t *c = XGetXCBConnection(dpy);
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- xcb_glx_get_color_table_parameterfv_reply_t *reply =
- xcb_glx_get_color_table_parameterfv_reply(c,
- xcb_glx_get_color_table_parameterfv
- (c,
- gc->currentContextTag,
- target, pname), NULL);
- if (xcb_glx_get_color_table_parameterfv_data_length(reply) == 0)
- (void) memcpy(params, &reply->datum, sizeof(reply->datum));
- else
- (void) memcpy(params,
- xcb_glx_get_color_table_parameterfv_data(reply),
- xcb_glx_get_color_table_parameterfv_data_length
- (reply) * sizeof(GLfloat));
- free(reply);
-#else
- GLubyte const *pc =
- __glXSetupSingleRequest(gc, X_GLsop_GetColorTableParameterfv,
- cmdlen);
- (void) memcpy((void *) (pc + 0), (void *) (&target), 4);
- (void) memcpy((void *) (pc + 4), (void *) (&pname), 4);
- (void) __glXReadReply(dpy, 4, params, GL_FALSE);
- UnlockDisplay(dpy);
- SyncHandle();
-#endif /* USE_XCB */
- }
- return;
-}
-
-#define X_GLvop_GetColorTableParameterfvSGI 4099
-void
-glGetColorTableParameterfvEXT(GLenum target, GLenum pname, GLfloat * params)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
-
-#ifdef GLX_DIRECT_RENDERING
- if (gc->driContext) {
- CALL_GetColorTableParameterfv(GET_DISPATCH(),
- (target, pname, params));
- } else
-#endif
- {
- __GLXcontext *const gc = __glXGetCurrentContext();
- Display *const dpy = gc->currentDpy;
- const GLuint cmdlen = 8;
- if (__builtin_expect(dpy != NULL, 1)) {
- GLubyte const *pc =
- __glXSetupVendorRequest(gc, X_GLXVendorPrivateWithReply,
- X_GLvop_GetColorTableParameterfvSGI,
- cmdlen);
- (void) memcpy((void *) (pc + 0), (void *) (&target), 4);
- (void) memcpy((void *) (pc + 4), (void *) (&pname), 4);
- (void) __glXReadReply(dpy, 4, params, GL_FALSE);
- UnlockDisplay(dpy);
- SyncHandle();
- }
- return;
- }
-}
-
-#define X_GLsop_GetColorTableParameteriv 149
-void
-__indirect_glGetColorTableParameteriv(GLenum target, GLenum pname,
- GLint * params)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- Display *const dpy = gc->currentDpy;
-#ifndef USE_XCB
- const GLuint cmdlen = 8;
-#endif
- if (__builtin_expect(dpy != NULL, 1)) {
-#ifdef USE_XCB
- xcb_connection_t *c = XGetXCBConnection(dpy);
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- xcb_glx_get_color_table_parameteriv_reply_t *reply =
- xcb_glx_get_color_table_parameteriv_reply(c,
- xcb_glx_get_color_table_parameteriv
- (c,
- gc->currentContextTag,
- target, pname), NULL);
- if (xcb_glx_get_color_table_parameteriv_data_length(reply) == 0)
- (void) memcpy(params, &reply->datum, sizeof(reply->datum));
- else
- (void) memcpy(params,
- xcb_glx_get_color_table_parameteriv_data(reply),
- xcb_glx_get_color_table_parameteriv_data_length
- (reply) * sizeof(GLint));
- free(reply);
-#else
- GLubyte const *pc =
- __glXSetupSingleRequest(gc, X_GLsop_GetColorTableParameteriv,
- cmdlen);
- (void) memcpy((void *) (pc + 0), (void *) (&target), 4);
- (void) memcpy((void *) (pc + 4), (void *) (&pname), 4);
- (void) __glXReadReply(dpy, 4, params, GL_FALSE);
- UnlockDisplay(dpy);
- SyncHandle();
-#endif /* USE_XCB */
- }
- return;
-}
-
-#define X_GLvop_GetColorTableParameterivSGI 4100
-void
-glGetColorTableParameterivEXT(GLenum target, GLenum pname, GLint * params)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
-
-#ifdef GLX_DIRECT_RENDERING
- if (gc->driContext) {
- CALL_GetColorTableParameteriv(GET_DISPATCH(),
- (target, pname, params));
- } else
-#endif
- {
- __GLXcontext *const gc = __glXGetCurrentContext();
- Display *const dpy = gc->currentDpy;
- const GLuint cmdlen = 8;
- if (__builtin_expect(dpy != NULL, 1)) {
- GLubyte const *pc =
- __glXSetupVendorRequest(gc, X_GLXVendorPrivateWithReply,
- X_GLvop_GetColorTableParameterivSGI,
- cmdlen);
- (void) memcpy((void *) (pc + 0), (void *) (&target), 4);
- (void) memcpy((void *) (pc + 4), (void *) (&pname), 4);
- (void) __glXReadReply(dpy, 4, params, GL_FALSE);
- UnlockDisplay(dpy);
- SyncHandle();
- }
- return;
- }
-}
-
-#define X_GLrop_ColorSubTable 195
-void
-__indirect_glColorSubTable(GLenum target, GLsizei start, GLsizei count,
- GLenum format, GLenum type, const GLvoid * data)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint compsize =
- (data != NULL) ? __glImageSize(count, 1, 1, format, type, target) : 0;
- const GLuint cmdlen = 44 + __GLX_PAD(compsize);
- if (__builtin_expect(gc->currentDpy != NULL, 1)) {
- if (cmdlen <= gc->maxSmallRenderCommandSize) {
- if ((gc->pc + cmdlen) > gc->bufEnd) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
- emit_header(gc->pc, X_GLrop_ColorSubTable, cmdlen);
- (void) memcpy((void *) (gc->pc + 24), (void *) (&target), 4);
- (void) memcpy((void *) (gc->pc + 28), (void *) (&start), 4);
- (void) memcpy((void *) (gc->pc + 32), (void *) (&count), 4);
- (void) memcpy((void *) (gc->pc + 36), (void *) (&format), 4);
- (void) memcpy((void *) (gc->pc + 40), (void *) (&type), 4);
- if (compsize > 0) {
- (*gc->fillImage) (gc, 1, count, 1, 1, format, type, data,
- gc->pc + 44, gc->pc + 4);
- } else {
- (void) memcpy(gc->pc + 4, default_pixel_store_1D,
- default_pixel_store_1D_size);
- }
- gc->pc += cmdlen;
- if (gc->pc > gc->limit) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
- } else {
- const GLint op = X_GLrop_ColorSubTable;
- const GLuint cmdlenLarge = cmdlen + 4;
- GLubyte *const pc = __glXFlushRenderBuffer(gc, gc->pc);
- (void) memcpy((void *) (pc + 0), (void *) (&cmdlenLarge), 4);
- (void) memcpy((void *) (pc + 4), (void *) (&op), 4);
- (void) memcpy((void *) (pc + 28), (void *) (&target), 4);
- (void) memcpy((void *) (pc + 32), (void *) (&start), 4);
- (void) memcpy((void *) (pc + 36), (void *) (&count), 4);
- (void) memcpy((void *) (pc + 40), (void *) (&format), 4);
- (void) memcpy((void *) (pc + 44), (void *) (&type), 4);
- __glXSendLargeImage(gc, compsize, 1, count, 1, 1, format, type,
- data, pc + 48, pc + 8);
- }
- }
-}
-
-#define X_GLrop_CopyColorSubTable 196
-void
-__indirect_glCopyColorSubTable(GLenum target, GLsizei start, GLint x, GLint y,
- GLsizei width)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 24;
- emit_header(gc->pc, X_GLrop_CopyColorSubTable, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&target), 4);
- (void) memcpy((void *) (gc->pc + 8), (void *) (&start), 4);
- (void) memcpy((void *) (gc->pc + 12), (void *) (&x), 4);
- (void) memcpy((void *) (gc->pc + 16), (void *) (&y), 4);
- (void) memcpy((void *) (gc->pc + 20), (void *) (&width), 4);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-static void
-__glx_ConvolutionFilter_1D2D(unsigned opcode, unsigned dim, GLenum target,
- GLenum internalformat, GLsizei width,
- GLsizei height, GLenum format, GLenum type,
- const GLvoid * image)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint compsize =
- (image != NULL) ? __glImageSize(width, height, 1, format, type,
- target) : 0;
- const GLuint cmdlen = 48 + __GLX_PAD(compsize);
- if (__builtin_expect(gc->currentDpy != NULL, 1)) {
- if (cmdlen <= gc->maxSmallRenderCommandSize) {
- if ((gc->pc + cmdlen) > gc->bufEnd) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
- emit_header(gc->pc, opcode, cmdlen);
- (void) memcpy((void *) (gc->pc + 24), (void *) (&target), 4);
- (void) memcpy((void *) (gc->pc + 28), (void *) (&internalformat),
- 4);
- (void) memcpy((void *) (gc->pc + 32), (void *) (&width), 4);
- (void) memcpy((void *) (gc->pc + 36), (void *) (&height), 4);
- (void) memcpy((void *) (gc->pc + 40), (void *) (&format), 4);
- (void) memcpy((void *) (gc->pc + 44), (void *) (&type), 4);
- if (compsize > 0) {
- (*gc->fillImage) (gc, dim, width, height, 1, format, type,
- image, gc->pc + 48, gc->pc + 4);
- } else {
- (void) memcpy(gc->pc + 4, default_pixel_store_2D,
- default_pixel_store_2D_size);
- }
- gc->pc += cmdlen;
- if (gc->pc > gc->limit) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
- } else {
- const GLint op = opcode;
- const GLuint cmdlenLarge = cmdlen + 4;
- GLubyte *const pc = __glXFlushRenderBuffer(gc, gc->pc);
- (void) memcpy((void *) (pc + 0), (void *) (&cmdlenLarge), 4);
- (void) memcpy((void *) (pc + 4), (void *) (&op), 4);
- (void) memcpy((void *) (pc + 28), (void *) (&target), 4);
- (void) memcpy((void *) (pc + 32), (void *) (&internalformat), 4);
- (void) memcpy((void *) (pc + 36), (void *) (&width), 4);
- (void) memcpy((void *) (pc + 40), (void *) (&height), 4);
- (void) memcpy((void *) (pc + 44), (void *) (&format), 4);
- (void) memcpy((void *) (pc + 48), (void *) (&type), 4);
- __glXSendLargeImage(gc, compsize, dim, width, height, 1, format,
- type, image, pc + 52, pc + 8);
- }
- }
-}
-
-#define X_GLrop_ConvolutionFilter1D 4101
-void
-__indirect_glConvolutionFilter1D(GLenum target, GLenum internalformat,
- GLsizei width, GLenum format, GLenum type,
- const GLvoid * image)
-{
- __glx_ConvolutionFilter_1D2D(X_GLrop_ConvolutionFilter1D, 1, target,
- internalformat, width, 1, format, type,
- image);
-}
-
-#define X_GLrop_ConvolutionFilter2D 4102
-void
-__indirect_glConvolutionFilter2D(GLenum target, GLenum internalformat,
- GLsizei width, GLsizei height, GLenum format,
- GLenum type, const GLvoid * image)
-{
- __glx_ConvolutionFilter_1D2D(X_GLrop_ConvolutionFilter2D, 2, target,
- internalformat, width, height, format, type,
- image);
-}
-
-#define X_GLrop_ConvolutionParameterf 4103
-void
-__indirect_glConvolutionParameterf(GLenum target, GLenum pname,
- GLfloat params)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 16;
- emit_header(gc->pc, X_GLrop_ConvolutionParameterf, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&target), 4);
- (void) memcpy((void *) (gc->pc + 8), (void *) (&pname), 4);
- (void) memcpy((void *) (gc->pc + 12), (void *) (&params), 4);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_ConvolutionParameterfv 4104
-void
-__indirect_glConvolutionParameterfv(GLenum target, GLenum pname,
- const GLfloat * params)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint compsize = __glConvolutionParameterfv_size(pname);
- const GLuint cmdlen = 12 + __GLX_PAD((compsize * 4));
- emit_header(gc->pc, X_GLrop_ConvolutionParameterfv, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&target), 4);
- (void) memcpy((void *) (gc->pc + 8), (void *) (&pname), 4);
- (void) memcpy((void *) (gc->pc + 12), (void *) (params), (compsize * 4));
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_ConvolutionParameteri 4105
-void
-__indirect_glConvolutionParameteri(GLenum target, GLenum pname, GLint params)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 16;
- emit_header(gc->pc, X_GLrop_ConvolutionParameteri, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&target), 4);
- (void) memcpy((void *) (gc->pc + 8), (void *) (&pname), 4);
- (void) memcpy((void *) (gc->pc + 12), (void *) (&params), 4);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_ConvolutionParameteriv 4106
-void
-__indirect_glConvolutionParameteriv(GLenum target, GLenum pname,
- const GLint * params)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint compsize = __glConvolutionParameteriv_size(pname);
- const GLuint cmdlen = 12 + __GLX_PAD((compsize * 4));
- emit_header(gc->pc, X_GLrop_ConvolutionParameteriv, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&target), 4);
- (void) memcpy((void *) (gc->pc + 8), (void *) (&pname), 4);
- (void) memcpy((void *) (gc->pc + 12), (void *) (params), (compsize * 4));
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_CopyConvolutionFilter1D 4107
-void
-__indirect_glCopyConvolutionFilter1D(GLenum target, GLenum internalformat,
- GLint x, GLint y, GLsizei width)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 24;
- emit_header(gc->pc, X_GLrop_CopyConvolutionFilter1D, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&target), 4);
- (void) memcpy((void *) (gc->pc + 8), (void *) (&internalformat), 4);
- (void) memcpy((void *) (gc->pc + 12), (void *) (&x), 4);
- (void) memcpy((void *) (gc->pc + 16), (void *) (&y), 4);
- (void) memcpy((void *) (gc->pc + 20), (void *) (&width), 4);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_CopyConvolutionFilter2D 4108
-void
-__indirect_glCopyConvolutionFilter2D(GLenum target, GLenum internalformat,
- GLint x, GLint y, GLsizei width,
- GLsizei height)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 28;
- emit_header(gc->pc, X_GLrop_CopyConvolutionFilter2D, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&target), 4);
- (void) memcpy((void *) (gc->pc + 8), (void *) (&internalformat), 4);
- (void) memcpy((void *) (gc->pc + 12), (void *) (&x), 4);
- (void) memcpy((void *) (gc->pc + 16), (void *) (&y), 4);
- (void) memcpy((void *) (gc->pc + 20), (void *) (&width), 4);
- (void) memcpy((void *) (gc->pc + 24), (void *) (&height), 4);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLsop_GetConvolutionFilter 150
-void
-__indirect_glGetConvolutionFilter(GLenum target, GLenum format, GLenum type,
- GLvoid * image)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const __GLXattribute *const state = gc->client_state_private;
- Display *const dpy = gc->currentDpy;
-#ifndef USE_XCB
- const GLuint cmdlen = 16;
-#endif
- if (__builtin_expect(dpy != NULL, 1)) {
-#ifdef USE_XCB
- xcb_connection_t *c = XGetXCBConnection(dpy);
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- xcb_glx_get_convolution_filter_reply_t *reply =
- xcb_glx_get_convolution_filter_reply(c,
- xcb_glx_get_convolution_filter
- (c, gc->currentContextTag,
- target, format, type,
- state->storePack.
- swapEndian), NULL);
- (void) memcpy(image, xcb_glx_get_convolution_filter_data(reply),
- xcb_glx_get_convolution_filter_data_length(reply) *
- sizeof(GLvoid));
- free(reply);
-#else
- GLubyte const *pc =
- __glXSetupSingleRequest(gc, X_GLsop_GetConvolutionFilter, cmdlen);
- (void) memcpy((void *) (pc + 0), (void *) (&target), 4);
- (void) memcpy((void *) (pc + 4), (void *) (&format), 4);
- (void) memcpy((void *) (pc + 8), (void *) (&type), 4);
- *(int32_t *) (pc + 12) = 0;
- *(int8_t *) (pc + 12) = state->storePack.swapEndian;
- __glXReadPixelReply(dpy, gc, 2, 0, 0, 0, format, type, image,
- GL_TRUE);
- UnlockDisplay(dpy);
- SyncHandle();
-#endif /* USE_XCB */
- }
- return;
-}
-
-#define X_GLvop_GetConvolutionFilterEXT 1
-void
-gl_dispatch_stub_356(GLenum target, GLenum format, GLenum type,
- GLvoid * image)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
-
-#ifdef GLX_DIRECT_RENDERING
- if (gc->driContext) {
- CALL_GetConvolutionFilter(GET_DISPATCH(),
- (target, format, type, image));
- } else
-#endif
- {
- __GLXcontext *const gc = __glXGetCurrentContext();
- const __GLXattribute *const state = gc->client_state_private;
- Display *const dpy = gc->currentDpy;
- const GLuint cmdlen = 16;
- if (__builtin_expect(dpy != NULL, 1)) {
- GLubyte const *pc =
- __glXSetupVendorRequest(gc, X_GLXVendorPrivateWithReply,
- X_GLvop_GetConvolutionFilterEXT,
- cmdlen);
- (void) memcpy((void *) (pc + 0), (void *) (&target), 4);
- (void) memcpy((void *) (pc + 4), (void *) (&format), 4);
- (void) memcpy((void *) (pc + 8), (void *) (&type), 4);
- *(int32_t *) (pc + 12) = 0;
- *(int8_t *) (pc + 12) = state->storePack.swapEndian;
- __glXReadPixelReply(dpy, gc, 2, 0, 0, 0, format, type, image,
- GL_TRUE);
- UnlockDisplay(dpy);
- SyncHandle();
- }
- return;
- }
-}
-
-#define X_GLsop_GetConvolutionParameterfv 151
-void
-__indirect_glGetConvolutionParameterfv(GLenum target, GLenum pname,
- GLfloat * params)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- Display *const dpy = gc->currentDpy;
-#ifndef USE_XCB
- const GLuint cmdlen = 8;
-#endif
- if (__builtin_expect(dpy != NULL, 1)) {
-#ifdef USE_XCB
- xcb_connection_t *c = XGetXCBConnection(dpy);
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- xcb_glx_get_convolution_parameterfv_reply_t *reply =
- xcb_glx_get_convolution_parameterfv_reply(c,
- xcb_glx_get_convolution_parameterfv
- (c,
- gc->currentContextTag,
- target, pname), NULL);
- if (xcb_glx_get_convolution_parameterfv_data_length(reply) == 0)
- (void) memcpy(params, &reply->datum, sizeof(reply->datum));
- else
- (void) memcpy(params,
- xcb_glx_get_convolution_parameterfv_data(reply),
- xcb_glx_get_convolution_parameterfv_data_length
- (reply) * sizeof(GLfloat));
- free(reply);
-#else
- GLubyte const *pc =
- __glXSetupSingleRequest(gc, X_GLsop_GetConvolutionParameterfv,
- cmdlen);
- (void) memcpy((void *) (pc + 0), (void *) (&target), 4);
- (void) memcpy((void *) (pc + 4), (void *) (&pname), 4);
- (void) __glXReadReply(dpy, 4, params, GL_FALSE);
- UnlockDisplay(dpy);
- SyncHandle();
-#endif /* USE_XCB */
- }
- return;
-}
-
-#define X_GLvop_GetConvolutionParameterfvEXT 2
-void
-gl_dispatch_stub_357(GLenum target, GLenum pname, GLfloat * params)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
-
-#ifdef GLX_DIRECT_RENDERING
- if (gc->driContext) {
- CALL_GetConvolutionParameterfv(GET_DISPATCH(),
- (target, pname, params));
- } else
-#endif
- {
- __GLXcontext *const gc = __glXGetCurrentContext();
- Display *const dpy = gc->currentDpy;
- const GLuint cmdlen = 8;
- if (__builtin_expect(dpy != NULL, 1)) {
- GLubyte const *pc =
- __glXSetupVendorRequest(gc, X_GLXVendorPrivateWithReply,
- X_GLvop_GetConvolutionParameterfvEXT,
- cmdlen);
- (void) memcpy((void *) (pc + 0), (void *) (&target), 4);
- (void) memcpy((void *) (pc + 4), (void *) (&pname), 4);
- (void) __glXReadReply(dpy, 4, params, GL_FALSE);
- UnlockDisplay(dpy);
- SyncHandle();
- }
- return;
- }
-}
-
-#define X_GLsop_GetConvolutionParameteriv 152
-void
-__indirect_glGetConvolutionParameteriv(GLenum target, GLenum pname,
- GLint * params)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- Display *const dpy = gc->currentDpy;
-#ifndef USE_XCB
- const GLuint cmdlen = 8;
-#endif
- if (__builtin_expect(dpy != NULL, 1)) {
-#ifdef USE_XCB
- xcb_connection_t *c = XGetXCBConnection(dpy);
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- xcb_glx_get_convolution_parameteriv_reply_t *reply =
- xcb_glx_get_convolution_parameteriv_reply(c,
- xcb_glx_get_convolution_parameteriv
- (c,
- gc->currentContextTag,
- target, pname), NULL);
- if (xcb_glx_get_convolution_parameteriv_data_length(reply) == 0)
- (void) memcpy(params, &reply->datum, sizeof(reply->datum));
- else
- (void) memcpy(params,
- xcb_glx_get_convolution_parameteriv_data(reply),
- xcb_glx_get_convolution_parameteriv_data_length
- (reply) * sizeof(GLint));
- free(reply);
-#else
- GLubyte const *pc =
- __glXSetupSingleRequest(gc, X_GLsop_GetConvolutionParameteriv,
- cmdlen);
- (void) memcpy((void *) (pc + 0), (void *) (&target), 4);
- (void) memcpy((void *) (pc + 4), (void *) (&pname), 4);
- (void) __glXReadReply(dpy, 4, params, GL_FALSE);
- UnlockDisplay(dpy);
- SyncHandle();
-#endif /* USE_XCB */
- }
- return;
-}
-
-#define X_GLvop_GetConvolutionParameterivEXT 3
-void
-gl_dispatch_stub_358(GLenum target, GLenum pname, GLint * params)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
-
-#ifdef GLX_DIRECT_RENDERING
- if (gc->driContext) {
- CALL_GetConvolutionParameteriv(GET_DISPATCH(),
- (target, pname, params));
- } else
-#endif
- {
- __GLXcontext *const gc = __glXGetCurrentContext();
- Display *const dpy = gc->currentDpy;
- const GLuint cmdlen = 8;
- if (__builtin_expect(dpy != NULL, 1)) {
- GLubyte const *pc =
- __glXSetupVendorRequest(gc, X_GLXVendorPrivateWithReply,
- X_GLvop_GetConvolutionParameterivEXT,
- cmdlen);
- (void) memcpy((void *) (pc + 0), (void *) (&target), 4);
- (void) memcpy((void *) (pc + 4), (void *) (&pname), 4);
- (void) __glXReadReply(dpy, 4, params, GL_FALSE);
- UnlockDisplay(dpy);
- SyncHandle();
- }
- return;
- }
-}
-
-#define X_GLsop_GetHistogram 154
-void
-__indirect_glGetHistogram(GLenum target, GLboolean reset, GLenum format,
- GLenum type, GLvoid * values)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const __GLXattribute *const state = gc->client_state_private;
- Display *const dpy = gc->currentDpy;
-#ifndef USE_XCB
- const GLuint cmdlen = 16;
-#endif
- if (__builtin_expect(dpy != NULL, 1)) {
-#ifdef USE_XCB
- xcb_connection_t *c = XGetXCBConnection(dpy);
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- xcb_glx_get_histogram_reply_t *reply =
- xcb_glx_get_histogram_reply(c,
- xcb_glx_get_histogram(c,
- gc->
- currentContextTag,
- target, reset,
- format, type,
- state->
- storePack.
- swapEndian),
- NULL);
- (void) memcpy(values, xcb_glx_get_histogram_data(reply),
- xcb_glx_get_histogram_data_length(reply) *
- sizeof(GLvoid));
- free(reply);
-#else
- GLubyte const *pc =
- __glXSetupSingleRequest(gc, X_GLsop_GetHistogram, cmdlen);
- (void) memcpy((void *) (pc + 0), (void *) (&target), 4);
- (void) memcpy((void *) (pc + 4), (void *) (&format), 4);
- (void) memcpy((void *) (pc + 8), (void *) (&type), 4);
- *(int32_t *) (pc + 12) = 0;
- *(int8_t *) (pc + 12) = state->storePack.swapEndian;
- *(int8_t *) (pc + 13) = reset;
- __glXReadPixelReply(dpy, gc, 1, 0, 0, 0, format, type, values,
- GL_TRUE);
- UnlockDisplay(dpy);
- SyncHandle();
-#endif /* USE_XCB */
- }
- return;
-}
-
-#define X_GLvop_GetHistogramEXT 5
-void
-gl_dispatch_stub_361(GLenum target, GLboolean reset, GLenum format,
- GLenum type, GLvoid * values)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
-
-#ifdef GLX_DIRECT_RENDERING
- if (gc->driContext) {
- CALL_GetHistogram(GET_DISPATCH(),
- (target, reset, format, type, values));
- } else
-#endif
- {
- __GLXcontext *const gc = __glXGetCurrentContext();
- const __GLXattribute *const state = gc->client_state_private;
- Display *const dpy = gc->currentDpy;
- const GLuint cmdlen = 16;
- if (__builtin_expect(dpy != NULL, 1)) {
- GLubyte const *pc =
- __glXSetupVendorRequest(gc, X_GLXVendorPrivateWithReply,
- X_GLvop_GetHistogramEXT, cmdlen);
- (void) memcpy((void *) (pc + 0), (void *) (&target), 4);
- (void) memcpy((void *) (pc + 4), (void *) (&format), 4);
- (void) memcpy((void *) (pc + 8), (void *) (&type), 4);
- *(int32_t *) (pc + 12) = 0;
- *(int8_t *) (pc + 12) = state->storePack.swapEndian;
- *(int8_t *) (pc + 13) = reset;
- __glXReadPixelReply(dpy, gc, 1, 0, 0, 0, format, type, values,
- GL_TRUE);
- UnlockDisplay(dpy);
- SyncHandle();
- }
- return;
- }
-}
-
-#define X_GLsop_GetHistogramParameterfv 155
-void
-__indirect_glGetHistogramParameterfv(GLenum target, GLenum pname,
- GLfloat * params)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- Display *const dpy = gc->currentDpy;
-#ifndef USE_XCB
- const GLuint cmdlen = 8;
-#endif
- if (__builtin_expect(dpy != NULL, 1)) {
-#ifdef USE_XCB
- xcb_connection_t *c = XGetXCBConnection(dpy);
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- xcb_glx_get_histogram_parameterfv_reply_t *reply =
- xcb_glx_get_histogram_parameterfv_reply(c,
- xcb_glx_get_histogram_parameterfv
- (c, gc->currentContextTag,
- target, pname), NULL);
- if (xcb_glx_get_histogram_parameterfv_data_length(reply) == 0)
- (void) memcpy(params, &reply->datum, sizeof(reply->datum));
- else
- (void) memcpy(params,
- xcb_glx_get_histogram_parameterfv_data(reply),
- xcb_glx_get_histogram_parameterfv_data_length(reply)
- * sizeof(GLfloat));
- free(reply);
-#else
- GLubyte const *pc =
- __glXSetupSingleRequest(gc, X_GLsop_GetHistogramParameterfv,
- cmdlen);
- (void) memcpy((void *) (pc + 0), (void *) (&target), 4);
- (void) memcpy((void *) (pc + 4), (void *) (&pname), 4);
- (void) __glXReadReply(dpy, 4, params, GL_FALSE);
- UnlockDisplay(dpy);
- SyncHandle();
-#endif /* USE_XCB */
- }
- return;
-}
-
-#define X_GLvop_GetHistogramParameterfvEXT 6
-void
-gl_dispatch_stub_362(GLenum target, GLenum pname, GLfloat * params)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
-
-#ifdef GLX_DIRECT_RENDERING
- if (gc->driContext) {
- CALL_GetHistogramParameterfv(GET_DISPATCH(), (target, pname, params));
- } else
-#endif
- {
- __GLXcontext *const gc = __glXGetCurrentContext();
- Display *const dpy = gc->currentDpy;
- const GLuint cmdlen = 8;
- if (__builtin_expect(dpy != NULL, 1)) {
- GLubyte const *pc =
- __glXSetupVendorRequest(gc, X_GLXVendorPrivateWithReply,
- X_GLvop_GetHistogramParameterfvEXT,
- cmdlen);
- (void) memcpy((void *) (pc + 0), (void *) (&target), 4);
- (void) memcpy((void *) (pc + 4), (void *) (&pname), 4);
- (void) __glXReadReply(dpy, 4, params, GL_FALSE);
- UnlockDisplay(dpy);
- SyncHandle();
- }
- return;
- }
-}
-
-#define X_GLsop_GetHistogramParameteriv 156
-void
-__indirect_glGetHistogramParameteriv(GLenum target, GLenum pname,
- GLint * params)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- Display *const dpy = gc->currentDpy;
-#ifndef USE_XCB
- const GLuint cmdlen = 8;
-#endif
- if (__builtin_expect(dpy != NULL, 1)) {
-#ifdef USE_XCB
- xcb_connection_t *c = XGetXCBConnection(dpy);
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- xcb_glx_get_histogram_parameteriv_reply_t *reply =
- xcb_glx_get_histogram_parameteriv_reply(c,
- xcb_glx_get_histogram_parameteriv
- (c, gc->currentContextTag,
- target, pname), NULL);
- if (xcb_glx_get_histogram_parameteriv_data_length(reply) == 0)
- (void) memcpy(params, &reply->datum, sizeof(reply->datum));
- else
- (void) memcpy(params,
- xcb_glx_get_histogram_parameteriv_data(reply),
- xcb_glx_get_histogram_parameteriv_data_length(reply)
- * sizeof(GLint));
- free(reply);
-#else
- GLubyte const *pc =
- __glXSetupSingleRequest(gc, X_GLsop_GetHistogramParameteriv,
- cmdlen);
- (void) memcpy((void *) (pc + 0), (void *) (&target), 4);
- (void) memcpy((void *) (pc + 4), (void *) (&pname), 4);
- (void) __glXReadReply(dpy, 4, params, GL_FALSE);
- UnlockDisplay(dpy);
- SyncHandle();
-#endif /* USE_XCB */
- }
- return;
-}
-
-#define X_GLvop_GetHistogramParameterivEXT 7
-void
-gl_dispatch_stub_363(GLenum target, GLenum pname, GLint * params)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
-
-#ifdef GLX_DIRECT_RENDERING
- if (gc->driContext) {
- CALL_GetHistogramParameteriv(GET_DISPATCH(), (target, pname, params));
- } else
-#endif
- {
- __GLXcontext *const gc = __glXGetCurrentContext();
- Display *const dpy = gc->currentDpy;
- const GLuint cmdlen = 8;
- if (__builtin_expect(dpy != NULL, 1)) {
- GLubyte const *pc =
- __glXSetupVendorRequest(gc, X_GLXVendorPrivateWithReply,
- X_GLvop_GetHistogramParameterivEXT,
- cmdlen);
- (void) memcpy((void *) (pc + 0), (void *) (&target), 4);
- (void) memcpy((void *) (pc + 4), (void *) (&pname), 4);
- (void) __glXReadReply(dpy, 4, params, GL_FALSE);
- UnlockDisplay(dpy);
- SyncHandle();
- }
- return;
- }
-}
-
-#define X_GLsop_GetMinmax 157
-void
-__indirect_glGetMinmax(GLenum target, GLboolean reset, GLenum format,
- GLenum type, GLvoid * values)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const __GLXattribute *const state = gc->client_state_private;
- Display *const dpy = gc->currentDpy;
-#ifndef USE_XCB
- const GLuint cmdlen = 16;
-#endif
- if (__builtin_expect(dpy != NULL, 1)) {
-#ifdef USE_XCB
- xcb_connection_t *c = XGetXCBConnection(dpy);
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- xcb_glx_get_minmax_reply_t *reply =
- xcb_glx_get_minmax_reply(c,
- xcb_glx_get_minmax(c,
- gc->currentContextTag,
- target, reset, format,
- type,
- state->storePack.
- swapEndian), NULL);
- (void) memcpy(values, xcb_glx_get_minmax_data(reply),
- xcb_glx_get_minmax_data_length(reply) * sizeof(GLvoid));
- free(reply);
-#else
- GLubyte const *pc =
- __glXSetupSingleRequest(gc, X_GLsop_GetMinmax, cmdlen);
- (void) memcpy((void *) (pc + 0), (void *) (&target), 4);
- (void) memcpy((void *) (pc + 4), (void *) (&format), 4);
- (void) memcpy((void *) (pc + 8), (void *) (&type), 4);
- *(int32_t *) (pc + 12) = 0;
- *(int8_t *) (pc + 12) = state->storePack.swapEndian;
- *(int8_t *) (pc + 13) = reset;
- __glXReadPixelReply(dpy, gc, 1, 2, 1, 1, format, type, values,
- GL_FALSE);
- UnlockDisplay(dpy);
- SyncHandle();
-#endif /* USE_XCB */
- }
- return;
-}
-
-#define X_GLvop_GetMinmaxEXT 8
-void
-gl_dispatch_stub_364(GLenum target, GLboolean reset, GLenum format,
- GLenum type, GLvoid * values)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
-
-#ifdef GLX_DIRECT_RENDERING
- if (gc->driContext) {
- CALL_GetMinmax(GET_DISPATCH(), (target, reset, format, type, values));
- } else
-#endif
- {
- __GLXcontext *const gc = __glXGetCurrentContext();
- const __GLXattribute *const state = gc->client_state_private;
- Display *const dpy = gc->currentDpy;
- const GLuint cmdlen = 16;
- if (__builtin_expect(dpy != NULL, 1)) {
- GLubyte const *pc =
- __glXSetupVendorRequest(gc, X_GLXVendorPrivateWithReply,
- X_GLvop_GetMinmaxEXT, cmdlen);
- (void) memcpy((void *) (pc + 0), (void *) (&target), 4);
- (void) memcpy((void *) (pc + 4), (void *) (&format), 4);
- (void) memcpy((void *) (pc + 8), (void *) (&type), 4);
- *(int32_t *) (pc + 12) = 0;
- *(int8_t *) (pc + 12) = state->storePack.swapEndian;
- *(int8_t *) (pc + 13) = reset;
- __glXReadPixelReply(dpy, gc, 1, 2, 1, 1, format, type, values,
- GL_FALSE);
- UnlockDisplay(dpy);
- SyncHandle();
- }
- return;
- }
-}
-
-#define X_GLsop_GetMinmaxParameterfv 158
-void
-__indirect_glGetMinmaxParameterfv(GLenum target, GLenum pname,
- GLfloat * params)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- Display *const dpy = gc->currentDpy;
-#ifndef USE_XCB
- const GLuint cmdlen = 8;
-#endif
- if (__builtin_expect(dpy != NULL, 1)) {
-#ifdef USE_XCB
- xcb_connection_t *c = XGetXCBConnection(dpy);
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- xcb_glx_get_minmax_parameterfv_reply_t *reply =
- xcb_glx_get_minmax_parameterfv_reply(c,
- xcb_glx_get_minmax_parameterfv
- (c, gc->currentContextTag,
- target, pname), NULL);
- if (xcb_glx_get_minmax_parameterfv_data_length(reply) == 0)
- (void) memcpy(params, &reply->datum, sizeof(reply->datum));
- else
- (void) memcpy(params, xcb_glx_get_minmax_parameterfv_data(reply),
- xcb_glx_get_minmax_parameterfv_data_length(reply) *
- sizeof(GLfloat));
- free(reply);
-#else
- GLubyte const *pc =
- __glXSetupSingleRequest(gc, X_GLsop_GetMinmaxParameterfv, cmdlen);
- (void) memcpy((void *) (pc + 0), (void *) (&target), 4);
- (void) memcpy((void *) (pc + 4), (void *) (&pname), 4);
- (void) __glXReadReply(dpy, 4, params, GL_FALSE);
- UnlockDisplay(dpy);
- SyncHandle();
-#endif /* USE_XCB */
- }
- return;
-}
-
-#define X_GLvop_GetMinmaxParameterfvEXT 9
-void
-gl_dispatch_stub_365(GLenum target, GLenum pname, GLfloat * params)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
-
-#ifdef GLX_DIRECT_RENDERING
- if (gc->driContext) {
- CALL_GetMinmaxParameterfv(GET_DISPATCH(), (target, pname, params));
- } else
-#endif
- {
- __GLXcontext *const gc = __glXGetCurrentContext();
- Display *const dpy = gc->currentDpy;
- const GLuint cmdlen = 8;
- if (__builtin_expect(dpy != NULL, 1)) {
- GLubyte const *pc =
- __glXSetupVendorRequest(gc, X_GLXVendorPrivateWithReply,
- X_GLvop_GetMinmaxParameterfvEXT,
- cmdlen);
- (void) memcpy((void *) (pc + 0), (void *) (&target), 4);
- (void) memcpy((void *) (pc + 4), (void *) (&pname), 4);
- (void) __glXReadReply(dpy, 4, params, GL_FALSE);
- UnlockDisplay(dpy);
- SyncHandle();
- }
- return;
- }
-}
-
-#define X_GLsop_GetMinmaxParameteriv 159
-void
-__indirect_glGetMinmaxParameteriv(GLenum target, GLenum pname, GLint * params)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- Display *const dpy = gc->currentDpy;
-#ifndef USE_XCB
- const GLuint cmdlen = 8;
-#endif
- if (__builtin_expect(dpy != NULL, 1)) {
-#ifdef USE_XCB
- xcb_connection_t *c = XGetXCBConnection(dpy);
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- xcb_glx_get_minmax_parameteriv_reply_t *reply =
- xcb_glx_get_minmax_parameteriv_reply(c,
- xcb_glx_get_minmax_parameteriv
- (c, gc->currentContextTag,
- target, pname), NULL);
- if (xcb_glx_get_minmax_parameteriv_data_length(reply) == 0)
- (void) memcpy(params, &reply->datum, sizeof(reply->datum));
- else
- (void) memcpy(params, xcb_glx_get_minmax_parameteriv_data(reply),
- xcb_glx_get_minmax_parameteriv_data_length(reply) *
- sizeof(GLint));
- free(reply);
-#else
- GLubyte const *pc =
- __glXSetupSingleRequest(gc, X_GLsop_GetMinmaxParameteriv, cmdlen);
- (void) memcpy((void *) (pc + 0), (void *) (&target), 4);
- (void) memcpy((void *) (pc + 4), (void *) (&pname), 4);
- (void) __glXReadReply(dpy, 4, params, GL_FALSE);
- UnlockDisplay(dpy);
- SyncHandle();
-#endif /* USE_XCB */
- }
- return;
-}
-
-#define X_GLvop_GetMinmaxParameterivEXT 10
-void
-gl_dispatch_stub_366(GLenum target, GLenum pname, GLint * params)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
-
-#ifdef GLX_DIRECT_RENDERING
- if (gc->driContext) {
- CALL_GetMinmaxParameteriv(GET_DISPATCH(), (target, pname, params));
- } else
-#endif
- {
- __GLXcontext *const gc = __glXGetCurrentContext();
- Display *const dpy = gc->currentDpy;
- const GLuint cmdlen = 8;
- if (__builtin_expect(dpy != NULL, 1)) {
- GLubyte const *pc =
- __glXSetupVendorRequest(gc, X_GLXVendorPrivateWithReply,
- X_GLvop_GetMinmaxParameterivEXT,
- cmdlen);
- (void) memcpy((void *) (pc + 0), (void *) (&target), 4);
- (void) memcpy((void *) (pc + 4), (void *) (&pname), 4);
- (void) __glXReadReply(dpy, 4, params, GL_FALSE);
- UnlockDisplay(dpy);
- SyncHandle();
- }
- return;
- }
-}
-
-#define X_GLrop_Histogram 4110
-void
-__indirect_glHistogram(GLenum target, GLsizei width, GLenum internalformat,
- GLboolean sink)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 20;
- emit_header(gc->pc, X_GLrop_Histogram, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&target), 4);
- (void) memcpy((void *) (gc->pc + 8), (void *) (&width), 4);
- (void) memcpy((void *) (gc->pc + 12), (void *) (&internalformat), 4);
- (void) memcpy((void *) (gc->pc + 16), (void *) (&sink), 1);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_Minmax 4111
-void
-__indirect_glMinmax(GLenum target, GLenum internalformat, GLboolean sink)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 16;
- emit_header(gc->pc, X_GLrop_Minmax, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&target), 4);
- (void) memcpy((void *) (gc->pc + 8), (void *) (&internalformat), 4);
- (void) memcpy((void *) (gc->pc + 12), (void *) (&sink), 1);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_ResetHistogram 4112
-void
-__indirect_glResetHistogram(GLenum target)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 8;
- emit_header(gc->pc, X_GLrop_ResetHistogram, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&target), 4);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_ResetMinmax 4113
-void
-__indirect_glResetMinmax(GLenum target)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 8;
- emit_header(gc->pc, X_GLrop_ResetMinmax, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&target), 4);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-static void
-__glx_TexImage_3D4D(unsigned opcode, unsigned dim, GLenum target, GLint level,
- GLint internalformat, GLsizei width, GLsizei height,
- GLsizei depth, GLsizei extent, GLint border,
- GLenum format, GLenum type, const GLvoid * pixels)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint compsize =
- (pixels != NULL) ? __glImageSize(width, height, depth, format, type,
- target) : 0;
- const GLuint cmdlen = 84 + __GLX_PAD(compsize);
- if (__builtin_expect(gc->currentDpy != NULL, 1)) {
- if (cmdlen <= gc->maxSmallRenderCommandSize) {
- if ((gc->pc + cmdlen) > gc->bufEnd) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
- emit_header(gc->pc, opcode, cmdlen);
- (void) memcpy((void *) (gc->pc + 40), (void *) (&target), 4);
- (void) memcpy((void *) (gc->pc + 44), (void *) (&level), 4);
- (void) memcpy((void *) (gc->pc + 48), (void *) (&internalformat),
- 4);
- (void) memcpy((void *) (gc->pc + 52), (void *) (&width), 4);
- (void) memcpy((void *) (gc->pc + 56), (void *) (&height), 4);
- (void) memcpy((void *) (gc->pc + 60), (void *) (&depth), 4);
- (void) memcpy((void *) (gc->pc + 64), (void *) (&extent), 4);
- (void) memcpy((void *) (gc->pc + 68), (void *) (&border), 4);
- (void) memcpy((void *) (gc->pc + 72), (void *) (&format), 4);
- (void) memcpy((void *) (gc->pc + 76), (void *) (&type), 4);
- (void) memcpy((void *) (gc->pc + 80),
- (void *) ((pixels == NULL) ? one : zero), 4);
- if (compsize > 0) {
- (*gc->fillImage) (gc, dim, width, height, depth, format, type,
- pixels, gc->pc + 84, gc->pc + 4);
- } else {
- (void) memcpy(gc->pc + 4, default_pixel_store_4D,
- default_pixel_store_4D_size);
- }
- gc->pc += cmdlen;
- if (gc->pc > gc->limit) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
- } else {
- const GLint op = opcode;
- const GLuint cmdlenLarge = cmdlen + 4;
- GLubyte *const pc = __glXFlushRenderBuffer(gc, gc->pc);
- (void) memcpy((void *) (pc + 0), (void *) (&cmdlenLarge), 4);
- (void) memcpy((void *) (pc + 4), (void *) (&op), 4);
- (void) memcpy((void *) (pc + 44), (void *) (&target), 4);
- (void) memcpy((void *) (pc + 48), (void *) (&level), 4);
- (void) memcpy((void *) (pc + 52), (void *) (&internalformat), 4);
- (void) memcpy((void *) (pc + 56), (void *) (&width), 4);
- (void) memcpy((void *) (pc + 60), (void *) (&height), 4);
- (void) memcpy((void *) (pc + 64), (void *) (&depth), 4);
- (void) memcpy((void *) (pc + 68), (void *) (&extent), 4);
- (void) memcpy((void *) (pc + 72), (void *) (&border), 4);
- (void) memcpy((void *) (pc + 76), (void *) (&format), 4);
- (void) memcpy((void *) (pc + 80), (void *) (&type), 4);
- (void) memcpy((void *) (pc + 84), zero, 4);
- __glXSendLargeImage(gc, compsize, dim, width, height, depth,
- format, type, pixels, pc + 88, pc + 8);
- }
- }
-}
-
-#define X_GLrop_TexImage3D 4114
-void
-__indirect_glTexImage3D(GLenum target, GLint level, GLint internalformat,
- GLsizei width, GLsizei height, GLsizei depth,
- GLint border, GLenum format, GLenum type,
- const GLvoid * pixels)
-{
- __glx_TexImage_3D4D(X_GLrop_TexImage3D, 3, target, level, internalformat,
- width, height, depth, 1, border, format, type,
- pixels);
-}
-
-static void
-__glx_TexSubImage_3D4D(unsigned opcode, unsigned dim, GLenum target,
- GLint level, GLint xoffset, GLint yoffset,
- GLint zoffset, GLint woffset, GLsizei width,
- GLsizei height, GLsizei depth, GLsizei extent,
- GLenum format, GLenum type, const GLvoid * pixels)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint compsize =
- (pixels != NULL) ? __glImageSize(width, height, depth, format, type,
- target) : 0;
- const GLuint cmdlen = 92 + __GLX_PAD(compsize);
- if (__builtin_expect(gc->currentDpy != NULL, 1)) {
- if (cmdlen <= gc->maxSmallRenderCommandSize) {
- if ((gc->pc + cmdlen) > gc->bufEnd) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
- emit_header(gc->pc, opcode, cmdlen);
- (void) memcpy((void *) (gc->pc + 40), (void *) (&target), 4);
- (void) memcpy((void *) (gc->pc + 44), (void *) (&level), 4);
- (void) memcpy((void *) (gc->pc + 48), (void *) (&xoffset), 4);
- (void) memcpy((void *) (gc->pc + 52), (void *) (&yoffset), 4);
- (void) memcpy((void *) (gc->pc + 56), (void *) (&zoffset), 4);
- (void) memcpy((void *) (gc->pc + 60), (void *) (&woffset), 4);
- (void) memcpy((void *) (gc->pc + 64), (void *) (&width), 4);
- (void) memcpy((void *) (gc->pc + 68), (void *) (&height), 4);
- (void) memcpy((void *) (gc->pc + 72), (void *) (&depth), 4);
- (void) memcpy((void *) (gc->pc + 76), (void *) (&extent), 4);
- (void) memcpy((void *) (gc->pc + 80), (void *) (&format), 4);
- (void) memcpy((void *) (gc->pc + 84), (void *) (&type), 4);
- (void) memset((void *) (gc->pc + 88), 0, 4);
- if (compsize > 0) {
- (*gc->fillImage) (gc, dim, width, height, depth, format, type,
- pixels, gc->pc + 92, gc->pc + 4);
- } else {
- (void) memcpy(gc->pc + 4, default_pixel_store_4D,
- default_pixel_store_4D_size);
- }
- gc->pc += cmdlen;
- if (gc->pc > gc->limit) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
- } else {
- const GLint op = opcode;
- const GLuint cmdlenLarge = cmdlen + 4;
- GLubyte *const pc = __glXFlushRenderBuffer(gc, gc->pc);
- (void) memcpy((void *) (pc + 0), (void *) (&cmdlenLarge), 4);
- (void) memcpy((void *) (pc + 4), (void *) (&op), 4);
- (void) memcpy((void *) (pc + 44), (void *) (&target), 4);
- (void) memcpy((void *) (pc + 48), (void *) (&level), 4);
- (void) memcpy((void *) (pc + 52), (void *) (&xoffset), 4);
- (void) memcpy((void *) (pc + 56), (void *) (&yoffset), 4);
- (void) memcpy((void *) (pc + 60), (void *) (&zoffset), 4);
- (void) memcpy((void *) (pc + 64), (void *) (&woffset), 4);
- (void) memcpy((void *) (pc + 68), (void *) (&width), 4);
- (void) memcpy((void *) (pc + 72), (void *) (&height), 4);
- (void) memcpy((void *) (pc + 76), (void *) (&depth), 4);
- (void) memcpy((void *) (pc + 80), (void *) (&extent), 4);
- (void) memcpy((void *) (pc + 84), (void *) (&format), 4);
- (void) memcpy((void *) (pc + 88), (void *) (&type), 4);
- (void) memset((void *) (pc + 92), 0, 4);
- __glXSendLargeImage(gc, compsize, dim, width, height, depth,
- format, type, pixels, pc + 96, pc + 8);
- }
- }
-}
-
-#define X_GLrop_TexSubImage3D 4115
-void
-__indirect_glTexSubImage3D(GLenum target, GLint level, GLint xoffset,
- GLint yoffset, GLint zoffset, GLsizei width,
- GLsizei height, GLsizei depth, GLenum format,
- GLenum type, const GLvoid * pixels)
-{
- __glx_TexSubImage_3D4D(X_GLrop_TexSubImage3D, 3, target, level, xoffset,
- yoffset, zoffset, 1, width, height, depth, 1,
- format, type, pixels);
-}
-
-#define X_GLrop_CopyTexSubImage3D 4123
-void
-__indirect_glCopyTexSubImage3D(GLenum target, GLint level, GLint xoffset,
- GLint yoffset, GLint zoffset, GLint x, GLint y,
- GLsizei width, GLsizei height)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 40;
- emit_header(gc->pc, X_GLrop_CopyTexSubImage3D, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&target), 4);
- (void) memcpy((void *) (gc->pc + 8), (void *) (&level), 4);
- (void) memcpy((void *) (gc->pc + 12), (void *) (&xoffset), 4);
- (void) memcpy((void *) (gc->pc + 16), (void *) (&yoffset), 4);
- (void) memcpy((void *) (gc->pc + 20), (void *) (&zoffset), 4);
- (void) memcpy((void *) (gc->pc + 24), (void *) (&x), 4);
- (void) memcpy((void *) (gc->pc + 28), (void *) (&y), 4);
- (void) memcpy((void *) (gc->pc + 32), (void *) (&width), 4);
- (void) memcpy((void *) (gc->pc + 36), (void *) (&height), 4);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_ActiveTextureARB 197
-void
-__indirect_glActiveTextureARB(GLenum texture)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 8;
- emit_header(gc->pc, X_GLrop_ActiveTextureARB, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&texture), 4);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_MultiTexCoord1dvARB 198
-void
-__indirect_glMultiTexCoord1dARB(GLenum target, GLdouble s)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 16;
- emit_header(gc->pc, X_GLrop_MultiTexCoord1dvARB, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&s), 8);
- (void) memcpy((void *) (gc->pc + 12), (void *) (&target), 4);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_MultiTexCoord1dvARB 198
-void
-__indirect_glMultiTexCoord1dvARB(GLenum target, const GLdouble * v)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 16;
- emit_header(gc->pc, X_GLrop_MultiTexCoord1dvARB, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (v), 8);
- (void) memcpy((void *) (gc->pc + 12), (void *) (&target), 4);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_MultiTexCoord1fvARB 199
-void
-__indirect_glMultiTexCoord1fARB(GLenum target, GLfloat s)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 12;
- emit_header(gc->pc, X_GLrop_MultiTexCoord1fvARB, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&target), 4);
- (void) memcpy((void *) (gc->pc + 8), (void *) (&s), 4);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_MultiTexCoord1fvARB 199
-void
-__indirect_glMultiTexCoord1fvARB(GLenum target, const GLfloat * v)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 12;
- emit_header(gc->pc, X_GLrop_MultiTexCoord1fvARB, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&target), 4);
- (void) memcpy((void *) (gc->pc + 8), (void *) (v), 4);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_MultiTexCoord1ivARB 200
-void
-__indirect_glMultiTexCoord1iARB(GLenum target, GLint s)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 12;
- emit_header(gc->pc, X_GLrop_MultiTexCoord1ivARB, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&target), 4);
- (void) memcpy((void *) (gc->pc + 8), (void *) (&s), 4);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_MultiTexCoord1ivARB 200
-void
-__indirect_glMultiTexCoord1ivARB(GLenum target, const GLint * v)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 12;
- emit_header(gc->pc, X_GLrop_MultiTexCoord1ivARB, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&target), 4);
- (void) memcpy((void *) (gc->pc + 8), (void *) (v), 4);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_MultiTexCoord1svARB 201
-void
-__indirect_glMultiTexCoord1sARB(GLenum target, GLshort s)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 12;
- emit_header(gc->pc, X_GLrop_MultiTexCoord1svARB, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&target), 4);
- (void) memcpy((void *) (gc->pc + 8), (void *) (&s), 2);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_MultiTexCoord1svARB 201
-void
-__indirect_glMultiTexCoord1svARB(GLenum target, const GLshort * v)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 12;
- emit_header(gc->pc, X_GLrop_MultiTexCoord1svARB, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&target), 4);
- (void) memcpy((void *) (gc->pc + 8), (void *) (v), 2);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_MultiTexCoord2dvARB 202
-void
-__indirect_glMultiTexCoord2dARB(GLenum target, GLdouble s, GLdouble t)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 24;
- emit_header(gc->pc, X_GLrop_MultiTexCoord2dvARB, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&s), 8);
- (void) memcpy((void *) (gc->pc + 12), (void *) (&t), 8);
- (void) memcpy((void *) (gc->pc + 20), (void *) (&target), 4);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_MultiTexCoord2dvARB 202
-void
-__indirect_glMultiTexCoord2dvARB(GLenum target, const GLdouble * v)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 24;
- emit_header(gc->pc, X_GLrop_MultiTexCoord2dvARB, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (v), 16);
- (void) memcpy((void *) (gc->pc + 20), (void *) (&target), 4);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_MultiTexCoord2fvARB 203
-void
-__indirect_glMultiTexCoord2fARB(GLenum target, GLfloat s, GLfloat t)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 16;
- emit_header(gc->pc, X_GLrop_MultiTexCoord2fvARB, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&target), 4);
- (void) memcpy((void *) (gc->pc + 8), (void *) (&s), 4);
- (void) memcpy((void *) (gc->pc + 12), (void *) (&t), 4);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_MultiTexCoord2fvARB 203
-void
-__indirect_glMultiTexCoord2fvARB(GLenum target, const GLfloat * v)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 16;
- emit_header(gc->pc, X_GLrop_MultiTexCoord2fvARB, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&target), 4);
- (void) memcpy((void *) (gc->pc + 8), (void *) (v), 8);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_MultiTexCoord2ivARB 204
-void
-__indirect_glMultiTexCoord2iARB(GLenum target, GLint s, GLint t)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 16;
- emit_header(gc->pc, X_GLrop_MultiTexCoord2ivARB, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&target), 4);
- (void) memcpy((void *) (gc->pc + 8), (void *) (&s), 4);
- (void) memcpy((void *) (gc->pc + 12), (void *) (&t), 4);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_MultiTexCoord2ivARB 204
-void
-__indirect_glMultiTexCoord2ivARB(GLenum target, const GLint * v)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 16;
- emit_header(gc->pc, X_GLrop_MultiTexCoord2ivARB, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&target), 4);
- (void) memcpy((void *) (gc->pc + 8), (void *) (v), 8);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_MultiTexCoord2svARB 205
-void
-__indirect_glMultiTexCoord2sARB(GLenum target, GLshort s, GLshort t)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 12;
- emit_header(gc->pc, X_GLrop_MultiTexCoord2svARB, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&target), 4);
- (void) memcpy((void *) (gc->pc + 8), (void *) (&s), 2);
- (void) memcpy((void *) (gc->pc + 10), (void *) (&t), 2);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_MultiTexCoord2svARB 205
-void
-__indirect_glMultiTexCoord2svARB(GLenum target, const GLshort * v)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 12;
- emit_header(gc->pc, X_GLrop_MultiTexCoord2svARB, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&target), 4);
- (void) memcpy((void *) (gc->pc + 8), (void *) (v), 4);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_MultiTexCoord3dvARB 206
-void
-__indirect_glMultiTexCoord3dARB(GLenum target, GLdouble s, GLdouble t,
- GLdouble r)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 32;
- emit_header(gc->pc, X_GLrop_MultiTexCoord3dvARB, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&s), 8);
- (void) memcpy((void *) (gc->pc + 12), (void *) (&t), 8);
- (void) memcpy((void *) (gc->pc + 20), (void *) (&r), 8);
- (void) memcpy((void *) (gc->pc + 28), (void *) (&target), 4);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_MultiTexCoord3dvARB 206
-void
-__indirect_glMultiTexCoord3dvARB(GLenum target, const GLdouble * v)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 32;
- emit_header(gc->pc, X_GLrop_MultiTexCoord3dvARB, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (v), 24);
- (void) memcpy((void *) (gc->pc + 28), (void *) (&target), 4);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_MultiTexCoord3fvARB 207
-void
-__indirect_glMultiTexCoord3fARB(GLenum target, GLfloat s, GLfloat t,
- GLfloat r)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 20;
- emit_header(gc->pc, X_GLrop_MultiTexCoord3fvARB, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&target), 4);
- (void) memcpy((void *) (gc->pc + 8), (void *) (&s), 4);
- (void) memcpy((void *) (gc->pc + 12), (void *) (&t), 4);
- (void) memcpy((void *) (gc->pc + 16), (void *) (&r), 4);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_MultiTexCoord3fvARB 207
-void
-__indirect_glMultiTexCoord3fvARB(GLenum target, const GLfloat * v)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 20;
- emit_header(gc->pc, X_GLrop_MultiTexCoord3fvARB, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&target), 4);
- (void) memcpy((void *) (gc->pc + 8), (void *) (v), 12);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_MultiTexCoord3ivARB 208
-void
-__indirect_glMultiTexCoord3iARB(GLenum target, GLint s, GLint t, GLint r)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 20;
- emit_header(gc->pc, X_GLrop_MultiTexCoord3ivARB, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&target), 4);
- (void) memcpy((void *) (gc->pc + 8), (void *) (&s), 4);
- (void) memcpy((void *) (gc->pc + 12), (void *) (&t), 4);
- (void) memcpy((void *) (gc->pc + 16), (void *) (&r), 4);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_MultiTexCoord3ivARB 208
-void
-__indirect_glMultiTexCoord3ivARB(GLenum target, const GLint * v)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 20;
- emit_header(gc->pc, X_GLrop_MultiTexCoord3ivARB, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&target), 4);
- (void) memcpy((void *) (gc->pc + 8), (void *) (v), 12);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_MultiTexCoord3svARB 209
-void
-__indirect_glMultiTexCoord3sARB(GLenum target, GLshort s, GLshort t,
- GLshort r)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 16;
- emit_header(gc->pc, X_GLrop_MultiTexCoord3svARB, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&target), 4);
- (void) memcpy((void *) (gc->pc + 8), (void *) (&s), 2);
- (void) memcpy((void *) (gc->pc + 10), (void *) (&t), 2);
- (void) memcpy((void *) (gc->pc + 12), (void *) (&r), 2);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_MultiTexCoord3svARB 209
-void
-__indirect_glMultiTexCoord3svARB(GLenum target, const GLshort * v)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 16;
- emit_header(gc->pc, X_GLrop_MultiTexCoord3svARB, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&target), 4);
- (void) memcpy((void *) (gc->pc + 8), (void *) (v), 6);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_MultiTexCoord4dvARB 210
-void
-__indirect_glMultiTexCoord4dARB(GLenum target, GLdouble s, GLdouble t,
- GLdouble r, GLdouble q)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 40;
- emit_header(gc->pc, X_GLrop_MultiTexCoord4dvARB, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&s), 8);
- (void) memcpy((void *) (gc->pc + 12), (void *) (&t), 8);
- (void) memcpy((void *) (gc->pc + 20), (void *) (&r), 8);
- (void) memcpy((void *) (gc->pc + 28), (void *) (&q), 8);
- (void) memcpy((void *) (gc->pc + 36), (void *) (&target), 4);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_MultiTexCoord4dvARB 210
-void
-__indirect_glMultiTexCoord4dvARB(GLenum target, const GLdouble * v)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 40;
- emit_header(gc->pc, X_GLrop_MultiTexCoord4dvARB, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (v), 32);
- (void) memcpy((void *) (gc->pc + 36), (void *) (&target), 4);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_MultiTexCoord4fvARB 211
-void
-__indirect_glMultiTexCoord4fARB(GLenum target, GLfloat s, GLfloat t,
- GLfloat r, GLfloat q)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 24;
- emit_header(gc->pc, X_GLrop_MultiTexCoord4fvARB, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&target), 4);
- (void) memcpy((void *) (gc->pc + 8), (void *) (&s), 4);
- (void) memcpy((void *) (gc->pc + 12), (void *) (&t), 4);
- (void) memcpy((void *) (gc->pc + 16), (void *) (&r), 4);
- (void) memcpy((void *) (gc->pc + 20), (void *) (&q), 4);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_MultiTexCoord4fvARB 211
-void
-__indirect_glMultiTexCoord4fvARB(GLenum target, const GLfloat * v)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 24;
- emit_header(gc->pc, X_GLrop_MultiTexCoord4fvARB, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&target), 4);
- (void) memcpy((void *) (gc->pc + 8), (void *) (v), 16);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_MultiTexCoord4ivARB 212
-void
-__indirect_glMultiTexCoord4iARB(GLenum target, GLint s, GLint t, GLint r,
- GLint q)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 24;
- emit_header(gc->pc, X_GLrop_MultiTexCoord4ivARB, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&target), 4);
- (void) memcpy((void *) (gc->pc + 8), (void *) (&s), 4);
- (void) memcpy((void *) (gc->pc + 12), (void *) (&t), 4);
- (void) memcpy((void *) (gc->pc + 16), (void *) (&r), 4);
- (void) memcpy((void *) (gc->pc + 20), (void *) (&q), 4);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_MultiTexCoord4ivARB 212
-void
-__indirect_glMultiTexCoord4ivARB(GLenum target, const GLint * v)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 24;
- emit_header(gc->pc, X_GLrop_MultiTexCoord4ivARB, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&target), 4);
- (void) memcpy((void *) (gc->pc + 8), (void *) (v), 16);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_MultiTexCoord4svARB 213
-void
-__indirect_glMultiTexCoord4sARB(GLenum target, GLshort s, GLshort t,
- GLshort r, GLshort q)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 16;
- emit_header(gc->pc, X_GLrop_MultiTexCoord4svARB, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&target), 4);
- (void) memcpy((void *) (gc->pc + 8), (void *) (&s), 2);
- (void) memcpy((void *) (gc->pc + 10), (void *) (&t), 2);
- (void) memcpy((void *) (gc->pc + 12), (void *) (&r), 2);
- (void) memcpy((void *) (gc->pc + 14), (void *) (&q), 2);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_MultiTexCoord4svARB 213
-void
-__indirect_glMultiTexCoord4svARB(GLenum target, const GLshort * v)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 16;
- emit_header(gc->pc, X_GLrop_MultiTexCoord4svARB, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&target), 4);
- (void) memcpy((void *) (gc->pc + 8), (void *) (v), 8);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_SampleCoverageARB 229
-void
-__indirect_glSampleCoverageARB(GLclampf value, GLboolean invert)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 12;
- emit_header(gc->pc, X_GLrop_SampleCoverageARB, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&value), 4);
- (void) memcpy((void *) (gc->pc + 8), (void *) (&invert), 1);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLvop_GetProgramStringARB 1308
-void
-__indirect_glGetProgramStringARB(GLenum target, GLenum pname, GLvoid * string)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- Display *const dpy = gc->currentDpy;
- const GLuint cmdlen = 8;
- if (__builtin_expect(dpy != NULL, 1)) {
- GLubyte const *pc =
- __glXSetupVendorRequest(gc, X_GLXVendorPrivateWithReply,
- X_GLvop_GetProgramStringARB, cmdlen);
- (void) memcpy((void *) (pc + 0), (void *) (&target), 4);
- (void) memcpy((void *) (pc + 4), (void *) (&pname), 4);
- (void) __glXReadReply(dpy, 1, string, GL_TRUE);
- UnlockDisplay(dpy);
- SyncHandle();
- }
- return;
-}
-
-#define X_GLvop_GetProgramivARB 1307
-void
-__indirect_glGetProgramivARB(GLenum target, GLenum pname, GLint * params)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- Display *const dpy = gc->currentDpy;
- const GLuint cmdlen = 8;
- if (__builtin_expect(dpy != NULL, 1)) {
- GLubyte const *pc =
- __glXSetupVendorRequest(gc, X_GLXVendorPrivateWithReply,
- X_GLvop_GetProgramivARB, cmdlen);
- (void) memcpy((void *) (pc + 0), (void *) (&target), 4);
- (void) memcpy((void *) (pc + 4), (void *) (&pname), 4);
- (void) __glXReadReply(dpy, 4, params, GL_FALSE);
- UnlockDisplay(dpy);
- SyncHandle();
- }
- return;
-}
-
-#define X_GLrop_ProgramEnvParameter4dvARB 4185
-void
-__indirect_glProgramEnvParameter4dARB(GLenum target, GLuint index, GLdouble x,
- GLdouble y, GLdouble z, GLdouble w)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 44;
- emit_header(gc->pc, X_GLrop_ProgramEnvParameter4dvARB, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&target), 4);
- (void) memcpy((void *) (gc->pc + 8), (void *) (&index), 4);
- (void) memcpy((void *) (gc->pc + 12), (void *) (&x), 8);
- (void) memcpy((void *) (gc->pc + 20), (void *) (&y), 8);
- (void) memcpy((void *) (gc->pc + 28), (void *) (&z), 8);
- (void) memcpy((void *) (gc->pc + 36), (void *) (&w), 8);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_ProgramEnvParameter4dvARB 4185
-void
-__indirect_glProgramEnvParameter4dvARB(GLenum target, GLuint index,
- const GLdouble * params)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 44;
- emit_header(gc->pc, X_GLrop_ProgramEnvParameter4dvARB, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&target), 4);
- (void) memcpy((void *) (gc->pc + 8), (void *) (&index), 4);
- (void) memcpy((void *) (gc->pc + 12), (void *) (params), 32);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_ProgramEnvParameter4fvARB 4184
-void
-__indirect_glProgramEnvParameter4fARB(GLenum target, GLuint index, GLfloat x,
- GLfloat y, GLfloat z, GLfloat w)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 28;
- emit_header(gc->pc, X_GLrop_ProgramEnvParameter4fvARB, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&target), 4);
- (void) memcpy((void *) (gc->pc + 8), (void *) (&index), 4);
- (void) memcpy((void *) (gc->pc + 12), (void *) (&x), 4);
- (void) memcpy((void *) (gc->pc + 16), (void *) (&y), 4);
- (void) memcpy((void *) (gc->pc + 20), (void *) (&z), 4);
- (void) memcpy((void *) (gc->pc + 24), (void *) (&w), 4);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_ProgramEnvParameter4fvARB 4184
-void
-__indirect_glProgramEnvParameter4fvARB(GLenum target, GLuint index,
- const GLfloat * params)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 28;
- emit_header(gc->pc, X_GLrop_ProgramEnvParameter4fvARB, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&target), 4);
- (void) memcpy((void *) (gc->pc + 8), (void *) (&index), 4);
- (void) memcpy((void *) (gc->pc + 12), (void *) (params), 16);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_ProgramLocalParameter4dvARB 4216
-void
-__indirect_glProgramLocalParameter4dARB(GLenum target, GLuint index,
- GLdouble x, GLdouble y, GLdouble z,
- GLdouble w)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 44;
- emit_header(gc->pc, X_GLrop_ProgramLocalParameter4dvARB, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&target), 4);
- (void) memcpy((void *) (gc->pc + 8), (void *) (&index), 4);
- (void) memcpy((void *) (gc->pc + 12), (void *) (&x), 8);
- (void) memcpy((void *) (gc->pc + 20), (void *) (&y), 8);
- (void) memcpy((void *) (gc->pc + 28), (void *) (&z), 8);
- (void) memcpy((void *) (gc->pc + 36), (void *) (&w), 8);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_ProgramLocalParameter4dvARB 4216
-void
-__indirect_glProgramLocalParameter4dvARB(GLenum target, GLuint index,
- const GLdouble * params)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 44;
- emit_header(gc->pc, X_GLrop_ProgramLocalParameter4dvARB, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&target), 4);
- (void) memcpy((void *) (gc->pc + 8), (void *) (&index), 4);
- (void) memcpy((void *) (gc->pc + 12), (void *) (params), 32);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_ProgramLocalParameter4fvARB 4215
-void
-__indirect_glProgramLocalParameter4fARB(GLenum target, GLuint index,
- GLfloat x, GLfloat y, GLfloat z,
- GLfloat w)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 28;
- emit_header(gc->pc, X_GLrop_ProgramLocalParameter4fvARB, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&target), 4);
- (void) memcpy((void *) (gc->pc + 8), (void *) (&index), 4);
- (void) memcpy((void *) (gc->pc + 12), (void *) (&x), 4);
- (void) memcpy((void *) (gc->pc + 16), (void *) (&y), 4);
- (void) memcpy((void *) (gc->pc + 20), (void *) (&z), 4);
- (void) memcpy((void *) (gc->pc + 24), (void *) (&w), 4);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_ProgramLocalParameter4fvARB 4215
-void
-__indirect_glProgramLocalParameter4fvARB(GLenum target, GLuint index,
- const GLfloat * params)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 28;
- emit_header(gc->pc, X_GLrop_ProgramLocalParameter4fvARB, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&target), 4);
- (void) memcpy((void *) (gc->pc + 8), (void *) (&index), 4);
- (void) memcpy((void *) (gc->pc + 12), (void *) (params), 16);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_ProgramStringARB 4217
-void
-__indirect_glProgramStringARB(GLenum target, GLenum format, GLsizei len,
- const GLvoid * string)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 16 + __GLX_PAD(len);
- if (len < 0) {
- __glXSetError(gc, GL_INVALID_VALUE);
- return;
- }
- if (__builtin_expect((len >= 0) && (gc->currentDpy != NULL), 1)) {
- if (cmdlen <= gc->maxSmallRenderCommandSize) {
- if ((gc->pc + cmdlen) > gc->bufEnd) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
- emit_header(gc->pc, X_GLrop_ProgramStringARB, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&target), 4);
- (void) memcpy((void *) (gc->pc + 8), (void *) (&format), 4);
- (void) memcpy((void *) (gc->pc + 12), (void *) (&len), 4);
- (void) memcpy((void *) (gc->pc + 16), (void *) (string), len);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
- } else {
- const GLint op = X_GLrop_ProgramStringARB;
- const GLuint cmdlenLarge = cmdlen + 4;
- GLubyte *const pc = __glXFlushRenderBuffer(gc, gc->pc);
- (void) memcpy((void *) (pc + 0), (void *) (&cmdlenLarge), 4);
- (void) memcpy((void *) (pc + 4), (void *) (&op), 4);
- (void) memcpy((void *) (pc + 8), (void *) (&target), 4);
- (void) memcpy((void *) (pc + 12), (void *) (&format), 4);
- (void) memcpy((void *) (pc + 16), (void *) (&len), 4);
- __glXSendLargeCommand(gc, pc, 20, string, len);
- }
- }
-}
-
-#define X_GLrop_VertexAttrib1dvARB 4197
-void
-__indirect_glVertexAttrib1dARB(GLuint index, GLdouble x)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 16;
- emit_header(gc->pc, X_GLrop_VertexAttrib1dvARB, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&index), 4);
- (void) memcpy((void *) (gc->pc + 8), (void *) (&x), 8);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_VertexAttrib1dvARB 4197
-void
-__indirect_glVertexAttrib1dvARB(GLuint index, const GLdouble * v)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 16;
- emit_header(gc->pc, X_GLrop_VertexAttrib1dvARB, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&index), 4);
- (void) memcpy((void *) (gc->pc + 8), (void *) (v), 8);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_VertexAttrib1fvARB 4193
-void
-__indirect_glVertexAttrib1fARB(GLuint index, GLfloat x)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 12;
- emit_header(gc->pc, X_GLrop_VertexAttrib1fvARB, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&index), 4);
- (void) memcpy((void *) (gc->pc + 8), (void *) (&x), 4);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_VertexAttrib1fvARB 4193
-void
-__indirect_glVertexAttrib1fvARB(GLuint index, const GLfloat * v)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 12;
- emit_header(gc->pc, X_GLrop_VertexAttrib1fvARB, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&index), 4);
- (void) memcpy((void *) (gc->pc + 8), (void *) (v), 4);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_VertexAttrib1svARB 4189
-void
-__indirect_glVertexAttrib1sARB(GLuint index, GLshort x)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 12;
- emit_header(gc->pc, X_GLrop_VertexAttrib1svARB, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&index), 4);
- (void) memcpy((void *) (gc->pc + 8), (void *) (&x), 2);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_VertexAttrib1svARB 4189
-void
-__indirect_glVertexAttrib1svARB(GLuint index, const GLshort * v)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 12;
- emit_header(gc->pc, X_GLrop_VertexAttrib1svARB, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&index), 4);
- (void) memcpy((void *) (gc->pc + 8), (void *) (v), 2);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_VertexAttrib2dvARB 4198
-void
-__indirect_glVertexAttrib2dARB(GLuint index, GLdouble x, GLdouble y)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 24;
- emit_header(gc->pc, X_GLrop_VertexAttrib2dvARB, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&index), 4);
- (void) memcpy((void *) (gc->pc + 8), (void *) (&x), 8);
- (void) memcpy((void *) (gc->pc + 16), (void *) (&y), 8);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_VertexAttrib2dvARB 4198
-void
-__indirect_glVertexAttrib2dvARB(GLuint index, const GLdouble * v)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 24;
- emit_header(gc->pc, X_GLrop_VertexAttrib2dvARB, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&index), 4);
- (void) memcpy((void *) (gc->pc + 8), (void *) (v), 16);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_VertexAttrib2fvARB 4194
-void
-__indirect_glVertexAttrib2fARB(GLuint index, GLfloat x, GLfloat y)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 16;
- emit_header(gc->pc, X_GLrop_VertexAttrib2fvARB, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&index), 4);
- (void) memcpy((void *) (gc->pc + 8), (void *) (&x), 4);
- (void) memcpy((void *) (gc->pc + 12), (void *) (&y), 4);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_VertexAttrib2fvARB 4194
-void
-__indirect_glVertexAttrib2fvARB(GLuint index, const GLfloat * v)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 16;
- emit_header(gc->pc, X_GLrop_VertexAttrib2fvARB, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&index), 4);
- (void) memcpy((void *) (gc->pc + 8), (void *) (v), 8);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_VertexAttrib2svARB 4190
-void
-__indirect_glVertexAttrib2sARB(GLuint index, GLshort x, GLshort y)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 12;
- emit_header(gc->pc, X_GLrop_VertexAttrib2svARB, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&index), 4);
- (void) memcpy((void *) (gc->pc + 8), (void *) (&x), 2);
- (void) memcpy((void *) (gc->pc + 10), (void *) (&y), 2);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_VertexAttrib2svARB 4190
-void
-__indirect_glVertexAttrib2svARB(GLuint index, const GLshort * v)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 12;
- emit_header(gc->pc, X_GLrop_VertexAttrib2svARB, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&index), 4);
- (void) memcpy((void *) (gc->pc + 8), (void *) (v), 4);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_VertexAttrib3dvARB 4199
-void
-__indirect_glVertexAttrib3dARB(GLuint index, GLdouble x, GLdouble y,
- GLdouble z)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 32;
- emit_header(gc->pc, X_GLrop_VertexAttrib3dvARB, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&index), 4);
- (void) memcpy((void *) (gc->pc + 8), (void *) (&x), 8);
- (void) memcpy((void *) (gc->pc + 16), (void *) (&y), 8);
- (void) memcpy((void *) (gc->pc + 24), (void *) (&z), 8);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_VertexAttrib3dvARB 4199
-void
-__indirect_glVertexAttrib3dvARB(GLuint index, const GLdouble * v)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 32;
- emit_header(gc->pc, X_GLrop_VertexAttrib3dvARB, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&index), 4);
- (void) memcpy((void *) (gc->pc + 8), (void *) (v), 24);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_VertexAttrib3fvARB 4195
-void
-__indirect_glVertexAttrib3fARB(GLuint index, GLfloat x, GLfloat y, GLfloat z)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 20;
- emit_header(gc->pc, X_GLrop_VertexAttrib3fvARB, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&index), 4);
- (void) memcpy((void *) (gc->pc + 8), (void *) (&x), 4);
- (void) memcpy((void *) (gc->pc + 12), (void *) (&y), 4);
- (void) memcpy((void *) (gc->pc + 16), (void *) (&z), 4);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_VertexAttrib3fvARB 4195
-void
-__indirect_glVertexAttrib3fvARB(GLuint index, const GLfloat * v)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 20;
- emit_header(gc->pc, X_GLrop_VertexAttrib3fvARB, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&index), 4);
- (void) memcpy((void *) (gc->pc + 8), (void *) (v), 12);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_VertexAttrib3svARB 4191
-void
-__indirect_glVertexAttrib3sARB(GLuint index, GLshort x, GLshort y, GLshort z)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 16;
- emit_header(gc->pc, X_GLrop_VertexAttrib3svARB, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&index), 4);
- (void) memcpy((void *) (gc->pc + 8), (void *) (&x), 2);
- (void) memcpy((void *) (gc->pc + 10), (void *) (&y), 2);
- (void) memcpy((void *) (gc->pc + 12), (void *) (&z), 2);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_VertexAttrib3svARB 4191
-void
-__indirect_glVertexAttrib3svARB(GLuint index, const GLshort * v)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 16;
- emit_header(gc->pc, X_GLrop_VertexAttrib3svARB, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&index), 4);
- (void) memcpy((void *) (gc->pc + 8), (void *) (v), 6);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_VertexAttrib4NbvARB 4235
-void
-__indirect_glVertexAttrib4NbvARB(GLuint index, const GLbyte *v)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 12;
- emit_header(gc->pc, X_GLrop_VertexAttrib4NbvARB, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&index), 4);
- (void) memcpy((void *) (gc->pc + 8), (void *) (v), 4);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_VertexAttrib4NivARB 4237
-void
-__indirect_glVertexAttrib4NivARB(GLuint index, const GLint * v)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 24;
- emit_header(gc->pc, X_GLrop_VertexAttrib4NivARB, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&index), 4);
- (void) memcpy((void *) (gc->pc + 8), (void *) (v), 16);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_VertexAttrib4NsvARB 4236
-void
-__indirect_glVertexAttrib4NsvARB(GLuint index, const GLshort * v)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 16;
- emit_header(gc->pc, X_GLrop_VertexAttrib4NsvARB, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&index), 4);
- (void) memcpy((void *) (gc->pc + 8), (void *) (v), 8);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_VertexAttrib4NubvARB 4201
-void
-__indirect_glVertexAttrib4NubARB(GLuint index, GLubyte x, GLubyte y,
- GLubyte z, GLubyte w)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 12;
- emit_header(gc->pc, X_GLrop_VertexAttrib4NubvARB, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&index), 4);
- (void) memcpy((void *) (gc->pc + 8), (void *) (&x), 1);
- (void) memcpy((void *) (gc->pc + 9), (void *) (&y), 1);
- (void) memcpy((void *) (gc->pc + 10), (void *) (&z), 1);
- (void) memcpy((void *) (gc->pc + 11), (void *) (&w), 1);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_VertexAttrib4NubvARB 4201
-void
-__indirect_glVertexAttrib4NubvARB(GLuint index, const GLubyte *v)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 12;
- emit_header(gc->pc, X_GLrop_VertexAttrib4NubvARB, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&index), 4);
- (void) memcpy((void *) (gc->pc + 8), (void *) (v), 4);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_VertexAttrib4NuivARB 4239
-void
-__indirect_glVertexAttrib4NuivARB(GLuint index, const GLuint * v)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 24;
- emit_header(gc->pc, X_GLrop_VertexAttrib4NuivARB, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&index), 4);
- (void) memcpy((void *) (gc->pc + 8), (void *) (v), 16);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_VertexAttrib4NusvARB 4238
-void
-__indirect_glVertexAttrib4NusvARB(GLuint index, const GLushort * v)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 16;
- emit_header(gc->pc, X_GLrop_VertexAttrib4NusvARB, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&index), 4);
- (void) memcpy((void *) (gc->pc + 8), (void *) (v), 8);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_VertexAttrib4bvARB 4230
-void
-__indirect_glVertexAttrib4bvARB(GLuint index, const GLbyte *v)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 12;
- emit_header(gc->pc, X_GLrop_VertexAttrib4bvARB, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&index), 4);
- (void) memcpy((void *) (gc->pc + 8), (void *) (v), 4);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_VertexAttrib4dvARB 4200
-void
-__indirect_glVertexAttrib4dARB(GLuint index, GLdouble x, GLdouble y,
- GLdouble z, GLdouble w)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 40;
- emit_header(gc->pc, X_GLrop_VertexAttrib4dvARB, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&index), 4);
- (void) memcpy((void *) (gc->pc + 8), (void *) (&x), 8);
- (void) memcpy((void *) (gc->pc + 16), (void *) (&y), 8);
- (void) memcpy((void *) (gc->pc + 24), (void *) (&z), 8);
- (void) memcpy((void *) (gc->pc + 32), (void *) (&w), 8);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_VertexAttrib4dvARB 4200
-void
-__indirect_glVertexAttrib4dvARB(GLuint index, const GLdouble * v)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 40;
- emit_header(gc->pc, X_GLrop_VertexAttrib4dvARB, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&index), 4);
- (void) memcpy((void *) (gc->pc + 8), (void *) (v), 32);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_VertexAttrib4fvARB 4196
-void
-__indirect_glVertexAttrib4fARB(GLuint index, GLfloat x, GLfloat y, GLfloat z,
- GLfloat w)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 24;
- emit_header(gc->pc, X_GLrop_VertexAttrib4fvARB, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&index), 4);
- (void) memcpy((void *) (gc->pc + 8), (void *) (&x), 4);
- (void) memcpy((void *) (gc->pc + 12), (void *) (&y), 4);
- (void) memcpy((void *) (gc->pc + 16), (void *) (&z), 4);
- (void) memcpy((void *) (gc->pc + 20), (void *) (&w), 4);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_VertexAttrib4fvARB 4196
-void
-__indirect_glVertexAttrib4fvARB(GLuint index, const GLfloat * v)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 24;
- emit_header(gc->pc, X_GLrop_VertexAttrib4fvARB, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&index), 4);
- (void) memcpy((void *) (gc->pc + 8), (void *) (v), 16);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_VertexAttrib4ivARB 4231
-void
-__indirect_glVertexAttrib4ivARB(GLuint index, const GLint * v)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 24;
- emit_header(gc->pc, X_GLrop_VertexAttrib4ivARB, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&index), 4);
- (void) memcpy((void *) (gc->pc + 8), (void *) (v), 16);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_VertexAttrib4svARB 4192
-void
-__indirect_glVertexAttrib4sARB(GLuint index, GLshort x, GLshort y, GLshort z,
- GLshort w)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 16;
- emit_header(gc->pc, X_GLrop_VertexAttrib4svARB, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&index), 4);
- (void) memcpy((void *) (gc->pc + 8), (void *) (&x), 2);
- (void) memcpy((void *) (gc->pc + 10), (void *) (&y), 2);
- (void) memcpy((void *) (gc->pc + 12), (void *) (&z), 2);
- (void) memcpy((void *) (gc->pc + 14), (void *) (&w), 2);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_VertexAttrib4svARB 4192
-void
-__indirect_glVertexAttrib4svARB(GLuint index, const GLshort * v)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 16;
- emit_header(gc->pc, X_GLrop_VertexAttrib4svARB, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&index), 4);
- (void) memcpy((void *) (gc->pc + 8), (void *) (v), 8);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_VertexAttrib4ubvARB 4232
-void
-__indirect_glVertexAttrib4ubvARB(GLuint index, const GLubyte *v)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 12;
- emit_header(gc->pc, X_GLrop_VertexAttrib4ubvARB, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&index), 4);
- (void) memcpy((void *) (gc->pc + 8), (void *) (v), 4);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_VertexAttrib4uivARB 4234
-void
-__indirect_glVertexAttrib4uivARB(GLuint index, const GLuint * v)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 24;
- emit_header(gc->pc, X_GLrop_VertexAttrib4uivARB, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&index), 4);
- (void) memcpy((void *) (gc->pc + 8), (void *) (v), 16);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_VertexAttrib4usvARB 4233
-void
-__indirect_glVertexAttrib4usvARB(GLuint index, const GLushort * v)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 16;
- emit_header(gc->pc, X_GLrop_VertexAttrib4usvARB, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&index), 4);
- (void) memcpy((void *) (gc->pc + 8), (void *) (v), 8);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_BeginQueryARB 231
-void
-__indirect_glBeginQueryARB(GLenum target, GLuint id)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 12;
- emit_header(gc->pc, X_GLrop_BeginQueryARB, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&target), 4);
- (void) memcpy((void *) (gc->pc + 8), (void *) (&id), 4);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLsop_DeleteQueriesARB 161
-void
-__indirect_glDeleteQueriesARB(GLsizei n, const GLuint * ids)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- Display *const dpy = gc->currentDpy;
-#ifndef USE_XCB
- const GLuint cmdlen = 4 + __GLX_PAD((n * 4));
-#endif
- if (n < 0) {
- __glXSetError(gc, GL_INVALID_VALUE);
- return;
- }
- if (__builtin_expect((n >= 0) && (dpy != NULL), 1)) {
-#ifdef USE_XCB
- xcb_connection_t *c = XGetXCBConnection(dpy);
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- xcb_glx_delete_queries_arb(c, gc->currentContextTag, n, ids);
-#else
- GLubyte const *pc =
- __glXSetupSingleRequest(gc, X_GLsop_DeleteQueriesARB, cmdlen);
- (void) memcpy((void *) (pc + 0), (void *) (&n), 4);
- (void) memcpy((void *) (pc + 4), (void *) (ids), (n * 4));
- UnlockDisplay(dpy);
- SyncHandle();
-#endif /* USE_XCB */
- }
- return;
-}
-
-#define X_GLrop_EndQueryARB 232
-void
-__indirect_glEndQueryARB(GLenum target)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 8;
- emit_header(gc->pc, X_GLrop_EndQueryARB, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&target), 4);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLsop_GenQueriesARB 162
-void
-__indirect_glGenQueriesARB(GLsizei n, GLuint * ids)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- Display *const dpy = gc->currentDpy;
-#ifndef USE_XCB
- const GLuint cmdlen = 4;
-#endif
- if (n < 0) {
- __glXSetError(gc, GL_INVALID_VALUE);
- return;
- }
- if (__builtin_expect((n >= 0) && (dpy != NULL), 1)) {
-#ifdef USE_XCB
- xcb_connection_t *c = XGetXCBConnection(dpy);
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- xcb_glx_gen_queries_arb_reply_t *reply =
- xcb_glx_gen_queries_arb_reply(c,
- xcb_glx_gen_queries_arb(c,
- gc->
- currentContextTag,
- n), NULL);
- (void) memcpy(ids, xcb_glx_gen_queries_arb_data(reply),
- xcb_glx_gen_queries_arb_data_length(reply) *
- sizeof(GLuint));
- free(reply);
-#else
- GLubyte const *pc =
- __glXSetupSingleRequest(gc, X_GLsop_GenQueriesARB, cmdlen);
- (void) memcpy((void *) (pc + 0), (void *) (&n), 4);
- (void) __glXReadReply(dpy, 4, ids, GL_TRUE);
- UnlockDisplay(dpy);
- SyncHandle();
-#endif /* USE_XCB */
- }
- return;
-}
-
-#define X_GLsop_GetQueryObjectivARB 165
-void
-__indirect_glGetQueryObjectivARB(GLuint id, GLenum pname, GLint * params)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- Display *const dpy = gc->currentDpy;
-#ifndef USE_XCB
- const GLuint cmdlen = 8;
-#endif
- if (__builtin_expect(dpy != NULL, 1)) {
-#ifdef USE_XCB
- xcb_connection_t *c = XGetXCBConnection(dpy);
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- xcb_glx_get_query_objectiv_arb_reply_t *reply =
- xcb_glx_get_query_objectiv_arb_reply(c,
- xcb_glx_get_query_objectiv_arb
- (c, gc->currentContextTag,
- id, pname), NULL);
- if (xcb_glx_get_query_objectiv_arb_data_length(reply) == 0)
- (void) memcpy(params, &reply->datum, sizeof(reply->datum));
- else
- (void) memcpy(params, xcb_glx_get_query_objectiv_arb_data(reply),
- xcb_glx_get_query_objectiv_arb_data_length(reply) *
- sizeof(GLint));
- free(reply);
-#else
- GLubyte const *pc =
- __glXSetupSingleRequest(gc, X_GLsop_GetQueryObjectivARB, cmdlen);
- (void) memcpy((void *) (pc + 0), (void *) (&id), 4);
- (void) memcpy((void *) (pc + 4), (void *) (&pname), 4);
- (void) __glXReadReply(dpy, 4, params, GL_FALSE);
- UnlockDisplay(dpy);
- SyncHandle();
-#endif /* USE_XCB */
- }
- return;
-}
-
-#define X_GLsop_GetQueryObjectuivARB 166
-void
-__indirect_glGetQueryObjectuivARB(GLuint id, GLenum pname, GLuint * params)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- Display *const dpy = gc->currentDpy;
-#ifndef USE_XCB
- const GLuint cmdlen = 8;
-#endif
- if (__builtin_expect(dpy != NULL, 1)) {
-#ifdef USE_XCB
- xcb_connection_t *c = XGetXCBConnection(dpy);
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- xcb_glx_get_query_objectuiv_arb_reply_t *reply =
- xcb_glx_get_query_objectuiv_arb_reply(c,
- xcb_glx_get_query_objectuiv_arb
- (c, gc->currentContextTag,
- id, pname), NULL);
- if (xcb_glx_get_query_objectuiv_arb_data_length(reply) == 0)
- (void) memcpy(params, &reply->datum, sizeof(reply->datum));
- else
- (void) memcpy(params, xcb_glx_get_query_objectuiv_arb_data(reply),
- xcb_glx_get_query_objectuiv_arb_data_length(reply) *
- sizeof(GLuint));
- free(reply);
-#else
- GLubyte const *pc =
- __glXSetupSingleRequest(gc, X_GLsop_GetQueryObjectuivARB, cmdlen);
- (void) memcpy((void *) (pc + 0), (void *) (&id), 4);
- (void) memcpy((void *) (pc + 4), (void *) (&pname), 4);
- (void) __glXReadReply(dpy, 4, params, GL_FALSE);
- UnlockDisplay(dpy);
- SyncHandle();
-#endif /* USE_XCB */
- }
- return;
-}
-
-#define X_GLsop_GetQueryivARB 164
-void
-__indirect_glGetQueryivARB(GLenum target, GLenum pname, GLint * params)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- Display *const dpy = gc->currentDpy;
-#ifndef USE_XCB
- const GLuint cmdlen = 8;
-#endif
- if (__builtin_expect(dpy != NULL, 1)) {
-#ifdef USE_XCB
- xcb_connection_t *c = XGetXCBConnection(dpy);
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- xcb_glx_get_queryiv_arb_reply_t *reply =
- xcb_glx_get_queryiv_arb_reply(c,
- xcb_glx_get_queryiv_arb(c,
- gc->
- currentContextTag,
- target,
- pname),
- NULL);
- if (xcb_glx_get_queryiv_arb_data_length(reply) == 0)
- (void) memcpy(params, &reply->datum, sizeof(reply->datum));
- else
- (void) memcpy(params, xcb_glx_get_queryiv_arb_data(reply),
- xcb_glx_get_queryiv_arb_data_length(reply) *
- sizeof(GLint));
- free(reply);
-#else
- GLubyte const *pc =
- __glXSetupSingleRequest(gc, X_GLsop_GetQueryivARB, cmdlen);
- (void) memcpy((void *) (pc + 0), (void *) (&target), 4);
- (void) memcpy((void *) (pc + 4), (void *) (&pname), 4);
- (void) __glXReadReply(dpy, 4, params, GL_FALSE);
- UnlockDisplay(dpy);
- SyncHandle();
-#endif /* USE_XCB */
- }
- return;
-}
-
-#define X_GLsop_IsQueryARB 163
-GLboolean
-__indirect_glIsQueryARB(GLuint id)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- Display *const dpy = gc->currentDpy;
- GLboolean retval = (GLboolean) 0;
-#ifndef USE_XCB
- const GLuint cmdlen = 4;
-#endif
- if (__builtin_expect(dpy != NULL, 1)) {
-#ifdef USE_XCB
- xcb_connection_t *c = XGetXCBConnection(dpy);
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- xcb_glx_is_query_arb_reply_t *reply =
- xcb_glx_is_query_arb_reply(c,
- xcb_glx_is_query_arb(c,
- gc->
- currentContextTag,
- id), NULL);
- retval = reply->ret_val;
- free(reply);
-#else
- GLubyte const *pc =
- __glXSetupSingleRequest(gc, X_GLsop_IsQueryARB, cmdlen);
- (void) memcpy((void *) (pc + 0), (void *) (&id), 4);
- retval = (GLboolean) __glXReadReply(dpy, 0, NULL, GL_FALSE);
- UnlockDisplay(dpy);
- SyncHandle();
-#endif /* USE_XCB */
- }
- return retval;
-}
-
-#define X_GLrop_DrawBuffersARB 233
-void
-__indirect_glDrawBuffersARB(GLsizei n, const GLenum * bufs)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 8 + __GLX_PAD((n * 4));
- if (n < 0) {
- __glXSetError(gc, GL_INVALID_VALUE);
- return;
- }
- if (__builtin_expect((n >= 0) && (gc->currentDpy != NULL), 1)) {
- if (cmdlen <= gc->maxSmallRenderCommandSize) {
- if ((gc->pc + cmdlen) > gc->bufEnd) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
- emit_header(gc->pc, X_GLrop_DrawBuffersARB, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&n), 4);
- (void) memcpy((void *) (gc->pc + 8), (void *) (bufs), (n * 4));
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
- } else {
- const GLint op = X_GLrop_DrawBuffersARB;
- const GLuint cmdlenLarge = cmdlen + 4;
- GLubyte *const pc = __glXFlushRenderBuffer(gc, gc->pc);
- (void) memcpy((void *) (pc + 0), (void *) (&cmdlenLarge), 4);
- (void) memcpy((void *) (pc + 4), (void *) (&op), 4);
- (void) memcpy((void *) (pc + 8), (void *) (&n), 4);
- __glXSendLargeCommand(gc, pc, 12, bufs, (n * 4));
- }
- }
-}
-
-#define X_GLrop_RenderbufferStorageMultisample 4331
-void
-__indirect_glRenderbufferStorageMultisample(GLenum target, GLsizei samples,
- GLenum internalformat,
- GLsizei width, GLsizei height)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 24;
- emit_header(gc->pc, X_GLrop_RenderbufferStorageMultisample, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&target), 4);
- (void) memcpy((void *) (gc->pc + 8), (void *) (&samples), 4);
- (void) memcpy((void *) (gc->pc + 12), (void *) (&internalformat), 4);
- (void) memcpy((void *) (gc->pc + 16), (void *) (&width), 4);
- (void) memcpy((void *) (gc->pc + 20), (void *) (&height), 4);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_SampleMaskSGIS 2048
-void
-__indirect_glSampleMaskSGIS(GLclampf value, GLboolean invert)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 12;
- emit_header(gc->pc, X_GLrop_SampleMaskSGIS, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&value), 4);
- (void) memcpy((void *) (gc->pc + 8), (void *) (&invert), 1);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_SamplePatternSGIS 2049
-void
-__indirect_glSamplePatternSGIS(GLenum pattern)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 8;
- emit_header(gc->pc, X_GLrop_SamplePatternSGIS, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&pattern), 4);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_PointParameterfEXT 2065
-void
-__indirect_glPointParameterfEXT(GLenum pname, GLfloat param)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 12;
- emit_header(gc->pc, X_GLrop_PointParameterfEXT, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&pname), 4);
- (void) memcpy((void *) (gc->pc + 8), (void *) (&param), 4);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_PointParameterfvEXT 2066
-void
-__indirect_glPointParameterfvEXT(GLenum pname, const GLfloat * params)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint compsize = __glPointParameterfvEXT_size(pname);
- const GLuint cmdlen = 8 + __GLX_PAD((compsize * 4));
- emit_header(gc->pc, X_GLrop_PointParameterfvEXT, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&pname), 4);
- (void) memcpy((void *) (gc->pc + 8), (void *) (params), (compsize * 4));
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_SecondaryColor3bvEXT 4126
-void
-__indirect_glSecondaryColor3bEXT(GLbyte red, GLbyte green, GLbyte blue)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 8;
- emit_header(gc->pc, X_GLrop_SecondaryColor3bvEXT, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&red), 1);
- (void) memcpy((void *) (gc->pc + 5), (void *) (&green), 1);
- (void) memcpy((void *) (gc->pc + 6), (void *) (&blue), 1);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_SecondaryColor3bvEXT 4126
-void
-__indirect_glSecondaryColor3bvEXT(const GLbyte *v)
-{
- generic_3_byte(X_GLrop_SecondaryColor3bvEXT, v);
-}
-
-#define X_GLrop_SecondaryColor3dvEXT 4130
-void
-__indirect_glSecondaryColor3dEXT(GLdouble red, GLdouble green, GLdouble blue)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 28;
- emit_header(gc->pc, X_GLrop_SecondaryColor3dvEXT, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&red), 8);
- (void) memcpy((void *) (gc->pc + 12), (void *) (&green), 8);
- (void) memcpy((void *) (gc->pc + 20), (void *) (&blue), 8);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_SecondaryColor3dvEXT 4130
-void
-__indirect_glSecondaryColor3dvEXT(const GLdouble * v)
-{
- generic_24_byte(X_GLrop_SecondaryColor3dvEXT, v);
-}
-
-#define X_GLrop_SecondaryColor3fvEXT 4129
-void
-__indirect_glSecondaryColor3fEXT(GLfloat red, GLfloat green, GLfloat blue)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 16;
- emit_header(gc->pc, X_GLrop_SecondaryColor3fvEXT, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&red), 4);
- (void) memcpy((void *) (gc->pc + 8), (void *) (&green), 4);
- (void) memcpy((void *) (gc->pc + 12), (void *) (&blue), 4);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_SecondaryColor3fvEXT 4129
-void
-__indirect_glSecondaryColor3fvEXT(const GLfloat * v)
-{
- generic_12_byte(X_GLrop_SecondaryColor3fvEXT, v);
-}
-
-#define X_GLrop_SecondaryColor3ivEXT 4128
-void
-__indirect_glSecondaryColor3iEXT(GLint red, GLint green, GLint blue)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 16;
- emit_header(gc->pc, X_GLrop_SecondaryColor3ivEXT, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&red), 4);
- (void) memcpy((void *) (gc->pc + 8), (void *) (&green), 4);
- (void) memcpy((void *) (gc->pc + 12), (void *) (&blue), 4);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_SecondaryColor3ivEXT 4128
-void
-__indirect_glSecondaryColor3ivEXT(const GLint * v)
-{
- generic_12_byte(X_GLrop_SecondaryColor3ivEXT, v);
-}
-
-#define X_GLrop_SecondaryColor3svEXT 4127
-void
-__indirect_glSecondaryColor3sEXT(GLshort red, GLshort green, GLshort blue)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 12;
- emit_header(gc->pc, X_GLrop_SecondaryColor3svEXT, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&red), 2);
- (void) memcpy((void *) (gc->pc + 6), (void *) (&green), 2);
- (void) memcpy((void *) (gc->pc + 8), (void *) (&blue), 2);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_SecondaryColor3svEXT 4127
-void
-__indirect_glSecondaryColor3svEXT(const GLshort * v)
-{
- generic_6_byte(X_GLrop_SecondaryColor3svEXT, v);
-}
-
-#define X_GLrop_SecondaryColor3ubvEXT 4131
-void
-__indirect_glSecondaryColor3ubEXT(GLubyte red, GLubyte green, GLubyte blue)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 8;
- emit_header(gc->pc, X_GLrop_SecondaryColor3ubvEXT, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&red), 1);
- (void) memcpy((void *) (gc->pc + 5), (void *) (&green), 1);
- (void) memcpy((void *) (gc->pc + 6), (void *) (&blue), 1);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_SecondaryColor3ubvEXT 4131
-void
-__indirect_glSecondaryColor3ubvEXT(const GLubyte *v)
-{
- generic_3_byte(X_GLrop_SecondaryColor3ubvEXT, v);
-}
-
-#define X_GLrop_SecondaryColor3uivEXT 4133
-void
-__indirect_glSecondaryColor3uiEXT(GLuint red, GLuint green, GLuint blue)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 16;
- emit_header(gc->pc, X_GLrop_SecondaryColor3uivEXT, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&red), 4);
- (void) memcpy((void *) (gc->pc + 8), (void *) (&green), 4);
- (void) memcpy((void *) (gc->pc + 12), (void *) (&blue), 4);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_SecondaryColor3uivEXT 4133
-void
-__indirect_glSecondaryColor3uivEXT(const GLuint * v)
-{
- generic_12_byte(X_GLrop_SecondaryColor3uivEXT, v);
-}
-
-#define X_GLrop_SecondaryColor3usvEXT 4132
-void
-__indirect_glSecondaryColor3usEXT(GLushort red, GLushort green, GLushort blue)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 12;
- emit_header(gc->pc, X_GLrop_SecondaryColor3usvEXT, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&red), 2);
- (void) memcpy((void *) (gc->pc + 6), (void *) (&green), 2);
- (void) memcpy((void *) (gc->pc + 8), (void *) (&blue), 2);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_SecondaryColor3usvEXT 4132
-void
-__indirect_glSecondaryColor3usvEXT(const GLushort * v)
-{
- generic_6_byte(X_GLrop_SecondaryColor3usvEXT, v);
-}
-
-#define X_GLrop_FogCoorddvEXT 4125
-void
-__indirect_glFogCoorddEXT(GLdouble coord)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 12;
- emit_header(gc->pc, X_GLrop_FogCoorddvEXT, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&coord), 8);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_FogCoorddvEXT 4125
-void
-__indirect_glFogCoorddvEXT(const GLdouble * coord)
-{
- generic_8_byte(X_GLrop_FogCoorddvEXT, coord);
-}
-
-#define X_GLrop_FogCoordfvEXT 4124
-void
-__indirect_glFogCoordfEXT(GLfloat coord)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 8;
- emit_header(gc->pc, X_GLrop_FogCoordfvEXT, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&coord), 4);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_FogCoordfvEXT 4124
-void
-__indirect_glFogCoordfvEXT(const GLfloat * coord)
-{
- generic_4_byte(X_GLrop_FogCoordfvEXT, coord);
-}
-
-#define X_GLrop_BlendFuncSeparateEXT 4134
-void
-__indirect_glBlendFuncSeparateEXT(GLenum sfactorRGB, GLenum dfactorRGB,
- GLenum sfactorAlpha, GLenum dfactorAlpha)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 20;
- emit_header(gc->pc, X_GLrop_BlendFuncSeparateEXT, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&sfactorRGB), 4);
- (void) memcpy((void *) (gc->pc + 8), (void *) (&dfactorRGB), 4);
- (void) memcpy((void *) (gc->pc + 12), (void *) (&sfactorAlpha), 4);
- (void) memcpy((void *) (gc->pc + 16), (void *) (&dfactorAlpha), 4);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_WindowPos3fvMESA 230
-void
-__indirect_glWindowPos3fMESA(GLfloat x, GLfloat y, GLfloat z)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 16;
- emit_header(gc->pc, X_GLrop_WindowPos3fvMESA, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&x), 4);
- (void) memcpy((void *) (gc->pc + 8), (void *) (&y), 4);
- (void) memcpy((void *) (gc->pc + 12), (void *) (&z), 4);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_WindowPos3fvMESA 230
-void
-__indirect_glWindowPos3fvMESA(const GLfloat * v)
-{
- generic_12_byte(X_GLrop_WindowPos3fvMESA, v);
-}
-
-#define X_GLvop_AreProgramsResidentNV 1293
-GLboolean
-__indirect_glAreProgramsResidentNV(GLsizei n, const GLuint * ids,
- GLboolean * residences)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- Display *const dpy = gc->currentDpy;
- GLboolean retval = (GLboolean) 0;
- const GLuint cmdlen = 4 + __GLX_PAD((n * 4));
- if (n < 0) {
- __glXSetError(gc, GL_INVALID_VALUE);
- return 0;
- }
- if (__builtin_expect((n >= 0) && (dpy != NULL), 1)) {
- GLubyte const *pc =
- __glXSetupVendorRequest(gc, X_GLXVendorPrivateWithReply,
- X_GLvop_AreProgramsResidentNV, cmdlen);
- (void) memcpy((void *) (pc + 0), (void *) (&n), 4);
- (void) memcpy((void *) (pc + 4), (void *) (ids), (n * 4));
- retval = (GLboolean) __glXReadReply(dpy, 1, residences, GL_FALSE);
- UnlockDisplay(dpy);
- SyncHandle();
- }
- return retval;
-}
-
-#define X_GLrop_BindProgramNV 4180
-void
-__indirect_glBindProgramNV(GLenum target, GLuint program)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 12;
- emit_header(gc->pc, X_GLrop_BindProgramNV, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&target), 4);
- (void) memcpy((void *) (gc->pc + 8), (void *) (&program), 4);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLvop_DeleteProgramsNV 1294
-void
-__indirect_glDeleteProgramsNV(GLsizei n, const GLuint * programs)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- Display *const dpy = gc->currentDpy;
- const GLuint cmdlen = 4 + __GLX_PAD((n * 4));
- if (n < 0) {
- __glXSetError(gc, GL_INVALID_VALUE);
- return;
- }
- if (__builtin_expect((n >= 0) && (dpy != NULL), 1)) {
- GLubyte const *pc =
- __glXSetupVendorRequest(gc, X_GLXVendorPrivate,
- X_GLvop_DeleteProgramsNV, cmdlen);
- (void) memcpy((void *) (pc + 0), (void *) (&n), 4);
- (void) memcpy((void *) (pc + 4), (void *) (programs), (n * 4));
- UnlockDisplay(dpy);
- SyncHandle();
- }
- return;
-}
-
-#define X_GLrop_ExecuteProgramNV 4181
-void
-__indirect_glExecuteProgramNV(GLenum target, GLuint id,
- const GLfloat * params)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 28;
- emit_header(gc->pc, X_GLrop_ExecuteProgramNV, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&target), 4);
- (void) memcpy((void *) (gc->pc + 8), (void *) (&id), 4);
- (void) memcpy((void *) (gc->pc + 12), (void *) (params), 16);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLvop_GenProgramsNV 1295
-void
-__indirect_glGenProgramsNV(GLsizei n, GLuint * programs)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- Display *const dpy = gc->currentDpy;
- const GLuint cmdlen = 4;
- if (n < 0) {
- __glXSetError(gc, GL_INVALID_VALUE);
- return;
- }
- if (__builtin_expect((n >= 0) && (dpy != NULL), 1)) {
- GLubyte const *pc =
- __glXSetupVendorRequest(gc, X_GLXVendorPrivateWithReply,
- X_GLvop_GenProgramsNV, cmdlen);
- (void) memcpy((void *) (pc + 0), (void *) (&n), 4);
- (void) __glXReadReply(dpy, 4, programs, GL_TRUE);
- UnlockDisplay(dpy);
- SyncHandle();
- }
- return;
-}
-
-#define X_GLvop_GetProgramParameterdvNV 1297
-void
-__indirect_glGetProgramParameterdvNV(GLenum target, GLuint index,
- GLenum pname, GLdouble * params)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- Display *const dpy = gc->currentDpy;
- const GLuint cmdlen = 12;
- if (__builtin_expect(dpy != NULL, 1)) {
- GLubyte const *pc =
- __glXSetupVendorRequest(gc, X_GLXVendorPrivateWithReply,
- X_GLvop_GetProgramParameterdvNV, cmdlen);
- (void) memcpy((void *) (pc + 0), (void *) (&target), 4);
- (void) memcpy((void *) (pc + 4), (void *) (&index), 4);
- (void) memcpy((void *) (pc + 8), (void *) (&pname), 4);
- (void) __glXReadReply(dpy, 8, params, GL_FALSE);
- UnlockDisplay(dpy);
- SyncHandle();
- }
- return;
-}
-
-#define X_GLvop_GetProgramParameterfvNV 1296
-void
-__indirect_glGetProgramParameterfvNV(GLenum target, GLuint index,
- GLenum pname, GLfloat * params)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- Display *const dpy = gc->currentDpy;
- const GLuint cmdlen = 12;
- if (__builtin_expect(dpy != NULL, 1)) {
- GLubyte const *pc =
- __glXSetupVendorRequest(gc, X_GLXVendorPrivateWithReply,
- X_GLvop_GetProgramParameterfvNV, cmdlen);
- (void) memcpy((void *) (pc + 0), (void *) (&target), 4);
- (void) memcpy((void *) (pc + 4), (void *) (&index), 4);
- (void) memcpy((void *) (pc + 8), (void *) (&pname), 4);
- (void) __glXReadReply(dpy, 4, params, GL_FALSE);
- UnlockDisplay(dpy);
- SyncHandle();
- }
- return;
-}
-
-#define X_GLvop_GetProgramStringNV 1299
-void
-__indirect_glGetProgramStringNV(GLuint id, GLenum pname, GLubyte *program)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- Display *const dpy = gc->currentDpy;
- const GLuint cmdlen = 8;
- if (__builtin_expect(dpy != NULL, 1)) {
- GLubyte const *pc =
- __glXSetupVendorRequest(gc, X_GLXVendorPrivateWithReply,
- X_GLvop_GetProgramStringNV, cmdlen);
- (void) memcpy((void *) (pc + 0), (void *) (&id), 4);
- (void) memcpy((void *) (pc + 4), (void *) (&pname), 4);
- (void) __glXReadReply(dpy, 1, program, GL_TRUE);
- UnlockDisplay(dpy);
- SyncHandle();
- }
- return;
-}
-
-#define X_GLvop_GetProgramivNV 1298
-void
-__indirect_glGetProgramivNV(GLuint id, GLenum pname, GLint * params)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- Display *const dpy = gc->currentDpy;
- const GLuint cmdlen = 8;
- if (__builtin_expect(dpy != NULL, 1)) {
- GLubyte const *pc =
- __glXSetupVendorRequest(gc, X_GLXVendorPrivateWithReply,
- X_GLvop_GetProgramivNV, cmdlen);
- (void) memcpy((void *) (pc + 0), (void *) (&id), 4);
- (void) memcpy((void *) (pc + 4), (void *) (&pname), 4);
- (void) __glXReadReply(dpy, 4, params, GL_FALSE);
- UnlockDisplay(dpy);
- SyncHandle();
- }
- return;
-}
-
-#define X_GLvop_GetTrackMatrixivNV 1300
-void
-__indirect_glGetTrackMatrixivNV(GLenum target, GLuint address, GLenum pname,
- GLint * params)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- Display *const dpy = gc->currentDpy;
- const GLuint cmdlen = 12;
- if (__builtin_expect(dpy != NULL, 1)) {
- GLubyte const *pc =
- __glXSetupVendorRequest(gc, X_GLXVendorPrivateWithReply,
- X_GLvop_GetTrackMatrixivNV, cmdlen);
- (void) memcpy((void *) (pc + 0), (void *) (&target), 4);
- (void) memcpy((void *) (pc + 4), (void *) (&address), 4);
- (void) memcpy((void *) (pc + 8), (void *) (&pname), 4);
- (void) __glXReadReply(dpy, 4, params, GL_FALSE);
- UnlockDisplay(dpy);
- SyncHandle();
- }
- return;
-}
-
-#define X_GLvop_GetVertexAttribdvNV 1301
-void
-__indirect_glGetVertexAttribdvNV(GLuint index, GLenum pname,
- GLdouble * params)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- Display *const dpy = gc->currentDpy;
- const GLuint cmdlen = 8;
- if (__builtin_expect(dpy != NULL, 1)) {
- GLubyte const *pc =
- __glXSetupVendorRequest(gc, X_GLXVendorPrivateWithReply,
- X_GLvop_GetVertexAttribdvNV, cmdlen);
- (void) memcpy((void *) (pc + 0), (void *) (&index), 4);
- (void) memcpy((void *) (pc + 4), (void *) (&pname), 4);
- (void) __glXReadReply(dpy, 8, params, GL_FALSE);
- UnlockDisplay(dpy);
- SyncHandle();
- }
- return;
-}
-
-#define X_GLvop_GetVertexAttribfvNV 1302
-void
-__indirect_glGetVertexAttribfvNV(GLuint index, GLenum pname, GLfloat * params)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- Display *const dpy = gc->currentDpy;
- const GLuint cmdlen = 8;
- if (__builtin_expect(dpy != NULL, 1)) {
- GLubyte const *pc =
- __glXSetupVendorRequest(gc, X_GLXVendorPrivateWithReply,
- X_GLvop_GetVertexAttribfvNV, cmdlen);
- (void) memcpy((void *) (pc + 0), (void *) (&index), 4);
- (void) memcpy((void *) (pc + 4), (void *) (&pname), 4);
- (void) __glXReadReply(dpy, 4, params, GL_FALSE);
- UnlockDisplay(dpy);
- SyncHandle();
- }
- return;
-}
-
-#define X_GLvop_GetVertexAttribivNV 1303
-void
-__indirect_glGetVertexAttribivNV(GLuint index, GLenum pname, GLint * params)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- Display *const dpy = gc->currentDpy;
- const GLuint cmdlen = 8;
- if (__builtin_expect(dpy != NULL, 1)) {
- GLubyte const *pc =
- __glXSetupVendorRequest(gc, X_GLXVendorPrivateWithReply,
- X_GLvop_GetVertexAttribivNV, cmdlen);
- (void) memcpy((void *) (pc + 0), (void *) (&index), 4);
- (void) memcpy((void *) (pc + 4), (void *) (&pname), 4);
- (void) __glXReadReply(dpy, 4, params, GL_FALSE);
- UnlockDisplay(dpy);
- SyncHandle();
- }
- return;
-}
-
-#define X_GLvop_IsProgramNV 1304
-GLboolean
-__indirect_glIsProgramNV(GLuint program)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- Display *const dpy = gc->currentDpy;
- GLboolean retval = (GLboolean) 0;
- const GLuint cmdlen = 4;
- if (__builtin_expect(dpy != NULL, 1)) {
- GLubyte const *pc =
- __glXSetupVendorRequest(gc, X_GLXVendorPrivateWithReply,
- X_GLvop_IsProgramNV, cmdlen);
- (void) memcpy((void *) (pc + 0), (void *) (&program), 4);
- retval = (GLboolean) __glXReadReply(dpy, 0, NULL, GL_FALSE);
- UnlockDisplay(dpy);
- SyncHandle();
- }
- return retval;
-}
-
-#define X_GLrop_LoadProgramNV 4183
-void
-__indirect_glLoadProgramNV(GLenum target, GLuint id, GLsizei len,
- const GLubyte *program)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 16 + __GLX_PAD(len);
- if (len < 0) {
- __glXSetError(gc, GL_INVALID_VALUE);
- return;
- }
- if (__builtin_expect(len >= 0, 1)) {
- emit_header(gc->pc, X_GLrop_LoadProgramNV, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&target), 4);
- (void) memcpy((void *) (gc->pc + 8), (void *) (&id), 4);
- (void) memcpy((void *) (gc->pc + 12), (void *) (&len), 4);
- (void) memcpy((void *) (gc->pc + 16), (void *) (program), len);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
- }
-}
-
-#define X_GLrop_ProgramParameters4dvNV 4187
-void
-__indirect_glProgramParameters4dvNV(GLenum target, GLuint index, GLuint num,
- const GLdouble * params)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 16 + __GLX_PAD((num * 32));
- if (num < 0) {
- __glXSetError(gc, GL_INVALID_VALUE);
- return;
- }
- if (__builtin_expect(num >= 0, 1)) {
- emit_header(gc->pc, X_GLrop_ProgramParameters4dvNV, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&target), 4);
- (void) memcpy((void *) (gc->pc + 8), (void *) (&index), 4);
- (void) memcpy((void *) (gc->pc + 12), (void *) (&num), 4);
- (void) memcpy((void *) (gc->pc + 16), (void *) (params), (num * 32));
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
- }
-}
-
-#define X_GLrop_ProgramParameters4fvNV 4186
-void
-__indirect_glProgramParameters4fvNV(GLenum target, GLuint index, GLuint num,
- const GLfloat * params)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 16 + __GLX_PAD((num * 16));
- if (num < 0) {
- __glXSetError(gc, GL_INVALID_VALUE);
- return;
- }
- if (__builtin_expect(num >= 0, 1)) {
- emit_header(gc->pc, X_GLrop_ProgramParameters4fvNV, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&target), 4);
- (void) memcpy((void *) (gc->pc + 8), (void *) (&index), 4);
- (void) memcpy((void *) (gc->pc + 12), (void *) (&num), 4);
- (void) memcpy((void *) (gc->pc + 16), (void *) (params), (num * 16));
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
- }
-}
-
-#define X_GLrop_RequestResidentProgramsNV 4182
-void
-__indirect_glRequestResidentProgramsNV(GLsizei n, const GLuint * ids)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 8 + __GLX_PAD((n * 4));
- if (n < 0) {
- __glXSetError(gc, GL_INVALID_VALUE);
- return;
- }
- if (__builtin_expect(n >= 0, 1)) {
- emit_header(gc->pc, X_GLrop_RequestResidentProgramsNV, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&n), 4);
- (void) memcpy((void *) (gc->pc + 8), (void *) (ids), (n * 4));
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
- }
-}
-
-#define X_GLrop_TrackMatrixNV 4188
-void
-__indirect_glTrackMatrixNV(GLenum target, GLuint address, GLenum matrix,
- GLenum transform)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 20;
- emit_header(gc->pc, X_GLrop_TrackMatrixNV, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&target), 4);
- (void) memcpy((void *) (gc->pc + 8), (void *) (&address), 4);
- (void) memcpy((void *) (gc->pc + 12), (void *) (&matrix), 4);
- (void) memcpy((void *) (gc->pc + 16), (void *) (&transform), 4);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_VertexAttrib1dvNV 4273
-void
-__indirect_glVertexAttrib1dNV(GLuint index, GLdouble x)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 16;
- emit_header(gc->pc, X_GLrop_VertexAttrib1dvNV, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&index), 4);
- (void) memcpy((void *) (gc->pc + 8), (void *) (&x), 8);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_VertexAttrib1dvNV 4273
-void
-__indirect_glVertexAttrib1dvNV(GLuint index, const GLdouble * v)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 16;
- emit_header(gc->pc, X_GLrop_VertexAttrib1dvNV, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&index), 4);
- (void) memcpy((void *) (gc->pc + 8), (void *) (v), 8);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_VertexAttrib1fvNV 4269
-void
-__indirect_glVertexAttrib1fNV(GLuint index, GLfloat x)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 12;
- emit_header(gc->pc, X_GLrop_VertexAttrib1fvNV, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&index), 4);
- (void) memcpy((void *) (gc->pc + 8), (void *) (&x), 4);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_VertexAttrib1fvNV 4269
-void
-__indirect_glVertexAttrib1fvNV(GLuint index, const GLfloat * v)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 12;
- emit_header(gc->pc, X_GLrop_VertexAttrib1fvNV, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&index), 4);
- (void) memcpy((void *) (gc->pc + 8), (void *) (v), 4);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_VertexAttrib1svNV 4265
-void
-__indirect_glVertexAttrib1sNV(GLuint index, GLshort x)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 12;
- emit_header(gc->pc, X_GLrop_VertexAttrib1svNV, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&index), 4);
- (void) memcpy((void *) (gc->pc + 8), (void *) (&x), 2);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_VertexAttrib1svNV 4265
-void
-__indirect_glVertexAttrib1svNV(GLuint index, const GLshort * v)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 12;
- emit_header(gc->pc, X_GLrop_VertexAttrib1svNV, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&index), 4);
- (void) memcpy((void *) (gc->pc + 8), (void *) (v), 2);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_VertexAttrib2dvNV 4274
-void
-__indirect_glVertexAttrib2dNV(GLuint index, GLdouble x, GLdouble y)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 24;
- emit_header(gc->pc, X_GLrop_VertexAttrib2dvNV, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&index), 4);
- (void) memcpy((void *) (gc->pc + 8), (void *) (&x), 8);
- (void) memcpy((void *) (gc->pc + 16), (void *) (&y), 8);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_VertexAttrib2dvNV 4274
-void
-__indirect_glVertexAttrib2dvNV(GLuint index, const GLdouble * v)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 24;
- emit_header(gc->pc, X_GLrop_VertexAttrib2dvNV, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&index), 4);
- (void) memcpy((void *) (gc->pc + 8), (void *) (v), 16);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_VertexAttrib2fvNV 4270
-void
-__indirect_glVertexAttrib2fNV(GLuint index, GLfloat x, GLfloat y)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 16;
- emit_header(gc->pc, X_GLrop_VertexAttrib2fvNV, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&index), 4);
- (void) memcpy((void *) (gc->pc + 8), (void *) (&x), 4);
- (void) memcpy((void *) (gc->pc + 12), (void *) (&y), 4);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_VertexAttrib2fvNV 4270
-void
-__indirect_glVertexAttrib2fvNV(GLuint index, const GLfloat * v)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 16;
- emit_header(gc->pc, X_GLrop_VertexAttrib2fvNV, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&index), 4);
- (void) memcpy((void *) (gc->pc + 8), (void *) (v), 8);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_VertexAttrib2svNV 4266
-void
-__indirect_glVertexAttrib2sNV(GLuint index, GLshort x, GLshort y)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 12;
- emit_header(gc->pc, X_GLrop_VertexAttrib2svNV, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&index), 4);
- (void) memcpy((void *) (gc->pc + 8), (void *) (&x), 2);
- (void) memcpy((void *) (gc->pc + 10), (void *) (&y), 2);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_VertexAttrib2svNV 4266
-void
-__indirect_glVertexAttrib2svNV(GLuint index, const GLshort * v)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 12;
- emit_header(gc->pc, X_GLrop_VertexAttrib2svNV, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&index), 4);
- (void) memcpy((void *) (gc->pc + 8), (void *) (v), 4);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_VertexAttrib3dvNV 4275
-void
-__indirect_glVertexAttrib3dNV(GLuint index, GLdouble x, GLdouble y,
- GLdouble z)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 32;
- emit_header(gc->pc, X_GLrop_VertexAttrib3dvNV, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&index), 4);
- (void) memcpy((void *) (gc->pc + 8), (void *) (&x), 8);
- (void) memcpy((void *) (gc->pc + 16), (void *) (&y), 8);
- (void) memcpy((void *) (gc->pc + 24), (void *) (&z), 8);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_VertexAttrib3dvNV 4275
-void
-__indirect_glVertexAttrib3dvNV(GLuint index, const GLdouble * v)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 32;
- emit_header(gc->pc, X_GLrop_VertexAttrib3dvNV, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&index), 4);
- (void) memcpy((void *) (gc->pc + 8), (void *) (v), 24);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_VertexAttrib3fvNV 4271
-void
-__indirect_glVertexAttrib3fNV(GLuint index, GLfloat x, GLfloat y, GLfloat z)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 20;
- emit_header(gc->pc, X_GLrop_VertexAttrib3fvNV, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&index), 4);
- (void) memcpy((void *) (gc->pc + 8), (void *) (&x), 4);
- (void) memcpy((void *) (gc->pc + 12), (void *) (&y), 4);
- (void) memcpy((void *) (gc->pc + 16), (void *) (&z), 4);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_VertexAttrib3fvNV 4271
-void
-__indirect_glVertexAttrib3fvNV(GLuint index, const GLfloat * v)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 20;
- emit_header(gc->pc, X_GLrop_VertexAttrib3fvNV, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&index), 4);
- (void) memcpy((void *) (gc->pc + 8), (void *) (v), 12);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_VertexAttrib3svNV 4267
-void
-__indirect_glVertexAttrib3sNV(GLuint index, GLshort x, GLshort y, GLshort z)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 16;
- emit_header(gc->pc, X_GLrop_VertexAttrib3svNV, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&index), 4);
- (void) memcpy((void *) (gc->pc + 8), (void *) (&x), 2);
- (void) memcpy((void *) (gc->pc + 10), (void *) (&y), 2);
- (void) memcpy((void *) (gc->pc + 12), (void *) (&z), 2);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_VertexAttrib3svNV 4267
-void
-__indirect_glVertexAttrib3svNV(GLuint index, const GLshort * v)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 16;
- emit_header(gc->pc, X_GLrop_VertexAttrib3svNV, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&index), 4);
- (void) memcpy((void *) (gc->pc + 8), (void *) (v), 6);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_VertexAttrib4dvNV 4276
-void
-__indirect_glVertexAttrib4dNV(GLuint index, GLdouble x, GLdouble y,
- GLdouble z, GLdouble w)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 40;
- emit_header(gc->pc, X_GLrop_VertexAttrib4dvNV, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&index), 4);
- (void) memcpy((void *) (gc->pc + 8), (void *) (&x), 8);
- (void) memcpy((void *) (gc->pc + 16), (void *) (&y), 8);
- (void) memcpy((void *) (gc->pc + 24), (void *) (&z), 8);
- (void) memcpy((void *) (gc->pc + 32), (void *) (&w), 8);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_VertexAttrib4dvNV 4276
-void
-__indirect_glVertexAttrib4dvNV(GLuint index, const GLdouble * v)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 40;
- emit_header(gc->pc, X_GLrop_VertexAttrib4dvNV, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&index), 4);
- (void) memcpy((void *) (gc->pc + 8), (void *) (v), 32);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_VertexAttrib4fvNV 4272
-void
-__indirect_glVertexAttrib4fNV(GLuint index, GLfloat x, GLfloat y, GLfloat z,
- GLfloat w)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 24;
- emit_header(gc->pc, X_GLrop_VertexAttrib4fvNV, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&index), 4);
- (void) memcpy((void *) (gc->pc + 8), (void *) (&x), 4);
- (void) memcpy((void *) (gc->pc + 12), (void *) (&y), 4);
- (void) memcpy((void *) (gc->pc + 16), (void *) (&z), 4);
- (void) memcpy((void *) (gc->pc + 20), (void *) (&w), 4);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_VertexAttrib4fvNV 4272
-void
-__indirect_glVertexAttrib4fvNV(GLuint index, const GLfloat * v)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 24;
- emit_header(gc->pc, X_GLrop_VertexAttrib4fvNV, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&index), 4);
- (void) memcpy((void *) (gc->pc + 8), (void *) (v), 16);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_VertexAttrib4svNV 4268
-void
-__indirect_glVertexAttrib4sNV(GLuint index, GLshort x, GLshort y, GLshort z,
- GLshort w)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 16;
- emit_header(gc->pc, X_GLrop_VertexAttrib4svNV, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&index), 4);
- (void) memcpy((void *) (gc->pc + 8), (void *) (&x), 2);
- (void) memcpy((void *) (gc->pc + 10), (void *) (&y), 2);
- (void) memcpy((void *) (gc->pc + 12), (void *) (&z), 2);
- (void) memcpy((void *) (gc->pc + 14), (void *) (&w), 2);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_VertexAttrib4svNV 4268
-void
-__indirect_glVertexAttrib4svNV(GLuint index, const GLshort * v)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 16;
- emit_header(gc->pc, X_GLrop_VertexAttrib4svNV, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&index), 4);
- (void) memcpy((void *) (gc->pc + 8), (void *) (v), 8);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_VertexAttrib4ubvNV 4277
-void
-__indirect_glVertexAttrib4ubNV(GLuint index, GLubyte x, GLubyte y, GLubyte z,
- GLubyte w)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 12;
- emit_header(gc->pc, X_GLrop_VertexAttrib4ubvNV, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&index), 4);
- (void) memcpy((void *) (gc->pc + 8), (void *) (&x), 1);
- (void) memcpy((void *) (gc->pc + 9), (void *) (&y), 1);
- (void) memcpy((void *) (gc->pc + 10), (void *) (&z), 1);
- (void) memcpy((void *) (gc->pc + 11), (void *) (&w), 1);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_VertexAttrib4ubvNV 4277
-void
-__indirect_glVertexAttrib4ubvNV(GLuint index, const GLubyte *v)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 12;
- emit_header(gc->pc, X_GLrop_VertexAttrib4ubvNV, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&index), 4);
- (void) memcpy((void *) (gc->pc + 8), (void *) (v), 4);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_VertexAttribs1dvNV 4210
-void
-__indirect_glVertexAttribs1dvNV(GLuint index, GLsizei n, const GLdouble * v)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 12 + __GLX_PAD((n * 8));
- if (n < 0) {
- __glXSetError(gc, GL_INVALID_VALUE);
- return;
- }
- if (__builtin_expect(n >= 0, 1)) {
- emit_header(gc->pc, X_GLrop_VertexAttribs1dvNV, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&index), 4);
- (void) memcpy((void *) (gc->pc + 8), (void *) (&n), 4);
- (void) memcpy((void *) (gc->pc + 12), (void *) (v), (n * 8));
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
- }
-}
-
-#define X_GLrop_VertexAttribs1fvNV 4206
-void
-__indirect_glVertexAttribs1fvNV(GLuint index, GLsizei n, const GLfloat * v)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 12 + __GLX_PAD((n * 4));
- if (n < 0) {
- __glXSetError(gc, GL_INVALID_VALUE);
- return;
- }
- if (__builtin_expect(n >= 0, 1)) {
- emit_header(gc->pc, X_GLrop_VertexAttribs1fvNV, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&index), 4);
- (void) memcpy((void *) (gc->pc + 8), (void *) (&n), 4);
- (void) memcpy((void *) (gc->pc + 12), (void *) (v), (n * 4));
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
- }
-}
-
-#define X_GLrop_VertexAttribs1svNV 4202
-void
-__indirect_glVertexAttribs1svNV(GLuint index, GLsizei n, const GLshort * v)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 12 + __GLX_PAD((n * 2));
- if (n < 0) {
- __glXSetError(gc, GL_INVALID_VALUE);
- return;
- }
- if (__builtin_expect(n >= 0, 1)) {
- emit_header(gc->pc, X_GLrop_VertexAttribs1svNV, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&index), 4);
- (void) memcpy((void *) (gc->pc + 8), (void *) (&n), 4);
- (void) memcpy((void *) (gc->pc + 12), (void *) (v), (n * 2));
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
- }
-}
-
-#define X_GLrop_VertexAttribs2dvNV 4211
-void
-__indirect_glVertexAttribs2dvNV(GLuint index, GLsizei n, const GLdouble * v)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 12 + __GLX_PAD((n * 16));
- if (n < 0) {
- __glXSetError(gc, GL_INVALID_VALUE);
- return;
- }
- if (__builtin_expect(n >= 0, 1)) {
- emit_header(gc->pc, X_GLrop_VertexAttribs2dvNV, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&index), 4);
- (void) memcpy((void *) (gc->pc + 8), (void *) (&n), 4);
- (void) memcpy((void *) (gc->pc + 12), (void *) (v), (n * 16));
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
- }
-}
-
-#define X_GLrop_VertexAttribs2fvNV 4207
-void
-__indirect_glVertexAttribs2fvNV(GLuint index, GLsizei n, const GLfloat * v)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 12 + __GLX_PAD((n * 8));
- if (n < 0) {
- __glXSetError(gc, GL_INVALID_VALUE);
- return;
- }
- if (__builtin_expect(n >= 0, 1)) {
- emit_header(gc->pc, X_GLrop_VertexAttribs2fvNV, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&index), 4);
- (void) memcpy((void *) (gc->pc + 8), (void *) (&n), 4);
- (void) memcpy((void *) (gc->pc + 12), (void *) (v), (n * 8));
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
- }
-}
-
-#define X_GLrop_VertexAttribs2svNV 4203
-void
-__indirect_glVertexAttribs2svNV(GLuint index, GLsizei n, const GLshort * v)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 12 + __GLX_PAD((n * 4));
- if (n < 0) {
- __glXSetError(gc, GL_INVALID_VALUE);
- return;
- }
- if (__builtin_expect(n >= 0, 1)) {
- emit_header(gc->pc, X_GLrop_VertexAttribs2svNV, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&index), 4);
- (void) memcpy((void *) (gc->pc + 8), (void *) (&n), 4);
- (void) memcpy((void *) (gc->pc + 12), (void *) (v), (n * 4));
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
- }
-}
-
-#define X_GLrop_VertexAttribs3dvNV 4212
-void
-__indirect_glVertexAttribs3dvNV(GLuint index, GLsizei n, const GLdouble * v)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 12 + __GLX_PAD((n * 24));
- if (n < 0) {
- __glXSetError(gc, GL_INVALID_VALUE);
- return;
- }
- if (__builtin_expect(n >= 0, 1)) {
- emit_header(gc->pc, X_GLrop_VertexAttribs3dvNV, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&index), 4);
- (void) memcpy((void *) (gc->pc + 8), (void *) (&n), 4);
- (void) memcpy((void *) (gc->pc + 12), (void *) (v), (n * 24));
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
- }
-}
-
-#define X_GLrop_VertexAttribs3fvNV 4208
-void
-__indirect_glVertexAttribs3fvNV(GLuint index, GLsizei n, const GLfloat * v)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 12 + __GLX_PAD((n * 12));
- if (n < 0) {
- __glXSetError(gc, GL_INVALID_VALUE);
- return;
- }
- if (__builtin_expect(n >= 0, 1)) {
- emit_header(gc->pc, X_GLrop_VertexAttribs3fvNV, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&index), 4);
- (void) memcpy((void *) (gc->pc + 8), (void *) (&n), 4);
- (void) memcpy((void *) (gc->pc + 12), (void *) (v), (n * 12));
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
- }
-}
-
-#define X_GLrop_VertexAttribs3svNV 4204
-void
-__indirect_glVertexAttribs3svNV(GLuint index, GLsizei n, const GLshort * v)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 12 + __GLX_PAD((n * 6));
- if (n < 0) {
- __glXSetError(gc, GL_INVALID_VALUE);
- return;
- }
- if (__builtin_expect(n >= 0, 1)) {
- emit_header(gc->pc, X_GLrop_VertexAttribs3svNV, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&index), 4);
- (void) memcpy((void *) (gc->pc + 8), (void *) (&n), 4);
- (void) memcpy((void *) (gc->pc + 12), (void *) (v), (n * 6));
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
- }
-}
-
-#define X_GLrop_VertexAttribs4dvNV 4213
-void
-__indirect_glVertexAttribs4dvNV(GLuint index, GLsizei n, const GLdouble * v)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 12 + __GLX_PAD((n * 32));
- if (n < 0) {
- __glXSetError(gc, GL_INVALID_VALUE);
- return;
- }
- if (__builtin_expect(n >= 0, 1)) {
- emit_header(gc->pc, X_GLrop_VertexAttribs4dvNV, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&index), 4);
- (void) memcpy((void *) (gc->pc + 8), (void *) (&n), 4);
- (void) memcpy((void *) (gc->pc + 12), (void *) (v), (n * 32));
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
- }
-}
-
-#define X_GLrop_VertexAttribs4fvNV 4209
-void
-__indirect_glVertexAttribs4fvNV(GLuint index, GLsizei n, const GLfloat * v)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 12 + __GLX_PAD((n * 16));
- if (n < 0) {
- __glXSetError(gc, GL_INVALID_VALUE);
- return;
- }
- if (__builtin_expect(n >= 0, 1)) {
- emit_header(gc->pc, X_GLrop_VertexAttribs4fvNV, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&index), 4);
- (void) memcpy((void *) (gc->pc + 8), (void *) (&n), 4);
- (void) memcpy((void *) (gc->pc + 12), (void *) (v), (n * 16));
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
- }
-}
-
-#define X_GLrop_VertexAttribs4svNV 4205
-void
-__indirect_glVertexAttribs4svNV(GLuint index, GLsizei n, const GLshort * v)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 12 + __GLX_PAD((n * 8));
- if (n < 0) {
- __glXSetError(gc, GL_INVALID_VALUE);
- return;
- }
- if (__builtin_expect(n >= 0, 1)) {
- emit_header(gc->pc, X_GLrop_VertexAttribs4svNV, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&index), 4);
- (void) memcpy((void *) (gc->pc + 8), (void *) (&n), 4);
- (void) memcpy((void *) (gc->pc + 12), (void *) (v), (n * 8));
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
- }
-}
-
-#define X_GLrop_VertexAttribs4ubvNV 4214
-void
-__indirect_glVertexAttribs4ubvNV(GLuint index, GLsizei n, const GLubyte *v)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 12 + __GLX_PAD((n * 4));
- if (n < 0) {
- __glXSetError(gc, GL_INVALID_VALUE);
- return;
- }
- if (__builtin_expect(n >= 0, 1)) {
- emit_header(gc->pc, X_GLrop_VertexAttribs4ubvNV, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&index), 4);
- (void) memcpy((void *) (gc->pc + 8), (void *) (&n), 4);
- (void) memcpy((void *) (gc->pc + 12), (void *) (v), (n * 4));
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
- }
-}
-
-#define X_GLrop_PointParameteriNV 4221
-void
-__indirect_glPointParameteriNV(GLenum pname, GLint param)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 12;
- emit_header(gc->pc, X_GLrop_PointParameteriNV, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&pname), 4);
- (void) memcpy((void *) (gc->pc + 8), (void *) (&param), 4);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_PointParameterivNV 4222
-void
-__indirect_glPointParameterivNV(GLenum pname, const GLint * params)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint compsize = __glPointParameterivNV_size(pname);
- const GLuint cmdlen = 8 + __GLX_PAD((compsize * 4));
- emit_header(gc->pc, X_GLrop_PointParameterivNV, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&pname), 4);
- (void) memcpy((void *) (gc->pc + 8), (void *) (params), (compsize * 4));
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_ActiveStencilFaceEXT 4220
-void
-__indirect_glActiveStencilFaceEXT(GLenum face)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 8;
- emit_header(gc->pc, X_GLrop_ActiveStencilFaceEXT, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&face), 4);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLvop_GetProgramNamedParameterdvNV 1311
-void
-__indirect_glGetProgramNamedParameterdvNV(GLuint id, GLsizei len,
- const GLubyte *name,
- GLdouble * params)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- Display *const dpy = gc->currentDpy;
- const GLuint cmdlen = 8 + __GLX_PAD(len);
- if (len < 0) {
- __glXSetError(gc, GL_INVALID_VALUE);
- return;
- }
- if (__builtin_expect((len >= 0) && (dpy != NULL), 1)) {
- GLubyte const *pc =
- __glXSetupVendorRequest(gc, X_GLXVendorPrivateWithReply,
- X_GLvop_GetProgramNamedParameterdvNV,
- cmdlen);
- (void) memcpy((void *) (pc + 0), (void *) (&id), 4);
- (void) memcpy((void *) (pc + 4), (void *) (&len), 4);
- (void) memcpy((void *) (pc + 8), (void *) (name), len);
- (void) __glXReadReply(dpy, 8, params, GL_TRUE);
- UnlockDisplay(dpy);
- SyncHandle();
- }
- return;
-}
-
-#define X_GLvop_GetProgramNamedParameterfvNV 1310
-void
-__indirect_glGetProgramNamedParameterfvNV(GLuint id, GLsizei len,
- const GLubyte *name,
- GLfloat * params)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- Display *const dpy = gc->currentDpy;
- const GLuint cmdlen = 8 + __GLX_PAD(len);
- if (len < 0) {
- __glXSetError(gc, GL_INVALID_VALUE);
- return;
- }
- if (__builtin_expect((len >= 0) && (dpy != NULL), 1)) {
- GLubyte const *pc =
- __glXSetupVendorRequest(gc, X_GLXVendorPrivateWithReply,
- X_GLvop_GetProgramNamedParameterfvNV,
- cmdlen);
- (void) memcpy((void *) (pc + 0), (void *) (&id), 4);
- (void) memcpy((void *) (pc + 4), (void *) (&len), 4);
- (void) memcpy((void *) (pc + 8), (void *) (name), len);
- (void) __glXReadReply(dpy, 4, params, GL_TRUE);
- UnlockDisplay(dpy);
- SyncHandle();
- }
- return;
-}
-
-#define X_GLrop_ProgramNamedParameter4dvNV 4219
-void
-__indirect_glProgramNamedParameter4dNV(GLuint id, GLsizei len,
- const GLubyte *name, GLdouble x,
- GLdouble y, GLdouble z, GLdouble w)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 44 + __GLX_PAD(len);
- if (len < 0) {
- __glXSetError(gc, GL_INVALID_VALUE);
- return;
- }
- if (__builtin_expect(len >= 0, 1)) {
- emit_header(gc->pc, X_GLrop_ProgramNamedParameter4dvNV, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&x), 8);
- (void) memcpy((void *) (gc->pc + 12), (void *) (&y), 8);
- (void) memcpy((void *) (gc->pc + 20), (void *) (&z), 8);
- (void) memcpy((void *) (gc->pc + 28), (void *) (&w), 8);
- (void) memcpy((void *) (gc->pc + 36), (void *) (&id), 4);
- (void) memcpy((void *) (gc->pc + 40), (void *) (&len), 4);
- (void) memcpy((void *) (gc->pc + 44), (void *) (name), len);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
- }
-}
-
-#define X_GLrop_ProgramNamedParameter4dvNV 4219
-void
-__indirect_glProgramNamedParameter4dvNV(GLuint id, GLsizei len,
- const GLubyte *name,
- const GLdouble * v)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 44 + __GLX_PAD(len);
- if (len < 0) {
- __glXSetError(gc, GL_INVALID_VALUE);
- return;
- }
- if (__builtin_expect(len >= 0, 1)) {
- emit_header(gc->pc, X_GLrop_ProgramNamedParameter4dvNV, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (v), 32);
- (void) memcpy((void *) (gc->pc + 36), (void *) (&id), 4);
- (void) memcpy((void *) (gc->pc + 40), (void *) (&len), 4);
- (void) memcpy((void *) (gc->pc + 44), (void *) (name), len);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
- }
-}
-
-#define X_GLrop_ProgramNamedParameter4fvNV 4218
-void
-__indirect_glProgramNamedParameter4fNV(GLuint id, GLsizei len,
- const GLubyte *name, GLfloat x,
- GLfloat y, GLfloat z, GLfloat w)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 28 + __GLX_PAD(len);
- if (len < 0) {
- __glXSetError(gc, GL_INVALID_VALUE);
- return;
- }
- if (__builtin_expect(len >= 0, 1)) {
- emit_header(gc->pc, X_GLrop_ProgramNamedParameter4fvNV, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&id), 4);
- (void) memcpy((void *) (gc->pc + 8), (void *) (&len), 4);
- (void) memcpy((void *) (gc->pc + 12), (void *) (&x), 4);
- (void) memcpy((void *) (gc->pc + 16), (void *) (&y), 4);
- (void) memcpy((void *) (gc->pc + 20), (void *) (&z), 4);
- (void) memcpy((void *) (gc->pc + 24), (void *) (&w), 4);
- (void) memcpy((void *) (gc->pc + 28), (void *) (name), len);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
- }
-}
-
-#define X_GLrop_ProgramNamedParameter4fvNV 4218
-void
-__indirect_glProgramNamedParameter4fvNV(GLuint id, GLsizei len,
- const GLubyte *name,
- const GLfloat * v)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 28 + __GLX_PAD(len);
- if (len < 0) {
- __glXSetError(gc, GL_INVALID_VALUE);
- return;
- }
- if (__builtin_expect(len >= 0, 1)) {
- emit_header(gc->pc, X_GLrop_ProgramNamedParameter4fvNV, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&id), 4);
- (void) memcpy((void *) (gc->pc + 8), (void *) (&len), 4);
- (void) memcpy((void *) (gc->pc + 12), (void *) (v), 16);
- (void) memcpy((void *) (gc->pc + 28), (void *) (name), len);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
- }
-}
-
-#define X_GLrop_BlendEquationSeparateEXT 4228
-void
-__indirect_glBlendEquationSeparateEXT(GLenum modeRGB, GLenum modeA)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 12;
- emit_header(gc->pc, X_GLrop_BlendEquationSeparateEXT, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&modeRGB), 4);
- (void) memcpy((void *) (gc->pc + 8), (void *) (&modeA), 4);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_BindFramebufferEXT 4319
-void
-__indirect_glBindFramebufferEXT(GLenum target, GLuint framebuffer)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 12;
- emit_header(gc->pc, X_GLrop_BindFramebufferEXT, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&target), 4);
- (void) memcpy((void *) (gc->pc + 8), (void *) (&framebuffer), 4);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_BindRenderbufferEXT 4316
-void
-__indirect_glBindRenderbufferEXT(GLenum target, GLuint renderbuffer)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 12;
- emit_header(gc->pc, X_GLrop_BindRenderbufferEXT, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&target), 4);
- (void) memcpy((void *) (gc->pc + 8), (void *) (&renderbuffer), 4);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLvop_CheckFramebufferStatusEXT 1427
-GLenum
-__indirect_glCheckFramebufferStatusEXT(GLenum target)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- Display *const dpy = gc->currentDpy;
- GLenum retval = (GLenum) 0;
- const GLuint cmdlen = 4;
- if (__builtin_expect(dpy != NULL, 1)) {
- GLubyte const *pc =
- __glXSetupVendorRequest(gc, X_GLXVendorPrivateWithReply,
- X_GLvop_CheckFramebufferStatusEXT,
- cmdlen);
- (void) memcpy((void *) (pc + 0), (void *) (&target), 4);
- retval = (GLenum) __glXReadReply(dpy, 0, NULL, GL_FALSE);
- UnlockDisplay(dpy);
- SyncHandle();
- }
- return retval;
-}
-
-#define X_GLrop_DeleteFramebuffersEXT 4320
-void
-__indirect_glDeleteFramebuffersEXT(GLsizei n, const GLuint * framebuffers)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 8 + __GLX_PAD((n * 4));
- if (n < 0) {
- __glXSetError(gc, GL_INVALID_VALUE);
- return;
- }
- if (__builtin_expect(n >= 0, 1)) {
- emit_header(gc->pc, X_GLrop_DeleteFramebuffersEXT, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&n), 4);
- (void) memcpy((void *) (gc->pc + 8), (void *) (framebuffers),
- (n * 4));
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
- }
-}
-
-#define X_GLrop_DeleteRenderbuffersEXT 4317
-void
-__indirect_glDeleteRenderbuffersEXT(GLsizei n, const GLuint * renderbuffers)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 8 + __GLX_PAD((n * 4));
- if (n < 0) {
- __glXSetError(gc, GL_INVALID_VALUE);
- return;
- }
- if (__builtin_expect(n >= 0, 1)) {
- emit_header(gc->pc, X_GLrop_DeleteRenderbuffersEXT, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&n), 4);
- (void) memcpy((void *) (gc->pc + 8), (void *) (renderbuffers),
- (n * 4));
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
- }
-}
-
-#define X_GLrop_FramebufferRenderbufferEXT 4324
-void
-__indirect_glFramebufferRenderbufferEXT(GLenum target, GLenum attachment,
- GLenum renderbuffertarget,
- GLuint renderbuffer)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 20;
- emit_header(gc->pc, X_GLrop_FramebufferRenderbufferEXT, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&target), 4);
- (void) memcpy((void *) (gc->pc + 8), (void *) (&attachment), 4);
- (void) memcpy((void *) (gc->pc + 12), (void *) (&renderbuffertarget), 4);
- (void) memcpy((void *) (gc->pc + 16), (void *) (&renderbuffer), 4);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_FramebufferTexture1DEXT 4321
-void
-__indirect_glFramebufferTexture1DEXT(GLenum target, GLenum attachment,
- GLenum textarget, GLuint texture,
- GLint level)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 24;
- emit_header(gc->pc, X_GLrop_FramebufferTexture1DEXT, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&target), 4);
- (void) memcpy((void *) (gc->pc + 8), (void *) (&attachment), 4);
- (void) memcpy((void *) (gc->pc + 12), (void *) (&textarget), 4);
- (void) memcpy((void *) (gc->pc + 16), (void *) (&texture), 4);
- (void) memcpy((void *) (gc->pc + 20), (void *) (&level), 4);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_FramebufferTexture2DEXT 4322
-void
-__indirect_glFramebufferTexture2DEXT(GLenum target, GLenum attachment,
- GLenum textarget, GLuint texture,
- GLint level)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 24;
- emit_header(gc->pc, X_GLrop_FramebufferTexture2DEXT, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&target), 4);
- (void) memcpy((void *) (gc->pc + 8), (void *) (&attachment), 4);
- (void) memcpy((void *) (gc->pc + 12), (void *) (&textarget), 4);
- (void) memcpy((void *) (gc->pc + 16), (void *) (&texture), 4);
- (void) memcpy((void *) (gc->pc + 20), (void *) (&level), 4);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_FramebufferTexture3DEXT 4323
-void
-__indirect_glFramebufferTexture3DEXT(GLenum target, GLenum attachment,
- GLenum textarget, GLuint texture,
- GLint level, GLint zoffset)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 28;
- emit_header(gc->pc, X_GLrop_FramebufferTexture3DEXT, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&target), 4);
- (void) memcpy((void *) (gc->pc + 8), (void *) (&attachment), 4);
- (void) memcpy((void *) (gc->pc + 12), (void *) (&textarget), 4);
- (void) memcpy((void *) (gc->pc + 16), (void *) (&texture), 4);
- (void) memcpy((void *) (gc->pc + 20), (void *) (&level), 4);
- (void) memcpy((void *) (gc->pc + 24), (void *) (&zoffset), 4);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLvop_GenFramebuffersEXT 1426
-void
-__indirect_glGenFramebuffersEXT(GLsizei n, GLuint * framebuffers)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- Display *const dpy = gc->currentDpy;
- const GLuint cmdlen = 4;
- if (n < 0) {
- __glXSetError(gc, GL_INVALID_VALUE);
- return;
- }
- if (__builtin_expect((n >= 0) && (dpy != NULL), 1)) {
- GLubyte const *pc =
- __glXSetupVendorRequest(gc, X_GLXVendorPrivateWithReply,
- X_GLvop_GenFramebuffersEXT, cmdlen);
- (void) memcpy((void *) (pc + 0), (void *) (&n), 4);
- (void) __glXReadReply(dpy, 4, framebuffers, GL_TRUE);
- UnlockDisplay(dpy);
- SyncHandle();
- }
- return;
-}
-
-#define X_GLvop_GenRenderbuffersEXT 1423
-void
-__indirect_glGenRenderbuffersEXT(GLsizei n, GLuint * renderbuffers)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- Display *const dpy = gc->currentDpy;
- const GLuint cmdlen = 4;
- if (n < 0) {
- __glXSetError(gc, GL_INVALID_VALUE);
- return;
- }
- if (__builtin_expect((n >= 0) && (dpy != NULL), 1)) {
- GLubyte const *pc =
- __glXSetupVendorRequest(gc, X_GLXVendorPrivateWithReply,
- X_GLvop_GenRenderbuffersEXT, cmdlen);
- (void) memcpy((void *) (pc + 0), (void *) (&n), 4);
- (void) __glXReadReply(dpy, 4, renderbuffers, GL_TRUE);
- UnlockDisplay(dpy);
- SyncHandle();
- }
- return;
-}
-
-#define X_GLrop_GenerateMipmapEXT 4325
-void
-__indirect_glGenerateMipmapEXT(GLenum target)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 8;
- emit_header(gc->pc, X_GLrop_GenerateMipmapEXT, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&target), 4);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLvop_GetFramebufferAttachmentParameterivEXT 1428
-void
-__indirect_glGetFramebufferAttachmentParameterivEXT(GLenum target,
- GLenum attachment,
- GLenum pname,
- GLint * params)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- Display *const dpy = gc->currentDpy;
- const GLuint cmdlen = 12;
- if (__builtin_expect(dpy != NULL, 1)) {
- GLubyte const *pc =
- __glXSetupVendorRequest(gc, X_GLXVendorPrivateWithReply,
- X_GLvop_GetFramebufferAttachmentParameterivEXT,
- cmdlen);
- (void) memcpy((void *) (pc + 0), (void *) (&target), 4);
- (void) memcpy((void *) (pc + 4), (void *) (&attachment), 4);
- (void) memcpy((void *) (pc + 8), (void *) (&pname), 4);
- (void) __glXReadReply(dpy, 4, params, GL_FALSE);
- UnlockDisplay(dpy);
- SyncHandle();
- }
- return;
-}
-
-#define X_GLvop_GetRenderbufferParameterivEXT 1424
-void
-__indirect_glGetRenderbufferParameterivEXT(GLenum target, GLenum pname,
- GLint * params)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- Display *const dpy = gc->currentDpy;
- const GLuint cmdlen = 8;
- if (__builtin_expect(dpy != NULL, 1)) {
- GLubyte const *pc =
- __glXSetupVendorRequest(gc, X_GLXVendorPrivateWithReply,
- X_GLvop_GetRenderbufferParameterivEXT,
- cmdlen);
- (void) memcpy((void *) (pc + 0), (void *) (&target), 4);
- (void) memcpy((void *) (pc + 4), (void *) (&pname), 4);
- (void) __glXReadReply(dpy, 4, params, GL_FALSE);
- UnlockDisplay(dpy);
- SyncHandle();
- }
- return;
-}
-
-#define X_GLvop_IsFramebufferEXT 1425
-GLboolean
-__indirect_glIsFramebufferEXT(GLuint framebuffer)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- Display *const dpy = gc->currentDpy;
- GLboolean retval = (GLboolean) 0;
- const GLuint cmdlen = 4;
- if (__builtin_expect(dpy != NULL, 1)) {
- GLubyte const *pc =
- __glXSetupVendorRequest(gc, X_GLXVendorPrivateWithReply,
- X_GLvop_IsFramebufferEXT, cmdlen);
- (void) memcpy((void *) (pc + 0), (void *) (&framebuffer), 4);
- retval = (GLboolean) __glXReadReply(dpy, 0, NULL, GL_FALSE);
- UnlockDisplay(dpy);
- SyncHandle();
- }
- return retval;
-}
-
-#define X_GLvop_IsRenderbufferEXT 1422
-GLboolean
-__indirect_glIsRenderbufferEXT(GLuint renderbuffer)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- Display *const dpy = gc->currentDpy;
- GLboolean retval = (GLboolean) 0;
- const GLuint cmdlen = 4;
- if (__builtin_expect(dpy != NULL, 1)) {
- GLubyte const *pc =
- __glXSetupVendorRequest(gc, X_GLXVendorPrivateWithReply,
- X_GLvop_IsRenderbufferEXT, cmdlen);
- (void) memcpy((void *) (pc + 0), (void *) (&renderbuffer), 4);
- retval = (GLboolean) __glXReadReply(dpy, 0, NULL, GL_FALSE);
- UnlockDisplay(dpy);
- SyncHandle();
- }
- return retval;
-}
-
-#define X_GLrop_RenderbufferStorageEXT 4318
-void
-__indirect_glRenderbufferStorageEXT(GLenum target, GLenum internalformat,
- GLsizei width, GLsizei height)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 20;
- emit_header(gc->pc, X_GLrop_RenderbufferStorageEXT, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&target), 4);
- (void) memcpy((void *) (gc->pc + 8), (void *) (&internalformat), 4);
- (void) memcpy((void *) (gc->pc + 12), (void *) (&width), 4);
- (void) memcpy((void *) (gc->pc + 16), (void *) (&height), 4);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_BlitFramebufferEXT 4330
-void
-__indirect_glBlitFramebufferEXT(GLint srcX0, GLint srcY0, GLint srcX1,
- GLint srcY1, GLint dstX0, GLint dstY0,
- GLint dstX1, GLint dstY1, GLbitfield mask,
- GLenum filter)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 44;
- emit_header(gc->pc, X_GLrop_BlitFramebufferEXT, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&srcX0), 4);
- (void) memcpy((void *) (gc->pc + 8), (void *) (&srcY0), 4);
- (void) memcpy((void *) (gc->pc + 12), (void *) (&srcX1), 4);
- (void) memcpy((void *) (gc->pc + 16), (void *) (&srcY1), 4);
- (void) memcpy((void *) (gc->pc + 20), (void *) (&dstX0), 4);
- (void) memcpy((void *) (gc->pc + 24), (void *) (&dstY0), 4);
- (void) memcpy((void *) (gc->pc + 28), (void *) (&dstX1), 4);
- (void) memcpy((void *) (gc->pc + 32), (void *) (&dstY1), 4);
- (void) memcpy((void *) (gc->pc + 36), (void *) (&mask), 4);
- (void) memcpy((void *) (gc->pc + 40), (void *) (&filter), 4);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-#define X_GLrop_FramebufferTextureLayerEXT 237
-void
-__indirect_glFramebufferTextureLayerEXT(GLenum target, GLenum attachment,
- GLuint texture, GLint level,
- GLint layer)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- const GLuint cmdlen = 24;
- emit_header(gc->pc, X_GLrop_FramebufferTextureLayerEXT, cmdlen);
- (void) memcpy((void *) (gc->pc + 4), (void *) (&target), 4);
- (void) memcpy((void *) (gc->pc + 8), (void *) (&attachment), 4);
- (void) memcpy((void *) (gc->pc + 12), (void *) (&texture), 4);
- (void) memcpy((void *) (gc->pc + 16), (void *) (&level), 4);
- (void) memcpy((void *) (gc->pc + 20), (void *) (&layer), 4);
- gc->pc += cmdlen;
- if (__builtin_expect(gc->pc > gc->limit, 0)) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-
-# undef FASTCALL
-# undef NOINLINE
diff --git a/src/glx/x11/indirect.h b/src/glx/x11/indirect.h
deleted file mode 100644
index 9e73b338184..00000000000
--- a/src/glx/x11/indirect.h
+++ /dev/null
@@ -1,721 +0,0 @@
-/* DO NOT EDIT - This file generated automatically by glX_proto_send.py (from Mesa) script */
-
-/*
- * Copyright 1998-1999 Precision Insight, Inc., Cedar Park, Texas.
- * (C) Copyright IBM Corporation 2004
- * 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"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sub license,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice (including the next
- * paragraph) shall be included in all copies or substantial portions of the
- * Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL
- * PRECISION INSIGHT, IBM,
- * AND/OR THEIR SUPPLIERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
- * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
- * OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- */
-
-#if !defined( _INDIRECT_H_ )
-# define _INDIRECT_H_
-
-/**
- * \file
- * Prototypes for indirect rendering functions.
- *
- * \author Kevin E. Martin <[email protected]>
- * \author Ian Romanick <[email protected]>
- */
-
-# if (__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 3) || (defined(__SUNPRO_C) && (__SUNPRO_C >= 0x590))) && defined(__ELF__)
-# define HIDDEN __attribute__((visibility("hidden")))
-# else
-# define HIDDEN
-# endif
-# if defined(__i386__) && defined(__GNUC__) && !defined(__CYGWIN__) && !defined(__MINGW32__)
-# define FASTCALL __attribute__((fastcall))
-# else
-# define FASTCALL
-# endif
-# if defined(__GNUC__) || (defined(__SUNPRO_C) && (__SUNPRO_C >= 0x590))
-# define NOINLINE __attribute__((noinline))
-# else
-# define NOINLINE
-# endif
-
-#include "glxclient.h"
-
-extern HIDDEN NOINLINE CARD32 __glXReadReply( Display *dpy, size_t size,
- void * dest, GLboolean reply_is_always_array );
-
-extern HIDDEN NOINLINE void __glXReadPixelReply( Display *dpy,
- __GLXcontext * gc, unsigned max_dim, GLint width, GLint height,
- GLint depth, GLenum format, GLenum type, void * dest,
- GLboolean dimensions_in_reply );
-
-extern HIDDEN NOINLINE FASTCALL GLubyte * __glXSetupSingleRequest(
- __GLXcontext * gc, GLint sop, GLint cmdlen );
-
-extern HIDDEN NOINLINE FASTCALL GLubyte * __glXSetupVendorRequest(
- __GLXcontext * gc, GLint code, GLint vop, GLint cmdlen );
-
-extern HIDDEN void __indirect_glNewList(GLuint list, GLenum mode);
-extern HIDDEN void __indirect_glEndList(void);
-extern HIDDEN void __indirect_glCallList(GLuint list);
-extern HIDDEN void __indirect_glCallLists(GLsizei n, GLenum type, const GLvoid * lists);
-extern HIDDEN void __indirect_glDeleteLists(GLuint list, GLsizei range);
-extern HIDDEN GLuint __indirect_glGenLists(GLsizei range);
-extern HIDDEN void __indirect_glListBase(GLuint base);
-extern HIDDEN void __indirect_glBegin(GLenum mode);
-extern HIDDEN void __indirect_glBitmap(GLsizei width, GLsizei height, GLfloat xorig, GLfloat yorig, GLfloat xmove, GLfloat ymove, const GLubyte * bitmap);
-extern HIDDEN void __indirect_glColor3b(GLbyte red, GLbyte green, GLbyte blue);
-extern HIDDEN void __indirect_glColor3bv(const GLbyte * v);
-extern HIDDEN void __indirect_glColor3d(GLdouble red, GLdouble green, GLdouble blue);
-extern HIDDEN void __indirect_glColor3dv(const GLdouble * v);
-extern HIDDEN void __indirect_glColor3f(GLfloat red, GLfloat green, GLfloat blue);
-extern HIDDEN void __indirect_glColor3fv(const GLfloat * v);
-extern HIDDEN void __indirect_glColor3i(GLint red, GLint green, GLint blue);
-extern HIDDEN void __indirect_glColor3iv(const GLint * v);
-extern HIDDEN void __indirect_glColor3s(GLshort red, GLshort green, GLshort blue);
-extern HIDDEN void __indirect_glColor3sv(const GLshort * v);
-extern HIDDEN void __indirect_glColor3ub(GLubyte red, GLubyte green, GLubyte blue);
-extern HIDDEN void __indirect_glColor3ubv(const GLubyte * v);
-extern HIDDEN void __indirect_glColor3ui(GLuint red, GLuint green, GLuint blue);
-extern HIDDEN void __indirect_glColor3uiv(const GLuint * v);
-extern HIDDEN void __indirect_glColor3us(GLushort red, GLushort green, GLushort blue);
-extern HIDDEN void __indirect_glColor3usv(const GLushort * v);
-extern HIDDEN void __indirect_glColor4b(GLbyte red, GLbyte green, GLbyte blue, GLbyte alpha);
-extern HIDDEN void __indirect_glColor4bv(const GLbyte * v);
-extern HIDDEN void __indirect_glColor4d(GLdouble red, GLdouble green, GLdouble blue, GLdouble alpha);
-extern HIDDEN void __indirect_glColor4dv(const GLdouble * v);
-extern HIDDEN void __indirect_glColor4f(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha);
-extern HIDDEN void __indirect_glColor4fv(const GLfloat * v);
-extern HIDDEN void __indirect_glColor4i(GLint red, GLint green, GLint blue, GLint alpha);
-extern HIDDEN void __indirect_glColor4iv(const GLint * v);
-extern HIDDEN void __indirect_glColor4s(GLshort red, GLshort green, GLshort blue, GLshort alpha);
-extern HIDDEN void __indirect_glColor4sv(const GLshort * v);
-extern HIDDEN void __indirect_glColor4ub(GLubyte red, GLubyte green, GLubyte blue, GLubyte alpha);
-extern HIDDEN void __indirect_glColor4ubv(const GLubyte * v);
-extern HIDDEN void __indirect_glColor4ui(GLuint red, GLuint green, GLuint blue, GLuint alpha);
-extern HIDDEN void __indirect_glColor4uiv(const GLuint * v);
-extern HIDDEN void __indirect_glColor4us(GLushort red, GLushort green, GLushort blue, GLushort alpha);
-extern HIDDEN void __indirect_glColor4usv(const GLushort * v);
-extern HIDDEN void __indirect_glEdgeFlag(GLboolean flag);
-extern HIDDEN void __indirect_glEdgeFlagv(const GLboolean * flag);
-extern HIDDEN void __indirect_glEnd(void);
-extern HIDDEN void __indirect_glIndexd(GLdouble c);
-extern HIDDEN void __indirect_glIndexdv(const GLdouble * c);
-extern HIDDEN void __indirect_glIndexf(GLfloat c);
-extern HIDDEN void __indirect_glIndexfv(const GLfloat * c);
-extern HIDDEN void __indirect_glIndexi(GLint c);
-extern HIDDEN void __indirect_glIndexiv(const GLint * c);
-extern HIDDEN void __indirect_glIndexs(GLshort c);
-extern HIDDEN void __indirect_glIndexsv(const GLshort * c);
-extern HIDDEN void __indirect_glNormal3b(GLbyte nx, GLbyte ny, GLbyte nz);
-extern HIDDEN void __indirect_glNormal3bv(const GLbyte * v);
-extern HIDDEN void __indirect_glNormal3d(GLdouble nx, GLdouble ny, GLdouble nz);
-extern HIDDEN void __indirect_glNormal3dv(const GLdouble * v);
-extern HIDDEN void __indirect_glNormal3f(GLfloat nx, GLfloat ny, GLfloat nz);
-extern HIDDEN void __indirect_glNormal3fv(const GLfloat * v);
-extern HIDDEN void __indirect_glNormal3i(GLint nx, GLint ny, GLint nz);
-extern HIDDEN void __indirect_glNormal3iv(const GLint * v);
-extern HIDDEN void __indirect_glNormal3s(GLshort nx, GLshort ny, GLshort nz);
-extern HIDDEN void __indirect_glNormal3sv(const GLshort * v);
-extern HIDDEN void __indirect_glRasterPos2d(GLdouble x, GLdouble y);
-extern HIDDEN void __indirect_glRasterPos2dv(const GLdouble * v);
-extern HIDDEN void __indirect_glRasterPos2f(GLfloat x, GLfloat y);
-extern HIDDEN void __indirect_glRasterPos2fv(const GLfloat * v);
-extern HIDDEN void __indirect_glRasterPos2i(GLint x, GLint y);
-extern HIDDEN void __indirect_glRasterPos2iv(const GLint * v);
-extern HIDDEN void __indirect_glRasterPos2s(GLshort x, GLshort y);
-extern HIDDEN void __indirect_glRasterPos2sv(const GLshort * v);
-extern HIDDEN void __indirect_glRasterPos3d(GLdouble x, GLdouble y, GLdouble z);
-extern HIDDEN void __indirect_glRasterPos3dv(const GLdouble * v);
-extern HIDDEN void __indirect_glRasterPos3f(GLfloat x, GLfloat y, GLfloat z);
-extern HIDDEN void __indirect_glRasterPos3fv(const GLfloat * v);
-extern HIDDEN void __indirect_glRasterPos3i(GLint x, GLint y, GLint z);
-extern HIDDEN void __indirect_glRasterPos3iv(const GLint * v);
-extern HIDDEN void __indirect_glRasterPos3s(GLshort x, GLshort y, GLshort z);
-extern HIDDEN void __indirect_glRasterPos3sv(const GLshort * v);
-extern HIDDEN void __indirect_glRasterPos4d(GLdouble x, GLdouble y, GLdouble z, GLdouble w);
-extern HIDDEN void __indirect_glRasterPos4dv(const GLdouble * v);
-extern HIDDEN void __indirect_glRasterPos4f(GLfloat x, GLfloat y, GLfloat z, GLfloat w);
-extern HIDDEN void __indirect_glRasterPos4fv(const GLfloat * v);
-extern HIDDEN void __indirect_glRasterPos4i(GLint x, GLint y, GLint z, GLint w);
-extern HIDDEN void __indirect_glRasterPos4iv(const GLint * v);
-extern HIDDEN void __indirect_glRasterPos4s(GLshort x, GLshort y, GLshort z, GLshort w);
-extern HIDDEN void __indirect_glRasterPos4sv(const GLshort * v);
-extern HIDDEN void __indirect_glRectd(GLdouble x1, GLdouble y1, GLdouble x2, GLdouble y2);
-extern HIDDEN void __indirect_glRectdv(const GLdouble * v1, const GLdouble * v2);
-extern HIDDEN void __indirect_glRectf(GLfloat x1, GLfloat y1, GLfloat x2, GLfloat y2);
-extern HIDDEN void __indirect_glRectfv(const GLfloat * v1, const GLfloat * v2);
-extern HIDDEN void __indirect_glRecti(GLint x1, GLint y1, GLint x2, GLint y2);
-extern HIDDEN void __indirect_glRectiv(const GLint * v1, const GLint * v2);
-extern HIDDEN void __indirect_glRects(GLshort x1, GLshort y1, GLshort x2, GLshort y2);
-extern HIDDEN void __indirect_glRectsv(const GLshort * v1, const GLshort * v2);
-extern HIDDEN void __indirect_glTexCoord1d(GLdouble s);
-extern HIDDEN void __indirect_glTexCoord1dv(const GLdouble * v);
-extern HIDDEN void __indirect_glTexCoord1f(GLfloat s);
-extern HIDDEN void __indirect_glTexCoord1fv(const GLfloat * v);
-extern HIDDEN void __indirect_glTexCoord1i(GLint s);
-extern HIDDEN void __indirect_glTexCoord1iv(const GLint * v);
-extern HIDDEN void __indirect_glTexCoord1s(GLshort s);
-extern HIDDEN void __indirect_glTexCoord1sv(const GLshort * v);
-extern HIDDEN void __indirect_glTexCoord2d(GLdouble s, GLdouble t);
-extern HIDDEN void __indirect_glTexCoord2dv(const GLdouble * v);
-extern HIDDEN void __indirect_glTexCoord2f(GLfloat s, GLfloat t);
-extern HIDDEN void __indirect_glTexCoord2fv(const GLfloat * v);
-extern HIDDEN void __indirect_glTexCoord2i(GLint s, GLint t);
-extern HIDDEN void __indirect_glTexCoord2iv(const GLint * v);
-extern HIDDEN void __indirect_glTexCoord2s(GLshort s, GLshort t);
-extern HIDDEN void __indirect_glTexCoord2sv(const GLshort * v);
-extern HIDDEN void __indirect_glTexCoord3d(GLdouble s, GLdouble t, GLdouble r);
-extern HIDDEN void __indirect_glTexCoord3dv(const GLdouble * v);
-extern HIDDEN void __indirect_glTexCoord3f(GLfloat s, GLfloat t, GLfloat r);
-extern HIDDEN void __indirect_glTexCoord3fv(const GLfloat * v);
-extern HIDDEN void __indirect_glTexCoord3i(GLint s, GLint t, GLint r);
-extern HIDDEN void __indirect_glTexCoord3iv(const GLint * v);
-extern HIDDEN void __indirect_glTexCoord3s(GLshort s, GLshort t, GLshort r);
-extern HIDDEN void __indirect_glTexCoord3sv(const GLshort * v);
-extern HIDDEN void __indirect_glTexCoord4d(GLdouble s, GLdouble t, GLdouble r, GLdouble q);
-extern HIDDEN void __indirect_glTexCoord4dv(const GLdouble * v);
-extern HIDDEN void __indirect_glTexCoord4f(GLfloat s, GLfloat t, GLfloat r, GLfloat q);
-extern HIDDEN void __indirect_glTexCoord4fv(const GLfloat * v);
-extern HIDDEN void __indirect_glTexCoord4i(GLint s, GLint t, GLint r, GLint q);
-extern HIDDEN void __indirect_glTexCoord4iv(const GLint * v);
-extern HIDDEN void __indirect_glTexCoord4s(GLshort s, GLshort t, GLshort r, GLshort q);
-extern HIDDEN void __indirect_glTexCoord4sv(const GLshort * v);
-extern HIDDEN void __indirect_glVertex2d(GLdouble x, GLdouble y);
-extern HIDDEN void __indirect_glVertex2dv(const GLdouble * v);
-extern HIDDEN void __indirect_glVertex2f(GLfloat x, GLfloat y);
-extern HIDDEN void __indirect_glVertex2fv(const GLfloat * v);
-extern HIDDEN void __indirect_glVertex2i(GLint x, GLint y);
-extern HIDDEN void __indirect_glVertex2iv(const GLint * v);
-extern HIDDEN void __indirect_glVertex2s(GLshort x, GLshort y);
-extern HIDDEN void __indirect_glVertex2sv(const GLshort * v);
-extern HIDDEN void __indirect_glVertex3d(GLdouble x, GLdouble y, GLdouble z);
-extern HIDDEN void __indirect_glVertex3dv(const GLdouble * v);
-extern HIDDEN void __indirect_glVertex3f(GLfloat x, GLfloat y, GLfloat z);
-extern HIDDEN void __indirect_glVertex3fv(const GLfloat * v);
-extern HIDDEN void __indirect_glVertex3i(GLint x, GLint y, GLint z);
-extern HIDDEN void __indirect_glVertex3iv(const GLint * v);
-extern HIDDEN void __indirect_glVertex3s(GLshort x, GLshort y, GLshort z);
-extern HIDDEN void __indirect_glVertex3sv(const GLshort * v);
-extern HIDDEN void __indirect_glVertex4d(GLdouble x, GLdouble y, GLdouble z, GLdouble w);
-extern HIDDEN void __indirect_glVertex4dv(const GLdouble * v);
-extern HIDDEN void __indirect_glVertex4f(GLfloat x, GLfloat y, GLfloat z, GLfloat w);
-extern HIDDEN void __indirect_glVertex4fv(const GLfloat * v);
-extern HIDDEN void __indirect_glVertex4i(GLint x, GLint y, GLint z, GLint w);
-extern HIDDEN void __indirect_glVertex4iv(const GLint * v);
-extern HIDDEN void __indirect_glVertex4s(GLshort x, GLshort y, GLshort z, GLshort w);
-extern HIDDEN void __indirect_glVertex4sv(const GLshort * v);
-extern HIDDEN void __indirect_glClipPlane(GLenum plane, const GLdouble * equation);
-extern HIDDEN void __indirect_glColorMaterial(GLenum face, GLenum mode);
-extern HIDDEN void __indirect_glCullFace(GLenum mode);
-extern HIDDEN void __indirect_glFogf(GLenum pname, GLfloat param);
-extern HIDDEN void __indirect_glFogfv(GLenum pname, const GLfloat * params);
-extern HIDDEN void __indirect_glFogi(GLenum pname, GLint param);
-extern HIDDEN void __indirect_glFogiv(GLenum pname, const GLint * params);
-extern HIDDEN void __indirect_glFrontFace(GLenum mode);
-extern HIDDEN void __indirect_glHint(GLenum target, GLenum mode);
-extern HIDDEN void __indirect_glLightf(GLenum light, GLenum pname, GLfloat param);
-extern HIDDEN void __indirect_glLightfv(GLenum light, GLenum pname, const GLfloat * params);
-extern HIDDEN void __indirect_glLighti(GLenum light, GLenum pname, GLint param);
-extern HIDDEN void __indirect_glLightiv(GLenum light, GLenum pname, const GLint * params);
-extern HIDDEN void __indirect_glLightModelf(GLenum pname, GLfloat param);
-extern HIDDEN void __indirect_glLightModelfv(GLenum pname, const GLfloat * params);
-extern HIDDEN void __indirect_glLightModeli(GLenum pname, GLint param);
-extern HIDDEN void __indirect_glLightModeliv(GLenum pname, const GLint * params);
-extern HIDDEN void __indirect_glLineStipple(GLint factor, GLushort pattern);
-extern HIDDEN void __indirect_glLineWidth(GLfloat width);
-extern HIDDEN void __indirect_glMaterialf(GLenum face, GLenum pname, GLfloat param);
-extern HIDDEN void __indirect_glMaterialfv(GLenum face, GLenum pname, const GLfloat * params);
-extern HIDDEN void __indirect_glMateriali(GLenum face, GLenum pname, GLint param);
-extern HIDDEN void __indirect_glMaterialiv(GLenum face, GLenum pname, const GLint * params);
-extern HIDDEN void __indirect_glPointSize(GLfloat size);
-extern HIDDEN void __indirect_glPolygonMode(GLenum face, GLenum mode);
-extern HIDDEN void __indirect_glPolygonStipple(const GLubyte * mask);
-extern HIDDEN void __indirect_glScissor(GLint x, GLint y, GLsizei width, GLsizei height);
-extern HIDDEN void __indirect_glShadeModel(GLenum mode);
-extern HIDDEN void __indirect_glTexParameterf(GLenum target, GLenum pname, GLfloat param);
-extern HIDDEN void __indirect_glTexParameterfv(GLenum target, GLenum pname, const GLfloat * params);
-extern HIDDEN void __indirect_glTexParameteri(GLenum target, GLenum pname, GLint param);
-extern HIDDEN void __indirect_glTexParameteriv(GLenum target, GLenum pname, const GLint * params);
-extern HIDDEN void __indirect_glTexImage1D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const GLvoid * pixels);
-extern HIDDEN void __indirect_glTexImage2D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid * pixels);
-extern HIDDEN void __indirect_glTexEnvf(GLenum target, GLenum pname, GLfloat param);
-extern HIDDEN void __indirect_glTexEnvfv(GLenum target, GLenum pname, const GLfloat * params);
-extern HIDDEN void __indirect_glTexEnvi(GLenum target, GLenum pname, GLint param);
-extern HIDDEN void __indirect_glTexEnviv(GLenum target, GLenum pname, const GLint * params);
-extern HIDDEN void __indirect_glTexGend(GLenum coord, GLenum pname, GLdouble param);
-extern HIDDEN void __indirect_glTexGendv(GLenum coord, GLenum pname, const GLdouble * params);
-extern HIDDEN void __indirect_glTexGenf(GLenum coord, GLenum pname, GLfloat param);
-extern HIDDEN void __indirect_glTexGenfv(GLenum coord, GLenum pname, const GLfloat * params);
-extern HIDDEN void __indirect_glTexGeni(GLenum coord, GLenum pname, GLint param);
-extern HIDDEN void __indirect_glTexGeniv(GLenum coord, GLenum pname, const GLint * params);
-extern HIDDEN void __indirect_glFeedbackBuffer(GLsizei size, GLenum type, GLfloat * buffer);
-extern HIDDEN void __indirect_glSelectBuffer(GLsizei size, GLuint * buffer);
-extern HIDDEN GLint __indirect_glRenderMode(GLenum mode);
-extern HIDDEN void __indirect_glInitNames(void);
-extern HIDDEN void __indirect_glLoadName(GLuint name);
-extern HIDDEN void __indirect_glPassThrough(GLfloat token);
-extern HIDDEN void __indirect_glPopName(void);
-extern HIDDEN void __indirect_glPushName(GLuint name);
-extern HIDDEN void __indirect_glDrawBuffer(GLenum mode);
-extern HIDDEN void __indirect_glClear(GLbitfield mask);
-extern HIDDEN void __indirect_glClearAccum(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha);
-extern HIDDEN void __indirect_glClearIndex(GLfloat c);
-extern HIDDEN void __indirect_glClearColor(GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha);
-extern HIDDEN void __indirect_glClearStencil(GLint s);
-extern HIDDEN void __indirect_glClearDepth(GLclampd depth);
-extern HIDDEN void __indirect_glStencilMask(GLuint mask);
-extern HIDDEN void __indirect_glColorMask(GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha);
-extern HIDDEN void __indirect_glDepthMask(GLboolean flag);
-extern HIDDEN void __indirect_glIndexMask(GLuint mask);
-extern HIDDEN void __indirect_glAccum(GLenum op, GLfloat value);
-extern HIDDEN void __indirect_glDisable(GLenum cap);
-extern HIDDEN void __indirect_glEnable(GLenum cap);
-extern HIDDEN void __indirect_glFinish(void);
-extern HIDDEN void __indirect_glFlush(void);
-extern HIDDEN void __indirect_glPopAttrib(void);
-extern HIDDEN void __indirect_glPushAttrib(GLbitfield mask);
-extern HIDDEN void __indirect_glMap1d(GLenum target, GLdouble u1, GLdouble u2, GLint stride, GLint order, const GLdouble * points);
-extern HIDDEN void __indirect_glMap1f(GLenum target, GLfloat u1, GLfloat u2, GLint stride, GLint order, const GLfloat * points);
-extern HIDDEN void __indirect_glMap2d(GLenum target, GLdouble u1, GLdouble u2, GLint ustride, GLint uorder, GLdouble v1, GLdouble v2, GLint vstride, GLint vorder, const GLdouble * points);
-extern HIDDEN void __indirect_glMap2f(GLenum target, GLfloat u1, GLfloat u2, GLint ustride, GLint uorder, GLfloat v1, GLfloat v2, GLint vstride, GLint vorder, const GLfloat * points);
-extern HIDDEN void __indirect_glMapGrid1d(GLint un, GLdouble u1, GLdouble u2);
-extern HIDDEN void __indirect_glMapGrid1f(GLint un, GLfloat u1, GLfloat u2);
-extern HIDDEN void __indirect_glMapGrid2d(GLint un, GLdouble u1, GLdouble u2, GLint vn, GLdouble v1, GLdouble v2);
-extern HIDDEN void __indirect_glMapGrid2f(GLint un, GLfloat u1, GLfloat u2, GLint vn, GLfloat v1, GLfloat v2);
-extern HIDDEN void __indirect_glEvalCoord1d(GLdouble u);
-extern HIDDEN void __indirect_glEvalCoord1dv(const GLdouble * u);
-extern HIDDEN void __indirect_glEvalCoord1f(GLfloat u);
-extern HIDDEN void __indirect_glEvalCoord1fv(const GLfloat * u);
-extern HIDDEN void __indirect_glEvalCoord2d(GLdouble u, GLdouble v);
-extern HIDDEN void __indirect_glEvalCoord2dv(const GLdouble * u);
-extern HIDDEN void __indirect_glEvalCoord2f(GLfloat u, GLfloat v);
-extern HIDDEN void __indirect_glEvalCoord2fv(const GLfloat * u);
-extern HIDDEN void __indirect_glEvalMesh1(GLenum mode, GLint i1, GLint i2);
-extern HIDDEN void __indirect_glEvalPoint1(GLint i);
-extern HIDDEN void __indirect_glEvalMesh2(GLenum mode, GLint i1, GLint i2, GLint j1, GLint j2);
-extern HIDDEN void __indirect_glEvalPoint2(GLint i, GLint j);
-extern HIDDEN void __indirect_glAlphaFunc(GLenum func, GLclampf ref);
-extern HIDDEN void __indirect_glBlendFunc(GLenum sfactor, GLenum dfactor);
-extern HIDDEN void __indirect_glLogicOp(GLenum opcode);
-extern HIDDEN void __indirect_glStencilFunc(GLenum func, GLint ref, GLuint mask);
-extern HIDDEN void __indirect_glStencilOp(GLenum fail, GLenum zfail, GLenum zpass);
-extern HIDDEN void __indirect_glDepthFunc(GLenum func);
-extern HIDDEN void __indirect_glPixelZoom(GLfloat xfactor, GLfloat yfactor);
-extern HIDDEN void __indirect_glPixelTransferf(GLenum pname, GLfloat param);
-extern HIDDEN void __indirect_glPixelTransferi(GLenum pname, GLint param);
-extern HIDDEN void __indirect_glPixelStoref(GLenum pname, GLfloat param);
-extern HIDDEN void __indirect_glPixelStorei(GLenum pname, GLint param);
-extern HIDDEN void __indirect_glPixelMapfv(GLenum map, GLsizei mapsize, const GLfloat * values);
-extern HIDDEN void __indirect_glPixelMapuiv(GLenum map, GLsizei mapsize, const GLuint * values);
-extern HIDDEN void __indirect_glPixelMapusv(GLenum map, GLsizei mapsize, const GLushort * values);
-extern HIDDEN void __indirect_glReadBuffer(GLenum mode);
-extern HIDDEN void __indirect_glCopyPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum type);
-extern HIDDEN void __indirect_glReadPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid * pixels);
-extern HIDDEN void __indirect_glDrawPixels(GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid * pixels);
-extern HIDDEN void __indirect_glGetBooleanv(GLenum pname, GLboolean * params);
-extern HIDDEN void __indirect_glGetClipPlane(GLenum plane, GLdouble * equation);
-extern HIDDEN void __indirect_glGetDoublev(GLenum pname, GLdouble * params);
-extern HIDDEN GLenum __indirect_glGetError(void);
-extern HIDDEN void __indirect_glGetFloatv(GLenum pname, GLfloat * params);
-extern HIDDEN void __indirect_glGetIntegerv(GLenum pname, GLint * params);
-extern HIDDEN void __indirect_glGetLightfv(GLenum light, GLenum pname, GLfloat * params);
-extern HIDDEN void __indirect_glGetLightiv(GLenum light, GLenum pname, GLint * params);
-extern HIDDEN void __indirect_glGetMapdv(GLenum target, GLenum query, GLdouble * v);
-extern HIDDEN void __indirect_glGetMapfv(GLenum target, GLenum query, GLfloat * v);
-extern HIDDEN void __indirect_glGetMapiv(GLenum target, GLenum query, GLint * v);
-extern HIDDEN void __indirect_glGetMaterialfv(GLenum face, GLenum pname, GLfloat * params);
-extern HIDDEN void __indirect_glGetMaterialiv(GLenum face, GLenum pname, GLint * params);
-extern HIDDEN void __indirect_glGetPixelMapfv(GLenum map, GLfloat * values);
-extern HIDDEN void __indirect_glGetPixelMapuiv(GLenum map, GLuint * values);
-extern HIDDEN void __indirect_glGetPixelMapusv(GLenum map, GLushort * values);
-extern HIDDEN void __indirect_glGetPolygonStipple(GLubyte * mask);
-extern HIDDEN const GLubyte * __indirect_glGetString(GLenum name);
-extern HIDDEN void __indirect_glGetTexEnvfv(GLenum target, GLenum pname, GLfloat * params);
-extern HIDDEN void __indirect_glGetTexEnviv(GLenum target, GLenum pname, GLint * params);
-extern HIDDEN void __indirect_glGetTexGendv(GLenum coord, GLenum pname, GLdouble * params);
-extern HIDDEN void __indirect_glGetTexGenfv(GLenum coord, GLenum pname, GLfloat * params);
-extern HIDDEN void __indirect_glGetTexGeniv(GLenum coord, GLenum pname, GLint * params);
-extern HIDDEN void __indirect_glGetTexImage(GLenum target, GLint level, GLenum format, GLenum type, GLvoid * pixels);
-extern HIDDEN void __indirect_glGetTexParameterfv(GLenum target, GLenum pname, GLfloat * params);
-extern HIDDEN void __indirect_glGetTexParameteriv(GLenum target, GLenum pname, GLint * params);
-extern HIDDEN void __indirect_glGetTexLevelParameterfv(GLenum target, GLint level, GLenum pname, GLfloat * params);
-extern HIDDEN void __indirect_glGetTexLevelParameteriv(GLenum target, GLint level, GLenum pname, GLint * params);
-extern HIDDEN GLboolean __indirect_glIsEnabled(GLenum cap);
-extern HIDDEN GLboolean __indirect_glIsList(GLuint list);
-extern HIDDEN void __indirect_glDepthRange(GLclampd zNear, GLclampd zFar);
-extern HIDDEN void __indirect_glFrustum(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar);
-extern HIDDEN void __indirect_glLoadIdentity(void);
-extern HIDDEN void __indirect_glLoadMatrixf(const GLfloat * m);
-extern HIDDEN void __indirect_glLoadMatrixd(const GLdouble * m);
-extern HIDDEN void __indirect_glMatrixMode(GLenum mode);
-extern HIDDEN void __indirect_glMultMatrixf(const GLfloat * m);
-extern HIDDEN void __indirect_glMultMatrixd(const GLdouble * m);
-extern HIDDEN void __indirect_glOrtho(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar);
-extern HIDDEN void __indirect_glPopMatrix(void);
-extern HIDDEN void __indirect_glPushMatrix(void);
-extern HIDDEN void __indirect_glRotated(GLdouble angle, GLdouble x, GLdouble y, GLdouble z);
-extern HIDDEN void __indirect_glRotatef(GLfloat angle, GLfloat x, GLfloat y, GLfloat z);
-extern HIDDEN void __indirect_glScaled(GLdouble x, GLdouble y, GLdouble z);
-extern HIDDEN void __indirect_glScalef(GLfloat x, GLfloat y, GLfloat z);
-extern HIDDEN void __indirect_glTranslated(GLdouble x, GLdouble y, GLdouble z);
-extern HIDDEN void __indirect_glTranslatef(GLfloat x, GLfloat y, GLfloat z);
-extern HIDDEN void __indirect_glViewport(GLint x, GLint y, GLsizei width, GLsizei height);
-extern HIDDEN void __indirect_glArrayElement(GLint i);
-extern HIDDEN void __indirect_glBindTexture(GLenum target, GLuint texture);
-extern HIDDEN void __indirect_glColorPointer(GLint size, GLenum type, GLsizei stride, const GLvoid * pointer);
-extern HIDDEN void __indirect_glDisableClientState(GLenum array);
-extern HIDDEN void __indirect_glDrawArrays(GLenum mode, GLint first, GLsizei count);
-extern HIDDEN void __indirect_glDrawElements(GLenum mode, GLsizei count, GLenum type, const GLvoid * indices);
-extern HIDDEN void __indirect_glEdgeFlagPointer(GLsizei stride, const GLvoid * pointer);
-extern HIDDEN void __indirect_glEnableClientState(GLenum array);
-extern HIDDEN void __indirect_glIndexPointer(GLenum type, GLsizei stride, const GLvoid * pointer);
-extern HIDDEN void __indirect_glIndexub(GLubyte c);
-extern HIDDEN void __indirect_glIndexubv(const GLubyte * c);
-extern HIDDEN void __indirect_glInterleavedArrays(GLenum format, GLsizei stride, const GLvoid * pointer);
-extern HIDDEN void __indirect_glNormalPointer(GLenum type, GLsizei stride, const GLvoid * pointer);
-extern HIDDEN void __indirect_glPolygonOffset(GLfloat factor, GLfloat units);
-extern HIDDEN void __indirect_glTexCoordPointer(GLint size, GLenum type, GLsizei stride, const GLvoid * pointer);
-extern HIDDEN void __indirect_glVertexPointer(GLint size, GLenum type, GLsizei stride, const GLvoid * pointer);
-extern HIDDEN GLboolean __indirect_glAreTexturesResident(GLsizei n, const GLuint * textures, GLboolean * residences);
-GLAPI GLboolean GLAPIENTRY glAreTexturesResidentEXT(GLsizei n, const GLuint * textures, GLboolean * residences);
-extern HIDDEN void __indirect_glCopyTexImage1D(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border);
-extern HIDDEN void __indirect_glCopyTexImage2D(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border);
-extern HIDDEN void __indirect_glCopyTexSubImage1D(GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width);
-extern HIDDEN void __indirect_glCopyTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height);
-extern HIDDEN void __indirect_glDeleteTextures(GLsizei n, const GLuint * textures);
-GLAPI void GLAPIENTRY glDeleteTexturesEXT(GLsizei n, const GLuint * textures);
-extern HIDDEN void __indirect_glGenTextures(GLsizei n, GLuint * textures);
-GLAPI void GLAPIENTRY glGenTexturesEXT(GLsizei n, GLuint * textures);
-extern HIDDEN void __indirect_glGetPointerv(GLenum pname, GLvoid ** params);
-extern HIDDEN GLboolean __indirect_glIsTexture(GLuint texture);
-GLAPI GLboolean GLAPIENTRY glIsTextureEXT(GLuint texture);
-extern HIDDEN void __indirect_glPrioritizeTextures(GLsizei n, const GLuint * textures, const GLclampf * priorities);
-extern HIDDEN void __indirect_glTexSubImage1D(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const GLvoid * pixels);
-extern HIDDEN void __indirect_glTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid * pixels);
-extern HIDDEN void __indirect_glPopClientAttrib(void);
-extern HIDDEN void __indirect_glPushClientAttrib(GLbitfield mask);
-extern HIDDEN void __indirect_glBlendColor(GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha);
-extern HIDDEN void __indirect_glBlendEquation(GLenum mode);
-extern HIDDEN void __indirect_glDrawRangeElements(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid * indices);
-extern HIDDEN void __indirect_glColorTable(GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid * table);
-extern HIDDEN void __indirect_glColorTableParameterfv(GLenum target, GLenum pname, const GLfloat * params);
-extern HIDDEN void __indirect_glColorTableParameteriv(GLenum target, GLenum pname, const GLint * params);
-extern HIDDEN void __indirect_glCopyColorTable(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width);
-extern HIDDEN void __indirect_glGetColorTable(GLenum target, GLenum format, GLenum type, GLvoid * table);
-GLAPI void GLAPIENTRY glGetColorTableEXT(GLenum target, GLenum format, GLenum type, GLvoid * table);
-extern HIDDEN void __indirect_glGetColorTableParameterfv(GLenum target, GLenum pname, GLfloat * params);
-GLAPI void GLAPIENTRY glGetColorTableParameterfvEXT(GLenum target, GLenum pname, GLfloat * params);
-extern HIDDEN void __indirect_glGetColorTableParameteriv(GLenum target, GLenum pname, GLint * params);
-GLAPI void GLAPIENTRY glGetColorTableParameterivEXT(GLenum target, GLenum pname, GLint * params);
-extern HIDDEN void __indirect_glColorSubTable(GLenum target, GLsizei start, GLsizei count, GLenum format, GLenum type, const GLvoid * data);
-extern HIDDEN void __indirect_glCopyColorSubTable(GLenum target, GLsizei start, GLint x, GLint y, GLsizei width);
-extern HIDDEN void __indirect_glConvolutionFilter1D(GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid * image);
-extern HIDDEN void __indirect_glConvolutionFilter2D(GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid * image);
-extern HIDDEN void __indirect_glConvolutionParameterf(GLenum target, GLenum pname, GLfloat params);
-extern HIDDEN void __indirect_glConvolutionParameterfv(GLenum target, GLenum pname, const GLfloat * params);
-extern HIDDEN void __indirect_glConvolutionParameteri(GLenum target, GLenum pname, GLint params);
-extern HIDDEN void __indirect_glConvolutionParameteriv(GLenum target, GLenum pname, const GLint * params);
-extern HIDDEN void __indirect_glCopyConvolutionFilter1D(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width);
-extern HIDDEN void __indirect_glCopyConvolutionFilter2D(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height);
-extern HIDDEN void __indirect_glGetConvolutionFilter(GLenum target, GLenum format, GLenum type, GLvoid * image);
-extern HIDDEN void gl_dispatch_stub_356(GLenum target, GLenum format, GLenum type, GLvoid * image);
-extern HIDDEN void __indirect_glGetConvolutionParameterfv(GLenum target, GLenum pname, GLfloat * params);
-extern HIDDEN void gl_dispatch_stub_357(GLenum target, GLenum pname, GLfloat * params);
-extern HIDDEN void __indirect_glGetConvolutionParameteriv(GLenum target, GLenum pname, GLint * params);
-extern HIDDEN void gl_dispatch_stub_358(GLenum target, GLenum pname, GLint * params);
-extern HIDDEN void __indirect_glGetSeparableFilter(GLenum target, GLenum format, GLenum type, GLvoid * row, GLvoid * column, GLvoid * span);
-extern HIDDEN void gl_dispatch_stub_359(GLenum target, GLenum format, GLenum type, GLvoid * row, GLvoid * column, GLvoid * span);
-extern HIDDEN void __indirect_glSeparableFilter2D(GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid * row, const GLvoid * column);
-extern HIDDEN void __indirect_glGetHistogram(GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid * values);
-extern HIDDEN void gl_dispatch_stub_361(GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid * values);
-extern HIDDEN void __indirect_glGetHistogramParameterfv(GLenum target, GLenum pname, GLfloat * params);
-extern HIDDEN void gl_dispatch_stub_362(GLenum target, GLenum pname, GLfloat * params);
-extern HIDDEN void __indirect_glGetHistogramParameteriv(GLenum target, GLenum pname, GLint * params);
-extern HIDDEN void gl_dispatch_stub_363(GLenum target, GLenum pname, GLint * params);
-extern HIDDEN void __indirect_glGetMinmax(GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid * values);
-extern HIDDEN void gl_dispatch_stub_364(GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid * values);
-extern HIDDEN void __indirect_glGetMinmaxParameterfv(GLenum target, GLenum pname, GLfloat * params);
-extern HIDDEN void gl_dispatch_stub_365(GLenum target, GLenum pname, GLfloat * params);
-extern HIDDEN void __indirect_glGetMinmaxParameteriv(GLenum target, GLenum pname, GLint * params);
-extern HIDDEN void gl_dispatch_stub_366(GLenum target, GLenum pname, GLint * params);
-extern HIDDEN void __indirect_glHistogram(GLenum target, GLsizei width, GLenum internalformat, GLboolean sink);
-extern HIDDEN void __indirect_glMinmax(GLenum target, GLenum internalformat, GLboolean sink);
-extern HIDDEN void __indirect_glResetHistogram(GLenum target);
-extern HIDDEN void __indirect_glResetMinmax(GLenum target);
-extern HIDDEN void __indirect_glTexImage3D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid * pixels);
-extern HIDDEN void __indirect_glTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid * pixels);
-extern HIDDEN void __indirect_glCopyTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height);
-extern HIDDEN void __indirect_glActiveTextureARB(GLenum texture);
-extern HIDDEN void __indirect_glClientActiveTextureARB(GLenum texture);
-extern HIDDEN void __indirect_glMultiTexCoord1dARB(GLenum target, GLdouble s);
-extern HIDDEN void __indirect_glMultiTexCoord1dvARB(GLenum target, const GLdouble * v);
-extern HIDDEN void __indirect_glMultiTexCoord1fARB(GLenum target, GLfloat s);
-extern HIDDEN void __indirect_glMultiTexCoord1fvARB(GLenum target, const GLfloat * v);
-extern HIDDEN void __indirect_glMultiTexCoord1iARB(GLenum target, GLint s);
-extern HIDDEN void __indirect_glMultiTexCoord1ivARB(GLenum target, const GLint * v);
-extern HIDDEN void __indirect_glMultiTexCoord1sARB(GLenum target, GLshort s);
-extern HIDDEN void __indirect_glMultiTexCoord1svARB(GLenum target, const GLshort * v);
-extern HIDDEN void __indirect_glMultiTexCoord2dARB(GLenum target, GLdouble s, GLdouble t);
-extern HIDDEN void __indirect_glMultiTexCoord2dvARB(GLenum target, const GLdouble * v);
-extern HIDDEN void __indirect_glMultiTexCoord2fARB(GLenum target, GLfloat s, GLfloat t);
-extern HIDDEN void __indirect_glMultiTexCoord2fvARB(GLenum target, const GLfloat * v);
-extern HIDDEN void __indirect_glMultiTexCoord2iARB(GLenum target, GLint s, GLint t);
-extern HIDDEN void __indirect_glMultiTexCoord2ivARB(GLenum target, const GLint * v);
-extern HIDDEN void __indirect_glMultiTexCoord2sARB(GLenum target, GLshort s, GLshort t);
-extern HIDDEN void __indirect_glMultiTexCoord2svARB(GLenum target, const GLshort * v);
-extern HIDDEN void __indirect_glMultiTexCoord3dARB(GLenum target, GLdouble s, GLdouble t, GLdouble r);
-extern HIDDEN void __indirect_glMultiTexCoord3dvARB(GLenum target, const GLdouble * v);
-extern HIDDEN void __indirect_glMultiTexCoord3fARB(GLenum target, GLfloat s, GLfloat t, GLfloat r);
-extern HIDDEN void __indirect_glMultiTexCoord3fvARB(GLenum target, const GLfloat * v);
-extern HIDDEN void __indirect_glMultiTexCoord3iARB(GLenum target, GLint s, GLint t, GLint r);
-extern HIDDEN void __indirect_glMultiTexCoord3ivARB(GLenum target, const GLint * v);
-extern HIDDEN void __indirect_glMultiTexCoord3sARB(GLenum target, GLshort s, GLshort t, GLshort r);
-extern HIDDEN void __indirect_glMultiTexCoord3svARB(GLenum target, const GLshort * v);
-extern HIDDEN void __indirect_glMultiTexCoord4dARB(GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q);
-extern HIDDEN void __indirect_glMultiTexCoord4dvARB(GLenum target, const GLdouble * v);
-extern HIDDEN void __indirect_glMultiTexCoord4fARB(GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q);
-extern HIDDEN void __indirect_glMultiTexCoord4fvARB(GLenum target, const GLfloat * v);
-extern HIDDEN void __indirect_glMultiTexCoord4iARB(GLenum target, GLint s, GLint t, GLint r, GLint q);
-extern HIDDEN void __indirect_glMultiTexCoord4ivARB(GLenum target, const GLint * v);
-extern HIDDEN void __indirect_glMultiTexCoord4sARB(GLenum target, GLshort s, GLshort t, GLshort r, GLshort q);
-extern HIDDEN void __indirect_glMultiTexCoord4svARB(GLenum target, const GLshort * v);
-extern HIDDEN void __indirect_glLoadTransposeMatrixdARB(const GLdouble * m);
-extern HIDDEN void __indirect_glLoadTransposeMatrixfARB(const GLfloat * m);
-extern HIDDEN void __indirect_glMultTransposeMatrixdARB(const GLdouble * m);
-extern HIDDEN void __indirect_glMultTransposeMatrixfARB(const GLfloat * m);
-extern HIDDEN void __indirect_glSampleCoverageARB(GLclampf value, GLboolean invert);
-extern HIDDEN void __indirect_glCompressedTexImage1DARB(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const GLvoid * data);
-extern HIDDEN void __indirect_glCompressedTexImage2DARB(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid * data);
-extern HIDDEN void __indirect_glCompressedTexImage3DARB(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid * data);
-extern HIDDEN void __indirect_glCompressedTexSubImage1DARB(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const GLvoid * data);
-extern HIDDEN void __indirect_glCompressedTexSubImage2DARB(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid * data);
-extern HIDDEN void __indirect_glCompressedTexSubImage3DARB(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const GLvoid * data);
-extern HIDDEN void __indirect_glGetCompressedTexImageARB(GLenum target, GLint level, GLvoid * img);
-extern HIDDEN void __indirect_glDisableVertexAttribArrayARB(GLuint index);
-extern HIDDEN void __indirect_glEnableVertexAttribArrayARB(GLuint index);
-extern HIDDEN void __indirect_glGetProgramEnvParameterdvARB(GLenum target, GLuint index, GLdouble * params);
-extern HIDDEN void __indirect_glGetProgramEnvParameterfvARB(GLenum target, GLuint index, GLfloat * params);
-extern HIDDEN void __indirect_glGetProgramLocalParameterdvARB(GLenum target, GLuint index, GLdouble * params);
-extern HIDDEN void __indirect_glGetProgramLocalParameterfvARB(GLenum target, GLuint index, GLfloat * params);
-extern HIDDEN void __indirect_glGetProgramStringARB(GLenum target, GLenum pname, GLvoid * string);
-extern HIDDEN void __indirect_glGetProgramivARB(GLenum target, GLenum pname, GLint * params);
-extern HIDDEN void __indirect_glGetVertexAttribdvARB(GLuint index, GLenum pname, GLdouble * params);
-extern HIDDEN void __indirect_glGetVertexAttribfvARB(GLuint index, GLenum pname, GLfloat * params);
-extern HIDDEN void __indirect_glGetVertexAttribivARB(GLuint index, GLenum pname, GLint * params);
-extern HIDDEN void __indirect_glProgramEnvParameter4dARB(GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
-extern HIDDEN void __indirect_glProgramEnvParameter4dvARB(GLenum target, GLuint index, const GLdouble * params);
-extern HIDDEN void __indirect_glProgramEnvParameter4fARB(GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
-extern HIDDEN void __indirect_glProgramEnvParameter4fvARB(GLenum target, GLuint index, const GLfloat * params);
-extern HIDDEN void __indirect_glProgramLocalParameter4dARB(GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
-extern HIDDEN void __indirect_glProgramLocalParameter4dvARB(GLenum target, GLuint index, const GLdouble * params);
-extern HIDDEN void __indirect_glProgramLocalParameter4fARB(GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
-extern HIDDEN void __indirect_glProgramLocalParameter4fvARB(GLenum target, GLuint index, const GLfloat * params);
-extern HIDDEN void __indirect_glProgramStringARB(GLenum target, GLenum format, GLsizei len, const GLvoid * string);
-extern HIDDEN void __indirect_glVertexAttrib1dARB(GLuint index, GLdouble x);
-extern HIDDEN void __indirect_glVertexAttrib1dvARB(GLuint index, const GLdouble * v);
-extern HIDDEN void __indirect_glVertexAttrib1fARB(GLuint index, GLfloat x);
-extern HIDDEN void __indirect_glVertexAttrib1fvARB(GLuint index, const GLfloat * v);
-extern HIDDEN void __indirect_glVertexAttrib1sARB(GLuint index, GLshort x);
-extern HIDDEN void __indirect_glVertexAttrib1svARB(GLuint index, const GLshort * v);
-extern HIDDEN void __indirect_glVertexAttrib2dARB(GLuint index, GLdouble x, GLdouble y);
-extern HIDDEN void __indirect_glVertexAttrib2dvARB(GLuint index, const GLdouble * v);
-extern HIDDEN void __indirect_glVertexAttrib2fARB(GLuint index, GLfloat x, GLfloat y);
-extern HIDDEN void __indirect_glVertexAttrib2fvARB(GLuint index, const GLfloat * v);
-extern HIDDEN void __indirect_glVertexAttrib2sARB(GLuint index, GLshort x, GLshort y);
-extern HIDDEN void __indirect_glVertexAttrib2svARB(GLuint index, const GLshort * v);
-extern HIDDEN void __indirect_glVertexAttrib3dARB(GLuint index, GLdouble x, GLdouble y, GLdouble z);
-extern HIDDEN void __indirect_glVertexAttrib3dvARB(GLuint index, const GLdouble * v);
-extern HIDDEN void __indirect_glVertexAttrib3fARB(GLuint index, GLfloat x, GLfloat y, GLfloat z);
-extern HIDDEN void __indirect_glVertexAttrib3fvARB(GLuint index, const GLfloat * v);
-extern HIDDEN void __indirect_glVertexAttrib3sARB(GLuint index, GLshort x, GLshort y, GLshort z);
-extern HIDDEN void __indirect_glVertexAttrib3svARB(GLuint index, const GLshort * v);
-extern HIDDEN void __indirect_glVertexAttrib4NbvARB(GLuint index, const GLbyte * v);
-extern HIDDEN void __indirect_glVertexAttrib4NivARB(GLuint index, const GLint * v);
-extern HIDDEN void __indirect_glVertexAttrib4NsvARB(GLuint index, const GLshort * v);
-extern HIDDEN void __indirect_glVertexAttrib4NubARB(GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w);
-extern HIDDEN void __indirect_glVertexAttrib4NubvARB(GLuint index, const GLubyte * v);
-extern HIDDEN void __indirect_glVertexAttrib4NuivARB(GLuint index, const GLuint * v);
-extern HIDDEN void __indirect_glVertexAttrib4NusvARB(GLuint index, const GLushort * v);
-extern HIDDEN void __indirect_glVertexAttrib4bvARB(GLuint index, const GLbyte * v);
-extern HIDDEN void __indirect_glVertexAttrib4dARB(GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
-extern HIDDEN void __indirect_glVertexAttrib4dvARB(GLuint index, const GLdouble * v);
-extern HIDDEN void __indirect_glVertexAttrib4fARB(GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
-extern HIDDEN void __indirect_glVertexAttrib4fvARB(GLuint index, const GLfloat * v);
-extern HIDDEN void __indirect_glVertexAttrib4ivARB(GLuint index, const GLint * v);
-extern HIDDEN void __indirect_glVertexAttrib4sARB(GLuint index, GLshort x, GLshort y, GLshort z, GLshort w);
-extern HIDDEN void __indirect_glVertexAttrib4svARB(GLuint index, const GLshort * v);
-extern HIDDEN void __indirect_glVertexAttrib4ubvARB(GLuint index, const GLubyte * v);
-extern HIDDEN void __indirect_glVertexAttrib4uivARB(GLuint index, const GLuint * v);
-extern HIDDEN void __indirect_glVertexAttrib4usvARB(GLuint index, const GLushort * v);
-extern HIDDEN void __indirect_glVertexAttribPointerARB(GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const GLvoid * pointer);
-extern HIDDEN void __indirect_glBeginQueryARB(GLenum target, GLuint id);
-extern HIDDEN void __indirect_glDeleteQueriesARB(GLsizei n, const GLuint * ids);
-extern HIDDEN void __indirect_glEndQueryARB(GLenum target);
-extern HIDDEN void __indirect_glGenQueriesARB(GLsizei n, GLuint * ids);
-extern HIDDEN void __indirect_glGetQueryObjectivARB(GLuint id, GLenum pname, GLint * params);
-extern HIDDEN void __indirect_glGetQueryObjectuivARB(GLuint id, GLenum pname, GLuint * params);
-extern HIDDEN void __indirect_glGetQueryivARB(GLenum target, GLenum pname, GLint * params);
-extern HIDDEN GLboolean __indirect_glIsQueryARB(GLuint id);
-extern HIDDEN void __indirect_glDrawBuffersARB(GLsizei n, const GLenum * bufs);
-extern HIDDEN void __indirect_glRenderbufferStorageMultisample(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height);
-extern HIDDEN void __indirect_glSampleMaskSGIS(GLclampf value, GLboolean invert);
-extern HIDDEN void __indirect_glSamplePatternSGIS(GLenum pattern);
-extern HIDDEN void __indirect_glColorPointerEXT(GLint size, GLenum type, GLsizei stride, GLsizei count, const GLvoid * pointer);
-extern HIDDEN void __indirect_glEdgeFlagPointerEXT(GLsizei stride, GLsizei count, const GLboolean * pointer);
-extern HIDDEN void __indirect_glIndexPointerEXT(GLenum type, GLsizei stride, GLsizei count, const GLvoid * pointer);
-extern HIDDEN void __indirect_glNormalPointerEXT(GLenum type, GLsizei stride, GLsizei count, const GLvoid * pointer);
-extern HIDDEN void __indirect_glTexCoordPointerEXT(GLint size, GLenum type, GLsizei stride, GLsizei count, const GLvoid * pointer);
-extern HIDDEN void __indirect_glVertexPointerEXT(GLint size, GLenum type, GLsizei stride, GLsizei count, const GLvoid * pointer);
-extern HIDDEN void __indirect_glPointParameterfEXT(GLenum pname, GLfloat param);
-extern HIDDEN void __indirect_glPointParameterfvEXT(GLenum pname, const GLfloat * params);
-extern HIDDEN void __indirect_glSecondaryColor3bEXT(GLbyte red, GLbyte green, GLbyte blue);
-extern HIDDEN void __indirect_glSecondaryColor3bvEXT(const GLbyte * v);
-extern HIDDEN void __indirect_glSecondaryColor3dEXT(GLdouble red, GLdouble green, GLdouble blue);
-extern HIDDEN void __indirect_glSecondaryColor3dvEXT(const GLdouble * v);
-extern HIDDEN void __indirect_glSecondaryColor3fEXT(GLfloat red, GLfloat green, GLfloat blue);
-extern HIDDEN void __indirect_glSecondaryColor3fvEXT(const GLfloat * v);
-extern HIDDEN void __indirect_glSecondaryColor3iEXT(GLint red, GLint green, GLint blue);
-extern HIDDEN void __indirect_glSecondaryColor3ivEXT(const GLint * v);
-extern HIDDEN void __indirect_glSecondaryColor3sEXT(GLshort red, GLshort green, GLshort blue);
-extern HIDDEN void __indirect_glSecondaryColor3svEXT(const GLshort * v);
-extern HIDDEN void __indirect_glSecondaryColor3ubEXT(GLubyte red, GLubyte green, GLubyte blue);
-extern HIDDEN void __indirect_glSecondaryColor3ubvEXT(const GLubyte * v);
-extern HIDDEN void __indirect_glSecondaryColor3uiEXT(GLuint red, GLuint green, GLuint blue);
-extern HIDDEN void __indirect_glSecondaryColor3uivEXT(const GLuint * v);
-extern HIDDEN void __indirect_glSecondaryColor3usEXT(GLushort red, GLushort green, GLushort blue);
-extern HIDDEN void __indirect_glSecondaryColor3usvEXT(const GLushort * v);
-extern HIDDEN void __indirect_glSecondaryColorPointerEXT(GLint size, GLenum type, GLsizei stride, const GLvoid * pointer);
-extern HIDDEN void __indirect_glMultiDrawArraysEXT(GLenum mode, GLint * first, GLsizei * count, GLsizei primcount);
-extern HIDDEN void __indirect_glMultiDrawElementsEXT(GLenum mode, const GLsizei * count, GLenum type, const GLvoid ** indices, GLsizei primcount);
-extern HIDDEN void __indirect_glFogCoordPointerEXT(GLenum type, GLsizei stride, const GLvoid * pointer);
-extern HIDDEN void __indirect_glFogCoorddEXT(GLdouble coord);
-extern HIDDEN void __indirect_glFogCoorddvEXT(const GLdouble * coord);
-extern HIDDEN void __indirect_glFogCoordfEXT(GLfloat coord);
-extern HIDDEN void __indirect_glFogCoordfvEXT(const GLfloat * coord);
-extern HIDDEN void __indirect_glBlendFuncSeparateEXT(GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha);
-extern HIDDEN void __indirect_glWindowPos2dMESA(GLdouble x, GLdouble y);
-extern HIDDEN void __indirect_glWindowPos2dvMESA(const GLdouble * v);
-extern HIDDEN void __indirect_glWindowPos2fMESA(GLfloat x, GLfloat y);
-extern HIDDEN void __indirect_glWindowPos2fvMESA(const GLfloat * v);
-extern HIDDEN void __indirect_glWindowPos2iMESA(GLint x, GLint y);
-extern HIDDEN void __indirect_glWindowPos2ivMESA(const GLint * v);
-extern HIDDEN void __indirect_glWindowPos2sMESA(GLshort x, GLshort y);
-extern HIDDEN void __indirect_glWindowPos2svMESA(const GLshort * v);
-extern HIDDEN void __indirect_glWindowPos3dMESA(GLdouble x, GLdouble y, GLdouble z);
-extern HIDDEN void __indirect_glWindowPos3dvMESA(const GLdouble * v);
-extern HIDDEN void __indirect_glWindowPos3fMESA(GLfloat x, GLfloat y, GLfloat z);
-extern HIDDEN void __indirect_glWindowPos3fvMESA(const GLfloat * v);
-extern HIDDEN void __indirect_glWindowPos3iMESA(GLint x, GLint y, GLint z);
-extern HIDDEN void __indirect_glWindowPos3ivMESA(const GLint * v);
-extern HIDDEN void __indirect_glWindowPos3sMESA(GLshort x, GLshort y, GLshort z);
-extern HIDDEN void __indirect_glWindowPos3svMESA(const GLshort * v);
-extern HIDDEN GLboolean __indirect_glAreProgramsResidentNV(GLsizei n, const GLuint * ids, GLboolean * residences);
-extern HIDDEN void __indirect_glBindProgramNV(GLenum target, GLuint program);
-extern HIDDEN void __indirect_glDeleteProgramsNV(GLsizei n, const GLuint * programs);
-extern HIDDEN void __indirect_glExecuteProgramNV(GLenum target, GLuint id, const GLfloat * params);
-extern HIDDEN void __indirect_glGenProgramsNV(GLsizei n, GLuint * programs);
-extern HIDDEN void __indirect_glGetProgramParameterdvNV(GLenum target, GLuint index, GLenum pname, GLdouble * params);
-extern HIDDEN void __indirect_glGetProgramParameterfvNV(GLenum target, GLuint index, GLenum pname, GLfloat * params);
-extern HIDDEN void __indirect_glGetProgramStringNV(GLuint id, GLenum pname, GLubyte * program);
-extern HIDDEN void __indirect_glGetProgramivNV(GLuint id, GLenum pname, GLint * params);
-extern HIDDEN void __indirect_glGetTrackMatrixivNV(GLenum target, GLuint address, GLenum pname, GLint * params);
-extern HIDDEN void __indirect_glGetVertexAttribPointervNV(GLuint index, GLenum pname, GLvoid ** pointer);
-extern HIDDEN void __indirect_glGetVertexAttribdvNV(GLuint index, GLenum pname, GLdouble * params);
-extern HIDDEN void __indirect_glGetVertexAttribfvNV(GLuint index, GLenum pname, GLfloat * params);
-extern HIDDEN void __indirect_glGetVertexAttribivNV(GLuint index, GLenum pname, GLint * params);
-extern HIDDEN GLboolean __indirect_glIsProgramNV(GLuint program);
-extern HIDDEN void __indirect_glLoadProgramNV(GLenum target, GLuint id, GLsizei len, const GLubyte * program);
-extern HIDDEN void __indirect_glProgramParameters4dvNV(GLenum target, GLuint index, GLuint num, const GLdouble * params);
-extern HIDDEN void __indirect_glProgramParameters4fvNV(GLenum target, GLuint index, GLuint num, const GLfloat * params);
-extern HIDDEN void __indirect_glRequestResidentProgramsNV(GLsizei n, const GLuint * ids);
-extern HIDDEN void __indirect_glTrackMatrixNV(GLenum target, GLuint address, GLenum matrix, GLenum transform);
-extern HIDDEN void __indirect_glVertexAttrib1dNV(GLuint index, GLdouble x);
-extern HIDDEN void __indirect_glVertexAttrib1dvNV(GLuint index, const GLdouble * v);
-extern HIDDEN void __indirect_glVertexAttrib1fNV(GLuint index, GLfloat x);
-extern HIDDEN void __indirect_glVertexAttrib1fvNV(GLuint index, const GLfloat * v);
-extern HIDDEN void __indirect_glVertexAttrib1sNV(GLuint index, GLshort x);
-extern HIDDEN void __indirect_glVertexAttrib1svNV(GLuint index, const GLshort * v);
-extern HIDDEN void __indirect_glVertexAttrib2dNV(GLuint index, GLdouble x, GLdouble y);
-extern HIDDEN void __indirect_glVertexAttrib2dvNV(GLuint index, const GLdouble * v);
-extern HIDDEN void __indirect_glVertexAttrib2fNV(GLuint index, GLfloat x, GLfloat y);
-extern HIDDEN void __indirect_glVertexAttrib2fvNV(GLuint index, const GLfloat * v);
-extern HIDDEN void __indirect_glVertexAttrib2sNV(GLuint index, GLshort x, GLshort y);
-extern HIDDEN void __indirect_glVertexAttrib2svNV(GLuint index, const GLshort * v);
-extern HIDDEN void __indirect_glVertexAttrib3dNV(GLuint index, GLdouble x, GLdouble y, GLdouble z);
-extern HIDDEN void __indirect_glVertexAttrib3dvNV(GLuint index, const GLdouble * v);
-extern HIDDEN void __indirect_glVertexAttrib3fNV(GLuint index, GLfloat x, GLfloat y, GLfloat z);
-extern HIDDEN void __indirect_glVertexAttrib3fvNV(GLuint index, const GLfloat * v);
-extern HIDDEN void __indirect_glVertexAttrib3sNV(GLuint index, GLshort x, GLshort y, GLshort z);
-extern HIDDEN void __indirect_glVertexAttrib3svNV(GLuint index, const GLshort * v);
-extern HIDDEN void __indirect_glVertexAttrib4dNV(GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
-extern HIDDEN void __indirect_glVertexAttrib4dvNV(GLuint index, const GLdouble * v);
-extern HIDDEN void __indirect_glVertexAttrib4fNV(GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
-extern HIDDEN void __indirect_glVertexAttrib4fvNV(GLuint index, const GLfloat * v);
-extern HIDDEN void __indirect_glVertexAttrib4sNV(GLuint index, GLshort x, GLshort y, GLshort z, GLshort w);
-extern HIDDEN void __indirect_glVertexAttrib4svNV(GLuint index, const GLshort * v);
-extern HIDDEN void __indirect_glVertexAttrib4ubNV(GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w);
-extern HIDDEN void __indirect_glVertexAttrib4ubvNV(GLuint index, const GLubyte * v);
-extern HIDDEN void __indirect_glVertexAttribPointerNV(GLuint index, GLint size, GLenum type, GLsizei stride, const GLvoid * pointer);
-extern HIDDEN void __indirect_glVertexAttribs1dvNV(GLuint index, GLsizei n, const GLdouble * v);
-extern HIDDEN void __indirect_glVertexAttribs1fvNV(GLuint index, GLsizei n, const GLfloat * v);
-extern HIDDEN void __indirect_glVertexAttribs1svNV(GLuint index, GLsizei n, const GLshort * v);
-extern HIDDEN void __indirect_glVertexAttribs2dvNV(GLuint index, GLsizei n, const GLdouble * v);
-extern HIDDEN void __indirect_glVertexAttribs2fvNV(GLuint index, GLsizei n, const GLfloat * v);
-extern HIDDEN void __indirect_glVertexAttribs2svNV(GLuint index, GLsizei n, const GLshort * v);
-extern HIDDEN void __indirect_glVertexAttribs3dvNV(GLuint index, GLsizei n, const GLdouble * v);
-extern HIDDEN void __indirect_glVertexAttribs3fvNV(GLuint index, GLsizei n, const GLfloat * v);
-extern HIDDEN void __indirect_glVertexAttribs3svNV(GLuint index, GLsizei n, const GLshort * v);
-extern HIDDEN void __indirect_glVertexAttribs4dvNV(GLuint index, GLsizei n, const GLdouble * v);
-extern HIDDEN void __indirect_glVertexAttribs4fvNV(GLuint index, GLsizei n, const GLfloat * v);
-extern HIDDEN void __indirect_glVertexAttribs4svNV(GLuint index, GLsizei n, const GLshort * v);
-extern HIDDEN void __indirect_glVertexAttribs4ubvNV(GLuint index, GLsizei n, const GLubyte * v);
-extern HIDDEN void __indirect_glPointParameteriNV(GLenum pname, GLint param);
-extern HIDDEN void __indirect_glPointParameterivNV(GLenum pname, const GLint * params);
-extern HIDDEN void __indirect_glActiveStencilFaceEXT(GLenum face);
-extern HIDDEN void __indirect_glGetProgramNamedParameterdvNV(GLuint id, GLsizei len, const GLubyte * name, GLdouble * params);
-extern HIDDEN void __indirect_glGetProgramNamedParameterfvNV(GLuint id, GLsizei len, const GLubyte * name, GLfloat * params);
-extern HIDDEN void __indirect_glProgramNamedParameter4dNV(GLuint id, GLsizei len, const GLubyte * name, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
-extern HIDDEN void __indirect_glProgramNamedParameter4dvNV(GLuint id, GLsizei len, const GLubyte * name, const GLdouble * v);
-extern HIDDEN void __indirect_glProgramNamedParameter4fNV(GLuint id, GLsizei len, const GLubyte * name, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
-extern HIDDEN void __indirect_glProgramNamedParameter4fvNV(GLuint id, GLsizei len, const GLubyte * name, const GLfloat * v);
-extern HIDDEN void __indirect_glBlendEquationSeparateEXT(GLenum modeRGB, GLenum modeA);
-extern HIDDEN void __indirect_glBindFramebufferEXT(GLenum target, GLuint framebuffer);
-extern HIDDEN void __indirect_glBindRenderbufferEXT(GLenum target, GLuint renderbuffer);
-extern HIDDEN GLenum __indirect_glCheckFramebufferStatusEXT(GLenum target);
-extern HIDDEN void __indirect_glDeleteFramebuffersEXT(GLsizei n, const GLuint * framebuffers);
-extern HIDDEN void __indirect_glDeleteRenderbuffersEXT(GLsizei n, const GLuint * renderbuffers);
-extern HIDDEN void __indirect_glFramebufferRenderbufferEXT(GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer);
-extern HIDDEN void __indirect_glFramebufferTexture1DEXT(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level);
-extern HIDDEN void __indirect_glFramebufferTexture2DEXT(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level);
-extern HIDDEN void __indirect_glFramebufferTexture3DEXT(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset);
-extern HIDDEN void __indirect_glGenFramebuffersEXT(GLsizei n, GLuint * framebuffers);
-extern HIDDEN void __indirect_glGenRenderbuffersEXT(GLsizei n, GLuint * renderbuffers);
-extern HIDDEN void __indirect_glGenerateMipmapEXT(GLenum target);
-extern HIDDEN void __indirect_glGetFramebufferAttachmentParameterivEXT(GLenum target, GLenum attachment, GLenum pname, GLint * params);
-extern HIDDEN void __indirect_glGetRenderbufferParameterivEXT(GLenum target, GLenum pname, GLint * params);
-extern HIDDEN GLboolean __indirect_glIsFramebufferEXT(GLuint framebuffer);
-extern HIDDEN GLboolean __indirect_glIsRenderbufferEXT(GLuint renderbuffer);
-extern HIDDEN void __indirect_glRenderbufferStorageEXT(GLenum target, GLenum internalformat, GLsizei width, GLsizei height);
-extern HIDDEN void __indirect_glBlitFramebufferEXT(GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter);
-extern HIDDEN void __indirect_glFramebufferTextureLayerEXT(GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer);
-
-# undef HIDDEN
-# undef FASTCALL
-# undef NOINLINE
-
-#endif /* !defined( _INDIRECT_H_ ) */
diff --git a/src/glx/x11/indirect_init.c b/src/glx/x11/indirect_init.c
deleted file mode 100644
index 73ca993027b..00000000000
--- a/src/glx/x11/indirect_init.c
+++ /dev/null
@@ -1,785 +0,0 @@
-/* DO NOT EDIT - This file generated automatically by glX_proto_send.py (from Mesa) script */
-
-/*
- * Copyright 1998-1999 Precision Insight, Inc., Cedar Park, Texas.
- * (C) Copyright IBM Corporation 2004
- * 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"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sub license,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice (including the next
- * paragraph) shall be included in all copies or substantial portions of the
- * Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL
- * PRECISION INSIGHT, IBM,
- * AND/OR THEIR SUPPLIERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
- * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
- * OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- */
-
-/**
- * \file indirect_init.c
- * Initialize indirect rendering dispatch table.
- *
- * \author Kevin E. Martin <[email protected]>
- * \author Brian Paul <[email protected]>
- * \author Ian Romanick <[email protected]>
- */
-
-#include "indirect_init.h"
-#include "indirect.h"
-#include "glapi.h"
-
-
-/**
- * No-op function used to initialize functions that have no GLX protocol
- * support.
- */
-static int NoOp(void)
-{
- return 0;
-}
-
-/**
- * Create and initialize a new GL dispatch table. The table is initialized
- * with GLX indirect rendering protocol functions.
- */
-__GLapi * __glXNewIndirectAPI( void )
-{
- __GLapi *glAPI;
- GLuint entries;
-
- entries = _glapi_get_dispatch_table_size();
- glAPI = (__GLapi *) Xmalloc(entries * sizeof(void *));
-
- /* first, set all entries to point to no-op functions */
- {
- int i;
- void **dispatch = (void **) glAPI;
- for (i = 0; i < entries; i++) {
- dispatch[i] = (void *) NoOp;
- }
- }
-
- /* now, initialize the entries we understand */
-
- /* 1.0 */
-
- glAPI->Accum = __indirect_glAccum;
- glAPI->AlphaFunc = __indirect_glAlphaFunc;
- glAPI->Begin = __indirect_glBegin;
- glAPI->Bitmap = __indirect_glBitmap;
- glAPI->BlendFunc = __indirect_glBlendFunc;
- glAPI->CallList = __indirect_glCallList;
- glAPI->CallLists = __indirect_glCallLists;
- glAPI->Clear = __indirect_glClear;
- glAPI->ClearAccum = __indirect_glClearAccum;
- glAPI->ClearColor = __indirect_glClearColor;
- glAPI->ClearDepth = __indirect_glClearDepth;
- glAPI->ClearIndex = __indirect_glClearIndex;
- glAPI->ClearStencil = __indirect_glClearStencil;
- glAPI->ClipPlane = __indirect_glClipPlane;
- glAPI->Color3b = __indirect_glColor3b;
- glAPI->Color3bv = __indirect_glColor3bv;
- glAPI->Color3d = __indirect_glColor3d;
- glAPI->Color3dv = __indirect_glColor3dv;
- glAPI->Color3f = __indirect_glColor3f;
- glAPI->Color3fv = __indirect_glColor3fv;
- glAPI->Color3i = __indirect_glColor3i;
- glAPI->Color3iv = __indirect_glColor3iv;
- glAPI->Color3s = __indirect_glColor3s;
- glAPI->Color3sv = __indirect_glColor3sv;
- glAPI->Color3ub = __indirect_glColor3ub;
- glAPI->Color3ubv = __indirect_glColor3ubv;
- glAPI->Color3ui = __indirect_glColor3ui;
- glAPI->Color3uiv = __indirect_glColor3uiv;
- glAPI->Color3us = __indirect_glColor3us;
- glAPI->Color3usv = __indirect_glColor3usv;
- glAPI->Color4b = __indirect_glColor4b;
- glAPI->Color4bv = __indirect_glColor4bv;
- glAPI->Color4d = __indirect_glColor4d;
- glAPI->Color4dv = __indirect_glColor4dv;
- glAPI->Color4f = __indirect_glColor4f;
- glAPI->Color4fv = __indirect_glColor4fv;
- glAPI->Color4i = __indirect_glColor4i;
- glAPI->Color4iv = __indirect_glColor4iv;
- glAPI->Color4s = __indirect_glColor4s;
- glAPI->Color4sv = __indirect_glColor4sv;
- glAPI->Color4ub = __indirect_glColor4ub;
- glAPI->Color4ubv = __indirect_glColor4ubv;
- glAPI->Color4ui = __indirect_glColor4ui;
- glAPI->Color4uiv = __indirect_glColor4uiv;
- glAPI->Color4us = __indirect_glColor4us;
- glAPI->Color4usv = __indirect_glColor4usv;
- glAPI->ColorMask = __indirect_glColorMask;
- glAPI->ColorMaterial = __indirect_glColorMaterial;
- glAPI->CopyPixels = __indirect_glCopyPixels;
- glAPI->CullFace = __indirect_glCullFace;
- glAPI->DeleteLists = __indirect_glDeleteLists;
- glAPI->DepthFunc = __indirect_glDepthFunc;
- glAPI->DepthMask = __indirect_glDepthMask;
- glAPI->DepthRange = __indirect_glDepthRange;
- glAPI->Disable = __indirect_glDisable;
- glAPI->DrawBuffer = __indirect_glDrawBuffer;
- glAPI->DrawPixels = __indirect_glDrawPixels;
- glAPI->EdgeFlag = __indirect_glEdgeFlag;
- glAPI->EdgeFlagv = __indirect_glEdgeFlagv;
- glAPI->Enable = __indirect_glEnable;
- glAPI->End = __indirect_glEnd;
- glAPI->EndList = __indirect_glEndList;
- glAPI->EvalCoord1d = __indirect_glEvalCoord1d;
- glAPI->EvalCoord1dv = __indirect_glEvalCoord1dv;
- glAPI->EvalCoord1f = __indirect_glEvalCoord1f;
- glAPI->EvalCoord1fv = __indirect_glEvalCoord1fv;
- glAPI->EvalCoord2d = __indirect_glEvalCoord2d;
- glAPI->EvalCoord2dv = __indirect_glEvalCoord2dv;
- glAPI->EvalCoord2f = __indirect_glEvalCoord2f;
- glAPI->EvalCoord2fv = __indirect_glEvalCoord2fv;
- glAPI->EvalMesh1 = __indirect_glEvalMesh1;
- glAPI->EvalMesh2 = __indirect_glEvalMesh2;
- glAPI->EvalPoint1 = __indirect_glEvalPoint1;
- glAPI->EvalPoint2 = __indirect_glEvalPoint2;
- glAPI->FeedbackBuffer = __indirect_glFeedbackBuffer;
- glAPI->Finish = __indirect_glFinish;
- glAPI->Flush = __indirect_glFlush;
- glAPI->Fogf = __indirect_glFogf;
- glAPI->Fogfv = __indirect_glFogfv;
- glAPI->Fogi = __indirect_glFogi;
- glAPI->Fogiv = __indirect_glFogiv;
- glAPI->FrontFace = __indirect_glFrontFace;
- glAPI->Frustum = __indirect_glFrustum;
- glAPI->GenLists = __indirect_glGenLists;
- glAPI->GetBooleanv = __indirect_glGetBooleanv;
- glAPI->GetClipPlane = __indirect_glGetClipPlane;
- glAPI->GetDoublev = __indirect_glGetDoublev;
- glAPI->GetError = __indirect_glGetError;
- glAPI->GetFloatv = __indirect_glGetFloatv;
- glAPI->GetIntegerv = __indirect_glGetIntegerv;
- glAPI->GetLightfv = __indirect_glGetLightfv;
- glAPI->GetLightiv = __indirect_glGetLightiv;
- glAPI->GetMapdv = __indirect_glGetMapdv;
- glAPI->GetMapfv = __indirect_glGetMapfv;
- glAPI->GetMapiv = __indirect_glGetMapiv;
- glAPI->GetMaterialfv = __indirect_glGetMaterialfv;
- glAPI->GetMaterialiv = __indirect_glGetMaterialiv;
- glAPI->GetPixelMapfv = __indirect_glGetPixelMapfv;
- glAPI->GetPixelMapuiv = __indirect_glGetPixelMapuiv;
- glAPI->GetPixelMapusv = __indirect_glGetPixelMapusv;
- glAPI->GetPolygonStipple = __indirect_glGetPolygonStipple;
- glAPI->GetString = __indirect_glGetString;
- glAPI->GetTexEnvfv = __indirect_glGetTexEnvfv;
- glAPI->GetTexEnviv = __indirect_glGetTexEnviv;
- glAPI->GetTexGendv = __indirect_glGetTexGendv;
- glAPI->GetTexGenfv = __indirect_glGetTexGenfv;
- glAPI->GetTexGeniv = __indirect_glGetTexGeniv;
- glAPI->GetTexImage = __indirect_glGetTexImage;
- glAPI->GetTexLevelParameterfv = __indirect_glGetTexLevelParameterfv;
- glAPI->GetTexLevelParameteriv = __indirect_glGetTexLevelParameteriv;
- glAPI->GetTexParameterfv = __indirect_glGetTexParameterfv;
- glAPI->GetTexParameteriv = __indirect_glGetTexParameteriv;
- glAPI->Hint = __indirect_glHint;
- glAPI->IndexMask = __indirect_glIndexMask;
- glAPI->Indexd = __indirect_glIndexd;
- glAPI->Indexdv = __indirect_glIndexdv;
- glAPI->Indexf = __indirect_glIndexf;
- glAPI->Indexfv = __indirect_glIndexfv;
- glAPI->Indexi = __indirect_glIndexi;
- glAPI->Indexiv = __indirect_glIndexiv;
- glAPI->Indexs = __indirect_glIndexs;
- glAPI->Indexsv = __indirect_glIndexsv;
- glAPI->InitNames = __indirect_glInitNames;
- glAPI->IsEnabled = __indirect_glIsEnabled;
- glAPI->IsList = __indirect_glIsList;
- glAPI->LightModelf = __indirect_glLightModelf;
- glAPI->LightModelfv = __indirect_glLightModelfv;
- glAPI->LightModeli = __indirect_glLightModeli;
- glAPI->LightModeliv = __indirect_glLightModeliv;
- glAPI->Lightf = __indirect_glLightf;
- glAPI->Lightfv = __indirect_glLightfv;
- glAPI->Lighti = __indirect_glLighti;
- glAPI->Lightiv = __indirect_glLightiv;
- glAPI->LineStipple = __indirect_glLineStipple;
- glAPI->LineWidth = __indirect_glLineWidth;
- glAPI->ListBase = __indirect_glListBase;
- glAPI->LoadIdentity = __indirect_glLoadIdentity;
- glAPI->LoadMatrixd = __indirect_glLoadMatrixd;
- glAPI->LoadMatrixf = __indirect_glLoadMatrixf;
- glAPI->LoadName = __indirect_glLoadName;
- glAPI->LogicOp = __indirect_glLogicOp;
- glAPI->Map1d = __indirect_glMap1d;
- glAPI->Map1f = __indirect_glMap1f;
- glAPI->Map2d = __indirect_glMap2d;
- glAPI->Map2f = __indirect_glMap2f;
- glAPI->MapGrid1d = __indirect_glMapGrid1d;
- glAPI->MapGrid1f = __indirect_glMapGrid1f;
- glAPI->MapGrid2d = __indirect_glMapGrid2d;
- glAPI->MapGrid2f = __indirect_glMapGrid2f;
- glAPI->Materialf = __indirect_glMaterialf;
- glAPI->Materialfv = __indirect_glMaterialfv;
- glAPI->Materiali = __indirect_glMateriali;
- glAPI->Materialiv = __indirect_glMaterialiv;
- glAPI->MatrixMode = __indirect_glMatrixMode;
- glAPI->MultMatrixd = __indirect_glMultMatrixd;
- glAPI->MultMatrixf = __indirect_glMultMatrixf;
- glAPI->NewList = __indirect_glNewList;
- glAPI->Normal3b = __indirect_glNormal3b;
- glAPI->Normal3bv = __indirect_glNormal3bv;
- glAPI->Normal3d = __indirect_glNormal3d;
- glAPI->Normal3dv = __indirect_glNormal3dv;
- glAPI->Normal3f = __indirect_glNormal3f;
- glAPI->Normal3fv = __indirect_glNormal3fv;
- glAPI->Normal3i = __indirect_glNormal3i;
- glAPI->Normal3iv = __indirect_glNormal3iv;
- glAPI->Normal3s = __indirect_glNormal3s;
- glAPI->Normal3sv = __indirect_glNormal3sv;
- glAPI->Ortho = __indirect_glOrtho;
- glAPI->PassThrough = __indirect_glPassThrough;
- glAPI->PixelMapfv = __indirect_glPixelMapfv;
- glAPI->PixelMapuiv = __indirect_glPixelMapuiv;
- glAPI->PixelMapusv = __indirect_glPixelMapusv;
- glAPI->PixelStoref = __indirect_glPixelStoref;
- glAPI->PixelStorei = __indirect_glPixelStorei;
- glAPI->PixelTransferf = __indirect_glPixelTransferf;
- glAPI->PixelTransferi = __indirect_glPixelTransferi;
- glAPI->PixelZoom = __indirect_glPixelZoom;
- glAPI->PointSize = __indirect_glPointSize;
- glAPI->PolygonMode = __indirect_glPolygonMode;
- glAPI->PolygonStipple = __indirect_glPolygonStipple;
- glAPI->PopAttrib = __indirect_glPopAttrib;
- glAPI->PopMatrix = __indirect_glPopMatrix;
- glAPI->PopName = __indirect_glPopName;
- glAPI->PushAttrib = __indirect_glPushAttrib;
- glAPI->PushMatrix = __indirect_glPushMatrix;
- glAPI->PushName = __indirect_glPushName;
- glAPI->RasterPos2d = __indirect_glRasterPos2d;
- glAPI->RasterPos2dv = __indirect_glRasterPos2dv;
- glAPI->RasterPos2f = __indirect_glRasterPos2f;
- glAPI->RasterPos2fv = __indirect_glRasterPos2fv;
- glAPI->RasterPos2i = __indirect_glRasterPos2i;
- glAPI->RasterPos2iv = __indirect_glRasterPos2iv;
- glAPI->RasterPos2s = __indirect_glRasterPos2s;
- glAPI->RasterPos2sv = __indirect_glRasterPos2sv;
- glAPI->RasterPos3d = __indirect_glRasterPos3d;
- glAPI->RasterPos3dv = __indirect_glRasterPos3dv;
- glAPI->RasterPos3f = __indirect_glRasterPos3f;
- glAPI->RasterPos3fv = __indirect_glRasterPos3fv;
- glAPI->RasterPos3i = __indirect_glRasterPos3i;
- glAPI->RasterPos3iv = __indirect_glRasterPos3iv;
- glAPI->RasterPos3s = __indirect_glRasterPos3s;
- glAPI->RasterPos3sv = __indirect_glRasterPos3sv;
- glAPI->RasterPos4d = __indirect_glRasterPos4d;
- glAPI->RasterPos4dv = __indirect_glRasterPos4dv;
- glAPI->RasterPos4f = __indirect_glRasterPos4f;
- glAPI->RasterPos4fv = __indirect_glRasterPos4fv;
- glAPI->RasterPos4i = __indirect_glRasterPos4i;
- glAPI->RasterPos4iv = __indirect_glRasterPos4iv;
- glAPI->RasterPos4s = __indirect_glRasterPos4s;
- glAPI->RasterPos4sv = __indirect_glRasterPos4sv;
- glAPI->ReadBuffer = __indirect_glReadBuffer;
- glAPI->ReadPixels = __indirect_glReadPixels;
- glAPI->Rectd = __indirect_glRectd;
- glAPI->Rectdv = __indirect_glRectdv;
- glAPI->Rectf = __indirect_glRectf;
- glAPI->Rectfv = __indirect_glRectfv;
- glAPI->Recti = __indirect_glRecti;
- glAPI->Rectiv = __indirect_glRectiv;
- glAPI->Rects = __indirect_glRects;
- glAPI->Rectsv = __indirect_glRectsv;
- glAPI->RenderMode = __indirect_glRenderMode;
- glAPI->Rotated = __indirect_glRotated;
- glAPI->Rotatef = __indirect_glRotatef;
- glAPI->Scaled = __indirect_glScaled;
- glAPI->Scalef = __indirect_glScalef;
- glAPI->Scissor = __indirect_glScissor;
- glAPI->SelectBuffer = __indirect_glSelectBuffer;
- glAPI->ShadeModel = __indirect_glShadeModel;
- glAPI->StencilFunc = __indirect_glStencilFunc;
- glAPI->StencilMask = __indirect_glStencilMask;
- glAPI->StencilOp = __indirect_glStencilOp;
- glAPI->TexCoord1d = __indirect_glTexCoord1d;
- glAPI->TexCoord1dv = __indirect_glTexCoord1dv;
- glAPI->TexCoord1f = __indirect_glTexCoord1f;
- glAPI->TexCoord1fv = __indirect_glTexCoord1fv;
- glAPI->TexCoord1i = __indirect_glTexCoord1i;
- glAPI->TexCoord1iv = __indirect_glTexCoord1iv;
- glAPI->TexCoord1s = __indirect_glTexCoord1s;
- glAPI->TexCoord1sv = __indirect_glTexCoord1sv;
- glAPI->TexCoord2d = __indirect_glTexCoord2d;
- glAPI->TexCoord2dv = __indirect_glTexCoord2dv;
- glAPI->TexCoord2f = __indirect_glTexCoord2f;
- glAPI->TexCoord2fv = __indirect_glTexCoord2fv;
- glAPI->TexCoord2i = __indirect_glTexCoord2i;
- glAPI->TexCoord2iv = __indirect_glTexCoord2iv;
- glAPI->TexCoord2s = __indirect_glTexCoord2s;
- glAPI->TexCoord2sv = __indirect_glTexCoord2sv;
- glAPI->TexCoord3d = __indirect_glTexCoord3d;
- glAPI->TexCoord3dv = __indirect_glTexCoord3dv;
- glAPI->TexCoord3f = __indirect_glTexCoord3f;
- glAPI->TexCoord3fv = __indirect_glTexCoord3fv;
- glAPI->TexCoord3i = __indirect_glTexCoord3i;
- glAPI->TexCoord3iv = __indirect_glTexCoord3iv;
- glAPI->TexCoord3s = __indirect_glTexCoord3s;
- glAPI->TexCoord3sv = __indirect_glTexCoord3sv;
- glAPI->TexCoord4d = __indirect_glTexCoord4d;
- glAPI->TexCoord4dv = __indirect_glTexCoord4dv;
- glAPI->TexCoord4f = __indirect_glTexCoord4f;
- glAPI->TexCoord4fv = __indirect_glTexCoord4fv;
- glAPI->TexCoord4i = __indirect_glTexCoord4i;
- glAPI->TexCoord4iv = __indirect_glTexCoord4iv;
- glAPI->TexCoord4s = __indirect_glTexCoord4s;
- glAPI->TexCoord4sv = __indirect_glTexCoord4sv;
- glAPI->TexEnvf = __indirect_glTexEnvf;
- glAPI->TexEnvfv = __indirect_glTexEnvfv;
- glAPI->TexEnvi = __indirect_glTexEnvi;
- glAPI->TexEnviv = __indirect_glTexEnviv;
- glAPI->TexGend = __indirect_glTexGend;
- glAPI->TexGendv = __indirect_glTexGendv;
- glAPI->TexGenf = __indirect_glTexGenf;
- glAPI->TexGenfv = __indirect_glTexGenfv;
- glAPI->TexGeni = __indirect_glTexGeni;
- glAPI->TexGeniv = __indirect_glTexGeniv;
- glAPI->TexImage1D = __indirect_glTexImage1D;
- glAPI->TexImage2D = __indirect_glTexImage2D;
- glAPI->TexParameterf = __indirect_glTexParameterf;
- glAPI->TexParameterfv = __indirect_glTexParameterfv;
- glAPI->TexParameteri = __indirect_glTexParameteri;
- glAPI->TexParameteriv = __indirect_glTexParameteriv;
- glAPI->Translated = __indirect_glTranslated;
- glAPI->Translatef = __indirect_glTranslatef;
- glAPI->Vertex2d = __indirect_glVertex2d;
- glAPI->Vertex2dv = __indirect_glVertex2dv;
- glAPI->Vertex2f = __indirect_glVertex2f;
- glAPI->Vertex2fv = __indirect_glVertex2fv;
- glAPI->Vertex2i = __indirect_glVertex2i;
- glAPI->Vertex2iv = __indirect_glVertex2iv;
- glAPI->Vertex2s = __indirect_glVertex2s;
- glAPI->Vertex2sv = __indirect_glVertex2sv;
- glAPI->Vertex3d = __indirect_glVertex3d;
- glAPI->Vertex3dv = __indirect_glVertex3dv;
- glAPI->Vertex3f = __indirect_glVertex3f;
- glAPI->Vertex3fv = __indirect_glVertex3fv;
- glAPI->Vertex3i = __indirect_glVertex3i;
- glAPI->Vertex3iv = __indirect_glVertex3iv;
- glAPI->Vertex3s = __indirect_glVertex3s;
- glAPI->Vertex3sv = __indirect_glVertex3sv;
- glAPI->Vertex4d = __indirect_glVertex4d;
- glAPI->Vertex4dv = __indirect_glVertex4dv;
- glAPI->Vertex4f = __indirect_glVertex4f;
- glAPI->Vertex4fv = __indirect_glVertex4fv;
- glAPI->Vertex4i = __indirect_glVertex4i;
- glAPI->Vertex4iv = __indirect_glVertex4iv;
- glAPI->Vertex4s = __indirect_glVertex4s;
- glAPI->Vertex4sv = __indirect_glVertex4sv;
- glAPI->Viewport = __indirect_glViewport;
-
- /* 1.1 */
-
- glAPI->AreTexturesResident = __indirect_glAreTexturesResident;
- glAPI->ArrayElement = __indirect_glArrayElement;
- glAPI->BindTexture = __indirect_glBindTexture;
- glAPI->ColorPointer = __indirect_glColorPointer;
- glAPI->CopyTexImage1D = __indirect_glCopyTexImage1D;
- glAPI->CopyTexImage2D = __indirect_glCopyTexImage2D;
- glAPI->CopyTexSubImage1D = __indirect_glCopyTexSubImage1D;
- glAPI->CopyTexSubImage2D = __indirect_glCopyTexSubImage2D;
- glAPI->DeleteTextures = __indirect_glDeleteTextures;
- glAPI->DisableClientState = __indirect_glDisableClientState;
- glAPI->DrawArrays = __indirect_glDrawArrays;
- glAPI->DrawElements = __indirect_glDrawElements;
- glAPI->EdgeFlagPointer = __indirect_glEdgeFlagPointer;
- glAPI->EnableClientState = __indirect_glEnableClientState;
- glAPI->GenTextures = __indirect_glGenTextures;
- glAPI->GetPointerv = __indirect_glGetPointerv;
- glAPI->IndexPointer = __indirect_glIndexPointer;
- glAPI->Indexub = __indirect_glIndexub;
- glAPI->Indexubv = __indirect_glIndexubv;
- glAPI->InterleavedArrays = __indirect_glInterleavedArrays;
- glAPI->IsTexture = __indirect_glIsTexture;
- glAPI->NormalPointer = __indirect_glNormalPointer;
- glAPI->PolygonOffset = __indirect_glPolygonOffset;
- glAPI->PopClientAttrib = __indirect_glPopClientAttrib;
- glAPI->PrioritizeTextures = __indirect_glPrioritizeTextures;
- glAPI->PushClientAttrib = __indirect_glPushClientAttrib;
- glAPI->TexCoordPointer = __indirect_glTexCoordPointer;
- glAPI->TexSubImage1D = __indirect_glTexSubImage1D;
- glAPI->TexSubImage2D = __indirect_glTexSubImage2D;
- glAPI->VertexPointer = __indirect_glVertexPointer;
-
- /* 1.2 */
-
- glAPI->BlendColor = __indirect_glBlendColor;
- glAPI->BlendEquation = __indirect_glBlendEquation;
- glAPI->ColorSubTable = __indirect_glColorSubTable;
- glAPI->ColorTable = __indirect_glColorTable;
- glAPI->ColorTableParameterfv = __indirect_glColorTableParameterfv;
- glAPI->ColorTableParameteriv = __indirect_glColorTableParameteriv;
- glAPI->ConvolutionFilter1D = __indirect_glConvolutionFilter1D;
- glAPI->ConvolutionFilter2D = __indirect_glConvolutionFilter2D;
- glAPI->ConvolutionParameterf = __indirect_glConvolutionParameterf;
- glAPI->ConvolutionParameterfv = __indirect_glConvolutionParameterfv;
- glAPI->ConvolutionParameteri = __indirect_glConvolutionParameteri;
- glAPI->ConvolutionParameteriv = __indirect_glConvolutionParameteriv;
- glAPI->CopyColorSubTable = __indirect_glCopyColorSubTable;
- glAPI->CopyColorTable = __indirect_glCopyColorTable;
- glAPI->CopyConvolutionFilter1D = __indirect_glCopyConvolutionFilter1D;
- glAPI->CopyConvolutionFilter2D = __indirect_glCopyConvolutionFilter2D;
- glAPI->CopyTexSubImage3D = __indirect_glCopyTexSubImage3D;
- glAPI->DrawRangeElements = __indirect_glDrawRangeElements;
- glAPI->GetColorTable = __indirect_glGetColorTable;
- glAPI->GetColorTableParameterfv = __indirect_glGetColorTableParameterfv;
- glAPI->GetColorTableParameteriv = __indirect_glGetColorTableParameteriv;
- glAPI->GetConvolutionFilter = __indirect_glGetConvolutionFilter;
- glAPI->GetConvolutionParameterfv = __indirect_glGetConvolutionParameterfv;
- glAPI->GetConvolutionParameteriv = __indirect_glGetConvolutionParameteriv;
- glAPI->GetHistogram = __indirect_glGetHistogram;
- glAPI->GetHistogramParameterfv = __indirect_glGetHistogramParameterfv;
- glAPI->GetHistogramParameteriv = __indirect_glGetHistogramParameteriv;
- glAPI->GetMinmax = __indirect_glGetMinmax;
- glAPI->GetMinmaxParameterfv = __indirect_glGetMinmaxParameterfv;
- glAPI->GetMinmaxParameteriv = __indirect_glGetMinmaxParameteriv;
- glAPI->GetSeparableFilter = __indirect_glGetSeparableFilter;
- glAPI->Histogram = __indirect_glHistogram;
- glAPI->Minmax = __indirect_glMinmax;
- glAPI->ResetHistogram = __indirect_glResetHistogram;
- glAPI->ResetMinmax = __indirect_glResetMinmax;
- glAPI->SeparableFilter2D = __indirect_glSeparableFilter2D;
- glAPI->TexImage3D = __indirect_glTexImage3D;
- glAPI->TexSubImage3D = __indirect_glTexSubImage3D;
-
- /* 1. GL_ARB_multitexture */
-
- glAPI->ActiveTextureARB = __indirect_glActiveTextureARB;
- glAPI->ClientActiveTextureARB = __indirect_glClientActiveTextureARB;
- glAPI->MultiTexCoord1dARB = __indirect_glMultiTexCoord1dARB;
- glAPI->MultiTexCoord1dvARB = __indirect_glMultiTexCoord1dvARB;
- glAPI->MultiTexCoord1fARB = __indirect_glMultiTexCoord1fARB;
- glAPI->MultiTexCoord1fvARB = __indirect_glMultiTexCoord1fvARB;
- glAPI->MultiTexCoord1iARB = __indirect_glMultiTexCoord1iARB;
- glAPI->MultiTexCoord1ivARB = __indirect_glMultiTexCoord1ivARB;
- glAPI->MultiTexCoord1sARB = __indirect_glMultiTexCoord1sARB;
- glAPI->MultiTexCoord1svARB = __indirect_glMultiTexCoord1svARB;
- glAPI->MultiTexCoord2dARB = __indirect_glMultiTexCoord2dARB;
- glAPI->MultiTexCoord2dvARB = __indirect_glMultiTexCoord2dvARB;
- glAPI->MultiTexCoord2fARB = __indirect_glMultiTexCoord2fARB;
- glAPI->MultiTexCoord2fvARB = __indirect_glMultiTexCoord2fvARB;
- glAPI->MultiTexCoord2iARB = __indirect_glMultiTexCoord2iARB;
- glAPI->MultiTexCoord2ivARB = __indirect_glMultiTexCoord2ivARB;
- glAPI->MultiTexCoord2sARB = __indirect_glMultiTexCoord2sARB;
- glAPI->MultiTexCoord2svARB = __indirect_glMultiTexCoord2svARB;
- glAPI->MultiTexCoord3dARB = __indirect_glMultiTexCoord3dARB;
- glAPI->MultiTexCoord3dvARB = __indirect_glMultiTexCoord3dvARB;
- glAPI->MultiTexCoord3fARB = __indirect_glMultiTexCoord3fARB;
- glAPI->MultiTexCoord3fvARB = __indirect_glMultiTexCoord3fvARB;
- glAPI->MultiTexCoord3iARB = __indirect_glMultiTexCoord3iARB;
- glAPI->MultiTexCoord3ivARB = __indirect_glMultiTexCoord3ivARB;
- glAPI->MultiTexCoord3sARB = __indirect_glMultiTexCoord3sARB;
- glAPI->MultiTexCoord3svARB = __indirect_glMultiTexCoord3svARB;
- glAPI->MultiTexCoord4dARB = __indirect_glMultiTexCoord4dARB;
- glAPI->MultiTexCoord4dvARB = __indirect_glMultiTexCoord4dvARB;
- glAPI->MultiTexCoord4fARB = __indirect_glMultiTexCoord4fARB;
- glAPI->MultiTexCoord4fvARB = __indirect_glMultiTexCoord4fvARB;
- glAPI->MultiTexCoord4iARB = __indirect_glMultiTexCoord4iARB;
- glAPI->MultiTexCoord4ivARB = __indirect_glMultiTexCoord4ivARB;
- glAPI->MultiTexCoord4sARB = __indirect_glMultiTexCoord4sARB;
- glAPI->MultiTexCoord4svARB = __indirect_glMultiTexCoord4svARB;
-
- /* 3. GL_ARB_transpose_matrix */
-
- glAPI->LoadTransposeMatrixdARB = __indirect_glLoadTransposeMatrixdARB;
- glAPI->LoadTransposeMatrixfARB = __indirect_glLoadTransposeMatrixfARB;
- glAPI->MultTransposeMatrixdARB = __indirect_glMultTransposeMatrixdARB;
- glAPI->MultTransposeMatrixfARB = __indirect_glMultTransposeMatrixfARB;
-
- /* 5. GL_ARB_multisample */
-
- glAPI->SampleCoverageARB = __indirect_glSampleCoverageARB;
-
- /* 12. GL_ARB_texture_compression */
-
- glAPI->CompressedTexImage1DARB = __indirect_glCompressedTexImage1DARB;
- glAPI->CompressedTexImage2DARB = __indirect_glCompressedTexImage2DARB;
- glAPI->CompressedTexImage3DARB = __indirect_glCompressedTexImage3DARB;
- glAPI->CompressedTexSubImage1DARB = __indirect_glCompressedTexSubImage1DARB;
- glAPI->CompressedTexSubImage2DARB = __indirect_glCompressedTexSubImage2DARB;
- glAPI->CompressedTexSubImage3DARB = __indirect_glCompressedTexSubImage3DARB;
- glAPI->GetCompressedTexImageARB = __indirect_glGetCompressedTexImageARB;
-
- /* 26. GL_ARB_vertex_program */
-
- glAPI->DisableVertexAttribArrayARB = __indirect_glDisableVertexAttribArrayARB;
- glAPI->EnableVertexAttribArrayARB = __indirect_glEnableVertexAttribArrayARB;
- glAPI->GetProgramEnvParameterdvARB = __indirect_glGetProgramEnvParameterdvARB;
- glAPI->GetProgramEnvParameterfvARB = __indirect_glGetProgramEnvParameterfvARB;
- glAPI->GetProgramLocalParameterdvARB = __indirect_glGetProgramLocalParameterdvARB;
- glAPI->GetProgramLocalParameterfvARB = __indirect_glGetProgramLocalParameterfvARB;
- glAPI->GetProgramStringARB = __indirect_glGetProgramStringARB;
- glAPI->GetProgramivARB = __indirect_glGetProgramivARB;
- glAPI->GetVertexAttribdvARB = __indirect_glGetVertexAttribdvARB;
- glAPI->GetVertexAttribfvARB = __indirect_glGetVertexAttribfvARB;
- glAPI->GetVertexAttribivARB = __indirect_glGetVertexAttribivARB;
- glAPI->ProgramEnvParameter4dARB = __indirect_glProgramEnvParameter4dARB;
- glAPI->ProgramEnvParameter4dvARB = __indirect_glProgramEnvParameter4dvARB;
- glAPI->ProgramEnvParameter4fARB = __indirect_glProgramEnvParameter4fARB;
- glAPI->ProgramEnvParameter4fvARB = __indirect_glProgramEnvParameter4fvARB;
- glAPI->ProgramLocalParameter4dARB = __indirect_glProgramLocalParameter4dARB;
- glAPI->ProgramLocalParameter4dvARB = __indirect_glProgramLocalParameter4dvARB;
- glAPI->ProgramLocalParameter4fARB = __indirect_glProgramLocalParameter4fARB;
- glAPI->ProgramLocalParameter4fvARB = __indirect_glProgramLocalParameter4fvARB;
- glAPI->ProgramStringARB = __indirect_glProgramStringARB;
- glAPI->VertexAttrib1dARB = __indirect_glVertexAttrib1dARB;
- glAPI->VertexAttrib1dvARB = __indirect_glVertexAttrib1dvARB;
- glAPI->VertexAttrib1fARB = __indirect_glVertexAttrib1fARB;
- glAPI->VertexAttrib1fvARB = __indirect_glVertexAttrib1fvARB;
- glAPI->VertexAttrib1sARB = __indirect_glVertexAttrib1sARB;
- glAPI->VertexAttrib1svARB = __indirect_glVertexAttrib1svARB;
- glAPI->VertexAttrib2dARB = __indirect_glVertexAttrib2dARB;
- glAPI->VertexAttrib2dvARB = __indirect_glVertexAttrib2dvARB;
- glAPI->VertexAttrib2fARB = __indirect_glVertexAttrib2fARB;
- glAPI->VertexAttrib2fvARB = __indirect_glVertexAttrib2fvARB;
- glAPI->VertexAttrib2sARB = __indirect_glVertexAttrib2sARB;
- glAPI->VertexAttrib2svARB = __indirect_glVertexAttrib2svARB;
- glAPI->VertexAttrib3dARB = __indirect_glVertexAttrib3dARB;
- glAPI->VertexAttrib3dvARB = __indirect_glVertexAttrib3dvARB;
- glAPI->VertexAttrib3fARB = __indirect_glVertexAttrib3fARB;
- glAPI->VertexAttrib3fvARB = __indirect_glVertexAttrib3fvARB;
- glAPI->VertexAttrib3sARB = __indirect_glVertexAttrib3sARB;
- glAPI->VertexAttrib3svARB = __indirect_glVertexAttrib3svARB;
- glAPI->VertexAttrib4NbvARB = __indirect_glVertexAttrib4NbvARB;
- glAPI->VertexAttrib4NivARB = __indirect_glVertexAttrib4NivARB;
- glAPI->VertexAttrib4NsvARB = __indirect_glVertexAttrib4NsvARB;
- glAPI->VertexAttrib4NubARB = __indirect_glVertexAttrib4NubARB;
- glAPI->VertexAttrib4NubvARB = __indirect_glVertexAttrib4NubvARB;
- glAPI->VertexAttrib4NuivARB = __indirect_glVertexAttrib4NuivARB;
- glAPI->VertexAttrib4NusvARB = __indirect_glVertexAttrib4NusvARB;
- glAPI->VertexAttrib4bvARB = __indirect_glVertexAttrib4bvARB;
- glAPI->VertexAttrib4dARB = __indirect_glVertexAttrib4dARB;
- glAPI->VertexAttrib4dvARB = __indirect_glVertexAttrib4dvARB;
- glAPI->VertexAttrib4fARB = __indirect_glVertexAttrib4fARB;
- glAPI->VertexAttrib4fvARB = __indirect_glVertexAttrib4fvARB;
- glAPI->VertexAttrib4ivARB = __indirect_glVertexAttrib4ivARB;
- glAPI->VertexAttrib4sARB = __indirect_glVertexAttrib4sARB;
- glAPI->VertexAttrib4svARB = __indirect_glVertexAttrib4svARB;
- glAPI->VertexAttrib4ubvARB = __indirect_glVertexAttrib4ubvARB;
- glAPI->VertexAttrib4uivARB = __indirect_glVertexAttrib4uivARB;
- glAPI->VertexAttrib4usvARB = __indirect_glVertexAttrib4usvARB;
- glAPI->VertexAttribPointerARB = __indirect_glVertexAttribPointerARB;
-
- /* 29. GL_ARB_occlusion_query */
-
- glAPI->BeginQueryARB = __indirect_glBeginQueryARB;
- glAPI->DeleteQueriesARB = __indirect_glDeleteQueriesARB;
- glAPI->EndQueryARB = __indirect_glEndQueryARB;
- glAPI->GenQueriesARB = __indirect_glGenQueriesARB;
- glAPI->GetQueryObjectivARB = __indirect_glGetQueryObjectivARB;
- glAPI->GetQueryObjectuivARB = __indirect_glGetQueryObjectuivARB;
- glAPI->GetQueryivARB = __indirect_glGetQueryivARB;
- glAPI->IsQueryARB = __indirect_glIsQueryARB;
-
- /* 37. GL_ARB_draw_buffers */
-
- glAPI->DrawBuffersARB = __indirect_glDrawBuffersARB;
-
- /* 45. GL_ARB_framebuffer_object */
-
- glAPI->RenderbufferStorageMultisample = __indirect_glRenderbufferStorageMultisample;
-
- /* 25. GL_SGIS_multisample */
-
- glAPI->SampleMaskSGIS = __indirect_glSampleMaskSGIS;
- glAPI->SamplePatternSGIS = __indirect_glSamplePatternSGIS;
-
- /* 30. GL_EXT_vertex_array */
-
- glAPI->ColorPointerEXT = __indirect_glColorPointerEXT;
- glAPI->EdgeFlagPointerEXT = __indirect_glEdgeFlagPointerEXT;
- glAPI->IndexPointerEXT = __indirect_glIndexPointerEXT;
- glAPI->NormalPointerEXT = __indirect_glNormalPointerEXT;
- glAPI->TexCoordPointerEXT = __indirect_glTexCoordPointerEXT;
- glAPI->VertexPointerEXT = __indirect_glVertexPointerEXT;
-
- /* 54. GL_EXT_point_parameters */
-
- glAPI->PointParameterfEXT = __indirect_glPointParameterfEXT;
- glAPI->PointParameterfvEXT = __indirect_glPointParameterfvEXT;
-
- /* 145. GL_EXT_secondary_color */
-
- glAPI->SecondaryColor3bEXT = __indirect_glSecondaryColor3bEXT;
- glAPI->SecondaryColor3bvEXT = __indirect_glSecondaryColor3bvEXT;
- glAPI->SecondaryColor3dEXT = __indirect_glSecondaryColor3dEXT;
- glAPI->SecondaryColor3dvEXT = __indirect_glSecondaryColor3dvEXT;
- glAPI->SecondaryColor3fEXT = __indirect_glSecondaryColor3fEXT;
- glAPI->SecondaryColor3fvEXT = __indirect_glSecondaryColor3fvEXT;
- glAPI->SecondaryColor3iEXT = __indirect_glSecondaryColor3iEXT;
- glAPI->SecondaryColor3ivEXT = __indirect_glSecondaryColor3ivEXT;
- glAPI->SecondaryColor3sEXT = __indirect_glSecondaryColor3sEXT;
- glAPI->SecondaryColor3svEXT = __indirect_glSecondaryColor3svEXT;
- glAPI->SecondaryColor3ubEXT = __indirect_glSecondaryColor3ubEXT;
- glAPI->SecondaryColor3ubvEXT = __indirect_glSecondaryColor3ubvEXT;
- glAPI->SecondaryColor3uiEXT = __indirect_glSecondaryColor3uiEXT;
- glAPI->SecondaryColor3uivEXT = __indirect_glSecondaryColor3uivEXT;
- glAPI->SecondaryColor3usEXT = __indirect_glSecondaryColor3usEXT;
- glAPI->SecondaryColor3usvEXT = __indirect_glSecondaryColor3usvEXT;
- glAPI->SecondaryColorPointerEXT = __indirect_glSecondaryColorPointerEXT;
-
- /* 148. GL_EXT_multi_draw_arrays */
-
- glAPI->MultiDrawArraysEXT = __indirect_glMultiDrawArraysEXT;
- glAPI->MultiDrawElementsEXT = __indirect_glMultiDrawElementsEXT;
-
- /* 149. GL_EXT_fog_coord */
-
- glAPI->FogCoordPointerEXT = __indirect_glFogCoordPointerEXT;
- glAPI->FogCoorddEXT = __indirect_glFogCoorddEXT;
- glAPI->FogCoorddvEXT = __indirect_glFogCoorddvEXT;
- glAPI->FogCoordfEXT = __indirect_glFogCoordfEXT;
- glAPI->FogCoordfvEXT = __indirect_glFogCoordfvEXT;
-
- /* 173. GL_EXT_blend_func_separate */
-
- glAPI->BlendFuncSeparateEXT = __indirect_glBlendFuncSeparateEXT;
-
- /* 197. GL_MESA_window_pos */
-
- glAPI->WindowPos2dMESA = __indirect_glWindowPos2dMESA;
- glAPI->WindowPos2dvMESA = __indirect_glWindowPos2dvMESA;
- glAPI->WindowPos2fMESA = __indirect_glWindowPos2fMESA;
- glAPI->WindowPos2fvMESA = __indirect_glWindowPos2fvMESA;
- glAPI->WindowPos2iMESA = __indirect_glWindowPos2iMESA;
- glAPI->WindowPos2ivMESA = __indirect_glWindowPos2ivMESA;
- glAPI->WindowPos2sMESA = __indirect_glWindowPos2sMESA;
- glAPI->WindowPos2svMESA = __indirect_glWindowPos2svMESA;
- glAPI->WindowPos3dMESA = __indirect_glWindowPos3dMESA;
- glAPI->WindowPos3dvMESA = __indirect_glWindowPos3dvMESA;
- glAPI->WindowPos3fMESA = __indirect_glWindowPos3fMESA;
- glAPI->WindowPos3fvMESA = __indirect_glWindowPos3fvMESA;
- glAPI->WindowPos3iMESA = __indirect_glWindowPos3iMESA;
- glAPI->WindowPos3ivMESA = __indirect_glWindowPos3ivMESA;
- glAPI->WindowPos3sMESA = __indirect_glWindowPos3sMESA;
- glAPI->WindowPos3svMESA = __indirect_glWindowPos3svMESA;
-
- /* 233. GL_NV_vertex_program */
-
- glAPI->AreProgramsResidentNV = __indirect_glAreProgramsResidentNV;
- glAPI->BindProgramNV = __indirect_glBindProgramNV;
- glAPI->DeleteProgramsNV = __indirect_glDeleteProgramsNV;
- glAPI->ExecuteProgramNV = __indirect_glExecuteProgramNV;
- glAPI->GenProgramsNV = __indirect_glGenProgramsNV;
- glAPI->GetProgramParameterdvNV = __indirect_glGetProgramParameterdvNV;
- glAPI->GetProgramParameterfvNV = __indirect_glGetProgramParameterfvNV;
- glAPI->GetProgramStringNV = __indirect_glGetProgramStringNV;
- glAPI->GetProgramivNV = __indirect_glGetProgramivNV;
- glAPI->GetTrackMatrixivNV = __indirect_glGetTrackMatrixivNV;
- glAPI->GetVertexAttribPointervNV = __indirect_glGetVertexAttribPointervNV;
- glAPI->GetVertexAttribdvNV = __indirect_glGetVertexAttribdvNV;
- glAPI->GetVertexAttribfvNV = __indirect_glGetVertexAttribfvNV;
- glAPI->GetVertexAttribivNV = __indirect_glGetVertexAttribivNV;
- glAPI->IsProgramNV = __indirect_glIsProgramNV;
- glAPI->LoadProgramNV = __indirect_glLoadProgramNV;
- glAPI->ProgramParameters4dvNV = __indirect_glProgramParameters4dvNV;
- glAPI->ProgramParameters4fvNV = __indirect_glProgramParameters4fvNV;
- glAPI->RequestResidentProgramsNV = __indirect_glRequestResidentProgramsNV;
- glAPI->TrackMatrixNV = __indirect_glTrackMatrixNV;
- glAPI->VertexAttrib1dNV = __indirect_glVertexAttrib1dNV;
- glAPI->VertexAttrib1dvNV = __indirect_glVertexAttrib1dvNV;
- glAPI->VertexAttrib1fNV = __indirect_glVertexAttrib1fNV;
- glAPI->VertexAttrib1fvNV = __indirect_glVertexAttrib1fvNV;
- glAPI->VertexAttrib1sNV = __indirect_glVertexAttrib1sNV;
- glAPI->VertexAttrib1svNV = __indirect_glVertexAttrib1svNV;
- glAPI->VertexAttrib2dNV = __indirect_glVertexAttrib2dNV;
- glAPI->VertexAttrib2dvNV = __indirect_glVertexAttrib2dvNV;
- glAPI->VertexAttrib2fNV = __indirect_glVertexAttrib2fNV;
- glAPI->VertexAttrib2fvNV = __indirect_glVertexAttrib2fvNV;
- glAPI->VertexAttrib2sNV = __indirect_glVertexAttrib2sNV;
- glAPI->VertexAttrib2svNV = __indirect_glVertexAttrib2svNV;
- glAPI->VertexAttrib3dNV = __indirect_glVertexAttrib3dNV;
- glAPI->VertexAttrib3dvNV = __indirect_glVertexAttrib3dvNV;
- glAPI->VertexAttrib3fNV = __indirect_glVertexAttrib3fNV;
- glAPI->VertexAttrib3fvNV = __indirect_glVertexAttrib3fvNV;
- glAPI->VertexAttrib3sNV = __indirect_glVertexAttrib3sNV;
- glAPI->VertexAttrib3svNV = __indirect_glVertexAttrib3svNV;
- glAPI->VertexAttrib4dNV = __indirect_glVertexAttrib4dNV;
- glAPI->VertexAttrib4dvNV = __indirect_glVertexAttrib4dvNV;
- glAPI->VertexAttrib4fNV = __indirect_glVertexAttrib4fNV;
- glAPI->VertexAttrib4fvNV = __indirect_glVertexAttrib4fvNV;
- glAPI->VertexAttrib4sNV = __indirect_glVertexAttrib4sNV;
- glAPI->VertexAttrib4svNV = __indirect_glVertexAttrib4svNV;
- glAPI->VertexAttrib4ubNV = __indirect_glVertexAttrib4ubNV;
- glAPI->VertexAttrib4ubvNV = __indirect_glVertexAttrib4ubvNV;
- glAPI->VertexAttribPointerNV = __indirect_glVertexAttribPointerNV;
- glAPI->VertexAttribs1dvNV = __indirect_glVertexAttribs1dvNV;
- glAPI->VertexAttribs1fvNV = __indirect_glVertexAttribs1fvNV;
- glAPI->VertexAttribs1svNV = __indirect_glVertexAttribs1svNV;
- glAPI->VertexAttribs2dvNV = __indirect_glVertexAttribs2dvNV;
- glAPI->VertexAttribs2fvNV = __indirect_glVertexAttribs2fvNV;
- glAPI->VertexAttribs2svNV = __indirect_glVertexAttribs2svNV;
- glAPI->VertexAttribs3dvNV = __indirect_glVertexAttribs3dvNV;
- glAPI->VertexAttribs3fvNV = __indirect_glVertexAttribs3fvNV;
- glAPI->VertexAttribs3svNV = __indirect_glVertexAttribs3svNV;
- glAPI->VertexAttribs4dvNV = __indirect_glVertexAttribs4dvNV;
- glAPI->VertexAttribs4fvNV = __indirect_glVertexAttribs4fvNV;
- glAPI->VertexAttribs4svNV = __indirect_glVertexAttribs4svNV;
- glAPI->VertexAttribs4ubvNV = __indirect_glVertexAttribs4ubvNV;
-
- /* 262. GL_NV_point_sprite */
-
- glAPI->PointParameteriNV = __indirect_glPointParameteriNV;
- glAPI->PointParameterivNV = __indirect_glPointParameterivNV;
-
- /* 268. GL_EXT_stencil_two_side */
-
- glAPI->ActiveStencilFaceEXT = __indirect_glActiveStencilFaceEXT;
-
- /* 282. GL_NV_fragment_program */
-
- glAPI->GetProgramNamedParameterdvNV = __indirect_glGetProgramNamedParameterdvNV;
- glAPI->GetProgramNamedParameterfvNV = __indirect_glGetProgramNamedParameterfvNV;
- glAPI->ProgramNamedParameter4dNV = __indirect_glProgramNamedParameter4dNV;
- glAPI->ProgramNamedParameter4dvNV = __indirect_glProgramNamedParameter4dvNV;
- glAPI->ProgramNamedParameter4fNV = __indirect_glProgramNamedParameter4fNV;
- glAPI->ProgramNamedParameter4fvNV = __indirect_glProgramNamedParameter4fvNV;
-
- /* 299. GL_EXT_blend_equation_separate */
-
- glAPI->BlendEquationSeparateEXT = __indirect_glBlendEquationSeparateEXT;
-
- /* 310. GL_EXT_framebuffer_object */
-
- glAPI->BindFramebufferEXT = __indirect_glBindFramebufferEXT;
- glAPI->BindRenderbufferEXT = __indirect_glBindRenderbufferEXT;
- glAPI->CheckFramebufferStatusEXT = __indirect_glCheckFramebufferStatusEXT;
- glAPI->DeleteFramebuffersEXT = __indirect_glDeleteFramebuffersEXT;
- glAPI->DeleteRenderbuffersEXT = __indirect_glDeleteRenderbuffersEXT;
- glAPI->FramebufferRenderbufferEXT = __indirect_glFramebufferRenderbufferEXT;
- glAPI->FramebufferTexture1DEXT = __indirect_glFramebufferTexture1DEXT;
- glAPI->FramebufferTexture2DEXT = __indirect_glFramebufferTexture2DEXT;
- glAPI->FramebufferTexture3DEXT = __indirect_glFramebufferTexture3DEXT;
- glAPI->GenFramebuffersEXT = __indirect_glGenFramebuffersEXT;
- glAPI->GenRenderbuffersEXT = __indirect_glGenRenderbuffersEXT;
- glAPI->GenerateMipmapEXT = __indirect_glGenerateMipmapEXT;
- glAPI->GetFramebufferAttachmentParameterivEXT = __indirect_glGetFramebufferAttachmentParameterivEXT;
- glAPI->GetRenderbufferParameterivEXT = __indirect_glGetRenderbufferParameterivEXT;
- glAPI->IsFramebufferEXT = __indirect_glIsFramebufferEXT;
- glAPI->IsRenderbufferEXT = __indirect_glIsRenderbufferEXT;
- glAPI->RenderbufferStorageEXT = __indirect_glRenderbufferStorageEXT;
-
- /* 316. GL_EXT_framebuffer_blit */
-
- glAPI->BlitFramebufferEXT = __indirect_glBlitFramebufferEXT;
-
- /* 329. GL_EXT_texture_array */
-
- glAPI->FramebufferTextureLayerEXT = __indirect_glFramebufferTextureLayerEXT;
-
- return glAPI;
-}
-
diff --git a/src/glx/x11/indirect_init.h b/src/glx/x11/indirect_init.h
deleted file mode 100644
index 72255f13014..00000000000
--- a/src/glx/x11/indirect_init.h
+++ /dev/null
@@ -1,41 +0,0 @@
-/**************************************************************************
-
-Copyright 1998-1999 Precision Insight, Inc., Cedar Park, Texas.
-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"), to deal in the Software without restriction, including
-without limitation the rights to use, copy, modify, merge, publish,
-distribute, sub license, and/or sell copies of the Software, and to
-permit persons to whom the Software is furnished to do so, subject to
-the following conditions:
-
-The above copyright notice and this permission notice (including the
-next paragraph) shall be included in all copies or substantial portions
-of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
-IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
-ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
-TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
-SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-**************************************************************************/
-
-/*
- * Authors:
- * Kevin E. Martin <[email protected]>
- *
- */
-
-#ifndef _INDIRECT_INIT_H_
-#define _INDIRECT_INIT_H_
-
-#include "glxclient.h"
-
-extern __GLapi *__glXNewIndirectAPI(void);
-
-#endif /* _INDIRECT_INIT_H_ */
diff --git a/src/glx/x11/indirect_size.c b/src/glx/x11/indirect_size.c
deleted file mode 100644
index 6356ddd49b5..00000000000
--- a/src/glx/x11/indirect_size.c
+++ /dev/null
@@ -1,388 +0,0 @@
-/* DO NOT EDIT - This file generated automatically by glX_proto_size.py (from Mesa) script */
-
-/*
- * (C) Copyright IBM Corporation 2004
- * 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"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sub license,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice (including the next
- * paragraph) shall be included in all copies or substantial portions of the
- * Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL
- * IBM,
- * AND/OR THEIR SUPPLIERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
- * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
- * OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- */
-
-
-#include <GL/gl.h>
-#include "indirect_size.h"
-
-# if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 96) || (defined(__SUNPRO_C) && (__SUNPRO_C >= 0x590))
-# define PURE __attribute__((pure))
-# else
-# define PURE
-# endif
-
-# if defined(__i386__) && defined(__GNUC__) && !defined(__CYGWIN__) && !defined(__MINGW32__)
-# define FASTCALL __attribute__((fastcall))
-# else
-# define FASTCALL
-# endif
-
-# if (__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 3) || (defined(__SUNPRO_C) && (__SUNPRO_C >= 0x590))) && defined(__ELF__)
-# define INTERNAL __attribute__((visibility("internal")))
-# else
-# define INTERNAL
-# endif
-
-
-#if defined(__CYGWIN__) || defined(__MINGW32__) || defined(__APPLE__)
-# undef HAVE_ALIAS
-#endif
-#ifdef HAVE_ALIAS
-# define ALIAS2(from,to) \
- INTERNAL PURE FASTCALL GLint __gl ## from ## _size( GLenum e ) \
- __attribute__ ((alias( # to )));
-# define ALIAS(from,to) ALIAS2( from, __gl ## to ## _size )
-#else
-# define ALIAS(from,to) \
- INTERNAL PURE FASTCALL GLint __gl ## from ## _size( GLenum e ) \
- { return __gl ## to ## _size( e ); }
-#endif
-
-
-INTERNAL PURE FASTCALL GLint
-__glCallLists_size(GLenum e)
-{
- switch (e) {
- case GL_BYTE:
- case GL_UNSIGNED_BYTE:
- return 1;
- case GL_SHORT:
- case GL_UNSIGNED_SHORT:
- case GL_2_BYTES:
- case GL_HALF_FLOAT:
- return 2;
- case GL_3_BYTES:
- return 3;
- case GL_INT:
- case GL_UNSIGNED_INT:
- case GL_FLOAT:
- case GL_4_BYTES:
- return 4;
- default:
- return 0;
- }
-}
-
-INTERNAL PURE FASTCALL GLint
-__glFogfv_size(GLenum e)
-{
- switch (e) {
- case GL_FOG_INDEX:
- case GL_FOG_DENSITY:
- case GL_FOG_START:
- case GL_FOG_END:
- case GL_FOG_MODE:
- case GL_FOG_OFFSET_VALUE_SGIX:
- case GL_FOG_DISTANCE_MODE_NV:
- return 1;
- case GL_FOG_COLOR:
- return 4;
- default:
- return 0;
- }
-}
-
-INTERNAL PURE FASTCALL GLint
-__glLightfv_size(GLenum e)
-{
- switch (e) {
- case GL_SPOT_EXPONENT:
- case GL_SPOT_CUTOFF:
- case GL_CONSTANT_ATTENUATION:
- case GL_LINEAR_ATTENUATION:
- case GL_QUADRATIC_ATTENUATION:
- return 1;
- case GL_SPOT_DIRECTION:
- return 3;
- case GL_AMBIENT:
- case GL_DIFFUSE:
- case GL_SPECULAR:
- case GL_POSITION:
- return 4;
- default:
- return 0;
- }
-}
-
-INTERNAL PURE FASTCALL GLint
-__glLightModelfv_size(GLenum e)
-{
- switch (e) {
- case GL_LIGHT_MODEL_LOCAL_VIEWER:
- case GL_LIGHT_MODEL_TWO_SIDE:
- case GL_LIGHT_MODEL_COLOR_CONTROL:
-/* case GL_LIGHT_MODEL_COLOR_CONTROL_EXT:*/
- return 1;
- case GL_LIGHT_MODEL_AMBIENT:
- return 4;
- default:
- return 0;
- }
-}
-
-INTERNAL PURE FASTCALL GLint
-__glMaterialfv_size(GLenum e)
-{
- switch (e) {
- case GL_SHININESS:
- return 1;
- case GL_COLOR_INDEXES:
- return 3;
- case GL_AMBIENT:
- case GL_DIFFUSE:
- case GL_SPECULAR:
- case GL_EMISSION:
- case GL_AMBIENT_AND_DIFFUSE:
- return 4;
- default:
- return 0;
- }
-}
-
-INTERNAL PURE FASTCALL GLint
-__glTexParameterfv_size(GLenum e)
-{
- switch (e) {
- case GL_TEXTURE_MAG_FILTER:
- case GL_TEXTURE_MIN_FILTER:
- case GL_TEXTURE_WRAP_S:
- case GL_TEXTURE_WRAP_T:
- case GL_TEXTURE_PRIORITY:
- case GL_TEXTURE_WRAP_R:
- case GL_TEXTURE_COMPARE_FAIL_VALUE_ARB:
-/* case GL_SHADOW_AMBIENT_SGIX:*/
- case GL_TEXTURE_MIN_LOD:
- case GL_TEXTURE_MAX_LOD:
- case GL_TEXTURE_BASE_LEVEL:
- case GL_TEXTURE_MAX_LEVEL:
- case GL_TEXTURE_CLIPMAP_FRAME_SGIX:
- case GL_TEXTURE_LOD_BIAS_S_SGIX:
- case GL_TEXTURE_LOD_BIAS_T_SGIX:
- case GL_TEXTURE_LOD_BIAS_R_SGIX:
- case GL_GENERATE_MIPMAP:
-/* case GL_GENERATE_MIPMAP_SGIS:*/
- case GL_TEXTURE_COMPARE_SGIX:
- case GL_TEXTURE_COMPARE_OPERATOR_SGIX:
- case GL_TEXTURE_MAX_CLAMP_S_SGIX:
- case GL_TEXTURE_MAX_CLAMP_T_SGIX:
- case GL_TEXTURE_MAX_CLAMP_R_SGIX:
- case GL_TEXTURE_MAX_ANISOTROPY_EXT:
- case GL_TEXTURE_LOD_BIAS:
-/* case GL_TEXTURE_LOD_BIAS_EXT:*/
- case GL_TEXTURE_STORAGE_HINT_APPLE:
- case GL_STORAGE_PRIVATE_APPLE:
- case GL_STORAGE_CACHED_APPLE:
- case GL_STORAGE_SHARED_APPLE:
- case GL_DEPTH_TEXTURE_MODE:
-/* case GL_DEPTH_TEXTURE_MODE_ARB:*/
- case GL_TEXTURE_COMPARE_MODE:
-/* case GL_TEXTURE_COMPARE_MODE_ARB:*/
- case GL_TEXTURE_COMPARE_FUNC:
-/* case GL_TEXTURE_COMPARE_FUNC_ARB:*/
- case GL_TEXTURE_UNSIGNED_REMAP_MODE_NV:
- return 1;
- case GL_TEXTURE_CLIPMAP_CENTER_SGIX:
- case GL_TEXTURE_CLIPMAP_OFFSET_SGIX:
- return 2;
- case GL_TEXTURE_CLIPMAP_VIRTUAL_DEPTH_SGIX:
- return 3;
- case GL_TEXTURE_BORDER_COLOR:
- case GL_POST_TEXTURE_FILTER_BIAS_SGIX:
- case GL_POST_TEXTURE_FILTER_SCALE_SGIX:
- return 4;
- default:
- return 0;
- }
-}
-
-INTERNAL PURE FASTCALL GLint
-__glTexEnvfv_size(GLenum e)
-{
- switch (e) {
- case GL_ALPHA_SCALE:
- case GL_TEXTURE_ENV_MODE:
- case GL_TEXTURE_LOD_BIAS:
- case GL_COMBINE_RGB:
- case GL_COMBINE_ALPHA:
- case GL_RGB_SCALE:
- case GL_SOURCE0_RGB:
- case GL_SOURCE1_RGB:
- case GL_SOURCE2_RGB:
- case GL_SOURCE3_RGB_NV:
- case GL_SOURCE0_ALPHA:
- case GL_SOURCE1_ALPHA:
- case GL_SOURCE2_ALPHA:
- case GL_SOURCE3_ALPHA_NV:
- case GL_OPERAND0_RGB:
- case GL_OPERAND1_RGB:
- case GL_OPERAND2_RGB:
- case GL_OPERAND3_RGB_NV:
- case GL_OPERAND0_ALPHA:
- case GL_OPERAND1_ALPHA:
- case GL_OPERAND2_ALPHA:
- case GL_OPERAND3_ALPHA_NV:
- case GL_BUMP_TARGET_ATI:
- case GL_COORD_REPLACE_ARB:
-/* case GL_COORD_REPLACE_NV:*/
- return 1;
- case GL_TEXTURE_ENV_COLOR:
- return 4;
- default:
- return 0;
- }
-}
-
-INTERNAL PURE FASTCALL GLint
-__glTexGendv_size(GLenum e)
-{
- switch (e) {
- case GL_TEXTURE_GEN_MODE:
- return 1;
- case GL_OBJECT_PLANE:
- case GL_EYE_PLANE:
- return 4;
- default:
- return 0;
- }
-}
-
-INTERNAL PURE FASTCALL GLint
-__glMap1d_size(GLenum e)
-{
- switch (e) {
- case GL_MAP1_INDEX:
- case GL_MAP1_TEXTURE_COORD_1:
- return 1;
- case GL_MAP1_TEXTURE_COORD_2:
- return 2;
- case GL_MAP1_NORMAL:
- case GL_MAP1_TEXTURE_COORD_3:
- case GL_MAP1_VERTEX_3:
- return 3;
- case GL_MAP1_COLOR_4:
- case GL_MAP1_TEXTURE_COORD_4:
- case GL_MAP1_VERTEX_4:
- return 4;
- default:
- return 0;
- }
-}
-
-INTERNAL PURE FASTCALL GLint
-__glMap2d_size(GLenum e)
-{
- switch (e) {
- case GL_MAP2_INDEX:
- case GL_MAP2_TEXTURE_COORD_1:
- return 1;
- case GL_MAP2_TEXTURE_COORD_2:
- return 2;
- case GL_MAP2_NORMAL:
- case GL_MAP2_TEXTURE_COORD_3:
- case GL_MAP2_VERTEX_3:
- return 3;
- case GL_MAP2_COLOR_4:
- case GL_MAP2_TEXTURE_COORD_4:
- case GL_MAP2_VERTEX_4:
- return 4;
- default:
- return 0;
- }
-}
-
-INTERNAL PURE FASTCALL GLint
-__glColorTableParameterfv_size(GLenum e)
-{
- switch (e) {
- case GL_COLOR_TABLE_SCALE:
- case GL_COLOR_TABLE_BIAS:
- return 4;
- default:
- return 0;
- }
-}
-
-INTERNAL PURE FASTCALL GLint
-__glConvolutionParameterfv_size(GLenum e)
-{
- switch (e) {
- case GL_CONVOLUTION_BORDER_MODE:
-/* case GL_CONVOLUTION_BORDER_MODE_EXT:*/
- return 1;
- case GL_CONVOLUTION_FILTER_SCALE:
-/* case GL_CONVOLUTION_FILTER_SCALE_EXT:*/
- case GL_CONVOLUTION_FILTER_BIAS:
-/* case GL_CONVOLUTION_FILTER_BIAS_EXT:*/
- case GL_CONVOLUTION_BORDER_COLOR:
-/* case GL_CONVOLUTION_BORDER_COLOR_HP:*/
- return 4;
- default:
- return 0;
- }
-}
-
-INTERNAL PURE FASTCALL GLint
-__glPointParameterfvEXT_size(GLenum e)
-{
- switch (e) {
- case GL_POINT_SIZE_MIN:
-/* case GL_POINT_SIZE_MIN_ARB:*/
-/* case GL_POINT_SIZE_MIN_SGIS:*/
- case GL_POINT_SIZE_MAX:
-/* case GL_POINT_SIZE_MAX_ARB:*/
-/* case GL_POINT_SIZE_MAX_SGIS:*/
- case GL_POINT_FADE_THRESHOLD_SIZE:
-/* case GL_POINT_FADE_THRESHOLD_SIZE_ARB:*/
-/* case GL_POINT_FADE_THRESHOLD_SIZE_SGIS:*/
- case GL_POINT_SPRITE_R_MODE_NV:
- case GL_POINT_SPRITE_COORD_ORIGIN:
- return 1;
- case GL_POINT_DISTANCE_ATTENUATION:
-/* case GL_POINT_DISTANCE_ATTENUATION_ARB:*/
-/* case GL_POINT_DISTANCE_ATTENUATION_SGIS:*/
- return 3;
- default:
- return 0;
- }
-}
-
-ALIAS(Fogiv, Fogfv)
- ALIAS(Lightiv, Lightfv)
- ALIAS(LightModeliv, LightModelfv)
- ALIAS(Materialiv, Materialfv)
- ALIAS(TexParameteriv, TexParameterfv)
- ALIAS(TexEnviv, TexEnvfv)
- ALIAS(TexGenfv, TexGendv)
- ALIAS(TexGeniv, TexGendv)
- ALIAS(Map1f, Map1d)
- ALIAS(Map2f, Map2d)
- ALIAS(ColorTableParameteriv, ColorTableParameterfv)
- ALIAS(ConvolutionParameteriv, ConvolutionParameterfv)
- ALIAS(PointParameterivNV, PointParameterfvEXT)
-# undef PURE
-# undef FASTCALL
-# undef INTERNAL
diff --git a/src/glx/x11/indirect_size.h b/src/glx/x11/indirect_size.h
deleted file mode 100644
index af0919f9645..00000000000
--- a/src/glx/x11/indirect_size.h
+++ /dev/null
@@ -1,88 +0,0 @@
-/* DO NOT EDIT - This file generated automatically by glX_proto_size.py (from Mesa) script */
-
-/*
- * (C) Copyright IBM Corporation 2004
- * 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"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sub license,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice (including the next
- * paragraph) shall be included in all copies or substantial portions of the
- * Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL
- * IBM,
- * AND/OR THEIR SUPPLIERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
- * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
- * OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- */
-
-#if !defined( _INDIRECT_SIZE_H_ )
-# define _INDIRECT_SIZE_H_
-
-/**
- * \file
- * Prototypes for functions used to determine the number of data elements in
- * various GLX protocol messages.
- *
- * \author Ian Romanick <[email protected]>
- */
-
-# if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 96) || (defined(__SUNPRO_C) && (__SUNPRO_C >= 0x590))
-# define PURE __attribute__((pure))
-# else
-# define PURE
-# endif
-
-# if defined(__i386__) && defined(__GNUC__) && !defined(__CYGWIN__) && !defined(__MINGW32__)
-# define FASTCALL __attribute__((fastcall))
-# else
-# define FASTCALL
-# endif
-
-# if (__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 3) || (defined(__SUNPRO_C) && (__SUNPRO_C >= 0x590))) && defined(__ELF__)
-# define INTERNAL __attribute__((visibility("internal")))
-# else
-# define INTERNAL
-# endif
-
-extern INTERNAL PURE FASTCALL GLint __glCallLists_size(GLenum);
-extern INTERNAL PURE FASTCALL GLint __glFogfv_size(GLenum);
-extern INTERNAL PURE FASTCALL GLint __glFogiv_size(GLenum);
-extern INTERNAL PURE FASTCALL GLint __glLightfv_size(GLenum);
-extern INTERNAL PURE FASTCALL GLint __glLightiv_size(GLenum);
-extern INTERNAL PURE FASTCALL GLint __glLightModelfv_size(GLenum);
-extern INTERNAL PURE FASTCALL GLint __glLightModeliv_size(GLenum);
-extern INTERNAL PURE FASTCALL GLint __glMaterialfv_size(GLenum);
-extern INTERNAL PURE FASTCALL GLint __glMaterialiv_size(GLenum);
-extern INTERNAL PURE FASTCALL GLint __glTexParameterfv_size(GLenum);
-extern INTERNAL PURE FASTCALL GLint __glTexParameteriv_size(GLenum);
-extern INTERNAL PURE FASTCALL GLint __glTexEnvfv_size(GLenum);
-extern INTERNAL PURE FASTCALL GLint __glTexEnviv_size(GLenum);
-extern INTERNAL PURE FASTCALL GLint __glTexGendv_size(GLenum);
-extern INTERNAL PURE FASTCALL GLint __glTexGenfv_size(GLenum);
-extern INTERNAL PURE FASTCALL GLint __glTexGeniv_size(GLenum);
-extern INTERNAL PURE FASTCALL GLint __glMap1d_size(GLenum);
-extern INTERNAL PURE FASTCALL GLint __glMap1f_size(GLenum);
-extern INTERNAL PURE FASTCALL GLint __glMap2d_size(GLenum);
-extern INTERNAL PURE FASTCALL GLint __glMap2f_size(GLenum);
-extern INTERNAL PURE FASTCALL GLint __glColorTableParameterfv_size(GLenum);
-extern INTERNAL PURE FASTCALL GLint __glColorTableParameteriv_size(GLenum);
-extern INTERNAL PURE FASTCALL GLint __glConvolutionParameterfv_size(GLenum);
-extern INTERNAL PURE FASTCALL GLint __glConvolutionParameteriv_size(GLenum);
-extern INTERNAL PURE FASTCALL GLint __glPointParameterfvEXT_size(GLenum);
-extern INTERNAL PURE FASTCALL GLint __glPointParameterivNV_size(GLenum);
-
-# undef PURE
-# undef FASTCALL
-# undef INTERNAL
-
-#endif /* !defined( _INDIRECT_SIZE_H_ ) */
diff --git a/src/glx/x11/indirect_texture_compression.c b/src/glx/x11/indirect_texture_compression.c
deleted file mode 100644
index fa927ebdf68..00000000000
--- a/src/glx/x11/indirect_texture_compression.c
+++ /dev/null
@@ -1,343 +0,0 @@
-/*
- * (C) Copyright IBM Corporation 2004
- * 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"),
- * to deal in the Software without restriction, including without limitation
- * on the rights to use, copy, modify, merge, publish, distribute, sub
- * license, and/or sell copies of the Software, and to permit persons to whom
- * the Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice (including the next
- * paragraph) shall be included in all copies or substantial portions of the
- * Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL
- * THE COPYRIGHT HOLDERS AND/OR THEIR SUPPLIERS BE LIABLE FOR ANY CLAIM,
- * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
- * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
- * USE OR OTHER DEALINGS IN THE SOFTWARE.
- */
-
-/**
- * \file glx_texture_compression.c
- * Contains the routines required to implement GLX protocol for
- * ARB_texture_compression and related extensions.
- *
- * \sa http://oss.sgi.com/projects/ogl-sample/registry/ARB/texture_compression.txt
- *
- * \author Ian Romanick <[email protected]>
- */
-
-#include "packrender.h"
-#include "packsingle.h"
-#include "indirect.h"
-
-#include <assert.h>
-
-
-void
-__indirect_glGetCompressedTexImageARB(GLenum target, GLint level,
- GLvoid * img)
-{
- __GLX_SINGLE_DECLARE_VARIABLES();
- xGLXGetTexImageReply reply;
- size_t image_bytes;
-
- __GLX_SINGLE_LOAD_VARIABLES();
- __GLX_SINGLE_BEGIN(X_GLsop_GetCompressedTexImage, 8);
- __GLX_SINGLE_PUT_LONG(0, target);
- __GLX_SINGLE_PUT_LONG(4, level);
- __GLX_SINGLE_READ_XREPLY();
-
- image_bytes = reply.width;
- assert(image_bytes <= ((4 * reply.length) - 0));
- assert(image_bytes >= ((4 * reply.length) - 3));
-
- if (image_bytes != 0) {
- _XRead(dpy, (char *) img, image_bytes);
- if (image_bytes < (4 * reply.length)) {
- _XEatData(dpy, (4 * reply.length) - image_bytes);
- }
- }
-
- __GLX_SINGLE_END();
-}
-
-
-/**
- * Internal function used for \c glCompressedTexImage1D and
- * \c glCompressedTexImage2D.
- */
-static void
-CompressedTexImage1D2D(GLenum target, GLint level,
- GLenum internal_format,
- GLsizei width, GLsizei height,
- GLint border, GLsizei image_size,
- const GLvoid * data, CARD32 rop)
-{
- __GLX_DECLARE_VARIABLES();
-
- __GLX_LOAD_VARIABLES();
- if (gc->currentDpy == NULL) {
- return;
- }
-
- if ((target == GL_PROXY_TEXTURE_1D)
- || (target == GL_PROXY_TEXTURE_2D)
- || (target == GL_PROXY_TEXTURE_CUBE_MAP)) {
- compsize = 0;
- }
- else {
- compsize = image_size;
- }
-
- cmdlen = __GLX_PAD(__GLX_COMPRESSED_TEXIMAGE_CMD_HDR_SIZE + compsize);
- if (cmdlen <= gc->maxSmallRenderCommandSize) {
- __GLX_BEGIN_VARIABLE(rop, cmdlen);
- __GLX_PUT_LONG(4, target);
- __GLX_PUT_LONG(8, level);
- __GLX_PUT_LONG(12, internal_format);
- __GLX_PUT_LONG(16, width);
- __GLX_PUT_LONG(20, height);
- __GLX_PUT_LONG(24, border);
- __GLX_PUT_LONG(28, image_size);
- if (compsize != 0) {
- __GLX_PUT_CHAR_ARRAY(__GLX_COMPRESSED_TEXIMAGE_CMD_HDR_SIZE,
- data, image_size);
- }
- __GLX_END(cmdlen);
- }
- else {
- assert(compsize != 0);
-
- __GLX_BEGIN_VARIABLE_LARGE(rop, cmdlen + 4);
- __GLX_PUT_LONG(8, target);
- __GLX_PUT_LONG(12, level);
- __GLX_PUT_LONG(16, internal_format);
- __GLX_PUT_LONG(20, width);
- __GLX_PUT_LONG(24, height);
- __GLX_PUT_LONG(28, border);
- __GLX_PUT_LONG(32, image_size);
- __glXSendLargeCommand(gc, gc->pc,
- __GLX_COMPRESSED_TEXIMAGE_CMD_HDR_SIZE + 4,
- data, image_size);
- }
-}
-
-
-/**
- * Internal function used for \c glCompressedTexSubImage1D and
- * \c glCompressedTexSubImage2D.
- */
-static void
-CompressedTexSubImage1D2D(GLenum target, GLint level,
- GLsizei xoffset, GLsizei yoffset,
- GLsizei width, GLsizei height,
- GLenum format, GLsizei image_size,
- const GLvoid * data, CARD32 rop)
-{
- __GLX_DECLARE_VARIABLES();
-
- __GLX_LOAD_VARIABLES();
- if (gc->currentDpy == NULL) {
- return;
- }
-
- if (target == GL_PROXY_TEXTURE_3D) {
- compsize = 0;
- }
- else {
- compsize = image_size;
- }
-
- cmdlen = __GLX_PAD(__GLX_COMPRESSED_TEXSUBIMAGE_CMD_HDR_SIZE + compsize);
- if (cmdlen <= gc->maxSmallRenderCommandSize) {
- __GLX_BEGIN_VARIABLE(rop, cmdlen);
- __GLX_PUT_LONG(4, target);
- __GLX_PUT_LONG(8, level);
- __GLX_PUT_LONG(12, xoffset);
- __GLX_PUT_LONG(16, yoffset);
- __GLX_PUT_LONG(20, width);
- __GLX_PUT_LONG(24, height);
- __GLX_PUT_LONG(28, format);
- __GLX_PUT_LONG(32, image_size);
- if (compsize != 0) {
- __GLX_PUT_CHAR_ARRAY(__GLX_COMPRESSED_TEXSUBIMAGE_CMD_HDR_SIZE,
- data, image_size);
- }
- __GLX_END(cmdlen);
- }
- else {
- assert(compsize != 0);
-
- __GLX_BEGIN_VARIABLE_LARGE(rop, cmdlen + 4);
- __GLX_PUT_LONG(8, target);
- __GLX_PUT_LONG(12, level);
- __GLX_PUT_LONG(16, xoffset);
- __GLX_PUT_LONG(20, yoffset);
- __GLX_PUT_LONG(24, width);
- __GLX_PUT_LONG(28, height);
- __GLX_PUT_LONG(32, format);
- __GLX_PUT_LONG(36, image_size);
- __glXSendLargeCommand(gc, gc->pc,
- __GLX_COMPRESSED_TEXSUBIMAGE_CMD_HDR_SIZE + 4,
- data, image_size);
- }
-}
-
-
-void
-__indirect_glCompressedTexImage1DARB(GLenum target, GLint level,
- GLenum internal_format, GLsizei width,
- GLint border, GLsizei image_size,
- const GLvoid * data)
-{
- CompressedTexImage1D2D(target, level, internal_format, width, 0,
- border, image_size, data,
- X_GLrop_CompressedTexImage1D);
-}
-
-
-void
-__indirect_glCompressedTexImage2DARB(GLenum target, GLint level,
- GLenum internal_format,
- GLsizei width, GLsizei height,
- GLint border, GLsizei image_size,
- const GLvoid * data)
-{
- CompressedTexImage1D2D(target, level, internal_format, width, height,
- border, image_size, data,
- X_GLrop_CompressedTexImage2D);
-}
-
-
-void
-__indirect_glCompressedTexImage3DARB(GLenum target, GLint level,
- GLenum internal_format,
- GLsizei width, GLsizei height,
- GLsizei depth, GLint border,
- GLsizei image_size, const GLvoid * data)
-{
- __GLX_DECLARE_VARIABLES();
-
- __GLX_LOAD_VARIABLES();
- if (gc->currentDpy == NULL) {
- return;
- }
-
- cmdlen = __GLX_PAD(__GLX_COMPRESSED_TEXIMAGE_3D_CMD_HDR_SIZE + image_size);
- if (cmdlen <= gc->maxSmallRenderCommandSize) {
- __GLX_BEGIN_VARIABLE(X_GLrop_CompressedTexImage3D, cmdlen);
- __GLX_PUT_LONG(4, target);
- __GLX_PUT_LONG(8, level);
- __GLX_PUT_LONG(12, internal_format);
- __GLX_PUT_LONG(16, width);
- __GLX_PUT_LONG(20, height);
- __GLX_PUT_LONG(24, depth);
- __GLX_PUT_LONG(28, border);
- __GLX_PUT_LONG(32, image_size);
- if (image_size != 0) {
- __GLX_PUT_CHAR_ARRAY(__GLX_COMPRESSED_TEXIMAGE_3D_CMD_HDR_SIZE,
- data, image_size);
- }
- __GLX_END(cmdlen);
- }
- else {
- __GLX_BEGIN_VARIABLE_LARGE(X_GLrop_CompressedTexImage3D, cmdlen + 4);
- __GLX_PUT_LONG(8, target);
- __GLX_PUT_LONG(12, level);
- __GLX_PUT_LONG(16, internal_format);
- __GLX_PUT_LONG(20, width);
- __GLX_PUT_LONG(24, height);
- __GLX_PUT_LONG(28, depth);
- __GLX_PUT_LONG(32, border);
- __GLX_PUT_LONG(36, image_size);
- __glXSendLargeCommand(gc, gc->pc,
- __GLX_COMPRESSED_TEXIMAGE_3D_CMD_HDR_SIZE + 4,
- data, image_size);
- }
-}
-
-
-void
-__indirect_glCompressedTexSubImage1DARB(GLenum target, GLint level,
- GLint xoffset,
- GLsizei width,
- GLenum format, GLsizei image_size,
- const GLvoid * data)
-{
- CompressedTexSubImage1D2D(target, level, xoffset, 0, width, 0,
- format, image_size, data,
- X_GLrop_CompressedTexSubImage1D);
-}
-
-
-void
-__indirect_glCompressedTexSubImage2DARB(GLenum target, GLint level,
- GLint xoffset, GLint yoffset,
- GLsizei width, GLsizei height,
- GLenum format, GLsizei image_size,
- const GLvoid * data)
-{
- CompressedTexSubImage1D2D(target, level, xoffset, yoffset, width, height,
- format, image_size, data,
- X_GLrop_CompressedTexSubImage2D);
-}
-
-
-void
-__indirect_glCompressedTexSubImage3DARB(GLenum target, GLint level,
- GLint xoffset, GLint yoffset,
- GLint zoffset, GLsizei width,
- GLsizei height, GLsizei depth,
- GLenum format, GLsizei image_size,
- const GLvoid * data)
-{
- __GLX_DECLARE_VARIABLES();
-
- __GLX_LOAD_VARIABLES();
- if (gc->currentDpy == NULL) {
- return;
- }
-
- cmdlen = __GLX_PAD(__GLX_COMPRESSED_TEXSUBIMAGE_3D_CMD_HDR_SIZE
- + image_size);
- if (cmdlen <= gc->maxSmallRenderCommandSize) {
- __GLX_BEGIN_VARIABLE(X_GLrop_CompressedTexSubImage3D, cmdlen);
- __GLX_PUT_LONG(4, target);
- __GLX_PUT_LONG(8, level);
- __GLX_PUT_LONG(12, xoffset);
- __GLX_PUT_LONG(16, yoffset);
- __GLX_PUT_LONG(20, zoffset);
- __GLX_PUT_LONG(24, width);
- __GLX_PUT_LONG(28, height);
- __GLX_PUT_LONG(32, depth);
- __GLX_PUT_LONG(36, format);
- __GLX_PUT_LONG(40, image_size);
- if (image_size != 0) {
- __GLX_PUT_CHAR_ARRAY(__GLX_COMPRESSED_TEXSUBIMAGE_3D_CMD_HDR_SIZE,
- data, image_size);
- }
- __GLX_END(cmdlen);
- }
- else {
- __GLX_BEGIN_VARIABLE_LARGE(X_GLrop_CompressedTexSubImage3D, cmdlen + 4);
- __GLX_PUT_LONG(8, target);
- __GLX_PUT_LONG(12, level);
- __GLX_PUT_LONG(16, xoffset);
- __GLX_PUT_LONG(20, yoffset);
- __GLX_PUT_LONG(24, zoffset);
- __GLX_PUT_LONG(28, width);
- __GLX_PUT_LONG(32, height);
- __GLX_PUT_LONG(36, depth);
- __GLX_PUT_LONG(40, format);
- __GLX_PUT_LONG(44, image_size);
- __glXSendLargeCommand(gc, gc->pc,
- __GLX_COMPRESSED_TEXSUBIMAGE_3D_CMD_HDR_SIZE + 4,
- data, image_size);
- }
-}
diff --git a/src/glx/x11/indirect_transpose_matrix.c b/src/glx/x11/indirect_transpose_matrix.c
deleted file mode 100644
index 618db9f5d4f..00000000000
--- a/src/glx/x11/indirect_transpose_matrix.c
+++ /dev/null
@@ -1,85 +0,0 @@
-/*
- * (C) Copyright IBM Corporation 2004
- * 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"),
- * to deal in the Software without restriction, including without limitation
- * on the rights to use, copy, modify, merge, publish, distribute, sub
- * license, and/or sell copies of the Software, and to permit persons to whom
- * the Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice (including the next
- * paragraph) shall be included in all copies or substantial portions of the
- * Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL
- * THE COPYRIGHT HOLDERS AND/OR THEIR SUPPLIERS BE LIABLE FOR ANY CLAIM,
- * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
- * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
- * USE OR OTHER DEALINGS IN THE SOFTWARE.
- */
-
-#include <GL/gl.h>
-#include "indirect.h"
-
-static void
-TransposeMatrixf(const GLfloat s[16], GLfloat d[16])
-{
- int i, j;
- for (i = 0; i < 4; i++) {
- for (j = 0; j < 4; j++) {
- d[i * 4 + j] = s[j * 4 + i];
- }
- }
-}
-
-static void
-TransposeMatrixd(const GLdouble s[16], GLdouble d[16])
-{
- int i, j;
- for (i = 0; i < 4; i++) {
- for (j = 0; j < 4; j++) {
- d[i * 4 + j] = s[j * 4 + i];
- }
- }
-}
-
-
-void
-__indirect_glLoadTransposeMatrixdARB(const GLdouble * m)
-{
- GLdouble mt[16];
-
- TransposeMatrixd(m, mt);
- __indirect_glLoadMatrixd(mt);
-}
-
-void
-__indirect_glLoadTransposeMatrixfARB(const GLfloat * m)
-{
- GLfloat mt[16];
-
- TransposeMatrixf(m, mt);
- __indirect_glLoadMatrixf(mt);
-}
-
-void
-__indirect_glMultTransposeMatrixdARB(const GLdouble * m)
-{
- GLdouble mt[16];
-
- TransposeMatrixd(m, mt);
- __indirect_glMultMatrixd(mt);
-}
-
-void
-__indirect_glMultTransposeMatrixfARB(const GLfloat * m)
-{
- GLfloat mt[16];
-
- TransposeMatrixf(m, mt);
- __indirect_glMultMatrixf(mt);
-}
diff --git a/src/glx/x11/indirect_vertex_array.c b/src/glx/x11/indirect_vertex_array.c
deleted file mode 100644
index ad9882528ff..00000000000
--- a/src/glx/x11/indirect_vertex_array.c
+++ /dev/null
@@ -1,1985 +0,0 @@
-/*
- * (C) Copyright IBM Corporation 2004, 2005
- * 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"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sub license,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice (including the next
- * paragraph) shall be included in all copies or substantial portions of the
- * Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL
- * IBM,
- * AND/OR THEIR SUPPLIERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
- * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
- * OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- */
-
-#include <inttypes.h>
-#include <assert.h>
-#include <string.h>
-
-#include "glxclient.h"
-#include "indirect.h"
-#include <GL/glxproto.h>
-#include "glxextensions.h"
-#include "indirect_vertex_array.h"
-#include "indirect_vertex_array_priv.h"
-
-#define __GLX_PAD(n) (((n)+3) & ~3)
-
-/**
- * \file indirect_vertex_array.c
- * Implement GLX protocol for vertex arrays and vertex buffer objects.
- *
- * The most important function in this fill is \c fill_array_info_cache.
- * The \c array_state_vector contains a cache of the ARRAY_INFO data sent
- * in the DrawArrays protocol. Certain operations, such as enabling or
- * disabling an array, can invalidate this cache. \c fill_array_info_cache
- * fills-in this data. Additionally, it examines the enabled state and
- * other factors to determine what "version" of DrawArrays protocoal can be
- * used.
- *
- * Current, only two versions of DrawArrays protocol are implemented. The
- * first version is the "none" protocol. This is the fallback when the
- * server does not support GL 1.1 / EXT_vertex_arrays. It is implemented
- * by sending batches of immediate mode commands that are equivalent to the
- * DrawArrays protocol.
- *
- * The other protocol that is currently implemented is the "old" protocol.
- * This is the GL 1.1 DrawArrays protocol. The only difference between GL
- * 1.1 and EXT_vertex_arrays is the opcode used for the DrawArrays command.
- * This protocol is called "old" because the ARB is in the process of
- * defining a new protocol, which will probably be called wither "new" or
- * "vbo", to support multiple texture coordinate arrays, generic attributes,
- * and vertex buffer objects.
- *
- * \author Ian Romanick <[email protected]>
- */
-
-static void emit_DrawArrays_none(GLenum mode, GLint first, GLsizei count);
-static void emit_DrawArrays_old(GLenum mode, GLint first, GLsizei count);
-
-static void emit_DrawElements_none(GLenum mode, GLsizei count, GLenum type,
- const GLvoid * indices);
-static void emit_DrawElements_old(GLenum mode, GLsizei count, GLenum type,
- const GLvoid * indices);
-
-
-static GLubyte *emit_element_none(GLubyte * dst,
- const struct array_state_vector *arrays,
- unsigned index);
-static GLubyte *emit_element_old(GLubyte * dst,
- const struct array_state_vector *arrays,
- unsigned index);
-static struct array_state *get_array_entry(const struct array_state_vector
- *arrays, GLenum key,
- unsigned index);
-static void fill_array_info_cache(struct array_state_vector *arrays);
-static GLboolean validate_mode(__GLXcontext * gc, GLenum mode);
-static GLboolean validate_count(__GLXcontext * gc, GLsizei count);
-static GLboolean validate_type(__GLXcontext * gc, GLenum type);
-
-
-/**
- * Table of sizes, in bytes, of a GL types. All of the type enums are be in
- * the range 0x1400 - 0x140F. That includes types added by extensions (i.e.,
- * \c GL_HALF_FLOAT_NV). This elements of this table correspond to the
- * type enums masked with 0x0f.
- *
- * \notes
- * \c GL_HALF_FLOAT_NV is not included. Neither are \c GL_2_BYTES,
- * \c GL_3_BYTES, or \c GL_4_BYTES.
- */
-const GLuint __glXTypeSize_table[16] = {
- 1, 1, 2, 2, 4, 4, 4, 0, 0, 0, 8, 0, 0, 0, 0, 0
-};
-
-
-/**
- * Free the per-context array state that was allocated with
- * __glXInitVertexArrayState().
- */
-void
-__glXFreeVertexArrayState(__GLXcontext * gc)
-{
- __GLXattribute *state = (__GLXattribute *) (gc->client_state_private);
- struct array_state_vector *arrays = state->array_state;
-
- if (arrays) {
- if (arrays->stack) {
- free(arrays->stack);
- arrays->stack = NULL;
- }
- if (arrays->arrays) {
- free(arrays->arrays);
- arrays->arrays = NULL;
- }
- free(arrays);
- state->array_state = NULL;
- }
-}
-
-
-/**
- * Initialize vertex array state of a GLX context.
- *
- * \param gc GLX context whose vertex array state is to be initialized.
- *
- * \warning
- * This function may only be called after __GLXcontext::gl_extension_bits,
- * __GLXcontext::server_minor, and __GLXcontext::server_major have been
- * initialized. These values are used to determine what vertex arrays are
- * supported.
- *
- * \bug
- * Return values from malloc are not properly tested.
- */
-void
-__glXInitVertexArrayState(__GLXcontext * gc)
-{
- __GLXattribute *state = (__GLXattribute *) (gc->client_state_private);
- struct array_state_vector *arrays;
-
- unsigned array_count;
- int texture_units = 1, vertex_program_attribs = 0;
- unsigned i, j;
-
- GLboolean got_fog = GL_FALSE;
- GLboolean got_secondary_color = GL_FALSE;
-
-
- arrays = calloc(1, sizeof(struct array_state_vector));
- state->array_state = arrays;
-
- arrays->old_DrawArrays_possible = !state->NoDrawArraysProtocol;
- arrays->new_DrawArrays_possible = GL_FALSE;
- arrays->DrawArrays = NULL;
-
- arrays->active_texture_unit = 0;
-
-
- /* Determine how many arrays are actually needed. Only arrays that
- * are supported by the server are create. For example, if the server
- * supports only 2 texture units, then only 2 texture coordinate arrays
- * are created.
- *
- * At the very least, GL_VERTEX_ARRAY, GL_NORMAL_ARRAY,
- * GL_COLOR_ARRAY, GL_INDEX_ARRAY, GL_TEXTURE_COORD_ARRAY, and
- * GL_EDGE_FLAG_ARRAY are supported.
- */
-
- array_count = 5;
-
- if (__glExtensionBitIsEnabled(gc, GL_EXT_fog_coord_bit)
- || (gc->server_major > 1) || (gc->server_minor >= 4)) {
- got_fog = GL_TRUE;
- array_count++;
- }
-
- if (__glExtensionBitIsEnabled(gc, GL_EXT_secondary_color_bit)
- || (gc->server_major > 1) || (gc->server_minor >= 4)) {
- got_secondary_color = GL_TRUE;
- array_count++;
- }
-
- if (__glExtensionBitIsEnabled(gc, GL_ARB_multitexture_bit)
- || (gc->server_major > 1) || (gc->server_minor >= 3)) {
- __indirect_glGetIntegerv(GL_MAX_TEXTURE_UNITS, &texture_units);
- }
-
- if (__glExtensionBitIsEnabled(gc, GL_ARB_vertex_program_bit)) {
- __indirect_glGetProgramivARB(GL_VERTEX_PROGRAM_ARB,
- GL_MAX_PROGRAM_ATTRIBS_ARB,
- &vertex_program_attribs);
- }
-
- arrays->num_texture_units = texture_units;
- arrays->num_vertex_program_attribs = vertex_program_attribs;
- array_count += texture_units + vertex_program_attribs;
- arrays->num_arrays = array_count;
- arrays->arrays = calloc(array_count, sizeof(struct array_state));
-
- arrays->arrays[0].data_type = GL_FLOAT;
- arrays->arrays[0].count = 3;
- arrays->arrays[0].key = GL_NORMAL_ARRAY;
- arrays->arrays[0].normalized = GL_TRUE;
- arrays->arrays[0].old_DrawArrays_possible = GL_TRUE;
-
- arrays->arrays[1].data_type = GL_FLOAT;
- arrays->arrays[1].count = 4;
- arrays->arrays[1].key = GL_COLOR_ARRAY;
- arrays->arrays[1].normalized = GL_TRUE;
- arrays->arrays[1].old_DrawArrays_possible = GL_TRUE;
-
- arrays->arrays[2].data_type = GL_FLOAT;
- arrays->arrays[2].count = 1;
- arrays->arrays[2].key = GL_INDEX_ARRAY;
- arrays->arrays[2].old_DrawArrays_possible = GL_TRUE;
-
- arrays->arrays[3].data_type = GL_UNSIGNED_BYTE;
- arrays->arrays[3].count = 1;
- arrays->arrays[3].key = GL_EDGE_FLAG_ARRAY;
- arrays->arrays[3].old_DrawArrays_possible = GL_TRUE;
-
- for (i = 0; i < texture_units; i++) {
- arrays->arrays[4 + i].data_type = GL_FLOAT;
- arrays->arrays[4 + i].count = 4;
- arrays->arrays[4 + i].key = GL_TEXTURE_COORD_ARRAY;
-
- arrays->arrays[4 + i].old_DrawArrays_possible = (i == 0);
- arrays->arrays[4 + i].index = i;
-
- arrays->arrays[4 + i].header[1] = i + GL_TEXTURE0;
- }
-
- i = 4 + texture_units;
-
- if (got_fog) {
- arrays->arrays[i].data_type = GL_FLOAT;
- arrays->arrays[i].count = 1;
- arrays->arrays[i].key = GL_FOG_COORDINATE_ARRAY;
- arrays->arrays[i].old_DrawArrays_possible = GL_TRUE;
- i++;
- }
-
- if (got_secondary_color) {
- arrays->arrays[i].data_type = GL_FLOAT;
- arrays->arrays[i].count = 3;
- arrays->arrays[i].key = GL_SECONDARY_COLOR_ARRAY;
- arrays->arrays[i].old_DrawArrays_possible = GL_TRUE;
- arrays->arrays[i].normalized = GL_TRUE;
- i++;
- }
-
-
- for (j = 0; j < vertex_program_attribs; j++) {
- const unsigned idx = (vertex_program_attribs - (j + 1));
-
-
- arrays->arrays[idx + i].data_type = GL_FLOAT;
- arrays->arrays[idx + i].count = 4;
- arrays->arrays[idx + i].key = GL_VERTEX_ATTRIB_ARRAY_POINTER;
-
- arrays->arrays[idx + i].old_DrawArrays_possible = 0;
- arrays->arrays[idx + i].index = idx;
-
- arrays->arrays[idx + i].header[1] = idx;
- }
-
- i += vertex_program_attribs;
-
-
- /* Vertex array *must* be last becuase of the way that
- * emit_DrawArrays_none works.
- */
-
- arrays->arrays[i].data_type = GL_FLOAT;
- arrays->arrays[i].count = 4;
- arrays->arrays[i].key = GL_VERTEX_ARRAY;
- arrays->arrays[i].old_DrawArrays_possible = GL_TRUE;
-
- assert((i + 1) == arrays->num_arrays);
-
- arrays->stack_index = 0;
- arrays->stack = malloc(sizeof(struct array_stack_state)
- * arrays->num_arrays);
-}
-
-
-/**
- * Calculate the size of a single vertex for the "none" protocol. This is
- * essentially the size of all the immediate-mode commands required to
- * implement the enabled vertex arrays.
- */
-static size_t
-calculate_single_vertex_size_none(const struct array_state_vector *arrays)
-{
- size_t single_vertex_size = 0;
- unsigned i;
-
-
- for (i = 0; i < arrays->num_arrays; i++) {
- if (arrays->arrays[i].enabled) {
- single_vertex_size += ((uint16_t *) arrays->arrays[i].header)[0];
- }
- }
-
- return single_vertex_size;
-}
-
-
-/**
- * Emit a single element using non-DrawArrays protocol.
- */
-GLubyte *
-emit_element_none(GLubyte * dst,
- const struct array_state_vector * arrays, unsigned index)
-{
- unsigned i;
-
-
- for (i = 0; i < arrays->num_arrays; i++) {
- if (arrays->arrays[i].enabled) {
- const size_t offset = index * arrays->arrays[i].true_stride;
-
- /* The generic attributes can have more data than is in the
- * elements. This is because a vertex array can be a 2 element,
- * normalized, unsigned short, but the "closest" immediate mode
- * protocol is for a 4Nus. Since the sizes are small, the
- * performance impact on modern processors should be negligible.
- */
- (void) memset(dst, 0, ((uint16_t *) arrays->arrays[i].header)[0]);
-
- (void) memcpy(dst, arrays->arrays[i].header,
- arrays->arrays[i].header_size);
-
- dst += arrays->arrays[i].header_size;
-
- (void) memcpy(dst, ((GLubyte *) arrays->arrays[i].data) + offset,
- arrays->arrays[i].element_size);
-
- dst += __GLX_PAD(arrays->arrays[i].element_size);
- }
- }
-
- return dst;
-}
-
-
-/**
- * Emit a single element using "old" DrawArrays protocol from
- * EXT_vertex_arrays / OpenGL 1.1.
- */
-GLubyte *
-emit_element_old(GLubyte * dst,
- const struct array_state_vector * arrays, unsigned index)
-{
- unsigned i;
-
-
- for (i = 0; i < arrays->num_arrays; i++) {
- if (arrays->arrays[i].enabled) {
- const size_t offset = index * arrays->arrays[i].true_stride;
-
- (void) memcpy(dst, ((GLubyte *) arrays->arrays[i].data) + offset,
- arrays->arrays[i].element_size);
-
- dst += __GLX_PAD(arrays->arrays[i].element_size);
- }
- }
-
- return dst;
-}
-
-
-struct array_state *
-get_array_entry(const struct array_state_vector *arrays,
- GLenum key, unsigned index)
-{
- unsigned i;
-
- for (i = 0; i < arrays->num_arrays; i++) {
- if ((arrays->arrays[i].key == key)
- && (arrays->arrays[i].index == index)) {
- return &arrays->arrays[i];
- }
- }
-
- return NULL;
-}
-
-
-static GLboolean
-allocate_array_info_cache(struct array_state_vector *arrays,
- size_t required_size)
-{
-#define MAX_HEADER_SIZE 20
- if (arrays->array_info_cache_buffer_size < required_size) {
- GLubyte *temp = realloc(arrays->array_info_cache_base,
- required_size + MAX_HEADER_SIZE);
-
- if (temp == NULL) {
- return GL_FALSE;
- }
-
- arrays->array_info_cache_base = temp;
- arrays->array_info_cache = temp + MAX_HEADER_SIZE;
- arrays->array_info_cache_buffer_size = required_size;
- }
-
- arrays->array_info_cache_size = required_size;
- return GL_TRUE;
-}
-
-
-/**
- */
-void
-fill_array_info_cache(struct array_state_vector *arrays)
-{
- GLboolean old_DrawArrays_possible;
- unsigned i;
-
-
- /* Determine how many arrays are enabled.
- */
-
- arrays->enabled_client_array_count = 0;
- old_DrawArrays_possible = arrays->old_DrawArrays_possible;
- for (i = 0; i < arrays->num_arrays; i++) {
- if (arrays->arrays[i].enabled) {
- arrays->enabled_client_array_count++;
- old_DrawArrays_possible &= arrays->arrays[i].old_DrawArrays_possible;
- }
- }
-
- if (arrays->new_DrawArrays_possible) {
- assert(!arrays->new_DrawArrays_possible);
- }
- else if (old_DrawArrays_possible) {
- const size_t required_size = arrays->enabled_client_array_count * 12;
- uint32_t *info;
-
-
- if (!allocate_array_info_cache(arrays, required_size)) {
- return;
- }
-
-
- info = (uint32_t *) arrays->array_info_cache;
- for (i = 0; i < arrays->num_arrays; i++) {
- if (arrays->arrays[i].enabled) {
- *(info++) = arrays->arrays[i].data_type;
- *(info++) = arrays->arrays[i].count;
- *(info++) = arrays->arrays[i].key;
- }
- }
-
- arrays->DrawArrays = emit_DrawArrays_old;
- arrays->DrawElements = emit_DrawElements_old;
- }
- else {
- arrays->DrawArrays = emit_DrawArrays_none;
- arrays->DrawElements = emit_DrawElements_none;
- }
-
- arrays->array_info_cache_valid = GL_TRUE;
-}
-
-
-/**
- * Emit a \c glDrawArrays command using the "none" protocol. That is,
- * emit immediate-mode commands that are equivalent to the requiested
- * \c glDrawArrays command. This is used with servers that don't support
- * the OpenGL 1.1 / EXT_vertex_arrays DrawArrays protocol or in cases where
- * vertex state is enabled that is not compatible with that protocol.
- */
-void
-emit_DrawArrays_none(GLenum mode, GLint first, GLsizei count)
-{
- __GLXcontext *gc = __glXGetCurrentContext();
- const __GLXattribute *state =
- (const __GLXattribute *) (gc->client_state_private);
- struct array_state_vector *arrays = state->array_state;
-
- size_t single_vertex_size;
- GLubyte *pc;
- unsigned i;
- static const uint16_t begin_cmd[2] = { 8, X_GLrop_Begin };
- static const uint16_t end_cmd[2] = { 4, X_GLrop_End };
-
-
- single_vertex_size = calculate_single_vertex_size_none(arrays);
-
- pc = gc->pc;
-
- (void) memcpy(pc, begin_cmd, 4);
- *(int *) (pc + 4) = mode;
-
- pc += 8;
-
- for (i = 0; i < count; i++) {
- if ((pc + single_vertex_size) >= gc->bufEnd) {
- pc = __glXFlushRenderBuffer(gc, pc);
- }
-
- pc = emit_element_none(pc, arrays, first + i);
- }
-
- if ((pc + 4) >= gc->bufEnd) {
- pc = __glXFlushRenderBuffer(gc, pc);
- }
-
- (void) memcpy(pc, end_cmd, 4);
- pc += 4;
-
- gc->pc = pc;
- if (gc->pc > gc->limit) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-
-/**
- * Emit the header data for the GL 1.1 / EXT_vertex_arrays DrawArrays
- * protocol.
- *
- * \param gc GLX context.
- * \param arrays Array state.
- * \param elements_per_request Location to store the number of elements that
- * can fit in a single Render / RenderLarge
- * command.
- * \param total_request Total number of requests for a RenderLarge
- * command. If a Render command is used, this
- * will be zero.
- * \param mode Drawing mode.
- * \param count Number of vertices.
- *
- * \returns
- * A pointer to the buffer for array data.
- */
-static GLubyte *
-emit_DrawArrays_header_old(__GLXcontext * gc,
- struct array_state_vector *arrays,
- size_t * elements_per_request,
- unsigned int *total_requests,
- GLenum mode, GLsizei count)
-{
- size_t command_size;
- size_t single_vertex_size;
- const unsigned header_size = 16;
- unsigned i;
- GLubyte *pc;
-
-
- /* Determine the size of the whole command. This includes the header,
- * the ARRAY_INFO data and the array data. Once this size is calculated,
- * it will be known whether a Render or RenderLarge command is needed.
- */
-
- single_vertex_size = 0;
- for (i = 0; i < arrays->num_arrays; i++) {
- if (arrays->arrays[i].enabled) {
- single_vertex_size += __GLX_PAD(arrays->arrays[i].element_size);
- }
- }
-
- command_size = arrays->array_info_cache_size + header_size
- + (single_vertex_size * count);
-
-
- /* Write the header for either a Render command or a RenderLarge
- * command. After the header is written, write the ARRAY_INFO data.
- */
-
- if (command_size > gc->maxSmallRenderCommandSize) {
- /* maxSize is the maximum amount of data can be stuffed into a single
- * packet. sz_xGLXRenderReq is added because bufSize is the maximum
- * packet size minus sz_xGLXRenderReq.
- */
- const size_t maxSize = (gc->bufSize + sz_xGLXRenderReq)
- - sz_xGLXRenderLargeReq;
- unsigned vertex_requests;
-
-
- /* Calculate the number of data packets that will be required to send
- * the whole command. To do this, the number of verticies that
- * will fit in a single buffer must be calculated.
- *
- * The important value here is elements_per_request. This is the
- * number of complete array elements that will fit in a single
- * buffer. There may be some wasted space at the end of the buffer,
- * but splitting elements across buffer boundries would be painful.
- */
-
- elements_per_request[0] = maxSize / single_vertex_size;
-
- vertex_requests = (count + elements_per_request[0] - 1)
- / elements_per_request[0];
-
- *total_requests = vertex_requests + 1;
-
-
- __glXFlushRenderBuffer(gc, gc->pc);
-
- command_size += 4;
-
- pc = ((GLubyte *) arrays->array_info_cache) - (header_size + 4);
- *(uint32_t *) (pc + 0) = command_size;
- *(uint32_t *) (pc + 4) = X_GLrop_DrawArrays;
- *(uint32_t *) (pc + 8) = count;
- *(uint32_t *) (pc + 12) = arrays->enabled_client_array_count;
- *(uint32_t *) (pc + 16) = mode;
-
- __glXSendLargeChunk(gc, 1, *total_requests, pc,
- header_size + 4 + arrays->array_info_cache_size);
-
- pc = gc->pc;
- }
- else {
- if ((gc->pc + command_size) >= gc->bufEnd) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-
- pc = gc->pc;
- *(uint16_t *) (pc + 0) = command_size;
- *(uint16_t *) (pc + 2) = X_GLrop_DrawArrays;
- *(uint32_t *) (pc + 4) = count;
- *(uint32_t *) (pc + 8) = arrays->enabled_client_array_count;
- *(uint32_t *) (pc + 12) = mode;
-
- pc += header_size;
-
- (void) memcpy(pc, arrays->array_info_cache,
- arrays->array_info_cache_size);
- pc += arrays->array_info_cache_size;
-
- *elements_per_request = count;
- *total_requests = 0;
- }
-
-
- return pc;
-}
-
-
-/**
- */
-void
-emit_DrawArrays_old(GLenum mode, GLint first, GLsizei count)
-{
- __GLXcontext *gc = __glXGetCurrentContext();
- const __GLXattribute *state =
- (const __GLXattribute *) (gc->client_state_private);
- struct array_state_vector *arrays = state->array_state;
-
- GLubyte *pc;
- size_t elements_per_request;
- unsigned total_requests = 0;
- unsigned i;
- size_t total_sent = 0;
-
-
- pc = emit_DrawArrays_header_old(gc, arrays, &elements_per_request,
- &total_requests, mode, count);
-
-
- /* Write the arrays.
- */
-
- if (total_requests == 0) {
- assert(elements_per_request >= count);
-
- for (i = 0; i < count; i++) {
- pc = emit_element_old(pc, arrays, i + first);
- }
-
- assert(pc <= gc->bufEnd);
-
- gc->pc = pc;
- if (gc->pc > gc->limit) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
- }
- else {
- unsigned req;
-
-
- for (req = 2; req <= total_requests; req++) {
- if (count < elements_per_request) {
- elements_per_request = count;
- }
-
- pc = gc->pc;
- for (i = 0; i < elements_per_request; i++) {
- pc = emit_element_old(pc, arrays, i + first);
- }
-
- first += elements_per_request;
-
- total_sent += (size_t) (pc - gc->pc);
- __glXSendLargeChunk(gc, req, total_requests, gc->pc, pc - gc->pc);
-
- count -= elements_per_request;
- }
- }
-}
-
-
-void
-emit_DrawElements_none(GLenum mode, GLsizei count, GLenum type,
- const GLvoid * indices)
-{
- __GLXcontext *gc = __glXGetCurrentContext();
- const __GLXattribute *state =
- (const __GLXattribute *) (gc->client_state_private);
- struct array_state_vector *arrays = state->array_state;
- static const uint16_t begin_cmd[2] = { 8, X_GLrop_Begin };
- static const uint16_t end_cmd[2] = { 4, X_GLrop_End };
-
- GLubyte *pc;
- size_t single_vertex_size;
- unsigned i;
-
-
- single_vertex_size = calculate_single_vertex_size_none(arrays);
-
-
- if ((gc->pc + single_vertex_size) >= gc->bufEnd) {
- gc->pc = __glXFlushRenderBuffer(gc, gc->pc);
- }
-
- pc = gc->pc;
-
- (void) memcpy(pc, begin_cmd, 4);
- *(int *) (pc + 4) = mode;
-
- pc += 8;
-
- for (i = 0; i < count; i++) {
- unsigned index = 0;
-
- if ((pc + single_vertex_size) >= gc->bufEnd) {
- pc = __glXFlushRenderBuffer(gc, pc);
- }
-
- switch (type) {
- case GL_UNSIGNED_INT:
- index = (unsigned) (((GLuint *) indices)[i]);
- break;
- case GL_UNSIGNED_SHORT:
- index = (unsigned) (((GLushort *) indices)[i]);
- break;
- case GL_UNSIGNED_BYTE:
- index = (unsigned) (((GLubyte *) indices)[i]);
- break;
- }
- pc = emit_element_none(pc, arrays, index);
- }
-
- if ((pc + 4) >= gc->bufEnd) {
- pc = __glXFlushRenderBuffer(gc, pc);
- }
-
- (void) memcpy(pc, end_cmd, 4);
- pc += 4;
-
- gc->pc = pc;
- if (gc->pc > gc->limit) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-
-/**
- */
-void
-emit_DrawElements_old(GLenum mode, GLsizei count, GLenum type,
- const GLvoid * indices)
-{
- __GLXcontext *gc = __glXGetCurrentContext();
- const __GLXattribute *state =
- (const __GLXattribute *) (gc->client_state_private);
- struct array_state_vector *arrays = state->array_state;
-
- GLubyte *pc;
- size_t elements_per_request;
- unsigned total_requests = 0;
- unsigned i;
- unsigned req;
- unsigned req_element = 0;
-
-
- pc = emit_DrawArrays_header_old(gc, arrays, &elements_per_request,
- &total_requests, mode, count);
-
-
- /* Write the arrays.
- */
-
- req = 2;
- while (count > 0) {
- if (count < elements_per_request) {
- elements_per_request = count;
- }
-
- switch (type) {
- case GL_UNSIGNED_INT:{
- const GLuint *ui_ptr = (const GLuint *) indices + req_element;
-
- for (i = 0; i < elements_per_request; i++) {
- const GLint index = (GLint) * (ui_ptr++);
- pc = emit_element_old(pc, arrays, index);
- }
- break;
- }
- case GL_UNSIGNED_SHORT:{
- const GLushort *us_ptr = (const GLushort *) indices + req_element;
-
- for (i = 0; i < elements_per_request; i++) {
- const GLint index = (GLint) * (us_ptr++);
- pc = emit_element_old(pc, arrays, index);
- }
- break;
- }
- case GL_UNSIGNED_BYTE:{
- const GLubyte *ub_ptr = (const GLubyte *) indices + req_element;
-
- for (i = 0; i < elements_per_request; i++) {
- const GLint index = (GLint) * (ub_ptr++);
- pc = emit_element_old(pc, arrays, index);
- }
- break;
- }
- }
-
- if (total_requests != 0) {
- __glXSendLargeChunk(gc, req, total_requests, gc->pc, pc - gc->pc);
- pc = gc->pc;
- req++;
- }
-
- count -= elements_per_request;
- req_element += elements_per_request;
- }
-
-
- assert((total_requests == 0) || ((req - 1) == total_requests));
-
- if (total_requests == 0) {
- assert(pc <= gc->bufEnd);
-
- gc->pc = pc;
- if (gc->pc > gc->limit) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
- }
-}
-
-
-/**
- * Validate that the \c mode parameter to \c glDrawArrays, et. al. is valid.
- * If it is not valid, then an error code is set in the GLX context.
- *
- * \returns
- * \c GL_TRUE if the argument is valid, \c GL_FALSE if is not.
- */
-static GLboolean
-validate_mode(__GLXcontext * gc, GLenum mode)
-{
- switch (mode) {
- case GL_POINTS:
- case GL_LINE_STRIP:
- case GL_LINE_LOOP:
- case GL_LINES:
- case GL_TRIANGLE_STRIP:
- case GL_TRIANGLE_FAN:
- case GL_TRIANGLES:
- case GL_QUAD_STRIP:
- case GL_QUADS:
- case GL_POLYGON:
- break;
- default:
- __glXSetError(gc, GL_INVALID_ENUM);
- return GL_FALSE;
- }
-
- return GL_TRUE;
-}
-
-
-/**
- * Validate that the \c count parameter to \c glDrawArrays, et. al. is valid.
- * A value less than zero is invalid and will result in \c GL_INVALID_VALUE
- * being set. A value of zero will not result in an error being set, but
- * will result in \c GL_FALSE being returned.
- *
- * \returns
- * \c GL_TRUE if the argument is valid, \c GL_FALSE if it is not.
- */
-static GLboolean
-validate_count(__GLXcontext * gc, GLsizei count)
-{
- if (count < 0) {
- __glXSetError(gc, GL_INVALID_VALUE);
- }
-
- return (count > 0);
-}
-
-
-/**
- * Validate that the \c type parameter to \c glDrawElements, et. al. is
- * valid. Only \c GL_UNSIGNED_BYTE, \c GL_UNSIGNED_SHORT, and
- * \c GL_UNSIGNED_INT are valid.
- *
- * \returns
- * \c GL_TRUE if the argument is valid, \c GL_FALSE if it is not.
- */
-static GLboolean
-validate_type(__GLXcontext * gc, GLenum type)
-{
- switch (type) {
- case GL_UNSIGNED_INT:
- case GL_UNSIGNED_SHORT:
- case GL_UNSIGNED_BYTE:
- return GL_TRUE;
- default:
- __glXSetError(gc, GL_INVALID_ENUM);
- return GL_FALSE;
- }
-}
-
-
-void
-__indirect_glDrawArrays(GLenum mode, GLint first, GLsizei count)
-{
- __GLXcontext *gc = __glXGetCurrentContext();
- const __GLXattribute *state =
- (const __GLXattribute *) (gc->client_state_private);
- struct array_state_vector *arrays = state->array_state;
-
-
- if (validate_mode(gc, mode) && validate_count(gc, count)) {
- if (!arrays->array_info_cache_valid) {
- fill_array_info_cache(arrays);
- }
-
- arrays->DrawArrays(mode, first, count);
- }
-}
-
-
-void
-__indirect_glArrayElement(GLint index)
-{
- __GLXcontext *gc = __glXGetCurrentContext();
- const __GLXattribute *state =
- (const __GLXattribute *) (gc->client_state_private);
- struct array_state_vector *arrays = state->array_state;
-
- size_t single_vertex_size;
-
-
- single_vertex_size = calculate_single_vertex_size_none(arrays);
-
- if ((gc->pc + single_vertex_size) >= gc->bufEnd) {
- gc->pc = __glXFlushRenderBuffer(gc, gc->pc);
- }
-
- gc->pc = emit_element_none(gc->pc, arrays, index);
-
- if (gc->pc > gc->limit) {
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- }
-}
-
-
-void
-__indirect_glDrawElements(GLenum mode, GLsizei count, GLenum type,
- const GLvoid * indices)
-{
- __GLXcontext *gc = __glXGetCurrentContext();
- const __GLXattribute *state =
- (const __GLXattribute *) (gc->client_state_private);
- struct array_state_vector *arrays = state->array_state;
-
-
- if (validate_mode(gc, mode) && validate_count(gc, count)
- && validate_type(gc, type)) {
- if (!arrays->array_info_cache_valid) {
- fill_array_info_cache(arrays);
- }
-
- arrays->DrawElements(mode, count, type, indices);
- }
-}
-
-
-void
-__indirect_glDrawRangeElements(GLenum mode, GLuint start, GLuint end,
- GLsizei count, GLenum type,
- const GLvoid * indices)
-{
- __GLXcontext *gc = __glXGetCurrentContext();
- const __GLXattribute *state =
- (const __GLXattribute *) (gc->client_state_private);
- struct array_state_vector *arrays = state->array_state;
-
-
- if (validate_mode(gc, mode) && validate_count(gc, count)
- && validate_type(gc, type)) {
- if (end < start) {
- __glXSetError(gc, GL_INVALID_VALUE);
- return;
- }
-
- if (!arrays->array_info_cache_valid) {
- fill_array_info_cache(arrays);
- }
-
- arrays->DrawElements(mode, count, type, indices);
- }
-}
-
-
-void
-__indirect_glMultiDrawArraysEXT(GLenum mode, GLint * first, GLsizei * count,
- GLsizei primcount)
-{
- __GLXcontext *gc = __glXGetCurrentContext();
- const __GLXattribute *state =
- (const __GLXattribute *) (gc->client_state_private);
- struct array_state_vector *arrays = state->array_state;
- GLsizei i;
-
-
- if (validate_mode(gc, mode)) {
- if (!arrays->array_info_cache_valid) {
- fill_array_info_cache(arrays);
- }
-
- for (i = 0; i < primcount; i++) {
- if (validate_count(gc, count[i])) {
- arrays->DrawArrays(mode, first[i], count[i]);
- }
- }
- }
-}
-
-
-void
-__indirect_glMultiDrawElementsEXT(GLenum mode, const GLsizei * count,
- GLenum type, const GLvoid ** indices,
- GLsizei primcount)
-{
- __GLXcontext *gc = __glXGetCurrentContext();
- const __GLXattribute *state =
- (const __GLXattribute *) (gc->client_state_private);
- struct array_state_vector *arrays = state->array_state;
- GLsizei i;
-
-
- if (validate_mode(gc, mode) && validate_type(gc, type)) {
- if (!arrays->array_info_cache_valid) {
- fill_array_info_cache(arrays);
- }
-
- for (i = 0; i < primcount; i++) {
- if (validate_count(gc, count[i])) {
- arrays->DrawElements(mode, count[i], type, indices[i]);
- }
- }
- }
-}
-
-
-#define COMMON_ARRAY_DATA_INIT(a, PTR, TYPE, STRIDE, COUNT, NORMALIZED, HDR_SIZE, OPCODE) \
- do { \
- (a)->data = PTR; \
- (a)->data_type = TYPE; \
- (a)->user_stride = STRIDE; \
- (a)->count = COUNT; \
- (a)->normalized = NORMALIZED; \
- \
- (a)->element_size = __glXTypeSize( TYPE ) * COUNT; \
- (a)->true_stride = (STRIDE == 0) \
- ? (a)->element_size : STRIDE; \
- \
- (a)->header_size = HDR_SIZE; \
- ((uint16_t *) (a)->header)[0] = __GLX_PAD((a)->header_size + (a)->element_size); \
- ((uint16_t *) (a)->header)[1] = OPCODE; \
- } while(0)
-
-
-void
-__indirect_glVertexPointer(GLint size, GLenum type, GLsizei stride,
- const GLvoid * pointer)
-{
- static const uint16_t short_ops[5] = {
- 0, 0, X_GLrop_Vertex2sv, X_GLrop_Vertex3sv, X_GLrop_Vertex4sv
- };
- static const uint16_t int_ops[5] = {
- 0, 0, X_GLrop_Vertex2iv, X_GLrop_Vertex3iv, X_GLrop_Vertex4iv
- };
- static const uint16_t float_ops[5] = {
- 0, 0, X_GLrop_Vertex2fv, X_GLrop_Vertex3fv, X_GLrop_Vertex4fv
- };
- static const uint16_t double_ops[5] = {
- 0, 0, X_GLrop_Vertex2dv, X_GLrop_Vertex3dv, X_GLrop_Vertex4dv
- };
- uint16_t opcode;
- __GLXcontext *gc = __glXGetCurrentContext();
- __GLXattribute *state = (__GLXattribute *) (gc->client_state_private);
- struct array_state_vector *arrays = state->array_state;
- struct array_state *a;
-
-
- if (size < 2 || size > 4 || stride < 0) {
- __glXSetError(gc, GL_INVALID_VALUE);
- return;
- }
-
- switch (type) {
- case GL_SHORT:
- opcode = short_ops[size];
- break;
- case GL_INT:
- opcode = int_ops[size];
- break;
- case GL_FLOAT:
- opcode = float_ops[size];
- break;
- case GL_DOUBLE:
- opcode = double_ops[size];
- break;
- default:
- __glXSetError(gc, GL_INVALID_ENUM);
- return;
- }
-
- a = get_array_entry(arrays, GL_VERTEX_ARRAY, 0);
- assert(a != NULL);
- COMMON_ARRAY_DATA_INIT(a, pointer, type, stride, size, GL_FALSE, 4,
- opcode);
-
- if (a->enabled) {
- arrays->array_info_cache_valid = GL_FALSE;
- }
-}
-
-
-void
-__indirect_glNormalPointer(GLenum type, GLsizei stride,
- const GLvoid * pointer)
-{
- uint16_t opcode;
- __GLXcontext *gc = __glXGetCurrentContext();
- __GLXattribute *state = (__GLXattribute *) (gc->client_state_private);
- struct array_state_vector *arrays = state->array_state;
- struct array_state *a;
-
-
- if (stride < 0) {
- __glXSetError(gc, GL_INVALID_VALUE);
- return;
- }
-
- switch (type) {
- case GL_BYTE:
- opcode = X_GLrop_Normal3bv;
- break;
- case GL_SHORT:
- opcode = X_GLrop_Normal3sv;
- break;
- case GL_INT:
- opcode = X_GLrop_Normal3iv;
- break;
- case GL_FLOAT:
- opcode = X_GLrop_Normal3fv;
- break;
- case GL_DOUBLE:
- opcode = X_GLrop_Normal3dv;
- break;
- default:
- __glXSetError(gc, GL_INVALID_ENUM);
- return;
- }
-
- a = get_array_entry(arrays, GL_NORMAL_ARRAY, 0);
- assert(a != NULL);
- COMMON_ARRAY_DATA_INIT(a, pointer, type, stride, 3, GL_TRUE, 4, opcode);
-
- if (a->enabled) {
- arrays->array_info_cache_valid = GL_FALSE;
- }
-}
-
-
-void
-__indirect_glColorPointer(GLint size, GLenum type, GLsizei stride,
- const GLvoid * pointer)
-{
- static const uint16_t byte_ops[5] = {
- 0, 0, 0, X_GLrop_Color3bv, X_GLrop_Color4bv
- };
- static const uint16_t ubyte_ops[5] = {
- 0, 0, 0, X_GLrop_Color3ubv, X_GLrop_Color4ubv
- };
- static const uint16_t short_ops[5] = {
- 0, 0, 0, X_GLrop_Color3sv, X_GLrop_Color4sv
- };
- static const uint16_t ushort_ops[5] = {
- 0, 0, 0, X_GLrop_Color3usv, X_GLrop_Color4usv
- };
- static const uint16_t int_ops[5] = {
- 0, 0, 0, X_GLrop_Color3iv, X_GLrop_Color4iv
- };
- static const uint16_t uint_ops[5] = {
- 0, 0, 0, X_GLrop_Color3uiv, X_GLrop_Color4uiv
- };
- static const uint16_t float_ops[5] = {
- 0, 0, 0, X_GLrop_Color3fv, X_GLrop_Color4fv
- };
- static const uint16_t double_ops[5] = {
- 0, 0, 0, X_GLrop_Color3dv, X_GLrop_Color4dv
- };
- uint16_t opcode;
- __GLXcontext *gc = __glXGetCurrentContext();
- __GLXattribute *state = (__GLXattribute *) (gc->client_state_private);
- struct array_state_vector *arrays = state->array_state;
- struct array_state *a;
-
-
- if (size < 3 || size > 4 || stride < 0) {
- __glXSetError(gc, GL_INVALID_VALUE);
- return;
- }
-
- switch (type) {
- case GL_BYTE:
- opcode = byte_ops[size];
- break;
- case GL_UNSIGNED_BYTE:
- opcode = ubyte_ops[size];
- break;
- case GL_SHORT:
- opcode = short_ops[size];
- break;
- case GL_UNSIGNED_SHORT:
- opcode = ushort_ops[size];
- break;
- case GL_INT:
- opcode = int_ops[size];
- break;
- case GL_UNSIGNED_INT:
- opcode = uint_ops[size];
- break;
- case GL_FLOAT:
- opcode = float_ops[size];
- break;
- case GL_DOUBLE:
- opcode = double_ops[size];
- break;
- default:
- __glXSetError(gc, GL_INVALID_ENUM);
- return;
- }
-
- a = get_array_entry(arrays, GL_COLOR_ARRAY, 0);
- assert(a != NULL);
- COMMON_ARRAY_DATA_INIT(a, pointer, type, stride, size, GL_TRUE, 4, opcode);
-
- if (a->enabled) {
- arrays->array_info_cache_valid = GL_FALSE;
- }
-}
-
-
-void
-__indirect_glIndexPointer(GLenum type, GLsizei stride, const GLvoid * pointer)
-{
- uint16_t opcode;
- __GLXcontext *gc = __glXGetCurrentContext();
- __GLXattribute *state = (__GLXattribute *) (gc->client_state_private);
- struct array_state_vector *arrays = state->array_state;
- struct array_state *a;
-
-
- if (stride < 0) {
- __glXSetError(gc, GL_INVALID_VALUE);
- return;
- }
-
- switch (type) {
- case GL_UNSIGNED_BYTE:
- opcode = X_GLrop_Indexubv;
- break;
- case GL_SHORT:
- opcode = X_GLrop_Indexsv;
- break;
- case GL_INT:
- opcode = X_GLrop_Indexiv;
- break;
- case GL_FLOAT:
- opcode = X_GLrop_Indexfv;
- break;
- case GL_DOUBLE:
- opcode = X_GLrop_Indexdv;
- break;
- default:
- __glXSetError(gc, GL_INVALID_ENUM);
- return;
- }
-
- a = get_array_entry(arrays, GL_INDEX_ARRAY, 0);
- assert(a != NULL);
- COMMON_ARRAY_DATA_INIT(a, pointer, type, stride, 1, GL_FALSE, 4, opcode);
-
- if (a->enabled) {
- arrays->array_info_cache_valid = GL_FALSE;
- }
-}
-
-
-void
-__indirect_glEdgeFlagPointer(GLsizei stride, const GLvoid * pointer)
-{
- __GLXcontext *gc = __glXGetCurrentContext();
- __GLXattribute *state = (__GLXattribute *) (gc->client_state_private);
- struct array_state_vector *arrays = state->array_state;
- struct array_state *a;
-
-
- if (stride < 0) {
- __glXSetError(gc, GL_INVALID_VALUE);
- return;
- }
-
-
- a = get_array_entry(arrays, GL_EDGE_FLAG_ARRAY, 0);
- assert(a != NULL);
- COMMON_ARRAY_DATA_INIT(a, pointer, GL_UNSIGNED_BYTE, stride, 1, GL_FALSE,
- 4, X_GLrop_EdgeFlagv);
-
- if (a->enabled) {
- arrays->array_info_cache_valid = GL_FALSE;
- }
-}
-
-
-void
-__indirect_glTexCoordPointer(GLint size, GLenum type, GLsizei stride,
- const GLvoid * pointer)
-{
- static const uint16_t short_ops[5] = {
- 0, X_GLrop_TexCoord1sv, X_GLrop_TexCoord2sv, X_GLrop_TexCoord3sv,
- X_GLrop_TexCoord4sv
- };
- static const uint16_t int_ops[5] = {
- 0, X_GLrop_TexCoord1iv, X_GLrop_TexCoord2iv, X_GLrop_TexCoord3iv,
- X_GLrop_TexCoord4iv
- };
- static const uint16_t float_ops[5] = {
- 0, X_GLrop_TexCoord1dv, X_GLrop_TexCoord2fv, X_GLrop_TexCoord3fv,
- X_GLrop_TexCoord4fv
- };
- static const uint16_t double_ops[5] = {
- 0, X_GLrop_TexCoord1dv, X_GLrop_TexCoord2dv, X_GLrop_TexCoord3dv,
- X_GLrop_TexCoord4dv
- };
-
- static const uint16_t mshort_ops[5] = {
- 0, X_GLrop_MultiTexCoord1svARB, X_GLrop_MultiTexCoord2svARB,
- X_GLrop_MultiTexCoord3svARB, X_GLrop_MultiTexCoord4svARB
- };
- static const uint16_t mint_ops[5] = {
- 0, X_GLrop_MultiTexCoord1ivARB, X_GLrop_MultiTexCoord2ivARB,
- X_GLrop_MultiTexCoord3ivARB, X_GLrop_MultiTexCoord4ivARB
- };
- static const uint16_t mfloat_ops[5] = {
- 0, X_GLrop_MultiTexCoord1dvARB, X_GLrop_MultiTexCoord2fvARB,
- X_GLrop_MultiTexCoord3fvARB, X_GLrop_MultiTexCoord4fvARB
- };
- static const uint16_t mdouble_ops[5] = {
- 0, X_GLrop_MultiTexCoord1dvARB, X_GLrop_MultiTexCoord2dvARB,
- X_GLrop_MultiTexCoord3dvARB, X_GLrop_MultiTexCoord4dvARB
- };
-
- uint16_t opcode;
- __GLXcontext *gc = __glXGetCurrentContext();
- __GLXattribute *state = (__GLXattribute *) (gc->client_state_private);
- struct array_state_vector *arrays = state->array_state;
- struct array_state *a;
- unsigned header_size;
- unsigned index;
-
-
- if (size < 1 || size > 4 || stride < 0) {
- __glXSetError(gc, GL_INVALID_VALUE);
- return;
- }
-
- index = arrays->active_texture_unit;
- if (index == 0) {
- switch (type) {
- case GL_SHORT:
- opcode = short_ops[size];
- break;
- case GL_INT:
- opcode = int_ops[size];
- break;
- case GL_FLOAT:
- opcode = float_ops[size];
- break;
- case GL_DOUBLE:
- opcode = double_ops[size];
- break;
- default:
- __glXSetError(gc, GL_INVALID_ENUM);
- return;
- }
-
- header_size = 4;
- }
- else {
- switch (type) {
- case GL_SHORT:
- opcode = mshort_ops[size];
- break;
- case GL_INT:
- opcode = mint_ops[size];
- break;
- case GL_FLOAT:
- opcode = mfloat_ops[size];
- break;
- case GL_DOUBLE:
- opcode = mdouble_ops[size];
- break;
- default:
- __glXSetError(gc, GL_INVALID_ENUM);
- return;
- }
-
- header_size = 8;
- }
-
- a = get_array_entry(arrays, GL_TEXTURE_COORD_ARRAY, index);
- assert(a != NULL);
- COMMON_ARRAY_DATA_INIT(a, pointer, type, stride, size, GL_FALSE,
- header_size, opcode);
-
- if (a->enabled) {
- arrays->array_info_cache_valid = GL_FALSE;
- }
-}
-
-
-void
-__indirect_glSecondaryColorPointerEXT(GLint size, GLenum type, GLsizei stride,
- const GLvoid * pointer)
-{
- uint16_t opcode;
- __GLXcontext *gc = __glXGetCurrentContext();
- __GLXattribute *state = (__GLXattribute *) (gc->client_state_private);
- struct array_state_vector *arrays = state->array_state;
- struct array_state *a;
-
-
- if (size != 3 || stride < 0) {
- __glXSetError(gc, GL_INVALID_VALUE);
- return;
- }
-
- switch (type) {
- case GL_BYTE:
- opcode = 4126;
- break;
- case GL_UNSIGNED_BYTE:
- opcode = 4131;
- break;
- case GL_SHORT:
- opcode = 4127;
- break;
- case GL_UNSIGNED_SHORT:
- opcode = 4132;
- break;
- case GL_INT:
- opcode = 4128;
- break;
- case GL_UNSIGNED_INT:
- opcode = 4133;
- break;
- case GL_FLOAT:
- opcode = 4129;
- break;
- case GL_DOUBLE:
- opcode = 4130;
- break;
- default:
- __glXSetError(gc, GL_INVALID_ENUM);
- return;
- }
-
- a = get_array_entry(arrays, GL_SECONDARY_COLOR_ARRAY, 0);
- if (a == NULL) {
- __glXSetError(gc, GL_INVALID_OPERATION);
- return;
- }
-
- COMMON_ARRAY_DATA_INIT(a, pointer, type, stride, size, GL_TRUE, 4, opcode);
-
- if (a->enabled) {
- arrays->array_info_cache_valid = GL_FALSE;
- }
-}
-
-
-void
-__indirect_glFogCoordPointerEXT(GLenum type, GLsizei stride,
- const GLvoid * pointer)
-{
- uint16_t opcode;
- __GLXcontext *gc = __glXGetCurrentContext();
- __GLXattribute *state = (__GLXattribute *) (gc->client_state_private);
- struct array_state_vector *arrays = state->array_state;
- struct array_state *a;
-
-
- if (stride < 0) {
- __glXSetError(gc, GL_INVALID_VALUE);
- return;
- }
-
- switch (type) {
- case GL_FLOAT:
- opcode = 4124;
- break;
- case GL_DOUBLE:
- opcode = 4125;
- break;
- default:
- __glXSetError(gc, GL_INVALID_ENUM);
- return;
- }
-
- a = get_array_entry(arrays, GL_FOG_COORD_ARRAY, 0);
- if (a == NULL) {
- __glXSetError(gc, GL_INVALID_OPERATION);
- return;
- }
-
- COMMON_ARRAY_DATA_INIT(a, pointer, type, stride, 1, GL_FALSE, 4, opcode);
-
- if (a->enabled) {
- arrays->array_info_cache_valid = GL_FALSE;
- }
-}
-
-
-void
-__indirect_glVertexAttribPointerARB(GLuint index, GLint size,
- GLenum type, GLboolean normalized,
- GLsizei stride, const GLvoid * pointer)
-{
- static const uint16_t short_ops[5] = { 0, 4189, 4190, 4191, 4192 };
- static const uint16_t float_ops[5] = { 0, 4193, 4194, 4195, 4196 };
- static const uint16_t double_ops[5] = { 0, 4197, 4198, 4199, 4200 };
-
- uint16_t opcode;
- __GLXcontext *gc = __glXGetCurrentContext();
- __GLXattribute *state = (__GLXattribute *) (gc->client_state_private);
- struct array_state_vector *arrays = state->array_state;
- struct array_state *a;
- unsigned true_immediate_count;
- unsigned true_immediate_size;
-
-
- if ((size < 1) || (size > 4) || (stride < 0)
- || (index > arrays->num_vertex_program_attribs)) {
- __glXSetError(gc, GL_INVALID_VALUE);
- return;
- }
-
- if (normalized && (type != GL_FLOAT) && (type != GL_DOUBLE)) {
- switch (type) {
- case GL_BYTE:
- opcode = X_GLrop_VertexAttrib4NbvARB;
- break;
- case GL_UNSIGNED_BYTE:
- opcode = X_GLrop_VertexAttrib4NubvARB;
- break;
- case GL_SHORT:
- opcode = X_GLrop_VertexAttrib4NsvARB;
- break;
- case GL_UNSIGNED_SHORT:
- opcode = X_GLrop_VertexAttrib4NusvARB;
- break;
- case GL_INT:
- opcode = X_GLrop_VertexAttrib4NivARB;
- break;
- case GL_UNSIGNED_INT:
- opcode = X_GLrop_VertexAttrib4NuivARB;
- break;
- default:
- __glXSetError(gc, GL_INVALID_ENUM);
- return;
- }
-
- true_immediate_count = 4;
- }
- else {
- true_immediate_count = size;
-
- switch (type) {
- case GL_BYTE:
- opcode = X_GLrop_VertexAttrib4bvARB;
- true_immediate_count = 4;
- break;
- case GL_UNSIGNED_BYTE:
- opcode = X_GLrop_VertexAttrib4ubvARB;
- true_immediate_count = 4;
- break;
- case GL_SHORT:
- opcode = short_ops[size];
- break;
- case GL_UNSIGNED_SHORT:
- opcode = X_GLrop_VertexAttrib4usvARB;
- true_immediate_count = 4;
- break;
- case GL_INT:
- opcode = X_GLrop_VertexAttrib4ivARB;
- true_immediate_count = 4;
- break;
- case GL_UNSIGNED_INT:
- opcode = X_GLrop_VertexAttrib4uivARB;
- true_immediate_count = 4;
- break;
- case GL_FLOAT:
- opcode = float_ops[size];
- break;
- case GL_DOUBLE:
- opcode = double_ops[size];
- break;
- default:
- __glXSetError(gc, GL_INVALID_ENUM);
- return;
- }
- }
-
- a = get_array_entry(arrays, GL_VERTEX_ATTRIB_ARRAY_POINTER, index);
- if (a == NULL) {
- __glXSetError(gc, GL_INVALID_OPERATION);
- return;
- }
-
- COMMON_ARRAY_DATA_INIT(a, pointer, type, stride, size, normalized, 8,
- opcode);
-
- true_immediate_size = __glXTypeSize(type) * true_immediate_count;
- ((uint16_t *) (a)->header)[0] = __GLX_PAD(a->header_size
- + true_immediate_size);
-
- if (a->enabled) {
- arrays->array_info_cache_valid = GL_FALSE;
- }
-}
-
-
-/**
- * I don't have 100% confidence that this is correct. The different rules
- * about whether or not generic vertex attributes alias "classic" vertex
- * attributes (i.e., attrib1 ?= primary color) between ARB_vertex_program,
- * ARB_vertex_shader, and NV_vertex_program are a bit confusing. My
- * feeling is that the client-side doesn't have to worry about it. The
- * client just sends all the data to the server and lets the server deal
- * with it.
- */
-void
-__indirect_glVertexAttribPointerNV(GLuint index, GLint size,
- GLenum type, GLsizei stride,
- const GLvoid * pointer)
-{
- __GLXcontext *gc = __glXGetCurrentContext();
- GLboolean normalized = GL_FALSE;
-
-
- switch (type) {
- case GL_UNSIGNED_BYTE:
- if (size != 4) {
- __glXSetError(gc, GL_INVALID_VALUE);
- return;
- }
- normalized = GL_TRUE;
-
- case GL_SHORT:
- case GL_FLOAT:
- case GL_DOUBLE:
- __indirect_glVertexAttribPointerARB(index, size, type,
- normalized, stride, pointer);
- return;
- default:
- __glXSetError(gc, GL_INVALID_ENUM);
- return;
- }
-}
-
-
-void
-__indirect_glClientActiveTextureARB(GLenum texture)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- __GLXattribute *const state =
- (__GLXattribute *) (gc->client_state_private);
- struct array_state_vector *const arrays = state->array_state;
- const GLint unit = (GLint) texture - GL_TEXTURE0;
-
-
- if ((unit < 0) || (unit >= arrays->num_texture_units)) {
- __glXSetError(gc, GL_INVALID_ENUM);
- return;
- }
-
- arrays->active_texture_unit = unit;
-}
-
-
-/**
- * Modify the enable state for the selected array
- */
-GLboolean
-__glXSetArrayEnable(__GLXattribute * state, GLenum key, unsigned index,
- GLboolean enable)
-{
- struct array_state_vector *arrays = state->array_state;
- struct array_state *a;
-
-
- /* Texture coordinate arrays have an implict index set when the
- * application calls glClientActiveTexture.
- */
- if (key == GL_TEXTURE_COORD_ARRAY) {
- index = arrays->active_texture_unit;
- }
-
- a = get_array_entry(arrays, key, index);
-
- if ((a != NULL) && (a->enabled != enable)) {
- a->enabled = enable;
- arrays->array_info_cache_valid = GL_FALSE;
- }
-
- return (a != NULL);
-}
-
-
-void
-__glXArrayDisableAll(__GLXattribute * state)
-{
- struct array_state_vector *arrays = state->array_state;
- unsigned i;
-
-
- for (i = 0; i < arrays->num_arrays; i++) {
- arrays->arrays[i].enabled = GL_FALSE;
- }
-
- arrays->array_info_cache_valid = GL_FALSE;
-}
-
-
-/**
- */
-GLboolean
-__glXGetArrayEnable(const __GLXattribute * const state,
- GLenum key, unsigned index, GLintptr * dest)
-{
- const struct array_state_vector *arrays = state->array_state;
- const struct array_state *a =
- get_array_entry((struct array_state_vector *) arrays,
- key, index);
-
- if (a != NULL) {
- *dest = (GLintptr) a->enabled;
- }
-
- return (a != NULL);
-}
-
-
-/**
- */
-GLboolean
-__glXGetArrayType(const __GLXattribute * const state,
- GLenum key, unsigned index, GLintptr * dest)
-{
- const struct array_state_vector *arrays = state->array_state;
- const struct array_state *a =
- get_array_entry((struct array_state_vector *) arrays,
- key, index);
-
- if (a != NULL) {
- *dest = (GLintptr) a->data_type;
- }
-
- return (a != NULL);
-}
-
-
-/**
- */
-GLboolean
-__glXGetArraySize(const __GLXattribute * const state,
- GLenum key, unsigned index, GLintptr * dest)
-{
- const struct array_state_vector *arrays = state->array_state;
- const struct array_state *a =
- get_array_entry((struct array_state_vector *) arrays,
- key, index);
-
- if (a != NULL) {
- *dest = (GLintptr) a->count;
- }
-
- return (a != NULL);
-}
-
-
-/**
- */
-GLboolean
-__glXGetArrayStride(const __GLXattribute * const state,
- GLenum key, unsigned index, GLintptr * dest)
-{
- const struct array_state_vector *arrays = state->array_state;
- const struct array_state *a =
- get_array_entry((struct array_state_vector *) arrays,
- key, index);
-
- if (a != NULL) {
- *dest = (GLintptr) a->user_stride;
- }
-
- return (a != NULL);
-}
-
-
-/**
- */
-GLboolean
-__glXGetArrayPointer(const __GLXattribute * const state,
- GLenum key, unsigned index, void **dest)
-{
- const struct array_state_vector *arrays = state->array_state;
- const struct array_state *a =
- get_array_entry((struct array_state_vector *) arrays,
- key, index);
-
-
- if (a != NULL) {
- *dest = (void *) (a->data);
- }
-
- return (a != NULL);
-}
-
-
-/**
- */
-GLboolean
-__glXGetArrayNormalized(const __GLXattribute * const state,
- GLenum key, unsigned index, GLintptr * dest)
-{
- const struct array_state_vector *arrays = state->array_state;
- const struct array_state *a =
- get_array_entry((struct array_state_vector *) arrays,
- key, index);
-
-
- if (a != NULL) {
- *dest = (GLintptr) a->normalized;
- }
-
- return (a != NULL);
-}
-
-
-/**
- */
-GLuint
-__glXGetActiveTextureUnit(const __GLXattribute * const state)
-{
- return state->array_state->active_texture_unit;
-}
-
-
-void
-__glXPushArrayState(__GLXattribute * state)
-{
- struct array_state_vector *arrays = state->array_state;
- struct array_stack_state *stack =
- &arrays->stack[(arrays->stack_index * arrays->num_arrays)];
- unsigned i;
-
- /* XXX are we pushing _all_ the necessary fields? */
- for (i = 0; i < arrays->num_arrays; i++) {
- stack[i].data = arrays->arrays[i].data;
- stack[i].data_type = arrays->arrays[i].data_type;
- stack[i].user_stride = arrays->arrays[i].user_stride;
- stack[i].count = arrays->arrays[i].count;
- stack[i].key = arrays->arrays[i].key;
- stack[i].index = arrays->arrays[i].index;
- stack[i].enabled = arrays->arrays[i].enabled;
- }
-
- arrays->active_texture_unit_stack[arrays->stack_index] =
- arrays->active_texture_unit;
-
- arrays->stack_index++;
-}
-
-
-void
-__glXPopArrayState(__GLXattribute * state)
-{
- struct array_state_vector *arrays = state->array_state;
- struct array_stack_state *stack;
- unsigned i;
-
-
- arrays->stack_index--;
- stack = &arrays->stack[(arrays->stack_index * arrays->num_arrays)];
-
- for (i = 0; i < arrays->num_arrays; i++) {
- switch (stack[i].key) {
- case GL_NORMAL_ARRAY:
- __indirect_glNormalPointer(stack[i].data_type,
- stack[i].user_stride, stack[i].data);
- break;
- case GL_COLOR_ARRAY:
- __indirect_glColorPointer(stack[i].count,
- stack[i].data_type,
- stack[i].user_stride, stack[i].data);
- break;
- case GL_INDEX_ARRAY:
- __indirect_glIndexPointer(stack[i].data_type,
- stack[i].user_stride, stack[i].data);
- break;
- case GL_EDGE_FLAG_ARRAY:
- __indirect_glEdgeFlagPointer(stack[i].user_stride, stack[i].data);
- break;
- case GL_TEXTURE_COORD_ARRAY:
- arrays->active_texture_unit = stack[i].index;
- __indirect_glTexCoordPointer(stack[i].count,
- stack[i].data_type,
- stack[i].user_stride, stack[i].data);
- break;
- case GL_SECONDARY_COLOR_ARRAY:
- __indirect_glSecondaryColorPointerEXT(stack[i].count,
- stack[i].data_type,
- stack[i].user_stride,
- stack[i].data);
- break;
- case GL_FOG_COORDINATE_ARRAY:
- __indirect_glFogCoordPointerEXT(stack[i].data_type,
- stack[i].user_stride, stack[i].data);
- break;
-
- }
-
- __glXSetArrayEnable(state, stack[i].key, stack[i].index,
- stack[i].enabled);
- }
-
- arrays->active_texture_unit =
- arrays->active_texture_unit_stack[arrays->stack_index];
-}
diff --git a/src/glx/x11/indirect_vertex_array.h b/src/glx/x11/indirect_vertex_array.h
deleted file mode 100644
index 37380320edd..00000000000
--- a/src/glx/x11/indirect_vertex_array.h
+++ /dev/null
@@ -1,64 +0,0 @@
-/*
- * (C) Copyright IBM Corporation 2004, 2005
- * 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"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sub license,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice (including the next
- * paragraph) shall be included in all copies or substantial portions of the
- * Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL
- * IBM,
- * AND/OR THEIR SUPPLIERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
- * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
- * OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- */
-
-#ifndef INDIRECT_VERTEX_ARRAY_H
-#define INDIRECT_VERTEX_ARRAY_H
-
-extern const GLuint __glXTypeSize_table[16];
-
-#define __glXTypeSize(e) ((((e) & ~0x0f) != 0x1400) \
- ? 0 : __glXTypeSize_table[ (e) & 0x0f ])
-
-extern void __glXArrayDisableAll(__GLXattribute * state);
-
-extern GLboolean __glXSetArrayEnable(__GLXattribute * state,
- GLenum key, unsigned index,
- GLboolean enable);
-
-extern GLboolean __glXGetArrayEnable(const __GLXattribute * const state,
- GLenum key, unsigned index,
- GLintptr * dest);
-extern GLboolean __glXGetArraySize(const __GLXattribute * const state,
- GLenum key, unsigned index,
- GLintptr * dest);
-extern GLboolean __glXGetArrayType(const __GLXattribute * const state,
- GLenum key, unsigned index,
- GLintptr * dest);
-extern GLboolean __glXGetArrayStride(const __GLXattribute * const state,
- GLenum key, unsigned index,
- GLintptr * dest);
-extern GLboolean __glXGetArrayPointer(const __GLXattribute * const state,
- GLenum key, unsigned index,
- void **dest);
-extern GLboolean __glXGetArrayNormalized(const __GLXattribute * const state,
- GLenum key, unsigned index,
- GLintptr * dest);
-
-extern void __glXPushArrayState(__GLXattribute * state);
-extern void __glXPopArrayState(__GLXattribute * state);
-
-extern GLuint __glXGetActiveTextureUnit(const __GLXattribute * const state);
-
-#endif /* INDIRECT_VERTEX_ARRAY_H */
diff --git a/src/glx/x11/indirect_vertex_array_priv.h b/src/glx/x11/indirect_vertex_array_priv.h
deleted file mode 100644
index 56dac37c783..00000000000
--- a/src/glx/x11/indirect_vertex_array_priv.h
+++ /dev/null
@@ -1,311 +0,0 @@
-/*
- * (C) Copyright IBM Corporation 2004, 2005
- * 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"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sub license,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice (including the next
- * paragraph) shall be included in all copies or substantial portions of the
- * Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL
- * IBM,
- * AND/OR THEIR SUPPLIERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
- * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
- * OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- */
-
-#ifndef _INDIRECT_VA_PRIVATE_
-#define _INDIRECT_VA_PRIVATE_
-
-/**
- * \file indirect_va_private.h
- *
- * \author Ian Romanick <[email protected]>
- */
-
-#include <inttypes.h>
-
-#include "glxclient.h"
-#include "indirect.h"
-#include <GL/glxproto.h>
-
-
-/**
- * State descriptor for a single array of vertex data.
- */
-struct array_state
-{
- /**
- * Pointer to the application supplied data.
- */
- const void *data;
-
- /**
- * Enum representing the type of the application supplied data.
- */
- GLenum data_type;
-
- /**
- * Stride value supplied by the application. This value is not used
- * internally. It is only kept so that it can be queried by the
- * application using glGet*v.
- */
- GLsizei user_stride;
-
- /**
- * Calculated size, in bytes, of a single element in the array. This
- * is calculated based on \c count and the size of the data type
- * represented by \c data_type.
- */
- GLsizei element_size;
-
- /**
- * Actual byte-stride from one element to the next. This value will
- * be equal to either \c user_stride or \c element_stride.
- */
- GLsizei true_stride;
-
- /**
- * Number of data values in each element.
- */
- GLint count;
-
- /**
- * "Normalized" data is on the range [0,1] (unsigned) or [-1,1] (signed).
- * This is used for mapping integral types to floating point types.
- */
- GLboolean normalized;
-
- /**
- * Pre-calculated GLX protocol command header.
- */
- uint32_t header[2];
-
- /**
- * Size of the header data. For simple data, like glColorPointerfv,
- * this is 4. For complex data that requires either a count (e.g.,
- * glWeightfvARB), an index (e.g., glVertexAttrib1fvARB), or a
- * selector enum (e.g., glMultiTexCoord2fv) this is 8.
- */
- unsigned header_size;
-
- /**
- * Set to \c GL_TRUE if this array is enabled. Otherwise, it is set
- * to \c GL_FALSE.
- */
- GLboolean enabled;
-
- /**
- * For multi-arrayed data (e.g., texture coordinates, generic vertex
- * program attributes, etc.), this specifies which array this is.
- */
- unsigned index;
-
- /**
- * Per-array-type key. For most arrays, this will be the GL enum for
- * that array (e.g., GL_VERTEX_ARRAY for vertex data, GL_NORMAL_ARRAY
- * for normal data, GL_TEXTURE_COORD_ARRAY for texture coordinate data,
- * etc.).
- */
- GLenum key;
-
- /**
- * If this array can be used with the "classic" \c glDrawArrays protocol,
- * this is set to \c GL_TRUE. Otherwise, it is set to \c GL_FALSE.
- */
- GLboolean old_DrawArrays_possible;
-};
-
-
-/**
- * Array state that is pushed / poped by \c glPushClientAttrib and
- * \c glPopClientAttrib.
- */
-struct array_stack_state
-{
- /**
- * Pointer to the application supplied data.
- */
- const void *data;
-
- /**
- * Enum representing the type of the application supplied data.
- */
- GLenum data_type;
-
- /**
- * Stride value supplied by the application. This value is not used
- * internally. It is only kept so that it can be queried by the
- * application using glGet*v.
- */
- GLsizei user_stride;
-
- /**
- * Number of data values in each element.
- */
- GLint count;
-
- /**
- * Per-array-type key. For most arrays, this will be the GL enum for
- * that array (e.g., GL_VERTEX_ARRAY for vertex data, GL_NORMAL_ARRAY
- * for normal data, GL_TEXTURE_COORD_ARRAY for texture coordinate data,
- * etc.).
- */
- GLenum key;
-
- /**
- * For multi-arrayed data (e.g., texture coordinates, generic vertex
- * program attributes, etc.), this specifies which array this is.
- */
- unsigned index;
-
- /**
- * Set to \c GL_TRUE if this array is enabled. Otherwise, it is set
- * to \c GL_FALSE.
- */
- GLboolean enabled;
-};
-
-
-/**
- * Collection of all the vertex array state.
- */
-struct array_state_vector
-{
- /**
- * Number of arrays tracked by \c ::arrays.
- */
- size_t num_arrays;
-
- /**
- * Array of vertex array state. This array contains all of the valid
- * vertex arrays. If a vertex array isn't in this array, then it isn't
- * valid. For example, if an implementation does not support
- * EXT_fog_coord, there won't be a GL_FOG_COORD_ARRAY entry in this
- * array.
- */
- struct array_state *arrays;
-
- /**
- * Number of currently enabled client-side arrays. The value of this
- * field is only valid if \c array_info_cache_valid is true.
- */
- size_t enabled_client_array_count;
-
- /**
- * \name ARRAY_INFO cache.
- *
- * These fields track the state of the ARRAY_INFO cache. The
- * \c array_info_cache_size is the size of the actual data stored in
- * \c array_info_cache. \c array_info_cache_buffer_size is the size of
- * the buffer. This will always be greater than or equal to
- * \c array_info_cache_size.
- *
- * \note
- * There are some bytes of extra data before \c array_info_cache that is
- * used to hold the header for RenderLarge commands. This is
- * \b not included in \c array_info_cache_size or
- * \c array_info_cache_buffer_size. \c array_info_cache_base stores a
- * pointer to the true start of the buffer (i.e., what malloc returned).
- */
- /*@{ */
- size_t array_info_cache_size;
- size_t array_info_cache_buffer_size;
- void *array_info_cache;
- void *array_info_cache_base;
- /*@} */
-
-
- /**
- * Is the cache of ARRAY_INFO data valid? The cache can become invalid
- * when one of several state changes occur. Among these chages are
- * modifying the array settings for an enabled array and enabling /
- * disabling an array.
- */
- GLboolean array_info_cache_valid;
-
- /**
- * Is it possible to use the GL 1.1 / EXT_vertex_arrays protocol? Use
- * of this protocol is disabled with really old servers (i.e., servers
- * that don't support GL 1.1 or EXT_vertex_arrays) or when an environment
- * variable is set.
- *
- * \todo
- * GL 1.1 and EXT_vertex_arrays use identical protocol, but have different
- * opcodes for \c glDrawArrays. For servers that advertise one or the
- * other, there should be a way to select which opcode to use.
- */
- GLboolean old_DrawArrays_possible;
-
- /**
- * Is it possible to use the new GL X.X / ARB_vertex_buffer_object
- * protocol?
- *
- * \todo
- * This protocol has not yet been defined by the ARB, but is currently a
- * work in progress. This field is a place-holder.
- */
- GLboolean new_DrawArrays_possible;
-
- /**
- * Active texture unit set by \c glClientActiveTexture.
- *
- * \sa __glXGetActiveTextureUnit
- */
- unsigned active_texture_unit;
-
- /**
- * Number of supported texture units. Even if ARB_multitexture /
- * GL 1.3 are not supported, this will be at least 1. When multitexture
- * is supported, this will be the value queried by calling
- * \c glGetIntegerv with \c GL_MAX_TEXTURE_UNITS.
- *
- * \todo
- * Investigate if this should be the value of \c GL_MAX_TEXTURE_COORDS
- * instead (if GL 2.0 / ARB_fragment_shader / ARB_fragment_program /
- * NV_fragment_program are supported).
- */
- unsigned num_texture_units;
-
- /**
- * Number of generic vertex program attribs. If GL_ARB_vertex_program
- * is not supported, this will be zero. Otherwise it will be the value
- * queries by calling \c glGetProgramiv with \c GL_VERTEX_PROGRAM_ARB
- * and \c GL_MAX_PROGRAM_ATTRIBS_ARB.
- */
- unsigned num_vertex_program_attribs;
-
- /**
- * \n Methods for implementing various GL functions.
- *
- * These method pointers are only valid \c array_info_cache_valid is set.
- * When each function starts, it much check \c array_info_cache_valid.
- * If it is not set, it must call \c fill_array_info_cache and call
- * the new method.
- *
- * \sa fill_array_info_cache
- *
- * \todo
- * Write code to plug these functions directly into the dispatch table.
- */
- /*@{ */
- void (*DrawArrays) (GLenum, GLint, GLsizei);
- void (*DrawElements) (GLenum mode, GLsizei count, GLenum type,
- const GLvoid * indices);
- /*@} */
-
- struct array_stack_state *stack;
- unsigned active_texture_unit_stack[__GL_CLIENT_ATTRIB_STACK_DEPTH];
- unsigned stack_index;
-};
-
-#endif /* _INDIRECT_VA_PRIVATE_ */
diff --git a/src/glx/x11/indirect_vertex_program.c b/src/glx/x11/indirect_vertex_program.c
deleted file mode 100644
index 3313ac008a5..00000000000
--- a/src/glx/x11/indirect_vertex_program.c
+++ /dev/null
@@ -1,293 +0,0 @@
-/*
- * (C) Copyright IBM Corporation 2005
- * 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"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sub license,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice (including the next
- * paragraph) shall be included in all copies or substantial portions of the
- * Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL
- * IBM,
- * AND/OR THEIR SUPPLIERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
- * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
- * OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- */
-
-#include <inttypes.h>
-#include <GL/gl.h>
-#include "indirect.h"
-#include "glxclient.h"
-#include "indirect_vertex_array.h"
-#include <GL/glxproto.h>
-
-#if !defined __GNUC__ || __GNUC__ < 3
-# define __builtin_expect(x, y) x
-#endif
-
-static void
-do_vertex_attrib_enable(GLuint index, GLboolean val)
-{
- __GLXcontext *gc = __glXGetCurrentContext();
- __GLXattribute *state = (__GLXattribute *) (gc->client_state_private);
-
- if (!__glXSetArrayEnable(state, GL_VERTEX_ATTRIB_ARRAY_POINTER_ARB,
- index, val)) {
- __glXSetError(gc, GL_INVALID_ENUM);
- }
-}
-
-
-void
-__indirect_glEnableVertexAttribArrayARB(GLuint index)
-{
- do_vertex_attrib_enable(index, GL_TRUE);
-}
-
-
-void
-__indirect_glDisableVertexAttribArrayARB(GLuint index)
-{
- do_vertex_attrib_enable(index, GL_FALSE);
-}
-
-
-static void
-get_parameter(unsigned opcode, unsigned size, GLenum target, GLuint index,
- void *params)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- Display *const dpy = gc->currentDpy;
- const GLuint cmdlen = 12;
-
- if (__builtin_expect(dpy != NULL, 1)) {
- GLubyte const *pc = __glXSetupVendorRequest(gc,
- X_GLXVendorPrivateWithReply,
- opcode, cmdlen);
-
- *((GLenum *) (pc + 0)) = target;
- *((GLuint *) (pc + 4)) = index;
- *((GLuint *) (pc + 8)) = 0;
-
- (void) __glXReadReply(dpy, size, params, GL_FALSE);
- UnlockDisplay(dpy);
- SyncHandle();
- }
- return;
-}
-
-
-void
-__indirect_glGetProgramEnvParameterfvARB(GLenum target, GLuint index,
- GLfloat * params)
-{
- get_parameter(1296, 4, target, index, params);
-}
-
-
-void
-__indirect_glGetProgramEnvParameterdvARB(GLenum target, GLuint index,
- GLdouble * params)
-{
- get_parameter(1297, 8, target, index, params);
-}
-
-
-void
-__indirect_glGetProgramLocalParameterfvARB(GLenum target, GLuint index,
- GLfloat * params)
-{
- get_parameter(1305, 4, target, index, params);
-}
-
-
-void
-__indirect_glGetProgramLocalParameterdvARB(GLenum target, GLuint index,
- GLdouble * params)
-{
- get_parameter(1306, 8, target, index, params);
-}
-
-
-void
-__indirect_glGetVertexAttribPointervNV(GLuint index, GLenum pname,
- GLvoid ** pointer)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- __GLXattribute *state = (__GLXattribute *) (gc->client_state_private);
-
- if (pname != GL_VERTEX_ATTRIB_ARRAY_POINTER_ARB) {
- __glXSetError(gc, GL_INVALID_ENUM);
- }
-
- if (!__glXGetArrayPointer(state, GL_VERTEX_ATTRIB_ARRAY_POINTER_ARB,
- index, pointer)) {
- __glXSetError(gc, GL_INVALID_VALUE);
- }
-}
-
-
-/**
- * Get the selected attribute from the vertex array state vector.
- *
- * \returns
- * On success \c GL_TRUE is returned. Otherwise, \c GL_FALSE is returned.
- */
-static GLboolean
-get_attrib_array_data(__GLXattribute * state, GLuint index, GLenum cap,
- GLintptr * data)
-{
- GLboolean retval = GL_FALSE;
- const GLenum attrib = GL_VERTEX_ATTRIB_ARRAY_POINTER_ARB;
-
- switch (cap) {
- case GL_VERTEX_ATTRIB_ARRAY_ENABLED_ARB:
- retval = __glXGetArrayEnable(state, attrib, index, data);
- break;
-
- case GL_VERTEX_ATTRIB_ARRAY_SIZE_ARB:
- retval = __glXGetArraySize(state, attrib, index, data);
- break;
-
- case GL_VERTEX_ATTRIB_ARRAY_STRIDE_ARB:
- retval = __glXGetArrayStride(state, attrib, index, data);
- break;
-
- case GL_VERTEX_ATTRIB_ARRAY_TYPE_ARB:
- retval = __glXGetArrayType(state, attrib, index, data);
- break;
-
- case GL_VERTEX_ATTRIB_ARRAY_NORMALIZED_ARB:
- retval = __glXGetArrayNormalized(state, attrib, index, data);
- break;
- }
-
-
- return retval;
-}
-
-
-static void
-get_vertex_attrib(__GLXcontext * gc, unsigned vop,
- GLuint index, GLenum pname, xReply * reply)
-{
- Display *const dpy = gc->currentDpy;
- GLubyte *const pc = __glXSetupVendorRequest(gc,
- X_GLXVendorPrivateWithReply,
- vop, 8);
-
- *((uint32_t *) (pc + 0)) = index;
- *((uint32_t *) (pc + 4)) = pname;
-
- (void) _XReply(dpy, reply, 0, False);
-}
-
-
-void
-__indirect_glGetVertexAttribivARB(GLuint index, GLenum pname, GLint * params)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- Display *const dpy = gc->currentDpy;
- __GLXattribute *state = (__GLXattribute *) (gc->client_state_private);
- xGLXSingleReply reply;
-
-
- get_vertex_attrib(gc, 1303, index, pname, (xReply *) & reply);
-
- if (reply.size != 0) {
- GLintptr data;
-
-
- if (get_attrib_array_data(state, index, pname, &data)) {
- *params = (GLint) data;
- }
- else {
- if (reply.size == 1) {
- *params = (GLint) reply.pad3;
- }
- else {
- _XRead(dpy, (void *) params, 4 * reply.size);
- }
- }
- }
-
- UnlockDisplay(dpy);
- SyncHandle();
-}
-
-
-void
-__indirect_glGetVertexAttribfvARB(GLuint index, GLenum pname,
- GLfloat * params)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- Display *const dpy = gc->currentDpy;
- __GLXattribute *state = (__GLXattribute *) (gc->client_state_private);
- xGLXSingleReply reply;
-
-
- get_vertex_attrib(gc, 1302, index, pname, (xReply *) & reply);
-
- if (reply.size != 0) {
- GLintptr data;
-
-
- if (get_attrib_array_data(state, index, pname, &data)) {
- *params = (GLfloat) data;
- }
- else {
- if (reply.size == 1) {
- (void) memcpy(params, &reply.pad3, sizeof(GLfloat));
- }
- else {
- _XRead(dpy, (void *) params, 4 * reply.size);
- }
- }
- }
-
- UnlockDisplay(dpy);
- SyncHandle();
-}
-
-
-void
-__indirect_glGetVertexAttribdvARB(GLuint index, GLenum pname,
- GLdouble * params)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- Display *const dpy = gc->currentDpy;
- __GLXattribute *state = (__GLXattribute *) (gc->client_state_private);
- xGLXSingleReply reply;
-
-
- get_vertex_attrib(gc, 1301, index, pname, (xReply *) & reply);
-
- if (reply.size != 0) {
- GLintptr data;
-
-
- if (get_attrib_array_data(state, index, pname, &data)) {
- *params = (GLdouble) data;
- }
- else {
- if (reply.size == 1) {
- (void) memcpy(params, &reply.pad3, sizeof(GLdouble));
- }
- else {
- _XRead(dpy, (void *) params, 8 * reply.size);
- }
- }
- }
-
- UnlockDisplay(dpy);
- SyncHandle();
-}
diff --git a/src/glx/x11/indirect_window_pos.c b/src/glx/x11/indirect_window_pos.c
deleted file mode 100644
index e97be3506d1..00000000000
--- a/src/glx/x11/indirect_window_pos.c
+++ /dev/null
@@ -1,112 +0,0 @@
-/*
- * Copyright 1998-1999 Precision Insight, Inc., Cedar Park, Texas.
- * (C) Copyright IBM Corporation 2004
- * 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"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sub license,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice (including the next
- * paragraph) shall be included in all copies or substantial portions of the
- * Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL
- * PRECISION INSIGHT, IBM,
- * AND/OR THEIR SUPPLIERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
- * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
- * OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- */
-
-#include <GL/gl.h>
-#include "indirect.h"
-
-void
-__indirect_glWindowPos2dMESA(GLdouble x, GLdouble y)
-{
- __indirect_glWindowPos3fMESA(x, y, 0.0);
-}
-
-void
-__indirect_glWindowPos2iMESA(GLint x, GLint y)
-{
- __indirect_glWindowPos3fMESA(x, y, 0.0);
-}
-
-void
-__indirect_glWindowPos2fMESA(GLfloat x, GLfloat y)
-{
- __indirect_glWindowPos3fMESA(x, y, 0.0);
-}
-
-void
-__indirect_glWindowPos2sMESA(GLshort x, GLshort y)
-{
- __indirect_glWindowPos3fMESA(x, y, 0.0);
-}
-
-void
-__indirect_glWindowPos2dvMESA(const GLdouble * p)
-{
- __indirect_glWindowPos3fMESA(p[0], p[1], 0.0);
-}
-
-void
-__indirect_glWindowPos2fvMESA(const GLfloat * p)
-{
- __indirect_glWindowPos3fMESA(p[0], p[1], 0.0);
-}
-
-void
-__indirect_glWindowPos2ivMESA(const GLint * p)
-{
- __indirect_glWindowPos3fMESA(p[0], p[1], 0.0);
-}
-
-void
-__indirect_glWindowPos2svMESA(const GLshort * p)
-{
- __indirect_glWindowPos3fMESA(p[0], p[1], 0.0);
-}
-
-void
-__indirect_glWindowPos3dMESA(GLdouble x, GLdouble y, GLdouble z)
-{
- __indirect_glWindowPos3fMESA(x, y, z);
-}
-
-void
-__indirect_glWindowPos3iMESA(GLint x, GLint y, GLint z)
-{
- __indirect_glWindowPos3fMESA(x, y, z);
-}
-
-void
-__indirect_glWindowPos3sMESA(GLshort x, GLshort y, GLshort z)
-{
- __indirect_glWindowPos3fMESA(x, y, z);
-}
-
-void
-__indirect_glWindowPos3dvMESA(const GLdouble * p)
-{
- __indirect_glWindowPos3fMESA(p[0], p[1], p[2]);
-}
-
-void
-__indirect_glWindowPos3ivMESA(const GLint * p)
-{
- __indirect_glWindowPos3fMESA(p[0], p[1], p[2]);
-}
-
-void
-__indirect_glWindowPos3svMESA(const GLshort * p)
-{
- __indirect_glWindowPos3fMESA(p[0], p[1], p[2]);
-}
diff --git a/src/glx/x11/packrender.h b/src/glx/x11/packrender.h
deleted file mode 100644
index 30f6d44bbd2..00000000000
--- a/src/glx/x11/packrender.h
+++ /dev/null
@@ -1,243 +0,0 @@
-#ifndef __GLX_packrender_h__
-#define __GLX_packrender_h__
-
-/*
- * SGI FREE SOFTWARE LICENSE B (Version 2.0, Sept. 18, 2008)
- * Copyright (C) 1991-2000 Silicon Graphics, Inc. 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"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice including the dates of first publication and
- * either this permission notice or a reference to
- * http://oss.sgi.com/projects/FreeB/
- * shall be included in all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * SILICON GRAPHICS, INC. BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
- * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
- * OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- *
- * Except as contained in this notice, the name of Silicon Graphics, Inc.
- * shall not be used in advertising or otherwise to promote the sale, use or
- * other dealings in this Software without prior written authorization from
- * Silicon Graphics, Inc.
- */
-
-#include "glxclient.h"
-
-/*
-** The macros in this header convert the client machine's native data types to
-** wire protocol data types. The header is part of the porting layer of the
-** client library, and it is intended that hardware vendors will rewrite this
-** header to suit their own machines.
-*/
-
-/*
-** Pad a count of bytes to the nearest multiple of 4. The X protocol
-** transfers data in 4 byte quantities, so this macro is used to
-** insure the right amount of data being sent.
-*/
-#define __GLX_PAD(a) (((a)+3) & ~3)
-
-/*
-** Network size parameters
-*/
-#define sz_double 8
-
-/* Setup for all commands */
-#define __GLX_DECLARE_VARIABLES() \
- __GLXcontext *gc; \
- GLubyte *pc, *pixelHeaderPC; \
- GLuint compsize, cmdlen
-
-#define __GLX_LOAD_VARIABLES() \
- gc = __glXGetCurrentContext(); \
- pc = gc->pc; \
- /* Muffle compilers */ \
- cmdlen = 0; (void)cmdlen; \
- compsize = 0; (void)compsize; \
- pixelHeaderPC = 0; (void)pixelHeaderPC
-
-/*
-** Variable sized command support macro. This macro is used by calls
-** that are potentially larger than __GLX_SMALL_RENDER_CMD_SIZE.
-** Because of their size, they may not automatically fit in the buffer.
-** If the buffer can't hold the command then it is flushed so that
-** the command will fit in the next buffer.
-*/
-#define __GLX_BEGIN_VARIABLE(opcode,size) \
- if (pc + (size) > gc->bufEnd) { \
- pc = __glXFlushRenderBuffer(gc, pc); \
- } \
- __GLX_PUT_SHORT(0,size); \
- __GLX_PUT_SHORT(2,opcode)
-
-#define __GLX_BEGIN_VARIABLE_LARGE(opcode,size) \
- pc = __glXFlushRenderBuffer(gc, pc); \
- __GLX_PUT_LONG(0,size); \
- __GLX_PUT_LONG(4,opcode)
-
-#define __GLX_BEGIN_VARIABLE_WITH_PIXEL(opcode,size) \
- if (pc + (size) > gc->bufEnd) { \
- pc = __glXFlushRenderBuffer(gc, pc); \
- } \
- __GLX_PUT_SHORT(0,size); \
- __GLX_PUT_SHORT(2,opcode); \
- pc += __GLX_RENDER_HDR_SIZE; \
- pixelHeaderPC = pc; \
- pc += __GLX_PIXEL_HDR_SIZE
-
-#define __GLX_BEGIN_VARIABLE_LARGE_WITH_PIXEL(opcode,size) \
- pc = __glXFlushRenderBuffer(gc, pc); \
- __GLX_PUT_LONG(0,size); \
- __GLX_PUT_LONG(4,opcode); \
- pc += __GLX_RENDER_LARGE_HDR_SIZE; \
- pixelHeaderPC = pc; \
- pc += __GLX_PIXEL_HDR_SIZE
-
-#define __GLX_BEGIN_VARIABLE_WITH_PIXEL_3D(opcode,size) \
- if (pc + (size) > gc->bufEnd) { \
- pc = __glXFlushRenderBuffer(gc, pc); \
- } \
- __GLX_PUT_SHORT(0,size); \
- __GLX_PUT_SHORT(2,opcode); \
- pc += __GLX_RENDER_HDR_SIZE; \
- pixelHeaderPC = pc; \
- pc += __GLX_PIXEL_3D_HDR_SIZE
-
-#define __GLX_BEGIN_VARIABLE_LARGE_WITH_PIXEL_3D(opcode,size) \
- pc = __glXFlushRenderBuffer(gc, pc); \
- __GLX_PUT_LONG(0,size); \
- __GLX_PUT_LONG(4,opcode); \
- pc += __GLX_RENDER_LARGE_HDR_SIZE; \
- pixelHeaderPC = pc; \
- pc += __GLX_PIXEL_3D_HDR_SIZE
-
-/*
-** Fixed size command support macro. This macro is used by calls that
-** are never larger than __GLX_SMALL_RENDER_CMD_SIZE. Because they
-** always fit in the buffer, and because the buffer promises to
-** maintain enough room for them, we don't need to check for space
-** before doing the storage work.
-*/
-#define __GLX_BEGIN(opcode,size) \
- __GLX_PUT_SHORT(0,size); \
- __GLX_PUT_SHORT(2,opcode)
-
-/*
-** Finish a rendering command by advancing the pc. If the pc is now past
-** the limit pointer then there is no longer room for a
-** __GLX_SMALL_RENDER_CMD_SIZE sized command, which will break the
-** assumptions present in the __GLX_BEGIN macro. In this case the
-** rendering buffer is flushed out into the X protocol stream (which may
-** or may not do I/O).
-*/
-#define __GLX_END(size) \
- pc += size; \
- if (pc > gc->limit) { \
- (void) __glXFlushRenderBuffer(gc, pc); \
- } else { \
- gc->pc = pc; \
- }
-
-/* Array copy macros */
-#define __GLX_MEM_COPY(dest,src,bytes) \
- if (src && dest) \
- memcpy(dest, src, bytes)
-
-/* Single item copy macros */
-#define __GLX_PUT_CHAR(offset,a) \
- *((INT8 *) (pc + offset)) = a
-
-#ifndef _CRAY
-#define __GLX_PUT_SHORT(offset,a) \
- *((INT16 *) (pc + offset)) = a
-
-#define __GLX_PUT_LONG(offset,a) \
- *((INT32 *) (pc + offset)) = a
-
-#define __GLX_PUT_FLOAT(offset,a) \
- *((FLOAT32 *) (pc + offset)) = a
-
-#else
-#define __GLX_PUT_SHORT(offset,a) \
- { GLubyte *cp = (pc+offset); \
- int shift = (64-16) - ((int)(cp) >> (64-6)); \
- *(int *)cp = (*(int *)cp & ~(0xffff << shift)) | ((a & 0xffff) << shift); }
-
-#define __GLX_PUT_LONG(offset,a) \
- { GLubyte *cp = (pc+offset); \
- int shift = (64-32) - ((int)(cp) >> (64-6)); \
- *(int *)cp = (*(int *)cp & ~(0xffffffff << shift)) | ((a & 0xffffffff) << shift); }
-
-#define __GLX_PUT_FLOAT(offset,a) \
- gl_put_float((pc + offset),a)
-
-#define __GLX_PUT_DOUBLE(offset,a) \
- gl_put_double(pc + offset, a)
-
-extern void gl_put_float( /*GLubyte *, struct cray_single */ );
-extern void gl_put_double( /*GLubyte *, struct cray_double */ );
-#endif
-
-#ifndef _CRAY
-
-#ifdef __GLX_ALIGN64
-/*
-** This can certainly be done better for a particular machine
-** architecture!
-*/
-#define __GLX_PUT_DOUBLE(offset,a) \
- __GLX_MEM_COPY(pc + offset, &a, 8)
-#else
-#define __GLX_PUT_DOUBLE(offset,a) \
- *((FLOAT64 *) (pc + offset)) = a
-#endif
-
-#endif
-
-#define __GLX_PUT_CHAR_ARRAY(offset,a,alen) \
- __GLX_MEM_COPY(pc + offset, a, alen * __GLX_SIZE_INT8)
-
-#ifndef _CRAY
-#define __GLX_PUT_SHORT_ARRAY(offset,a,alen) \
- __GLX_MEM_COPY(pc + offset, a, alen * __GLX_SIZE_INT16)
-
-#define __GLX_PUT_LONG_ARRAY(offset,a,alen) \
- __GLX_MEM_COPY(pc + offset, a, alen * __GLX_SIZE_INT32)
-
-#define __GLX_PUT_FLOAT_ARRAY(offset,a,alen) \
- __GLX_MEM_COPY(pc + offset, a, alen * __GLX_SIZE_FLOAT32)
-
-#define __GLX_PUT_DOUBLE_ARRAY(offset,a,alen) \
- __GLX_MEM_COPY(pc + offset, a, alen * __GLX_SIZE_FLOAT64)
-
-#else
-#define __GLX_PUT_SHORT_ARRAY(offset,a,alen) \
- gl_put_short_array((GLubyte *)(pc + offset), a, alen * __GLX_SIZE_INT16)
-
-#define __GLX_PUT_LONG_ARRAY(offset,a,alen) \
- gl_put_long_array((GLubyte *)(pc + offset), (long *)a, alen * __GLX_SIZE_INT32)
-
-#define __GLX_PUT_FLOAT_ARRAY(offset,a,alen) \
- gl_put_float_array((GLubyte *)(pc + offset), (float *)a, alen * __GLX_SIZE_FLOAT32)
-
-#define __GLX_PUT_DOUBLE_ARRAY(offset,a,alen) \
- gl_put_double_array((GLubyte *)(pc + offset), (double *)a, alen * __GLX_SIZE_FLOAT64)
-
-extern gl_put_short_array(GLubyte *, short *, int);
-extern gl_put_long_array(GLubyte *, long *, int);
-extern gl_put_float_array(GLubyte *, float *, int);
-extern gl_put_double_array(GLubyte *, double *, int);
-
-#endif /* _CRAY */
-
-#endif /* !__GLX_packrender_h__ */
diff --git a/src/glx/x11/packsingle.h b/src/glx/x11/packsingle.h
deleted file mode 100644
index f33a873f3a7..00000000000
--- a/src/glx/x11/packsingle.h
+++ /dev/null
@@ -1,213 +0,0 @@
-#ifndef __GLX_packsingle_h__
-#define __GLX_packsingle_h__
-
-/*
- * SGI FREE SOFTWARE LICENSE B (Version 2.0, Sept. 18, 2008)
- * Copyright (C) 1991-2000 Silicon Graphics, Inc. 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"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice including the dates of first publication and
- * either this permission notice or a reference to
- * http://oss.sgi.com/projects/FreeB/
- * shall be included in all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * SILICON GRAPHICS, INC. BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
- * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
- * OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- *
- * Except as contained in this notice, the name of Silicon Graphics, Inc.
- * shall not be used in advertising or otherwise to promote the sale, use or
- * other dealings in this Software without prior written authorization from
- * Silicon Graphics, Inc.
- */
-
-#include "packrender.h"
-
-/*
-** The macros in this header convert wire protocol data types to the client
-** machine's native data types. The header is part of the porting layer of
-** the client library, and it is intended that hardware vendors will rewrite
-** this header to suit their own machines.
-*/
-
-/*
-** Dummy define to make the GetReqExtra macro happy. The value is not
-** used, but instead the code in __GLX_SINGLE_BEGIN issues its own store
-** to req->reqType with the proper code (our extension code).
-*/
-#define X_GLXSingle 0
-
-/* Declare common variables used during a single command */
-#define __GLX_SINGLE_DECLARE_VARIABLES() \
- __GLXcontext *gc = __glXGetCurrentContext(); \
- GLubyte *pc, *pixelHeaderPC; \
- GLuint compsize, cmdlen; \
- Display *dpy = gc->currentDpy; \
- xGLXSingleReq *req
-
-#define __GLX_SINGLE_LOAD_VARIABLES() \
- pc = gc->pc; \
- /* Muffle compilers */ \
- pixelHeaderPC = 0; (void)pixelHeaderPC; \
- compsize = 0; (void)compsize; \
- cmdlen = 0; (void)cmdlen
-
-/* Start a single command */
-#define __GLX_SINGLE_BEGIN(opcode,bytes) \
- if (dpy) { \
- (void) __glXFlushRenderBuffer(gc, pc); \
- LockDisplay(dpy); \
- GetReqExtra(GLXSingle,bytes,req); \
- req->reqType = gc->majorOpcode; \
- req->glxCode = opcode; \
- req->contextTag = gc->currentContextTag; \
- pc = ((GLubyte *)(req) + sz_xGLXSingleReq)
-
-/* End a single command */
-#define __GLX_SINGLE_END() \
- UnlockDisplay(dpy); \
- SyncHandle(); \
- }
-
-/* Store data to sending for a single command */
-#define __GLX_SINGLE_PUT_CHAR(offset,a) \
- *((INT8 *) (pc + offset)) = a
-
-#ifndef CRAY
-#define __GLX_SINGLE_PUT_SHORT(offset,a) \
- *((INT16 *) (pc + offset)) = a
-
-#define __GLX_SINGLE_PUT_LONG(offset,a) \
- *((INT32 *) (pc + offset)) = a
-
-#define __GLX_SINGLE_PUT_FLOAT(offset,a) \
- *((FLOAT32 *) (pc + offset)) = a
-
-#else
-#define __GLX_SINGLE_PUT_SHORT(offset,a) \
- { GLubyte *cp = (pc+offset); \
- int shift = (64-16) - ((int)(cp) >> (64-6)); \
- *(int *)cp = (*(int *)cp & ~(0xffff << shift)) | ((a & 0xffff) << shift); }
-
-#define __GLX_SINGLE_PUT_LONG(offset,a) \
- { GLubyte *cp = (pc+offset); \
- int shift = (64-32) - ((int)(cp) >> (64-6)); \
- *(int *)cp = (*(int *)cp & ~(0xffffffff << shift)) | ((a & 0xffffffff) << shift); }
-
-#define __GLX_SINGLE_PUT_FLOAT(offset,a) \
- gl_put_float(pc + offset, a)
-#endif
-
-/* Read support macros */
-#define __GLX_SINGLE_READ_XREPLY() \
- (void) _XReply(dpy, (xReply*) &reply, 0, False)
-
-#define __GLX_SINGLE_GET_RETVAL(a,cast) \
- a = (cast) reply.retval
-
-#define __GLX_SINGLE_GET_SIZE(a) \
- a = (GLint) reply.size
-
-#ifndef _CRAY
-#define __GLX_SINGLE_GET_CHAR(p) \
- *p = *(GLbyte *)&reply.pad3;
-
-#define __GLX_SINGLE_GET_SHORT(p) \
- *p = *(GLshort *)&reply.pad3;
-
-#define __GLX_SINGLE_GET_LONG(p) \
- *p = *(GLint *)&reply.pad3;
-
-#define __GLX_SINGLE_GET_FLOAT(p) \
- *p = *(GLfloat *)&reply.pad3;
-
-#else
-#define __GLX_SINGLE_GET_CHAR(p) \
- *p = reply.pad3 >> 24;
-
-#define __GLX_SINGLE_GET_SHORT(p) \
- {int t = reply.pad3 >> 16; \
- *p = (t & 0x8000) ? (t | ~0xffff) : (t & 0xffff);}
-
-#define __GLX_SINGLE_GET_LONG(p) \
- {int t = reply.pad3; \
- *p = (t & 0x80000000) ? (t | ~0xffffffff) : (t & 0xffffffff);}
-
-#define PAD3OFFSET 16
-#define __GLX_SINGLE_GET_FLOAT(p) \
- *p = gl_ntoh_float((GLubyte *)&reply + PAD3OFFSET);
-
-#define __GLX_SINGLE_GET_DOUBLE(p) \
- *p = gl_ntoh_double((GLubyte *)&reply + PAD3OFFSET);
-
-extern float gl_ntoh_float(GLubyte *);
-extern float gl_ntoh_double(GLubyte *);
-#endif
-
-#ifndef _CRAY
-
-#ifdef __GLX_ALIGN64
-#define __GLX_SINGLE_GET_DOUBLE(p) \
- __GLX_MEM_COPY(p, &reply.pad3, 8)
-#else
-#define __GLX_SINGLE_GET_DOUBLE(p) \
- *p = *(GLdouble *)&reply.pad3
-#endif
-
-#endif
-
-/* Get an array of typed data */
-#define __GLX_SINGLE_GET_VOID_ARRAY(a,alen) \
- { \
- GLint slop = alen*__GLX_SIZE_INT8 & 3; \
- _XRead(dpy,(char *)a,alen*__GLX_SIZE_INT8); \
- if (slop) _XEatData(dpy,4-slop); \
- }
-
-#define __GLX_SINGLE_GET_CHAR_ARRAY(a,alen) \
- { \
- GLint slop = alen*__GLX_SIZE_INT8 & 3; \
- _XRead(dpy,(char *)a,alen*__GLX_SIZE_INT8); \
- if (slop) _XEatData(dpy,4-slop); \
- }
-
-
-#define __GLX_SINGLE_GET_SHORT_ARRAY(a,alen) \
- { \
- GLint slop = (alen*__GLX_SIZE_INT16) & 3; \
- _XRead(dpy,(char *)a,alen*__GLX_SIZE_INT16); \
- if (slop) _XEatData(dpy,4-slop); \
- }
-
-#define __GLX_SINGLE_GET_LONG_ARRAY(a,alen) \
- _XRead(dpy,(char *)a,alen*__GLX_SIZE_INT32);
-
-#ifndef _CRAY
-#define __GLX_SINGLE_GET_FLOAT_ARRAY(a,alen) \
- _XRead(dpy,(char *)a,alen*__GLX_SIZE_FLOAT32);
-
-#define __GLX_SINGLE_GET_DOUBLE_ARRAY(a,alen) \
- _XRead(dpy,(char *)a,alen*__GLX_SIZE_FLOAT64);
-
-#else
-#define __GLX_SINGLE_GET_FLOAT_ARRAY(a,alen) \
- gl_get_float_array(dpy,a,alen);
-
-#define __GLX_SINGLE_GET_DOUBLE_ARRAY(a,alen) \
- gl_get_double_array(dpy, a, alen);
-
-extern void gl_get_float_array(Display * dpy, float *a, int alen);
-extern void gl_get_double_array(Display * dpy, double *a, int alen);
-#endif
-
-#endif /* !__GLX_packsingle_h__ */
diff --git a/src/glx/x11/pixel.c b/src/glx/x11/pixel.c
deleted file mode 100644
index d36ca31e7dd..00000000000
--- a/src/glx/x11/pixel.c
+++ /dev/null
@@ -1,461 +0,0 @@
-/*
- * SGI FREE SOFTWARE LICENSE B (Version 2.0, Sept. 18, 2008)
- * Copyright (C) 1991-2000 Silicon Graphics, Inc. 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"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice including the dates of first publication and
- * either this permission notice or a reference to
- * http://oss.sgi.com/projects/FreeB/
- * shall be included in all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * SILICON GRAPHICS, INC. BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
- * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
- * OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- *
- * Except as contained in this notice, the name of Silicon Graphics, Inc.
- * shall not be used in advertising or otherwise to promote the sale, use or
- * other dealings in this Software without prior written authorization from
- * Silicon Graphics, Inc.
- */
-
-#include "packrender.h"
-
-static const GLubyte MsbToLsbTable[256] = {
- 0x00, 0x80, 0x40, 0xc0, 0x20, 0xa0, 0x60, 0xe0,
- 0x10, 0x90, 0x50, 0xd0, 0x30, 0xb0, 0x70, 0xf0,
- 0x08, 0x88, 0x48, 0xc8, 0x28, 0xa8, 0x68, 0xe8,
- 0x18, 0x98, 0x58, 0xd8, 0x38, 0xb8, 0x78, 0xf8,
- 0x04, 0x84, 0x44, 0xc4, 0x24, 0xa4, 0x64, 0xe4,
- 0x14, 0x94, 0x54, 0xd4, 0x34, 0xb4, 0x74, 0xf4,
- 0x0c, 0x8c, 0x4c, 0xcc, 0x2c, 0xac, 0x6c, 0xec,
- 0x1c, 0x9c, 0x5c, 0xdc, 0x3c, 0xbc, 0x7c, 0xfc,
- 0x02, 0x82, 0x42, 0xc2, 0x22, 0xa2, 0x62, 0xe2,
- 0x12, 0x92, 0x52, 0xd2, 0x32, 0xb2, 0x72, 0xf2,
- 0x0a, 0x8a, 0x4a, 0xca, 0x2a, 0xaa, 0x6a, 0xea,
- 0x1a, 0x9a, 0x5a, 0xda, 0x3a, 0xba, 0x7a, 0xfa,
- 0x06, 0x86, 0x46, 0xc6, 0x26, 0xa6, 0x66, 0xe6,
- 0x16, 0x96, 0x56, 0xd6, 0x36, 0xb6, 0x76, 0xf6,
- 0x0e, 0x8e, 0x4e, 0xce, 0x2e, 0xae, 0x6e, 0xee,
- 0x1e, 0x9e, 0x5e, 0xde, 0x3e, 0xbe, 0x7e, 0xfe,
- 0x01, 0x81, 0x41, 0xc1, 0x21, 0xa1, 0x61, 0xe1,
- 0x11, 0x91, 0x51, 0xd1, 0x31, 0xb1, 0x71, 0xf1,
- 0x09, 0x89, 0x49, 0xc9, 0x29, 0xa9, 0x69, 0xe9,
- 0x19, 0x99, 0x59, 0xd9, 0x39, 0xb9, 0x79, 0xf9,
- 0x05, 0x85, 0x45, 0xc5, 0x25, 0xa5, 0x65, 0xe5,
- 0x15, 0x95, 0x55, 0xd5, 0x35, 0xb5, 0x75, 0xf5,
- 0x0d, 0x8d, 0x4d, 0xcd, 0x2d, 0xad, 0x6d, 0xed,
- 0x1d, 0x9d, 0x5d, 0xdd, 0x3d, 0xbd, 0x7d, 0xfd,
- 0x03, 0x83, 0x43, 0xc3, 0x23, 0xa3, 0x63, 0xe3,
- 0x13, 0x93, 0x53, 0xd3, 0x33, 0xb3, 0x73, 0xf3,
- 0x0b, 0x8b, 0x4b, 0xcb, 0x2b, 0xab, 0x6b, 0xeb,
- 0x1b, 0x9b, 0x5b, 0xdb, 0x3b, 0xbb, 0x7b, 0xfb,
- 0x07, 0x87, 0x47, 0xc7, 0x27, 0xa7, 0x67, 0xe7,
- 0x17, 0x97, 0x57, 0xd7, 0x37, 0xb7, 0x77, 0xf7,
- 0x0f, 0x8f, 0x4f, 0xcf, 0x2f, 0xaf, 0x6f, 0xef,
- 0x1f, 0x9f, 0x5f, 0xdf, 0x3f, 0xbf, 0x7f, 0xff,
-};
-
-static const GLubyte LowBitsMask[9] = {
- 0x00, 0x01, 0x03, 0x07, 0x0f, 0x1f, 0x3f, 0x7f, 0xff,
-};
-
-static const GLubyte HighBitsMask[9] = {
- 0x00, 0x80, 0xc0, 0xe0, 0xf0, 0xf8, 0xfc, 0xfe, 0xff,
-};
-
-
-/*
-** Copy bitmap data from clients packed memory applying unpacking modes as the
-** data is transfered into the destImage buffer. Return in modes the
-** set of pixel modes that are to be done by the server.
-*/
-static void
-FillBitmap(__GLXcontext * gc, GLint width, GLint height,
- GLenum format, const GLvoid * userdata, GLubyte * destImage)
-{
- const __GLXattribute *state = gc->client_state_private;
- GLint rowLength = state->storeUnpack.rowLength;
- GLint alignment = state->storeUnpack.alignment;
- GLint skipPixels = state->storeUnpack.skipPixels;
- GLint skipRows = state->storeUnpack.skipRows;
- GLint lsbFirst = state->storeUnpack.lsbFirst;
- GLint elementsLeft, bitOffset, currentByte, nextByte, highBitMask;
- GLint lowBitMask, i;
- GLint components, groupsPerRow, rowSize, padding, elementsPerRow;
- const GLubyte *start, *iter;
-
- if (rowLength > 0) {
- groupsPerRow = rowLength;
- }
- else {
- groupsPerRow = width;
- }
- components = __glElementsPerGroup(format, GL_BITMAP);
- rowSize = (groupsPerRow * components + 7) >> 3;
- padding = (rowSize % alignment);
- if (padding) {
- rowSize += alignment - padding;
- }
- start = ((const GLubyte *) userdata) + skipRows * rowSize +
- ((skipPixels * components) >> 3);
- bitOffset = (skipPixels * components) & 7;
- highBitMask = LowBitsMask[8 - bitOffset];
- lowBitMask = HighBitsMask[bitOffset];
- elementsPerRow = width * components;
- for (i = 0; i < height; i++) {
- elementsLeft = elementsPerRow;
- iter = start;
- while (elementsLeft) {
- /* First retrieve low bits from current byte */
- if (lsbFirst) {
- currentByte = MsbToLsbTable[iter[0]];
- }
- else {
- currentByte = iter[0];
- }
- if (bitOffset) {
- /* Need to read next byte to finish current byte */
- if (elementsLeft > (8 - bitOffset)) {
- if (lsbFirst) {
- nextByte = MsbToLsbTable[iter[1]];
- }
- else {
- nextByte = iter[1];
- }
- currentByte =
- ((currentByte & highBitMask) << bitOffset) |
- ((nextByte & lowBitMask) >> (8 - bitOffset));
- }
- else {
- currentByte = ((currentByte & highBitMask) << bitOffset);
- }
- }
- if (elementsLeft >= 8) {
- *destImage = currentByte;
- elementsLeft -= 8;
- }
- else {
- *destImage = currentByte & HighBitsMask[elementsLeft];
- elementsLeft = 0;
- }
- destImage++;
- iter++;
- }
- start += rowSize;
- }
-}
-
-/*
-** Extract array from user's data applying all pixel store modes.
-** The internal packed array format used has LSB_FIRST = FALSE and
-** ALIGNMENT = 1.
-*/
-void
-__glFillImage(__GLXcontext * gc, GLint dim, GLint width, GLint height,
- GLint depth, GLenum format, GLenum type,
- const GLvoid * userdata, GLubyte * newimage, GLubyte * modes)
-{
- const __GLXattribute *state = gc->client_state_private;
- GLint rowLength = state->storeUnpack.rowLength;
- GLint imageHeight = state->storeUnpack.imageHeight;
- GLint alignment = state->storeUnpack.alignment;
- GLint skipPixels = state->storeUnpack.skipPixels;
- GLint skipRows = state->storeUnpack.skipRows;
- GLint skipImages = state->storeUnpack.skipImages;
- GLint swapBytes = state->storeUnpack.swapEndian;
- GLint components, elementSize, rowSize, padding, groupsPerRow, groupSize;
- GLint elementsPerRow, imageSize, rowsPerImage, h, i, j, k;
- const GLubyte *start, *iter, *itera, *iterb, *iterc;
- GLubyte *iter2;
-
- if (type == GL_BITMAP) {
- FillBitmap(gc, width, height, format, userdata, newimage);
- }
- else {
- components = __glElementsPerGroup(format, type);
- if (rowLength > 0) {
- groupsPerRow = rowLength;
- }
- else {
- groupsPerRow = width;
- }
- if (imageHeight > 0) {
- rowsPerImage = imageHeight;
- }
- else {
- rowsPerImage = height;
- }
-
- elementSize = __glBytesPerElement(type);
- groupSize = elementSize * components;
- if (elementSize == 1)
- swapBytes = 0;
-
- rowSize = groupsPerRow * groupSize;
- padding = (rowSize % alignment);
- if (padding) {
- rowSize += alignment - padding;
- }
- imageSize = rowSize * rowsPerImage;
- start = ((const GLubyte *) userdata) + skipImages * imageSize +
- skipRows * rowSize + skipPixels * groupSize;
- iter2 = newimage;
- elementsPerRow = width * components;
-
- if (swapBytes) {
- itera = start;
- for (h = 0; h < depth; h++) {
- iterb = itera;
- for (i = 0; i < height; i++) {
- iterc = iterb;
- for (j = 0; j < elementsPerRow; j++) {
- for (k = 1; k <= elementSize; k++) {
- iter2[k - 1] = iterc[elementSize - k];
- }
- iter2 += elementSize;
- iterc += elementSize;
- }
- iterb += rowSize;
- }
- itera += imageSize;
- }
- }
- else {
- itera = start;
- for (h = 0; h < depth; h++) {
- if (rowSize == elementsPerRow * elementSize) {
- /* Ha! This is mondo easy! */
- __GLX_MEM_COPY(iter2, itera,
- elementsPerRow * elementSize * height);
- iter2 += elementsPerRow * elementSize * height;
- }
- else {
- iter = itera;
- for (i = 0; i < height; i++) {
- __GLX_MEM_COPY(iter2, iter, elementsPerRow * elementSize);
- iter2 += elementsPerRow * elementSize;
- iter += rowSize;
- }
- }
- itera += imageSize;
- }
- }
- }
-
- /* Setup store modes that describe what we just did */
- if (modes) {
- if (dim < 3) {
- (void) memcpy(modes, __glXDefaultPixelStore + 4, 20);
- }
- else {
- (void) memcpy(modes, __glXDefaultPixelStore + 0, 36);
- }
- }
-}
-
-/*
-** Empty a bitmap in LSB_FIRST=GL_FALSE and ALIGNMENT=4 format packing it
-** into the clients memory using the pixel store PACK modes.
-*/
-static void
-EmptyBitmap(__GLXcontext * gc, GLint width, GLint height,
- GLenum format, const GLubyte * sourceImage, GLvoid * userdata)
-{
- const __GLXattribute *state = gc->client_state_private;
- GLint rowLength = state->storePack.rowLength;
- GLint alignment = state->storePack.alignment;
- GLint skipPixels = state->storePack.skipPixels;
- GLint skipRows = state->storePack.skipRows;
- GLint lsbFirst = state->storePack.lsbFirst;
- GLint components, groupsPerRow, rowSize, padding, elementsPerRow;
- GLint sourceRowSize, sourcePadding, sourceSkip;
- GLubyte *start, *iter;
- GLint elementsLeft, bitOffset, currentByte, highBitMask, lowBitMask;
- GLint writeMask, i;
- GLubyte writeByte;
-
- components = __glElementsPerGroup(format, GL_BITMAP);
- if (rowLength > 0) {
- groupsPerRow = rowLength;
- }
- else {
- groupsPerRow = width;
- }
-
- rowSize = (groupsPerRow * components + 7) >> 3;
- padding = (rowSize % alignment);
- if (padding) {
- rowSize += alignment - padding;
- }
- sourceRowSize = (width * components + 7) >> 3;
- sourcePadding = (sourceRowSize % 4);
- if (sourcePadding) {
- sourceSkip = 4 - sourcePadding;
- }
- else {
- sourceSkip = 0;
- }
- start = ((GLubyte *) userdata) + skipRows * rowSize +
- ((skipPixels * components) >> 3);
- bitOffset = (skipPixels * components) & 7;
- highBitMask = LowBitsMask[8 - bitOffset];
- lowBitMask = HighBitsMask[bitOffset];
- elementsPerRow = width * components;
- for (i = 0; i < height; i++) {
- elementsLeft = elementsPerRow;
- iter = start;
- writeMask = highBitMask;
- writeByte = 0;
- while (elementsLeft) {
- /* Set up writeMask (to write to current byte) */
- if (elementsLeft + bitOffset < 8) {
- /* Need to trim writeMask */
- writeMask &= HighBitsMask[bitOffset + elementsLeft];
- }
-
- if (lsbFirst) {
- currentByte = MsbToLsbTable[iter[0]];
- }
- else {
- currentByte = iter[0];
- }
-
- if (bitOffset) {
- writeByte |= (sourceImage[0] >> bitOffset);
- currentByte = (currentByte & ~writeMask) |
- (writeByte & writeMask);
- writeByte = (sourceImage[0] << (8 - bitOffset));
- }
- else {
- currentByte = (currentByte & ~writeMask) |
- (sourceImage[0] & writeMask);
- }
-
- if (lsbFirst) {
- iter[0] = MsbToLsbTable[currentByte];
- }
- else {
- iter[0] = currentByte;
- }
-
- if (elementsLeft >= 8) {
- elementsLeft -= 8;
- }
- else {
- elementsLeft = 0;
- }
- sourceImage++;
- iter++;
- writeMask = 0xff;
- }
- if (writeByte) {
- /* Some data left over that still needs writing */
- writeMask &= lowBitMask;
- if (lsbFirst) {
- currentByte = MsbToLsbTable[iter[0]];
- }
- else {
- currentByte = iter[0];
- }
- currentByte = (currentByte & ~writeMask) | (writeByte & writeMask);
- if (lsbFirst) {
- iter[0] = MsbToLsbTable[currentByte];
- }
- else {
- iter[0] = currentByte;
- }
- }
- start += rowSize;
- sourceImage += sourceSkip;
- }
-}
-
-/*
-** Insert array into user's data applying all pixel store modes.
-** The packed array format from the server is LSB_FIRST = FALSE,
-** SWAP_BYTES = the current pixel storage pack mode, and ALIGNMENT = 4.
-** Named __glEmptyImage() because it is the opposite of __glFillImage().
-*/
-/* ARGSUSED */
-void
-__glEmptyImage(__GLXcontext * gc, GLint dim, GLint width, GLint height,
- GLint depth, GLenum format, GLenum type,
- const GLubyte * sourceImage, GLvoid * userdata)
-{
- const __GLXattribute *state = gc->client_state_private;
- GLint rowLength = state->storePack.rowLength;
- GLint imageHeight = state->storePack.imageHeight;
- GLint alignment = state->storePack.alignment;
- GLint skipPixels = state->storePack.skipPixels;
- GLint skipRows = state->storePack.skipRows;
- GLint skipImages = state->storePack.skipImages;
- GLint components, elementSize, rowSize, padding, groupsPerRow, groupSize;
- GLint elementsPerRow, sourceRowSize, sourcePadding, h, i;
- GLint imageSize, rowsPerImage;
- GLubyte *start, *iter, *itera;
-
- if (type == GL_BITMAP) {
- EmptyBitmap(gc, width, height, format, sourceImage, userdata);
- }
- else {
- components = __glElementsPerGroup(format, type);
- if (rowLength > 0) {
- groupsPerRow = rowLength;
- }
- else {
- groupsPerRow = width;
- }
- if (imageHeight > 0) {
- rowsPerImage = imageHeight;
- }
- else {
- rowsPerImage = height;
- }
- elementSize = __glBytesPerElement(type);
- groupSize = elementSize * components;
- rowSize = groupsPerRow * groupSize;
- padding = (rowSize % alignment);
- if (padding) {
- rowSize += alignment - padding;
- }
- sourceRowSize = width * groupSize;
- sourcePadding = (sourceRowSize % 4);
- if (sourcePadding) {
- sourceRowSize += 4 - sourcePadding;
- }
- imageSize = sourceRowSize * rowsPerImage;
- start = ((GLubyte *) userdata) + skipImages * imageSize +
- skipRows * rowSize + skipPixels * groupSize;
- elementsPerRow = width * components;
-
- itera = start;
- for (h = 0; h < depth; h++) {
- if ((rowSize == sourceRowSize) && (sourcePadding == 0)) {
- /* Ha! This is mondo easy! */
- __GLX_MEM_COPY(itera, sourceImage,
- elementsPerRow * elementSize * height);
- sourceImage += elementsPerRow * elementSize * height;
- }
- else {
- iter = itera;
- for (i = 0; i < height; i++) {
- __GLX_MEM_COPY(iter, sourceImage,
- elementsPerRow * elementSize);
- sourceImage += sourceRowSize;
- iter += rowSize;
- }
- }
- itera += imageSize;
- }
- }
-}
diff --git a/src/glx/x11/pixelstore.c b/src/glx/x11/pixelstore.c
deleted file mode 100644
index 8b51b5d8b7f..00000000000
--- a/src/glx/x11/pixelstore.c
+++ /dev/null
@@ -1,352 +0,0 @@
-/*
- * SGI FREE SOFTWARE LICENSE B (Version 2.0, Sept. 18, 2008)
- * Copyright (C) 1991-2000 Silicon Graphics, Inc. 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"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice including the dates of first publication and
- * either this permission notice or a reference to
- * http://oss.sgi.com/projects/FreeB/
- * shall be included in all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * SILICON GRAPHICS, INC. BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
- * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
- * OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- *
- * Except as contained in this notice, the name of Silicon Graphics, Inc.
- * shall not be used in advertising or otherwise to promote the sale, use or
- * other dealings in this Software without prior written authorization from
- * Silicon Graphics, Inc.
- */
-
-#include "glxclient.h"
-#include "indirect.h"
-
-#if !defined __GNUC__ || __GNUC__ < 3
-# define __builtin_expect(x, y) x
-#endif
-
-/**
- * Send glPixelStore command to the server
- *
- * \param gc Current GLX context
- * \param sop Either \c X_GLsop_PixelStoref or \c X_GLsop_PixelStorei
- * \param pname Selector of which pixel parameter is to be set.
- * \param param Value that \c pname is set to.
- *
- * \sa __indirect_glPixelStorei, __indirect_glPixelStoref
- */
-static void
-send_PixelStore(__GLXcontext * gc, unsigned sop, GLenum pname,
- const void *param)
-{
- Display *const dpy = gc->currentDpy;
- const GLuint cmdlen = 8;
- if (__builtin_expect(dpy != NULL, 1)) {
- GLubyte const *pc = __glXSetupSingleRequest(gc, sop, cmdlen);
- (void) memcpy((void *) (pc + 0), (void *) (&pname), 4);
- (void) memcpy((void *) (pc + 4), param, 4);
- UnlockDisplay(dpy);
- SyncHandle();
- }
- return;
-}
-
-/*
-** Specify parameters that control the storage format of pixel arrays.
-*/
-void
-__indirect_glPixelStoref(GLenum pname, GLfloat param)
-{
- __GLXcontext *gc = __glXGetCurrentContext();
- __GLXattribute *state = gc->client_state_private;
- Display *dpy = gc->currentDpy;
- GLuint a;
-
- if (!dpy)
- return;
-
- switch (pname) {
- case GL_PACK_ROW_LENGTH:
- a = (GLuint) (param + 0.5);
- if (((GLint) a) < 0) {
- __glXSetError(gc, GL_INVALID_VALUE);
- return;
- }
- state->storePack.rowLength = a;
- break;
- case GL_PACK_IMAGE_HEIGHT:
- a = (GLuint) (param + 0.5);
- if (((GLint) a) < 0) {
- __glXSetError(gc, GL_INVALID_VALUE);
- return;
- }
- state->storePack.imageHeight = a;
- break;
- case GL_PACK_SKIP_ROWS:
- a = (GLuint) (param + 0.5);
- if (((GLint) a) < 0) {
- __glXSetError(gc, GL_INVALID_VALUE);
- return;
- }
- state->storePack.skipRows = a;
- break;
- case GL_PACK_SKIP_PIXELS:
- a = (GLuint) (param + 0.5);
- if (((GLint) a) < 0) {
- __glXSetError(gc, GL_INVALID_VALUE);
- return;
- }
- state->storePack.skipPixels = a;
- break;
- case GL_PACK_SKIP_IMAGES:
- a = (GLuint) (param + 0.5);
- if (((GLint) a) < 0) {
- __glXSetError(gc, GL_INVALID_VALUE);
- return;
- }
- state->storePack.skipImages = a;
- break;
- case GL_PACK_ALIGNMENT:
- a = (GLint) (param + 0.5);
- switch (a) {
- case 1:
- case 2:
- case 4:
- case 8:
- state->storePack.alignment = a;
- break;
- default:
- __glXSetError(gc, GL_INVALID_VALUE);
- return;
- }
- break;
- case GL_PACK_SWAP_BYTES:
- state->storePack.swapEndian = (param != 0);
- break;
- case GL_PACK_LSB_FIRST:
- state->storePack.lsbFirst = (param != 0);
- break;
-
- case GL_UNPACK_ROW_LENGTH:
- a = (GLuint) (param + 0.5);
- if (((GLint) a) < 0) {
- __glXSetError(gc, GL_INVALID_VALUE);
- return;
- }
- state->storeUnpack.rowLength = a;
- break;
- case GL_UNPACK_IMAGE_HEIGHT:
- a = (GLuint) (param + 0.5);
- if (((GLint) a) < 0) {
- __glXSetError(gc, GL_INVALID_VALUE);
- return;
- }
- state->storeUnpack.imageHeight = a;
- break;
- case GL_UNPACK_SKIP_ROWS:
- a = (GLuint) (param + 0.5);
- if (((GLint) a) < 0) {
- __glXSetError(gc, GL_INVALID_VALUE);
- return;
- }
- state->storeUnpack.skipRows = a;
- break;
- case GL_UNPACK_SKIP_PIXELS:
- a = (GLuint) (param + 0.5);
- if (((GLint) a) < 0) {
- __glXSetError(gc, GL_INVALID_VALUE);
- return;
- }
- state->storeUnpack.skipPixels = a;
- break;
- case GL_UNPACK_SKIP_IMAGES:
- a = (GLuint) (param + 0.5);
- if (((GLint) a) < 0) {
- __glXSetError(gc, GL_INVALID_VALUE);
- return;
- }
- state->storeUnpack.skipImages = a;
- break;
- case GL_UNPACK_ALIGNMENT:
- a = (GLint) (param + 0.5);
- switch (a) {
- case 1:
- case 2:
- case 4:
- case 8:
- state->storeUnpack.alignment = a;
- break;
- default:
- __glXSetError(gc, GL_INVALID_VALUE);
- return;
- }
- break;
- case GL_UNPACK_SWAP_BYTES:
- state->storeUnpack.swapEndian = (param != 0);
- break;
- case GL_UNPACK_LSB_FIRST:
- state->storeUnpack.lsbFirst = (param != 0);
- break;
-
- /* Group all of the pixel store modes that need to be sent to the
- * server here. Care must be used to only send modes to the server that
- * won't affect the size of the data sent to or received from the
- * server. GL_PACK_INVERT_MESA is safe in this respect, but other,
- * future modes may not be.
- */
- case GL_PACK_INVERT_MESA:
- send_PixelStore(gc, X_GLsop_PixelStoref, pname, &param);
- break;
-
- default:
- __glXSetError(gc, GL_INVALID_ENUM);
- break;
- }
-}
-
-void
-__indirect_glPixelStorei(GLenum pname, GLint param)
-{
- __GLXcontext *gc = __glXGetCurrentContext();
- __GLXattribute *state = gc->client_state_private;
- Display *dpy = gc->currentDpy;
-
- if (!dpy)
- return;
-
- switch (pname) {
- case GL_PACK_ROW_LENGTH:
- if (param < 0) {
- __glXSetError(gc, GL_INVALID_VALUE);
- return;
- }
- state->storePack.rowLength = param;
- break;
- case GL_PACK_IMAGE_HEIGHT:
- if (param < 0) {
- __glXSetError(gc, GL_INVALID_VALUE);
- return;
- }
- state->storePack.imageHeight = param;
- break;
- case GL_PACK_SKIP_ROWS:
- if (param < 0) {
- __glXSetError(gc, GL_INVALID_VALUE);
- return;
- }
- state->storePack.skipRows = param;
- break;
- case GL_PACK_SKIP_PIXELS:
- if (param < 0) {
- __glXSetError(gc, GL_INVALID_VALUE);
- return;
- }
- state->storePack.skipPixels = param;
- break;
- case GL_PACK_SKIP_IMAGES:
- if (param < 0) {
- __glXSetError(gc, GL_INVALID_VALUE);
- return;
- }
- state->storePack.skipImages = param;
- break;
- case GL_PACK_ALIGNMENT:
- switch (param) {
- case 1:
- case 2:
- case 4:
- case 8:
- state->storePack.alignment = param;
- break;
- default:
- __glXSetError(gc, GL_INVALID_VALUE);
- return;
- }
- break;
- case GL_PACK_SWAP_BYTES:
- state->storePack.swapEndian = (param != 0);
- break;
- case GL_PACK_LSB_FIRST:
- state->storePack.lsbFirst = (param != 0);
- break;
-
- case GL_UNPACK_ROW_LENGTH:
- if (param < 0) {
- __glXSetError(gc, GL_INVALID_VALUE);
- return;
- }
- state->storeUnpack.rowLength = param;
- break;
- case GL_UNPACK_IMAGE_HEIGHT:
- if (param < 0) {
- __glXSetError(gc, GL_INVALID_VALUE);
- return;
- }
- state->storeUnpack.imageHeight = param;
- break;
- case GL_UNPACK_SKIP_ROWS:
- if (param < 0) {
- __glXSetError(gc, GL_INVALID_VALUE);
- return;
- }
- state->storeUnpack.skipRows = param;
- break;
- case GL_UNPACK_SKIP_PIXELS:
- if (param < 0) {
- __glXSetError(gc, GL_INVALID_VALUE);
- return;
- }
- state->storeUnpack.skipPixels = param;
- break;
- case GL_UNPACK_SKIP_IMAGES:
- if (param < 0) {
- __glXSetError(gc, GL_INVALID_VALUE);
- return;
- }
- state->storeUnpack.skipImages = param;
- break;
- case GL_UNPACK_ALIGNMENT:
- switch (param) {
- case 1:
- case 2:
- case 4:
- case 8:
- state->storeUnpack.alignment = param;
- break;
- default:
- __glXSetError(gc, GL_INVALID_VALUE);
- return;
- }
- break;
- case GL_UNPACK_SWAP_BYTES:
- state->storeUnpack.swapEndian = (param != 0);
- break;
- case GL_UNPACK_LSB_FIRST:
- state->storeUnpack.lsbFirst = (param != 0);
- break;
-
- /* Group all of the pixel store modes that need to be sent to the
- * server here. Care must be used to only send modes to the server that
- * won't affect the size of the data sent to or received from the
- * server. GL_PACK_INVERT_MESA is safe in this respect, but other,
- * future modes may not be.
- */
- case GL_PACK_INVERT_MESA:
- send_PixelStore(gc, X_GLsop_PixelStorei, pname, &param);
- break;
-
- default:
- __glXSetError(gc, GL_INVALID_ENUM);
- break;
- }
-}
diff --git a/src/glx/x11/render2.c b/src/glx/x11/render2.c
deleted file mode 100644
index 762950f4ac4..00000000000
--- a/src/glx/x11/render2.c
+++ /dev/null
@@ -1,381 +0,0 @@
-/*
- * SGI FREE SOFTWARE LICENSE B (Version 2.0, Sept. 18, 2008)
- * Copyright (C) 1991-2000 Silicon Graphics, Inc. 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"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice including the dates of first publication and
- * either this permission notice or a reference to
- * http://oss.sgi.com/projects/FreeB/
- * shall be included in all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * SILICON GRAPHICS, INC. BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
- * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
- * OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- *
- * Except as contained in this notice, the name of Silicon Graphics, Inc.
- * shall not be used in advertising or otherwise to promote the sale, use or
- * other dealings in this Software without prior written authorization from
- * Silicon Graphics, Inc.
- */
-
-#include "packrender.h"
-#include "indirect.h"
-#include "indirect_size.h"
-
-/*
-** This file contains routines that might need to be transported as
-** GLXRender or GLXRenderLarge commands, and these commands don't
-** use the pixel header. See renderpix.c for those routines.
-*/
-
-void
-__indirect_glMap1d(GLenum target, GLdouble u1, GLdouble u2, GLint stride,
- GLint order, const GLdouble * pnts)
-{
- __GLX_DECLARE_VARIABLES();
- GLint k;
-
- __GLX_LOAD_VARIABLES();
- k = __glMap1d_size(target);
- if (k == 0) {
- __glXSetError(gc, GL_INVALID_ENUM);
- return;
- }
- else if (stride < k || order <= 0) {
- __glXSetError(gc, GL_INVALID_VALUE);
- return;
- }
- compsize = k * order * __GLX_SIZE_FLOAT64;
- cmdlen = 28 + compsize;
- if (!gc->currentDpy)
- return;
-
- if (cmdlen <= gc->maxSmallRenderCommandSize) {
- /* Use GLXRender protocol to send small command */
- __GLX_BEGIN_VARIABLE(X_GLrop_Map1d, cmdlen);
- __GLX_PUT_DOUBLE(4, u1);
- __GLX_PUT_DOUBLE(12, u2);
- __GLX_PUT_LONG(20, target);
- __GLX_PUT_LONG(24, order);
- /*
- ** NOTE: the doubles that follow are not aligned because of 3
- ** longs preceeding
- */
- __glFillMap1d(k, order, stride, pnts, (pc + 28));
- __GLX_END(cmdlen);
- }
- else {
- /* Use GLXRenderLarge protocol to send command */
- __GLX_BEGIN_VARIABLE_LARGE(X_GLrop_Map1d, cmdlen + 4);
- __GLX_PUT_DOUBLE(8, u1);
- __GLX_PUT_DOUBLE(16, u2);
- __GLX_PUT_LONG(24, target);
- __GLX_PUT_LONG(28, order);
-
- /*
- ** NOTE: the doubles that follow are not aligned because of 3
- ** longs preceeding
- */
- if (stride != k) {
- GLubyte *buf;
-
- buf = (GLubyte *) Xmalloc(compsize);
- if (!buf) {
- __glXSetError(gc, GL_OUT_OF_MEMORY);
- return;
- }
- __glFillMap1d(k, order, stride, pnts, buf);
- __glXSendLargeCommand(gc, pc, 32, buf, compsize);
- Xfree((char *) buf);
- }
- else {
- /* Data is already packed. Just send it out */
- __glXSendLargeCommand(gc, pc, 32, pnts, compsize);
- }
- }
-}
-
-void
-__indirect_glMap1f(GLenum target, GLfloat u1, GLfloat u2, GLint stride,
- GLint order, const GLfloat * pnts)
-{
- __GLX_DECLARE_VARIABLES();
- GLint k;
-
- __GLX_LOAD_VARIABLES();
- k = __glMap1f_size(target);
- if (k == 0) {
- __glXSetError(gc, GL_INVALID_ENUM);
- return;
- }
- else if (stride < k || order <= 0) {
- __glXSetError(gc, GL_INVALID_VALUE);
- return;
- }
- compsize = k * order * __GLX_SIZE_FLOAT32;
- cmdlen = 20 + compsize;
- if (!gc->currentDpy)
- return;
-
- /*
- ** The order that arguments are packed is different from the order
- ** for glMap1d.
- */
- if (cmdlen <= gc->maxSmallRenderCommandSize) {
- /* Use GLXRender protocol to send small command */
- __GLX_BEGIN_VARIABLE(X_GLrop_Map1f, cmdlen);
- __GLX_PUT_LONG(4, target);
- __GLX_PUT_FLOAT(8, u1);
- __GLX_PUT_FLOAT(12, u2);
- __GLX_PUT_LONG(16, order);
- __glFillMap1f(k, order, stride, pnts, (GLubyte *) (pc + 20));
- __GLX_END(cmdlen);
- }
- else {
- /* Use GLXRenderLarge protocol to send command */
- __GLX_BEGIN_VARIABLE_LARGE(X_GLrop_Map1f, cmdlen + 4);
- __GLX_PUT_LONG(8, target);
- __GLX_PUT_FLOAT(12, u1);
- __GLX_PUT_FLOAT(16, u2);
- __GLX_PUT_LONG(20, order);
-
- if (stride != k) {
- GLubyte *buf;
-
- buf = (GLubyte *) Xmalloc(compsize);
- if (!buf) {
- __glXSetError(gc, GL_OUT_OF_MEMORY);
- return;
- }
- __glFillMap1f(k, order, stride, pnts, buf);
- __glXSendLargeCommand(gc, pc, 24, buf, compsize);
- Xfree((char *) buf);
- }
- else {
- /* Data is already packed. Just send it out */
- __glXSendLargeCommand(gc, pc, 24, pnts, compsize);
- }
- }
-}
-
-void
-__indirect_glMap2d(GLenum target, GLdouble u1, GLdouble u2, GLint ustr,
- GLint uord, GLdouble v1, GLdouble v2, GLint vstr,
- GLint vord, const GLdouble * pnts)
-{
- __GLX_DECLARE_VARIABLES();
- GLint k;
-
- __GLX_LOAD_VARIABLES();
- k = __glMap2d_size(target);
- if (k == 0) {
- __glXSetError(gc, GL_INVALID_ENUM);
- return;
- }
- else if (vstr < k || ustr < k || vord <= 0 || uord <= 0) {
- __glXSetError(gc, GL_INVALID_VALUE);
- return;
- }
- compsize = k * uord * vord * __GLX_SIZE_FLOAT64;
- cmdlen = 48 + compsize;
- if (!gc->currentDpy)
- return;
-
- if (cmdlen <= gc->maxSmallRenderCommandSize) {
- /* Use GLXRender protocol to send small command */
- __GLX_BEGIN_VARIABLE(X_GLrop_Map2d, cmdlen);
- __GLX_PUT_DOUBLE(4, u1);
- __GLX_PUT_DOUBLE(12, u2);
- __GLX_PUT_DOUBLE(20, v1);
- __GLX_PUT_DOUBLE(28, v2);
- __GLX_PUT_LONG(36, target);
- __GLX_PUT_LONG(40, uord);
- __GLX_PUT_LONG(44, vord);
- /*
- ** Pack into a u-major ordering.
- ** NOTE: the doubles that follow are not aligned because of 5
- ** longs preceeding
- */
- __glFillMap2d(k, uord, vord, ustr, vstr, pnts, (GLdouble *) (pc + 48));
- __GLX_END(cmdlen);
- }
- else {
- /* Use GLXRenderLarge protocol to send command */
- __GLX_BEGIN_VARIABLE_LARGE(X_GLrop_Map2d, cmdlen + 4);
- __GLX_PUT_DOUBLE(8, u1);
- __GLX_PUT_DOUBLE(16, u2);
- __GLX_PUT_DOUBLE(24, v1);
- __GLX_PUT_DOUBLE(32, v2);
- __GLX_PUT_LONG(40, target);
- __GLX_PUT_LONG(44, uord);
- __GLX_PUT_LONG(48, vord);
-
- /*
- ** NOTE: the doubles that follow are not aligned because of 5
- ** longs preceeding
- */
- if ((vstr != k) || (ustr != k * vord)) {
- GLdouble *buf;
-
- buf = (GLdouble *) Xmalloc(compsize);
- if (!buf) {
- __glXSetError(gc, GL_OUT_OF_MEMORY);
- return;
- }
- /*
- ** Pack into a u-major ordering.
- */
- __glFillMap2d(k, uord, vord, ustr, vstr, pnts, buf);
- __glXSendLargeCommand(gc, pc, 52, buf, compsize);
- Xfree((char *) buf);
- }
- else {
- /* Data is already packed. Just send it out */
- __glXSendLargeCommand(gc, pc, 52, pnts, compsize);
- }
- }
-}
-
-void
-__indirect_glMap2f(GLenum target, GLfloat u1, GLfloat u2, GLint ustr,
- GLint uord, GLfloat v1, GLfloat v2, GLint vstr, GLint vord,
- const GLfloat * pnts)
-{
- __GLX_DECLARE_VARIABLES();
- GLint k;
-
- __GLX_LOAD_VARIABLES();
- k = __glMap2f_size(target);
- if (k == 0) {
- __glXSetError(gc, GL_INVALID_ENUM);
- return;
- }
- else if (vstr < k || ustr < k || vord <= 0 || uord <= 0) {
- __glXSetError(gc, GL_INVALID_VALUE);
- return;
- }
- compsize = k * uord * vord * __GLX_SIZE_FLOAT32;
- cmdlen = 32 + compsize;
- if (!gc->currentDpy)
- return;
-
- /*
- ** The order that arguments are packed is different from the order
- ** for glMap2d.
- */
- if (cmdlen <= gc->maxSmallRenderCommandSize) {
- /* Use GLXRender protocol to send small command */
- __GLX_BEGIN_VARIABLE(X_GLrop_Map2f, cmdlen);
- __GLX_PUT_LONG(4, target);
- __GLX_PUT_FLOAT(8, u1);
- __GLX_PUT_FLOAT(12, u2);
- __GLX_PUT_LONG(16, uord);
- __GLX_PUT_FLOAT(20, v1);
- __GLX_PUT_FLOAT(24, v2);
- __GLX_PUT_LONG(28, vord);
- /*
- ** Pack into a u-major ordering.
- */
- __glFillMap2f(k, uord, vord, ustr, vstr, pnts, (GLfloat *) (pc + 32));
- __GLX_END(cmdlen);
- }
- else {
- /* Use GLXRenderLarge protocol to send command */
- __GLX_BEGIN_VARIABLE_LARGE(X_GLrop_Map2f, cmdlen + 4);
- __GLX_PUT_LONG(8, target);
- __GLX_PUT_FLOAT(12, u1);
- __GLX_PUT_FLOAT(16, u2);
- __GLX_PUT_LONG(20, uord);
- __GLX_PUT_FLOAT(24, v1);
- __GLX_PUT_FLOAT(28, v2);
- __GLX_PUT_LONG(32, vord);
-
- if ((vstr != k) || (ustr != k * vord)) {
- GLfloat *buf;
-
- buf = (GLfloat *) Xmalloc(compsize);
- if (!buf) {
- __glXSetError(gc, GL_OUT_OF_MEMORY);
- return;
- }
- /*
- ** Pack into a u-major ordering.
- */
- __glFillMap2f(k, uord, vord, ustr, vstr, pnts, buf);
- __glXSendLargeCommand(gc, pc, 36, buf, compsize);
- Xfree((char *) buf);
- }
- else {
- /* Data is already packed. Just send it out */
- __glXSendLargeCommand(gc, pc, 36, pnts, compsize);
- }
- }
-}
-
-void
-__indirect_glEnable(GLenum cap)
-{
- __GLX_DECLARE_VARIABLES();
-
- __GLX_LOAD_VARIABLES();
- if (!gc->currentDpy)
- return;
-
- switch (cap) {
- case GL_COLOR_ARRAY:
- case GL_EDGE_FLAG_ARRAY:
- case GL_INDEX_ARRAY:
- case GL_NORMAL_ARRAY:
- case GL_TEXTURE_COORD_ARRAY:
- case GL_VERTEX_ARRAY:
- case GL_SECONDARY_COLOR_ARRAY:
- case GL_FOG_COORD_ARRAY:
- __indirect_glEnableClientState(cap);
- return;
- default:
- break;
- }
-
- __GLX_BEGIN(X_GLrop_Enable, 8);
- __GLX_PUT_LONG(4, cap);
- __GLX_END(8);
-}
-
-void
-__indirect_glDisable(GLenum cap)
-{
- __GLX_DECLARE_VARIABLES();
-
- __GLX_LOAD_VARIABLES();
- if (!gc->currentDpy)
- return;
-
- switch (cap) {
- case GL_COLOR_ARRAY:
- case GL_EDGE_FLAG_ARRAY:
- case GL_INDEX_ARRAY:
- case GL_NORMAL_ARRAY:
- case GL_TEXTURE_COORD_ARRAY:
- case GL_VERTEX_ARRAY:
- case GL_SECONDARY_COLOR_ARRAY:
- case GL_FOG_COORD_ARRAY:
- __indirect_glDisableClientState(cap);
- return;
- default:
- break;
- }
-
- __GLX_BEGIN(X_GLrop_Disable, 8);
- __GLX_PUT_LONG(4, cap);
- __GLX_END(8);
-}
diff --git a/src/glx/x11/renderpix.c b/src/glx/x11/renderpix.c
deleted file mode 100644
index 9919bbcde3b..00000000000
--- a/src/glx/x11/renderpix.c
+++ /dev/null
@@ -1,218 +0,0 @@
-/*
- * SGI FREE SOFTWARE LICENSE B (Version 2.0, Sept. 18, 2008)
- * Copyright (C) 1991-2000 Silicon Graphics, Inc. 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"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice including the dates of first publication and
- * either this permission notice or a reference to
- * http://oss.sgi.com/projects/FreeB/
- * shall be included in all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * SILICON GRAPHICS, INC. BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
- * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
- * OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- *
- * Except as contained in this notice, the name of Silicon Graphics, Inc.
- * shall not be used in advertising or otherwise to promote the sale, use or
- * other dealings in this Software without prior written authorization from
- * Silicon Graphics, Inc.
- */
-
-/*
- * (C) Copyright IBM Corporation 2005
- * 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"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sub license,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice (including the next
- * paragraph) shall be included in all copies or substantial portions of the
- * Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL
- * IBM,
- * AND/OR THEIR SUPPLIERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
- * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
- * OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- */
-
-#include "packrender.h"
-#include "indirect.h"
-
-/**
- * Send a large image to the server. If necessary, a buffer is allocated
- * to hold the unpacked data that is copied from the clients memory.
- *
- * \param gc Current GLX context
- * \param compsize Size, in bytes, of the image portion
- * \param dim Number of dimensions of the image
- * \param width Width of the image
- * \param height Height of the image, must be 1 for 1D images
- * \param depth Depth of the image, must be 1 for 1D or 2D images
- * \param format Format of the image
- * \param type Data type of the image
- * \param src Pointer to the image data
- * \param pc Pointer to end of the command header
- * \param modes Pointer to the pixel unpack data
- *
- * \todo
- * Modify this function so that \c NULL images are sent using
- * \c __glXSendLargeChunk instead of __glXSendLargeCommand. Doing this
- * will eliminate the need to allocate a buffer for that case.
- *
- * \bugs
- * The \c fastImageUnpack path, which is thankfully never used, is completely
- * broken.
- */
-void
-__glXSendLargeImage(__GLXcontext * gc, GLint compsize, GLint dim,
- GLint width, GLint height, GLint depth,
- GLenum format, GLenum type, const GLvoid * src,
- GLubyte * pc, GLubyte * modes)
-{
- if (!gc->fastImageUnpack || (src == NULL)) {
- /* Allocate a temporary holding buffer */
- GLubyte *buf = (GLubyte *) Xmalloc(compsize);
- if (!buf) {
- __glXSetError(gc, GL_OUT_OF_MEMORY);
- return;
- }
-
- /* Apply pixel store unpack modes to copy data into buf */
- if (src != NULL) {
- (*gc->fillImage) (gc, dim, width, height, depth, format, type,
- src, buf, modes);
- }
- else {
- if (dim < 3) {
- (void) memcpy(modes, __glXDefaultPixelStore + 4, 20);
- }
- else {
- (void) memcpy(modes, __glXDefaultPixelStore + 0, 36);
- }
- }
-
- /* Send large command */
- __glXSendLargeCommand(gc, gc->pc, pc - gc->pc, buf, compsize);
-
- /* Free buffer */
- Xfree((char *) buf);
- }
- else {
- /* Just send the data straight as is */
- __glXSendLargeCommand(gc, gc->pc, pc - gc->pc, pc, compsize);
- }
-}
-
-/************************************************************************/
-
-/**
- * Implement GLX protocol for \c glSeparableFilter2D.
- *
- * \bugs
- * The \c fastImageUnpack path, which is thankfully never used, is completely
- * broken.
- */
-void
-__indirect_glSeparableFilter2D(GLenum target, GLenum internalformat,
- GLsizei width, GLsizei height, GLenum format,
- GLenum type, const GLvoid * row,
- const GLvoid * column)
-{
- __GLX_DECLARE_VARIABLES();
- GLuint compsize2, hdrlen, totalhdrlen, image1len, image2len;
-
- __GLX_LOAD_VARIABLES();
- compsize = __glImageSize(width, 1, 1, format, type, 0);
- compsize2 = __glImageSize(height, 1, 1, format, type, 0);
- totalhdrlen = __GLX_PAD(__GLX_CONV_FILT_CMD_HDR_SIZE);
- hdrlen = __GLX_PAD(__GLX_CONV_FILT_HDR_SIZE);
- image1len = __GLX_PAD(compsize);
- image2len = __GLX_PAD(compsize2);
- cmdlen = totalhdrlen + image1len + image2len;
- if (!gc->currentDpy)
- return;
-
- if (cmdlen <= gc->maxSmallRenderCommandSize) {
- /* Use GLXRender protocol to send small command */
- __GLX_BEGIN_VARIABLE_WITH_PIXEL(X_GLrop_SeparableFilter2D, cmdlen);
- __GLX_PUT_LONG(0, target);
- __GLX_PUT_LONG(4, internalformat);
- __GLX_PUT_LONG(8, width);
- __GLX_PUT_LONG(12, height);
- __GLX_PUT_LONG(16, format);
- __GLX_PUT_LONG(20, type);
- pc += hdrlen;
- if (compsize > 0) {
- (*gc->fillImage) (gc, 1, width, 1, 1, format, type,
- row, pc, pixelHeaderPC);
- pc += image1len;
- }
- if (compsize2 > 0) {
- (*gc->fillImage) (gc, 1, height, 1, 1, format, type,
- column, pc, NULL);
- pc += image2len;
- }
- if ((compsize == 0) && (compsize2 == 0)) {
- /* Setup default store modes */
- (void) memcpy(pixelHeaderPC, __glXDefaultPixelStore + 4, 20);
- }
- __GLX_END(0);
- }
- else {
- const GLint bufsize = image1len + image2len;
-
- /* Use GLXRenderLarge protocol to send command */
- __GLX_BEGIN_VARIABLE_LARGE_WITH_PIXEL(X_GLrop_SeparableFilter2D,
- cmdlen + 4);
- __GLX_PUT_LONG(0, target);
- __GLX_PUT_LONG(4, internalformat);
- __GLX_PUT_LONG(8, width);
- __GLX_PUT_LONG(12, height);
- __GLX_PUT_LONG(16, format);
- __GLX_PUT_LONG(20, type);
- pc += hdrlen;
-
- if (!gc->fastImageUnpack) {
- /* Allocate a temporary holding buffer */
- GLubyte *buf = (GLubyte *) Xmalloc(bufsize);
- if (!buf) {
- __glXSetError(gc, GL_OUT_OF_MEMORY);
- return;
- }
- (*gc->fillImage) (gc, 1, width, 1, 1, format, type, row, buf,
- pixelHeaderPC);
-
- (*gc->fillImage) (gc, 1, height, 1, 1, format, type, column,
- buf + image1len, pixelHeaderPC);
-
- /* Send large command */
- __glXSendLargeCommand(gc, gc->pc, (GLint) (pc - gc->pc), buf,
- bufsize);
- /* Free buffer */
- Xfree((char *) buf);
- }
- else {
- /* Just send the data straight as is */
- __glXSendLargeCommand(gc, gc->pc, (GLint) (pc - gc->pc), pc,
- bufsize);
- }
- }
-}
diff --git a/src/glx/x11/single2.c b/src/glx/x11/single2.c
deleted file mode 100644
index 9ecf589ffff..00000000000
--- a/src/glx/x11/single2.c
+++ /dev/null
@@ -1,974 +0,0 @@
-/*
- * SGI FREE SOFTWARE LICENSE B (Version 2.0, Sept. 18, 2008)
- * Copyright (C) 1991-2000 Silicon Graphics, Inc. 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"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice including the dates of first publication and
- * either this permission notice or a reference to
- * http://oss.sgi.com/projects/FreeB/
- * shall be included in all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * SILICON GRAPHICS, INC. BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
- * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
- * OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- *
- * Except as contained in this notice, the name of Silicon Graphics, Inc.
- * shall not be used in advertising or otherwise to promote the sale, use or
- * other dealings in this Software without prior written authorization from
- * Silicon Graphics, Inc.
- */
-
-#include <stdio.h>
-#include <assert.h>
-#include "glxclient.h"
-#include "packsingle.h"
-#include "glxextensions.h"
-#include "indirect.h"
-#include "indirect_vertex_array.h"
-#include "glapitable.h"
-#include "glapidispatch.h"
-#include "glapi.h"
-#ifdef USE_XCB
-#include <xcb/xcb.h>
-#include <xcb/glx.h>
-#include <X11/Xlib-xcb.h>
-#endif /* USE_XCB */
-
-
-/* Used for GL_ARB_transpose_matrix */
-static void
-TransposeMatrixf(GLfloat m[16])
-{
- int i, j;
- for (i = 0; i < 4; i++) {
- for (j = 0; j < i; j++) {
- GLfloat tmp = m[i * 4 + j];
- m[i * 4 + j] = m[j * 4 + i];
- m[j * 4 + i] = tmp;
- }
- }
-}
-
-/* Used for GL_ARB_transpose_matrix */
-static void
-TransposeMatrixb(GLboolean m[16])
-{
- int i, j;
- for (i = 0; i < 4; i++) {
- for (j = 0; j < i; j++) {
- GLboolean tmp = m[i * 4 + j];
- m[i * 4 + j] = m[j * 4 + i];
- m[j * 4 + i] = tmp;
- }
- }
-}
-
-/* Used for GL_ARB_transpose_matrix */
-static void
-TransposeMatrixd(GLdouble m[16])
-{
- int i, j;
- for (i = 0; i < 4; i++) {
- for (j = 0; j < i; j++) {
- GLdouble tmp = m[i * 4 + j];
- m[i * 4 + j] = m[j * 4 + i];
- m[j * 4 + i] = tmp;
- }
- }
-}
-
-/* Used for GL_ARB_transpose_matrix */
-static void
-TransposeMatrixi(GLint m[16])
-{
- int i, j;
- for (i = 0; i < 4; i++) {
- for (j = 0; j < i; j++) {
- GLint tmp = m[i * 4 + j];
- m[i * 4 + j] = m[j * 4 + i];
- m[j * 4 + i] = tmp;
- }
- }
-}
-
-
-/**
- * Remap a transpose-matrix enum to a non-transpose-matrix enum. Enums
- * that are not transpose-matrix enums are unaffected.
- */
-static GLenum
-RemapTransposeEnum(GLenum e)
-{
- switch (e) {
- case GL_TRANSPOSE_MODELVIEW_MATRIX:
- case GL_TRANSPOSE_PROJECTION_MATRIX:
- case GL_TRANSPOSE_TEXTURE_MATRIX:
- return e - (GL_TRANSPOSE_MODELVIEW_MATRIX - GL_MODELVIEW_MATRIX);
- case GL_TRANSPOSE_COLOR_MATRIX:
- return GL_COLOR_MATRIX;
- default:
- return e;
- };
-}
-
-
-GLenum
-__indirect_glGetError(void)
-{
- __GLX_SINGLE_DECLARE_VARIABLES();
- GLuint retval = GL_NO_ERROR;
- xGLXGetErrorReply reply;
-
- if (gc->error) {
- /* Use internal error first */
- retval = gc->error;
- gc->error = GL_NO_ERROR;
- return retval;
- }
-
- __GLX_SINGLE_LOAD_VARIABLES();
- __GLX_SINGLE_BEGIN(X_GLsop_GetError, 0);
- __GLX_SINGLE_READ_XREPLY();
- retval = reply.error;
- __GLX_SINGLE_END();
-
- return retval;
-}
-
-
-/**
- * Get the selected attribute from the client state.
- *
- * \returns
- * On success \c GL_TRUE is returned. Otherwise, \c GL_FALSE is returned.
- */
-static GLboolean
-get_client_data(__GLXcontext * gc, GLenum cap, GLintptr * data)
-{
- GLboolean retval = GL_TRUE;
- __GLXattribute *state = (__GLXattribute *) (gc->client_state_private);
- const GLint tex_unit = __glXGetActiveTextureUnit(state);
-
-
- switch (cap) {
- case GL_VERTEX_ARRAY:
- case GL_NORMAL_ARRAY:
- case GL_COLOR_ARRAY:
- case GL_INDEX_ARRAY:
- case GL_EDGE_FLAG_ARRAY:
- case GL_SECONDARY_COLOR_ARRAY:
- case GL_FOG_COORD_ARRAY:
- retval = __glXGetArrayEnable(state, cap, 0, data);
- break;
-
- case GL_VERTEX_ARRAY_SIZE:
- retval = __glXGetArraySize(state, GL_VERTEX_ARRAY, 0, data);
- break;
- case GL_COLOR_ARRAY_SIZE:
- retval = __glXGetArraySize(state, GL_COLOR_ARRAY, 0, data);
- break;
- case GL_SECONDARY_COLOR_ARRAY_SIZE:
- retval = __glXGetArraySize(state, GL_SECONDARY_COLOR_ARRAY, 0, data);
- break;
-
- case GL_VERTEX_ARRAY_TYPE:
- retval = __glXGetArrayType(state, GL_VERTEX_ARRAY, 0, data);
- break;
- case GL_NORMAL_ARRAY_TYPE:
- retval = __glXGetArrayType(state, GL_NORMAL_ARRAY, 0, data);
- break;
- case GL_INDEX_ARRAY_TYPE:
- retval = __glXGetArrayType(state, GL_INDEX_ARRAY, 0, data);
- break;
- case GL_COLOR_ARRAY_TYPE:
- retval = __glXGetArrayType(state, GL_COLOR_ARRAY, 0, data);
- break;
- case GL_SECONDARY_COLOR_ARRAY_TYPE:
- retval = __glXGetArrayType(state, GL_SECONDARY_COLOR_ARRAY, 0, data);
- break;
- case GL_FOG_COORD_ARRAY_TYPE:
- retval = __glXGetArrayType(state, GL_FOG_COORD_ARRAY, 0, data);
- break;
-
- case GL_VERTEX_ARRAY_STRIDE:
- retval = __glXGetArrayStride(state, GL_VERTEX_ARRAY, 0, data);
- break;
- case GL_NORMAL_ARRAY_STRIDE:
- retval = __glXGetArrayStride(state, GL_NORMAL_ARRAY, 0, data);
- break;
- case GL_INDEX_ARRAY_STRIDE:
- retval = __glXGetArrayStride(state, GL_INDEX_ARRAY, 0, data);
- break;
- case GL_EDGE_FLAG_ARRAY_STRIDE:
- retval = __glXGetArrayStride(state, GL_EDGE_FLAG_ARRAY, 0, data);
- break;
- case GL_COLOR_ARRAY_STRIDE:
- retval = __glXGetArrayStride(state, GL_COLOR_ARRAY, 0, data);
- break;
- case GL_SECONDARY_COLOR_ARRAY_STRIDE:
- retval = __glXGetArrayStride(state, GL_SECONDARY_COLOR_ARRAY, 0, data);
- break;
- case GL_FOG_COORD_ARRAY_STRIDE:
- retval = __glXGetArrayStride(state, GL_FOG_COORD_ARRAY, 0, data);
- break;
-
- case GL_TEXTURE_COORD_ARRAY:
- retval =
- __glXGetArrayEnable(state, GL_TEXTURE_COORD_ARRAY, tex_unit, data);
- break;
- case GL_TEXTURE_COORD_ARRAY_SIZE:
- retval =
- __glXGetArraySize(state, GL_TEXTURE_COORD_ARRAY, tex_unit, data);
- break;
- case GL_TEXTURE_COORD_ARRAY_TYPE:
- retval =
- __glXGetArrayType(state, GL_TEXTURE_COORD_ARRAY, tex_unit, data);
- break;
- case GL_TEXTURE_COORD_ARRAY_STRIDE:
- retval =
- __glXGetArrayStride(state, GL_TEXTURE_COORD_ARRAY, tex_unit, data);
- break;
-
- case GL_MAX_ELEMENTS_VERTICES:
- case GL_MAX_ELEMENTS_INDICES:
- retval = GL_TRUE;
- *data = ~0UL;
- break;
-
-
- case GL_PACK_ROW_LENGTH:
- *data = (GLintptr) state->storePack.rowLength;
- break;
- case GL_PACK_IMAGE_HEIGHT:
- *data = (GLintptr) state->storePack.imageHeight;
- break;
- case GL_PACK_SKIP_ROWS:
- *data = (GLintptr) state->storePack.skipRows;
- break;
- case GL_PACK_SKIP_PIXELS:
- *data = (GLintptr) state->storePack.skipPixels;
- break;
- case GL_PACK_SKIP_IMAGES:
- *data = (GLintptr) state->storePack.skipImages;
- break;
- case GL_PACK_ALIGNMENT:
- *data = (GLintptr) state->storePack.alignment;
- break;
- case GL_PACK_SWAP_BYTES:
- *data = (GLintptr) state->storePack.swapEndian;
- break;
- case GL_PACK_LSB_FIRST:
- *data = (GLintptr) state->storePack.lsbFirst;
- break;
- case GL_UNPACK_ROW_LENGTH:
- *data = (GLintptr) state->storeUnpack.rowLength;
- break;
- case GL_UNPACK_IMAGE_HEIGHT:
- *data = (GLintptr) state->storeUnpack.imageHeight;
- break;
- case GL_UNPACK_SKIP_ROWS:
- *data = (GLintptr) state->storeUnpack.skipRows;
- break;
- case GL_UNPACK_SKIP_PIXELS:
- *data = (GLintptr) state->storeUnpack.skipPixels;
- break;
- case GL_UNPACK_SKIP_IMAGES:
- *data = (GLintptr) state->storeUnpack.skipImages;
- break;
- case GL_UNPACK_ALIGNMENT:
- *data = (GLintptr) state->storeUnpack.alignment;
- break;
- case GL_UNPACK_SWAP_BYTES:
- *data = (GLintptr) state->storeUnpack.swapEndian;
- break;
- case GL_UNPACK_LSB_FIRST:
- *data = (GLintptr) state->storeUnpack.lsbFirst;
- break;
- case GL_CLIENT_ATTRIB_STACK_DEPTH:
- *data = (GLintptr) (gc->attributes.stackPointer - gc->attributes.stack);
- break;
- case GL_MAX_CLIENT_ATTRIB_STACK_DEPTH:
- *data = (GLintptr) __GL_CLIENT_ATTRIB_STACK_DEPTH;
- break;
- case GL_CLIENT_ACTIVE_TEXTURE:
- *data = (GLintptr) (tex_unit + GL_TEXTURE0);
- break;
-
- default:
- retval = GL_FALSE;
- break;
- }
-
-
- return retval;
-}
-
-
-void
-__indirect_glGetBooleanv(GLenum val, GLboolean * b)
-{
- const GLenum origVal = val;
- __GLX_SINGLE_DECLARE_VARIABLES();
- xGLXSingleReply reply;
-
- val = RemapTransposeEnum(val);
-
- __GLX_SINGLE_LOAD_VARIABLES();
- __GLX_SINGLE_BEGIN(X_GLsop_GetBooleanv, 4);
- __GLX_SINGLE_PUT_LONG(0, val);
- __GLX_SINGLE_READ_XREPLY();
- __GLX_SINGLE_GET_SIZE(compsize);
-
- if (compsize == 0) {
- /*
- ** Error occured; don't modify user's buffer.
- */
- }
- else {
- GLintptr data;
-
- /*
- ** We still needed to send the request to the server in order to
- ** find out whether it was legal to make a query (it's illegal,
- ** for example, to call a query between glBegin() and glEnd()).
- */
-
- if (get_client_data(gc, val, &data)) {
- *b = (GLboolean) data;
- }
- else {
- /*
- ** Not a local value, so use what we got from the server.
- */
- if (compsize == 1) {
- __GLX_SINGLE_GET_CHAR(b);
- }
- else {
- __GLX_SINGLE_GET_CHAR_ARRAY(b, compsize);
- if (val != origVal) {
- /* matrix transpose */
- TransposeMatrixb(b);
- }
- }
- }
- }
- __GLX_SINGLE_END();
-}
-
-void
-__indirect_glGetDoublev(GLenum val, GLdouble * d)
-{
- const GLenum origVal = val;
- __GLX_SINGLE_DECLARE_VARIABLES();
- xGLXSingleReply reply;
-
- val = RemapTransposeEnum(val);
-
- __GLX_SINGLE_LOAD_VARIABLES();
- __GLX_SINGLE_BEGIN(X_GLsop_GetDoublev, 4);
- __GLX_SINGLE_PUT_LONG(0, val);
- __GLX_SINGLE_READ_XREPLY();
- __GLX_SINGLE_GET_SIZE(compsize);
-
- if (compsize == 0) {
- /*
- ** Error occured; don't modify user's buffer.
- */
- }
- else {
- GLintptr data;
-
- /*
- ** We still needed to send the request to the server in order to
- ** find out whether it was legal to make a query (it's illegal,
- ** for example, to call a query between glBegin() and glEnd()).
- */
-
- if (get_client_data(gc, val, &data)) {
- *d = (GLdouble) data;
- }
- else {
- /*
- ** Not a local value, so use what we got from the server.
- */
- if (compsize == 1) {
- __GLX_SINGLE_GET_DOUBLE(d);
- }
- else {
- __GLX_SINGLE_GET_DOUBLE_ARRAY(d, compsize);
- if (val != origVal) {
- /* matrix transpose */
- TransposeMatrixd(d);
- }
- }
- }
- }
- __GLX_SINGLE_END();
-}
-
-void
-__indirect_glGetFloatv(GLenum val, GLfloat * f)
-{
- const GLenum origVal = val;
- __GLX_SINGLE_DECLARE_VARIABLES();
- xGLXSingleReply reply;
-
- val = RemapTransposeEnum(val);
-
- __GLX_SINGLE_LOAD_VARIABLES();
- __GLX_SINGLE_BEGIN(X_GLsop_GetFloatv, 4);
- __GLX_SINGLE_PUT_LONG(0, val);
- __GLX_SINGLE_READ_XREPLY();
- __GLX_SINGLE_GET_SIZE(compsize);
-
- if (compsize == 0) {
- /*
- ** Error occured; don't modify user's buffer.
- */
- }
- else {
- GLintptr data;
-
- /*
- ** We still needed to send the request to the server in order to
- ** find out whether it was legal to make a query (it's illegal,
- ** for example, to call a query between glBegin() and glEnd()).
- */
-
- if (get_client_data(gc, val, &data)) {
- *f = (GLfloat) data;
- }
- else {
- /*
- ** Not a local value, so use what we got from the server.
- */
- if (compsize == 1) {
- __GLX_SINGLE_GET_FLOAT(f);
- }
- else {
- __GLX_SINGLE_GET_FLOAT_ARRAY(f, compsize);
- if (val != origVal) {
- /* matrix transpose */
- TransposeMatrixf(f);
- }
- }
- }
- }
- __GLX_SINGLE_END();
-}
-
-void
-__indirect_glGetIntegerv(GLenum val, GLint * i)
-{
- const GLenum origVal = val;
- __GLX_SINGLE_DECLARE_VARIABLES();
- xGLXSingleReply reply;
-
- val = RemapTransposeEnum(val);
-
- __GLX_SINGLE_LOAD_VARIABLES();
- __GLX_SINGLE_BEGIN(X_GLsop_GetIntegerv, 4);
- __GLX_SINGLE_PUT_LONG(0, val);
- __GLX_SINGLE_READ_XREPLY();
- __GLX_SINGLE_GET_SIZE(compsize);
-
- if (compsize == 0) {
- /*
- ** Error occured; don't modify user's buffer.
- */
- }
- else {
- GLintptr data;
-
- /*
- ** We still needed to send the request to the server in order to
- ** find out whether it was legal to make a query (it's illegal,
- ** for example, to call a query between glBegin() and glEnd()).
- */
-
- if (get_client_data(gc, val, &data)) {
- *i = (GLint) data;
- }
- else {
- /*
- ** Not a local value, so use what we got from the server.
- */
- if (compsize == 1) {
- __GLX_SINGLE_GET_LONG(i);
- }
- else {
- __GLX_SINGLE_GET_LONG_ARRAY(i, compsize);
- if (val != origVal) {
- /* matrix transpose */
- TransposeMatrixi(i);
- }
- }
- }
- }
- __GLX_SINGLE_END();
-}
-
-/*
-** Send all pending commands to server.
-*/
-void
-__indirect_glFlush(void)
-{
- __GLX_SINGLE_DECLARE_VARIABLES();
-
- if (!dpy)
- return;
-
- __GLX_SINGLE_LOAD_VARIABLES();
- __GLX_SINGLE_BEGIN(X_GLsop_Flush, 0);
- __GLX_SINGLE_END();
-
- /* And finally flush the X protocol data */
- XFlush(dpy);
-}
-
-void
-__indirect_glFeedbackBuffer(GLsizei size, GLenum type, GLfloat * buffer)
-{
- __GLX_SINGLE_DECLARE_VARIABLES();
-
- if (!dpy)
- return;
-
- __GLX_SINGLE_LOAD_VARIABLES();
- __GLX_SINGLE_BEGIN(X_GLsop_FeedbackBuffer, 8);
- __GLX_SINGLE_PUT_LONG(0, size);
- __GLX_SINGLE_PUT_LONG(4, type);
- __GLX_SINGLE_END();
-
- gc->feedbackBuf = buffer;
-}
-
-void
-__indirect_glSelectBuffer(GLsizei numnames, GLuint * buffer)
-{
- __GLX_SINGLE_DECLARE_VARIABLES();
-
- if (!dpy)
- return;
-
- __GLX_SINGLE_LOAD_VARIABLES();
- __GLX_SINGLE_BEGIN(X_GLsop_SelectBuffer, 4);
- __GLX_SINGLE_PUT_LONG(0, numnames);
- __GLX_SINGLE_END();
-
- gc->selectBuf = buffer;
-}
-
-GLint
-__indirect_glRenderMode(GLenum mode)
-{
- __GLX_SINGLE_DECLARE_VARIABLES();
- GLint retval = 0;
- xGLXRenderModeReply reply;
-
- if (!dpy)
- return -1;
-
- __GLX_SINGLE_LOAD_VARIABLES();
- __GLX_SINGLE_BEGIN(X_GLsop_RenderMode, 4);
- __GLX_SINGLE_PUT_LONG(0, mode);
- __GLX_SINGLE_READ_XREPLY();
- __GLX_SINGLE_GET_RETVAL(retval, GLint);
-
- if (reply.newMode != mode) {
- /*
- ** Switch to new mode did not take effect, therefore an error
- ** occured. When an error happens the server won't send us any
- ** other data.
- */
- }
- else {
- /* Read the feedback or selection data */
- if (gc->renderMode == GL_FEEDBACK) {
- __GLX_SINGLE_GET_SIZE(compsize);
- __GLX_SINGLE_GET_FLOAT_ARRAY(gc->feedbackBuf, compsize);
- }
- else if (gc->renderMode == GL_SELECT) {
- __GLX_SINGLE_GET_SIZE(compsize);
- __GLX_SINGLE_GET_LONG_ARRAY(gc->selectBuf, compsize);
- }
- gc->renderMode = mode;
- }
- __GLX_SINGLE_END();
-
- return retval;
-}
-
-void
-__indirect_glFinish(void)
-{
- __GLX_SINGLE_DECLARE_VARIABLES();
- xGLXSingleReply reply;
-
- __GLX_SINGLE_LOAD_VARIABLES();
- __GLX_SINGLE_BEGIN(X_GLsop_Finish, 0);
- __GLX_SINGLE_READ_XREPLY();
- __GLX_SINGLE_END();
-}
-
-
-/**
- * Extract the major and minor version numbers from a version string.
- */
-static void
-version_from_string(const char *ver, int *major_version, int *minor_version)
-{
- const char *end;
- long major;
- long minor;
-
- major = strtol(ver, (char **) &end, 10);
- minor = strtol(end + 1, NULL, 10);
- *major_version = major;
- *minor_version = minor;
-}
-
-
-const GLubyte *
-__indirect_glGetString(GLenum name)
-{
- __GLXcontext *gc = __glXGetCurrentContext();
- Display *dpy = gc->currentDpy;
- GLubyte *s = NULL;
-
- if (!dpy)
- return 0;
-
- /*
- ** Return the cached copy if the string has already been fetched
- */
- switch (name) {
- case GL_VENDOR:
- if (gc->vendor)
- return gc->vendor;
- break;
- case GL_RENDERER:
- if (gc->renderer)
- return gc->renderer;
- break;
- case GL_VERSION:
- if (gc->version)
- return gc->version;
- break;
- case GL_EXTENSIONS:
- if (gc->extensions)
- return gc->extensions;
- break;
- default:
- __glXSetError(gc, GL_INVALID_ENUM);
- return 0;
- }
-
- /*
- ** Get requested string from server
- */
-
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- s = (GLubyte *) __glXGetString(dpy, gc->majorOpcode, gc->currentContextTag,
- name);
- if (!s) {
- /* Throw data on the floor */
- __glXSetError(gc, GL_OUT_OF_MEMORY);
- }
- else {
- /*
- ** Update local cache
- */
- switch (name) {
- case GL_VENDOR:
- gc->vendor = s;
- break;
-
- case GL_RENDERER:
- gc->renderer = s;
- break;
-
- case GL_VERSION:{
- int client_major;
- int client_minor;
-
- version_from_string((char *) s,
- &gc->server_major, &gc->server_minor);
- __glXGetGLVersion(&client_major, &client_minor);
-
- if ((gc->server_major < client_major)
- || ((gc->server_major == client_major)
- && (gc->server_minor <= client_minor))) {
- gc->version = s;
- }
- else {
- /* Allow 7 bytes for the client-side GL version. This allows
- * for upto version 999.999. I'm not holding my breath for
- * that one! The extra 4 is for the ' ()\0' that will be
- * added.
- */
- const size_t size = 7 + strlen((char *) s) + 4;
-
- gc->version = Xmalloc(size);
- if (gc->version == NULL) {
- /* If we couldn't allocate memory for the new string,
- * make a best-effort and just copy the client-side version
- * to the string and use that. It probably doesn't
- * matter what is done here. If there not memory available
- * for a short string, the system is probably going to die
- * soon anyway.
- */
- snprintf((char *) s, strlen((char *) s) + 1, "%u.%u",
- client_major, client_minor);
- gc->version = s;
- }
- else {
- snprintf((char *) gc->version, size, "%u.%u (%s)",
- client_major, client_minor, s);
- Xfree(s);
- s = gc->version;
- }
- }
- break;
- }
-
- case GL_EXTENSIONS:{
- int major = 1;
- int minor = 0;
-
- /* This code is currently disabled. I was reminded that some
- * vendors intentionally exclude some extensions from their
- * extension string that are part of the core version they
- * advertise. In particular, on Nvidia drivers this means that
- * the functionality is supported by the driver, but is not
- * hardware accelerated. For example, a TNT will show core
- * version 1.5, but most of the post-1.2 functionality is a
- * software fallback.
- *
- * I don't want to break applications that rely on this odd
- * behavior. At the same time, the code is written and tested,
- * so I didn't want to throw it away. Therefore, the code is here
- * but disabled. In the future, we may wish to and an environment
- * variable to enable it.
- */
-
-#if 0
- /* Call glGetString just to make sure that gc->server_major and
- * gc->server_minor are set. This version may be higher than we
- * can completely support, but it may imply support for some
- * extensions that we can support.
- *
- * For example, at the time of this writing, the client-side
- * library only supports upto core GL version 1.2. However, cubic
- * textures, multitexture, multisampling, and some other 1.3
- * features are supported. If the server reports back version
- * 1.3, but does not report all of those extensions, we will
- * enable them.
- */
- (void *) glGetString(GL_VERSION);
- major = gc->server_major, minor = gc->server_minor;
-#endif
-
- __glXCalculateUsableGLExtensions(gc, (char *) s, major, minor);
- XFree(s);
- s = gc->extensions;
- break;
- }
- }
- }
- return s;
-}
-
-GLboolean
-__indirect_glIsEnabled(GLenum cap)
-{
- __GLX_SINGLE_DECLARE_VARIABLES();
- __GLXattribute *state = (__GLXattribute *) (gc->client_state_private);
- xGLXSingleReply reply;
- GLboolean retval = 0;
- GLintptr enable;
-
- if (!dpy)
- return 0;
-
- switch (cap) {
- case GL_VERTEX_ARRAY:
- case GL_NORMAL_ARRAY:
- case GL_COLOR_ARRAY:
- case GL_INDEX_ARRAY:
- case GL_EDGE_FLAG_ARRAY:
- case GL_SECONDARY_COLOR_ARRAY:
- case GL_FOG_COORD_ARRAY:
- retval = __glXGetArrayEnable(state, cap, 0, &enable);
- assert(retval);
- return (GLboolean) enable;
- break;
- case GL_TEXTURE_COORD_ARRAY:
- retval = __glXGetArrayEnable(state, GL_TEXTURE_COORD_ARRAY,
- __glXGetActiveTextureUnit(state), &enable);
- assert(retval);
- return (GLboolean) enable;
- break;
- }
-
- __GLX_SINGLE_LOAD_VARIABLES();
- __GLX_SINGLE_BEGIN(X_GLsop_IsEnabled, 4);
- __GLX_SINGLE_PUT_LONG(0, cap);
- __GLX_SINGLE_READ_XREPLY();
- __GLX_SINGLE_GET_RETVAL(retval, GLboolean);
- __GLX_SINGLE_END();
- return retval;
-}
-
-void
-__indirect_glGetPointerv(GLenum pname, void **params)
-{
- __GLXcontext *gc = __glXGetCurrentContext();
- __GLXattribute *state = (__GLXattribute *) (gc->client_state_private);
- Display *dpy = gc->currentDpy;
-
- if (!dpy)
- return;
-
- switch (pname) {
- case GL_VERTEX_ARRAY_POINTER:
- case GL_NORMAL_ARRAY_POINTER:
- case GL_COLOR_ARRAY_POINTER:
- case GL_INDEX_ARRAY_POINTER:
- case GL_EDGE_FLAG_ARRAY_POINTER:
- __glXGetArrayPointer(state, pname - GL_VERTEX_ARRAY_POINTER
- + GL_VERTEX_ARRAY, 0, params);
- return;
- case GL_TEXTURE_COORD_ARRAY_POINTER:
- __glXGetArrayPointer(state, GL_TEXTURE_COORD_ARRAY,
- __glXGetActiveTextureUnit(state), params);
- return;
- case GL_SECONDARY_COLOR_ARRAY_POINTER:
- case GL_FOG_COORD_ARRAY_POINTER:
- __glXGetArrayPointer(state, pname - GL_FOG_COORD_ARRAY_POINTER
- + GL_FOG_COORD_ARRAY, 0, params);
- return;
- case GL_FEEDBACK_BUFFER_POINTER:
- *params = (void *) gc->feedbackBuf;
- return;
- case GL_SELECTION_BUFFER_POINTER:
- *params = (void *) gc->selectBuf;
- return;
- default:
- __glXSetError(gc, GL_INVALID_ENUM);
- return;
- }
-}
-
-
-
-/**
- * This was previously auto-generated, but we need to special-case
- * how we handle writing into the 'residences' buffer when n%4!=0.
- */
-#define X_GLsop_AreTexturesResident 143
-GLboolean
-__indirect_glAreTexturesResident(GLsizei n, const GLuint * textures,
- GLboolean * residences)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
- Display *const dpy = gc->currentDpy;
- GLboolean retval = (GLboolean) 0;
- const GLuint cmdlen = 4 + __GLX_PAD((n * 4));
- if (__builtin_expect((n >= 0) && (dpy != NULL), 1)) {
-#ifdef USE_XCB
- xcb_connection_t *c = XGetXCBConnection(dpy);
- (void) __glXFlushRenderBuffer(gc, gc->pc);
- xcb_glx_are_textures_resident_reply_t *reply =
- xcb_glx_are_textures_resident_reply(c,
- xcb_glx_are_textures_resident
- (c, gc->currentContextTag, n,
- textures), NULL);
- (void) memcpy(residences, xcb_glx_are_textures_resident_data(reply),
- xcb_glx_are_textures_resident_data_length(reply) *
- sizeof(GLboolean));
- retval = reply->ret_val;
- free(reply);
-#else
- GLubyte const *pc =
- __glXSetupSingleRequest(gc, X_GLsop_AreTexturesResident, cmdlen);
- (void) memcpy((void *) (pc + 0), (void *) (&n), 4);
- (void) memcpy((void *) (pc + 4), (void *) (textures), (n * 4));
- if (n & 3) {
- /* n is not a multiple of four.
- * When reply_is_always_array is TRUE, __glXReadReply() will
- * put a multiple of four bytes into the dest buffer. If the
- * caller's buffer is not a multiple of four in size, we'll write
- * out of bounds. So use a temporary buffer that's a few bytes
- * larger.
- */
- GLboolean *res4 = malloc((n + 3) & ~3);
- retval = (GLboolean) __glXReadReply(dpy, 1, res4, GL_TRUE);
- memcpy(residences, res4, n);
- free(res4);
- }
- else {
- retval = (GLboolean) __glXReadReply(dpy, 1, residences, GL_TRUE);
- }
- UnlockDisplay(dpy);
- SyncHandle();
-#endif /* USE_XCB */
- }
- return retval;
-}
-
-
-/**
- * This was previously auto-generated, but we need to special-case
- * how we handle writing into the 'residences' buffer when n%4!=0.
- */
-#define X_GLvop_AreTexturesResidentEXT 11
-GLboolean
-glAreTexturesResidentEXT(GLsizei n, const GLuint * textures,
- GLboolean * residences)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
-
- if (gc->isDirect) {
- return CALL_AreTexturesResident(GET_DISPATCH(),
- (n, textures, residences));
- }
- else {
- __GLXcontext *const gc = __glXGetCurrentContext();
- Display *const dpy = gc->currentDpy;
- GLboolean retval = (GLboolean) 0;
- const GLuint cmdlen = 4 + __GLX_PAD((n * 4));
- if (__builtin_expect((n >= 0) && (dpy != NULL), 1)) {
- GLubyte const *pc =
- __glXSetupVendorRequest(gc, X_GLXVendorPrivateWithReply,
- X_GLvop_AreTexturesResidentEXT,
- cmdlen);
- (void) memcpy((void *) (pc + 0), (void *) (&n), 4);
- (void) memcpy((void *) (pc + 4), (void *) (textures), (n * 4));
- if (n & 3) {
- /* see comments in __indirect_glAreTexturesResident() */
- GLboolean *res4 = malloc((n + 3) & ~3);
- retval = (GLboolean) __glXReadReply(dpy, 1, res4, GL_TRUE);
- memcpy(residences, res4, n);
- free(res4);
- }
- else {
- retval = (GLboolean) __glXReadReply(dpy, 1, residences, GL_TRUE);
- }
- UnlockDisplay(dpy);
- SyncHandle();
- }
- return retval;
- }
-}
diff --git a/src/glx/x11/singlepix.c b/src/glx/x11/singlepix.c
deleted file mode 100644
index f5ebf4dfdbf..00000000000
--- a/src/glx/x11/singlepix.c
+++ /dev/null
@@ -1,196 +0,0 @@
-/*
- * SGI FREE SOFTWARE LICENSE B (Version 2.0, Sept. 18, 2008)
- * Copyright (C) 1991-2000 Silicon Graphics, Inc. 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"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice including the dates of first publication and
- * either this permission notice or a reference to
- * http://oss.sgi.com/projects/FreeB/
- * shall be included in all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * SILICON GRAPHICS, INC. BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
- * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
- * OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- *
- * Except as contained in this notice, the name of Silicon Graphics, Inc.
- * shall not be used in advertising or otherwise to promote the sale, use or
- * other dealings in this Software without prior written authorization from
- * Silicon Graphics, Inc.
- */
-
-#include "packsingle.h"
-#include "indirect.h"
-#include "glapitable.h"
-#include "glapidispatch.h"
-#include "glapi.h"
-#include "glthread.h"
-#include "glapioffsets.h"
-#include <GL/glxproto.h>
-
-void
-__indirect_glGetSeparableFilter(GLenum target, GLenum format, GLenum type,
- GLvoid * row, GLvoid * column, GLvoid * span)
-{
- __GLX_SINGLE_DECLARE_VARIABLES();
- const __GLXattribute *state;
- xGLXGetSeparableFilterReply reply;
- GLubyte *rowBuf, *colBuf;
-
- if (!dpy)
- return;
- __GLX_SINGLE_LOAD_VARIABLES();
- state = gc->client_state_private;
-
- /* Send request */
- __GLX_SINGLE_BEGIN(X_GLsop_GetSeparableFilter, __GLX_PAD(13));
- __GLX_SINGLE_PUT_LONG(0, target);
- __GLX_SINGLE_PUT_LONG(4, format);
- __GLX_SINGLE_PUT_LONG(8, type);
- __GLX_SINGLE_PUT_CHAR(12, state->storePack.swapEndian);
- __GLX_SINGLE_READ_XREPLY();
- compsize = reply.length << 2;
-
- if (compsize != 0) {
- GLint width, height;
- GLint widthsize, heightsize;
-
- width = reply.width;
- height = reply.height;
-
- widthsize = __glImageSize(width, 1, 1, format, type, 0);
- heightsize = __glImageSize(height, 1, 1, format, type, 0);
-
- /* Allocate a holding buffer to transform the data from */
- rowBuf = (GLubyte *) Xmalloc(widthsize);
- if (!rowBuf) {
- /* Throw data away */
- _XEatData(dpy, compsize);
- __glXSetError(gc, GL_OUT_OF_MEMORY);
- UnlockDisplay(dpy);
- SyncHandle();
- return;
- }
- else {
- __GLX_SINGLE_GET_CHAR_ARRAY(((char *) rowBuf), widthsize);
- __glEmptyImage(gc, 1, width, 1, 1, format, type, rowBuf, row);
- Xfree((char *) rowBuf);
- }
- colBuf = (GLubyte *) Xmalloc(heightsize);
- if (!colBuf) {
- /* Throw data away */
- _XEatData(dpy, compsize - __GLX_PAD(widthsize));
- __glXSetError(gc, GL_OUT_OF_MEMORY);
- UnlockDisplay(dpy);
- SyncHandle();
- return;
- }
- else {
- __GLX_SINGLE_GET_CHAR_ARRAY(((char *) colBuf), heightsize);
- __glEmptyImage(gc, 1, height, 1, 1, format, type, colBuf, column);
- Xfree((char *) colBuf);
- }
- }
- else {
- /*
- ** don't modify user's buffer.
- */
- }
- __GLX_SINGLE_END();
-
-}
-
-
-#define CONCAT(a,b) a ## b
-#define NAME(o) CONCAT(gl_dispatch_stub_, o)
-
-void NAME(_gloffset_GetSeparableFilter) (GLenum target, GLenum format,
- GLenum type, GLvoid * row,
- GLvoid * column, GLvoid * span)
-{
- __GLXcontext *const gc = __glXGetCurrentContext();
-
-#ifdef GLX_DIRECT_RENDERING
- if (gc->driContext) {
- CALL_GetSeparableFilter(GET_DISPATCH(),
- (target, format, type, row, column, span));
- return;
- }
- else
-#endif
- {
- Display *const dpy = gc->currentDpy;
- const GLuint cmdlen = __GLX_PAD(13);
-
- if (dpy != NULL) {
- const __GLXattribute *const state = gc->client_state_private;
- xGLXGetSeparableFilterReply reply;
- GLubyte const *pc =
- __glXSetupVendorRequest(gc, X_GLXVendorPrivateWithReply,
- X_GLvop_GetSeparableFilterEXT, cmdlen);
- unsigned compsize;
-
-
- (void) memcpy((void *) (pc + 0), (void *) (&target), 4);
- (void) memcpy((void *) (pc + 4), (void *) (&format), 4);
- (void) memcpy((void *) (pc + 8), (void *) (&type), 4);
- *(int8_t *) (pc + 12) = state->storePack.swapEndian;
-
- (void) _XReply(dpy, (xReply *) & reply, 0, False);
-
- compsize = reply.length << 2;
-
- if (compsize != 0) {
- const GLint width = reply.width;
- const GLint height = reply.height;
- const GLint widthsize =
- __glImageSize(width, 1, 1, format, type, 0);
- const GLint heightsize =
- __glImageSize(height, 1, 1, format, type, 0);
- GLubyte *const buf =
- (GLubyte *) Xmalloc((widthsize > heightsize) ? widthsize :
- heightsize);
-
- if (buf == NULL) {
- /* Throw data away */
- _XEatData(dpy, compsize);
- __glXSetError(gc, GL_OUT_OF_MEMORY);
-
- UnlockDisplay(dpy);
- SyncHandle();
- return;
- }
- else {
- int extra;
-
- extra = 4 - (widthsize & 3);
- _XRead(dpy, (char *) buf, widthsize);
- if (extra < 4) {
- _XEatData(dpy, extra);
- }
-
- __glEmptyImage(gc, 1, width, 1, 1, format, type, buf, row);
-
- extra = 4 - (heightsize & 3);
- _XRead(dpy, (char *) buf, heightsize);
- if (extra < 4) {
- _XEatData(dpy, extra);
- }
-
- __glEmptyImage(gc, 1, height, 1, 1, format, type, buf, column);
-
- Xfree((char *) buf);
- }
- }
- }
- }
-}
diff --git a/src/glx/x11/vertarr.c b/src/glx/x11/vertarr.c
deleted file mode 100644
index 398cfb1e796..00000000000
--- a/src/glx/x11/vertarr.c
+++ /dev/null
@@ -1,212 +0,0 @@
-/*
- * SGI FREE SOFTWARE LICENSE B (Version 2.0, Sept. 18, 2008)
- * Copyright (C) 1991-2000 Silicon Graphics, Inc. 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"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice including the dates of first publication and
- * either this permission notice or a reference to
- * http://oss.sgi.com/projects/FreeB/
- * shall be included in all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * SILICON GRAPHICS, INC. BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
- * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
- * OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- *
- * Except as contained in this notice, the name of Silicon Graphics, Inc.
- * shall not be used in advertising or otherwise to promote the sale, use or
- * other dealings in this Software without prior written authorization from
- * Silicon Graphics, Inc.
- */
-
-#include "glxclient.h"
-#include "indirect.h"
-#include "indirect_vertex_array.h"
-
-
-/*****************************************************************************/
-
-/**
- * \name Vertex array pointer bridge functions
- *
- * When EXT_vertex_array was moved into the core GL spec, the \c count
- * parameter was lost. This libGL really only wants to implement the GL 1.1
- * version, but we need to support applications that were written to the old
- * interface. These bridge functions are part of the glue that makes this
- * happen.
- */
-/*@{*/
-void
-__indirect_glColorPointerEXT(GLint size, GLenum type, GLsizei stride,
- GLsizei count, const GLvoid * pointer)
-{
- (void) count;
- __indirect_glColorPointer(size, type, stride, pointer);
-}
-
-void
-__indirect_glEdgeFlagPointerEXT(GLsizei stride,
- GLsizei count, const GLboolean * pointer)
-{
- (void) count;
- __indirect_glEdgeFlagPointer(stride, pointer);
-}
-
-void
-__indirect_glIndexPointerEXT(GLenum type, GLsizei stride,
- GLsizei count, const GLvoid * pointer)
-{
- (void) count;
- __indirect_glIndexPointer(type, stride, pointer);
-}
-
-void
-__indirect_glNormalPointerEXT(GLenum type, GLsizei stride, GLsizei count,
- const GLvoid * pointer)
-{
- (void) count;
- __indirect_glNormalPointer(type, stride, pointer);
-}
-
-void
-__indirect_glTexCoordPointerEXT(GLint size, GLenum type, GLsizei stride,
- GLsizei count, const GLvoid * pointer)
-{
- (void) count;
- __indirect_glTexCoordPointer(size, type, stride, pointer);
-}
-
-void
-__indirect_glVertexPointerEXT(GLint size, GLenum type, GLsizei stride,
- GLsizei count, const GLvoid * pointer)
-{
- (void) count;
- __indirect_glVertexPointer(size, type, stride, pointer);
-}
-
-/*@}*/
-
-/*****************************************************************************/
-
-void
-__indirect_glInterleavedArrays(GLenum format, GLsizei stride,
- const GLvoid * pointer)
-{
- __GLXcontext *gc = __glXGetCurrentContext();
- __GLXattribute *state = (__GLXattribute *) (gc->client_state_private);
-
-#define NONE {0, 0, 0}
-#define F(x) {GL_FLOAT, x, x * sizeof(GLfloat)}
-#define UB4 {GL_UNSIGNED_BYTE, 4, 4 * sizeof(GLubyte)}
-
- /* Each row in this array describes the elements of a particular
- * interleaved array mode. Each column describes, in the order in which
- * they appear in the interleaved arrays, one of the four possible types
- * of vertex data that can appear in an interleaved array.
- */
- struct
- {
- /**
- * The enum describing the GL type, as would be passed to the
- * appropriate gl*Pointer function.
- */
- GLushort type;
-
- /**
- * Number of elements in the subarray, as would be passed (as the
- * \c size parameter) to the appropriate gl*Pointer function.
- */
- GLubyte count;
-
- /**
- * True size of a single element in the subarray, as would be passed
- * (as the \c stride parameter) to the appropriate gl*Pointer
- * function.
- */
- GLubyte size;
- }
- static const modes[14][4] = {
- /* texture color normal vertex */
- {NONE, NONE, NONE, F(2)}, /* GL_V2F */
- {NONE, NONE, NONE, F(3)}, /* GL_V3F */
- {NONE, UB4, NONE, F(2)}, /* GL_C4UB_V2F */
- {NONE, UB4, NONE, F(3)}, /* GL_C4UB_V3F */
- {NONE, F(3), NONE, F(3)}, /* GL_C3F_V3F */
- {NONE, NONE, F(3), F(3)}, /* GL_N3F_V3F */
- {NONE, F(4), F(3), F(3)}, /* GL_C4F_N3F_V3F */
- {F(2), NONE, NONE, F(3)}, /* GL_T2F_V3F */
- {F(4), NONE, NONE, F(4)}, /* GL_T4F_V4F */
- {F(2), UB4, NONE, F(3)}, /* GL_T2F_C4UB_V3F */
- {F(2), F(3), NONE, F(3)}, /* GL_T2F_C3F_V3F */
- {F(2), NONE, F(3), F(3)}, /* GL_T2F_N3F_V3F */
- {F(2), F(4), F(3), F(3)}, /* GL_T2F_C4F_N3F_V3F */
- {F(4), F(4), F(3), F(4)}, /* GL_T4F_C4F_N3F_V4F */
- };
-#undef NONE
-#undef F
-#undef UB4
-
- GLint trueStride, size;
- int offsets[4];
- unsigned i;
- const int idx = format - GL_V2F;
-
-
- /* All valid formats are on the range [GL_V2F, GL_V2F+0x0D]. Since idx
- * is just the format biased by -GL_V2F, all valid idx values are on the
- * range [0, 0x0D].
- */
- if ((idx < 0) || (idx > 0x0D)) {
- __glXSetError(gc, GL_INVALID_ENUM);
- return;
- }
-
- if (stride < 0) {
- __glXSetError(gc, GL_INVALID_VALUE);
- return;
- }
-
-
- /* If the 'count' for a subarray is non-zero, then the offset of its
- * first element is at the currently accumulated 'size'.
- */
- size = 0;
- for (i = 0; i < 4; i++) {
- offsets[i] = (modes[idx][i].count != 0) ? size : -1;
- size += modes[idx][i].size;
- }
-
- trueStride = (stride == 0) ? size : stride;
-
- __glXArrayDisableAll(state);
-
- if (offsets[0] >= 0) {
- __indirect_glEnableClientState(GL_TEXTURE_COORD_ARRAY);
- __indirect_glTexCoordPointer(modes[idx][0].count, GL_FLOAT,
- trueStride, (const char *) pointer);
- }
- if (offsets[1] >= 0) {
- __indirect_glEnableClientState(GL_COLOR_ARRAY);
- __indirect_glColorPointer(modes[idx][1].count, modes[idx][1].type,
- trueStride,
- (const char *) pointer + offsets[1]);
- }
- if (offsets[2] >= 0) {
- __indirect_glEnableClientState(GL_NORMAL_ARRAY);
- __indirect_glNormalPointer(GL_FLOAT, trueStride,
- (const char *) pointer + offsets[2]);
- }
- __indirect_glEnableClientState(GL_VERTEX_ARRAY);
- __indirect_glVertexPointer(modes[idx][3].count, GL_FLOAT,
- trueStride,
- (const char *) pointer + offsets[3]);
-}
diff --git a/src/glx/x11/xf86dri.h b/src/glx/x11/xf86dri.h
deleted file mode 100644
index ba266003f70..00000000000
--- a/src/glx/x11/xf86dri.h
+++ /dev/null
@@ -1,124 +0,0 @@
-/**************************************************************************
-
-Copyright 1998-1999 Precision Insight, Inc., Cedar Park, Texas.
-Copyright 2000 VA Linux Systems, Inc.
-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"), to deal in the Software without restriction, including
-without limitation the rights to use, copy, modify, merge, publish,
-distribute, sub license, and/or sell copies of the Software, and to
-permit persons to whom the Software is furnished to do so, subject to
-the following conditions:
-
-The above copyright notice and this permission notice (including the
-next paragraph) shall be included in all copies or substantial portions
-of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
-IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
-ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
-TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
-SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-**************************************************************************/
-
-/**
- * \file xf86dri.h
- * Protocol numbers and function prototypes for DRI X protocol.
- *
- * \author Kevin E. Martin <[email protected]>
- * \author Jens Owen <[email protected]>
- * \author Rickard E. (Rik) Faith <[email protected]>
- */
-
-#ifndef _XF86DRI_H_
-#define _XF86DRI_H_
-
-#include <X11/Xfuncproto.h>
-#include <xf86drm.h>
-
-#define X_XF86DRIQueryVersion 0
-#define X_XF86DRIQueryDirectRenderingCapable 1
-#define X_XF86DRIOpenConnection 2
-#define X_XF86DRICloseConnection 3
-#define X_XF86DRIGetClientDriverName 4
-#define X_XF86DRICreateContext 5
-#define X_XF86DRIDestroyContext 6
-#define X_XF86DRICreateDrawable 7
-#define X_XF86DRIDestroyDrawable 8
-#define X_XF86DRIGetDrawableInfo 9
-#define X_XF86DRIGetDeviceInfo 10
-#define X_XF86DRIAuthConnection 11
-#define X_XF86DRIOpenFullScreen 12 /* Deprecated */
-#define X_XF86DRICloseFullScreen 13 /* Deprecated */
-
-#define XF86DRINumberEvents 0
-
-#define XF86DRIClientNotLocal 0
-#define XF86DRIOperationNotSupported 1
-#define XF86DRINumberErrors (XF86DRIOperationNotSupported + 1)
-
-#ifndef _XF86DRI_SERVER_
-
-_XFUNCPROTOBEGIN
- Bool XF86DRIQueryExtension(Display * dpy, int *event_base,
- int *error_base);
-
-Bool XF86DRIQueryVersion(Display * dpy, int *majorVersion, int *minorVersion,
- int *patchVersion);
-
-Bool XF86DRIQueryDirectRenderingCapable(Display * dpy, int screen,
- Bool * isCapable);
-
-Bool XF86DRIOpenConnection(Display * dpy, int screen, drm_handle_t * hSAREA,
- char **busIDString);
-
-Bool XF86DRIAuthConnection(Display * dpy, int screen, drm_magic_t magic);
-
-Bool XF86DRICloseConnection(Display * dpy, int screen);
-
-Bool XF86DRIGetClientDriverName(Display * dpy, int screen,
- int *ddxDriverMajorVersion,
- int *ddxDriverMinorVersion,
- int *ddxDriverPatchVersion,
- char **clientDriverName);
-
-Bool XF86DRICreateContext(Display * dpy, int screen, Visual * visual,
- XID * ptr_to_returned_context_id,
- drm_context_t * hHWContext);
-
-Bool XF86DRICreateContextWithConfig(Display * dpy, int screen, int configID,
- XID * ptr_to_returned_context_id,
- drm_context_t * hHWContext);
-
-extern Bool XF86DRIDestroyContext(Display * dpy, int screen, XID context_id);
-
-extern Bool XF86DRICreateDrawable(Display * dpy, int screen,
- XID drawable, drm_drawable_t * hHWDrawable);
-
-extern Bool XF86DRIDestroyDrawable(Display * dpy, int screen, XID drawable);
-
-Bool XF86DRIGetDrawableInfo(Display * dpy, int screen, Drawable drawable,
- unsigned int *index, unsigned int *stamp,
- int *X, int *Y, int *W, int *H,
- int *numClipRects, drm_clip_rect_t ** pClipRects,
- int *backX, int *backY,
- int *numBackClipRects,
- drm_clip_rect_t ** pBackClipRects);
-
-Bool XF86DRIGetDeviceInfo(Display * dpy, int screen,
- drm_handle_t * hFrameBuffer, int *fbOrigin,
- int *fbSize, int *fbStride, int *devPrivateSize,
- void **pDevPrivate);
-
-Bool XF86DRIOpenFullScreen(Display * dpy, int screen, Drawable drawable);
-
-Bool XF86DRICloseFullScreen(Display * dpy, int screen, Drawable drawable);
-
-_XFUNCPROTOEND
-#endif /* _XF86DRI_SERVER_ */
-#endif /* _XF86DRI_H_ */
diff --git a/src/glx/x11/xf86dristr.h b/src/glx/x11/xf86dristr.h
deleted file mode 100644
index c8fbe9d4c70..00000000000
--- a/src/glx/x11/xf86dristr.h
+++ /dev/null
@@ -1,367 +0,0 @@
-/**************************************************************************
-
-Copyright 1998-1999 Precision Insight, Inc., Cedar Park, Texas.
-Copyright 2000 VA Linux Systems, Inc.
-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"), to deal in the Software without restriction, including
-without limitation the rights to use, copy, modify, merge, publish,
-distribute, sub license, and/or sell copies of the Software, and to
-permit persons to whom the Software is furnished to do so, subject to
-the following conditions:
-
-The above copyright notice and this permission notice (including the
-next paragraph) shall be included in all copies or substantial portions
-of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
-IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
-ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
-TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
-SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-**************************************************************************/
-
-/*
- * Authors:
- * Kevin E. Martin <[email protected]>
- * Jens Owen <[email protected]>
- * Rickard E. (Rik) Fiath <[email protected]>
- *
- */
-
-#ifndef _XF86DRISTR_H_
-#define _XF86DRISTR_H_
-
-#include "xf86dri.h"
-
-#define XF86DRINAME "XFree86-DRI"
-
-/* The DRI version number. This was originally set to be the same of the
- * XFree86 version number. However, this version is really indepedent of
- * the XFree86 version.
- *
- * Version History:
- * 4.0.0: Original
- * 4.0.1: Patch to bump clipstamp when windows are destroyed, 28 May 02
- * 4.1.0: Add transition from single to multi in DRMInfo rec, 24 Jun 02
- */
-#define XF86DRI_MAJOR_VERSION 4
-#define XF86DRI_MINOR_VERSION 1
-#define XF86DRI_PATCH_VERSION 0
-
-typedef struct _XF86DRIQueryVersion
-{
- CARD8 reqType; /* always DRIReqCode */
- CARD8 driReqType; /* always X_DRIQueryVersion */
- CARD16 length B16;
-} xXF86DRIQueryVersionReq;
-#define sz_xXF86DRIQueryVersionReq 4
-
-typedef struct
-{
- BYTE type; /* X_Reply */
- BOOL pad1;
- CARD16 sequenceNumber B16;
- CARD32 length B32;
- CARD16 majorVersion B16; /* major version of DRI protocol */
- CARD16 minorVersion B16; /* minor version of DRI protocol */
- CARD32 patchVersion B32; /* patch version of DRI protocol */
- CARD32 pad3 B32;
- CARD32 pad4 B32;
- CARD32 pad5 B32;
- CARD32 pad6 B32;
-} xXF86DRIQueryVersionReply;
-#define sz_xXF86DRIQueryVersionReply 32
-
-typedef struct _XF86DRIQueryDirectRenderingCapable
-{
- CARD8 reqType; /* always DRIReqCode */
- CARD8 driReqType; /* X_DRIQueryDirectRenderingCapable */
- CARD16 length B16;
- CARD32 screen B32;
-} xXF86DRIQueryDirectRenderingCapableReq;
-#define sz_xXF86DRIQueryDirectRenderingCapableReq 8
-
-typedef struct
-{
- BYTE type; /* X_Reply */
- BOOL pad1;
- CARD16 sequenceNumber B16;
- CARD32 length B32;
- BOOL isCapable;
- BOOL pad2;
- BOOL pad3;
- BOOL pad4;
- CARD32 pad5 B32;
- CARD32 pad6 B32;
- CARD32 pad7 B32;
- CARD32 pad8 B32;
- CARD32 pad9 B32;
-} xXF86DRIQueryDirectRenderingCapableReply;
-#define sz_xXF86DRIQueryDirectRenderingCapableReply 32
-
-typedef struct _XF86DRIOpenConnection
-{
- CARD8 reqType; /* always DRIReqCode */
- CARD8 driReqType; /* always X_DRIOpenConnection */
- CARD16 length B16;
- CARD32 screen B32;
-} xXF86DRIOpenConnectionReq;
-#define sz_xXF86DRIOpenConnectionReq 8
-
-typedef struct
-{
- BYTE type; /* X_Reply */
- BOOL pad1;
- CARD16 sequenceNumber B16;
- CARD32 length B32;
- CARD32 hSAREALow B32;
- CARD32 hSAREAHigh B32;
- CARD32 busIdStringLength B32;
- CARD32 pad6 B32;
- CARD32 pad7 B32;
- CARD32 pad8 B32;
-} xXF86DRIOpenConnectionReply;
-#define sz_xXF86DRIOpenConnectionReply 32
-
-typedef struct _XF86DRIAuthConnection
-{
- CARD8 reqType; /* always DRIReqCode */
- CARD8 driReqType; /* always X_DRICloseConnection */
- CARD16 length B16;
- CARD32 screen B32;
- CARD32 magic B32;
-} xXF86DRIAuthConnectionReq;
-#define sz_xXF86DRIAuthConnectionReq 12
-
-typedef struct
-{
- BYTE type;
- BOOL pad1;
- CARD16 sequenceNumber B16;
- CARD32 length B32;
- CARD32 authenticated B32;
- CARD32 pad2 B32;
- CARD32 pad3 B32;
- CARD32 pad4 B32;
- CARD32 pad5 B32;
- CARD32 pad6 B32;
-} xXF86DRIAuthConnectionReply;
-#define zx_xXF86DRIAuthConnectionReply 32
-
-typedef struct _XF86DRICloseConnection
-{
- CARD8 reqType; /* always DRIReqCode */
- CARD8 driReqType; /* always X_DRICloseConnection */
- CARD16 length B16;
- CARD32 screen B32;
-} xXF86DRICloseConnectionReq;
-#define sz_xXF86DRICloseConnectionReq 8
-
-typedef struct _XF86DRIGetClientDriverName
-{
- CARD8 reqType; /* always DRIReqCode */
- CARD8 driReqType; /* always X_DRIGetClientDriverName */
- CARD16 length B16;
- CARD32 screen B32;
-} xXF86DRIGetClientDriverNameReq;
-#define sz_xXF86DRIGetClientDriverNameReq 8
-
-typedef struct
-{
- BYTE type; /* X_Reply */
- BOOL pad1;
- CARD16 sequenceNumber B16;
- CARD32 length B32;
- CARD32 ddxDriverMajorVersion B32;
- CARD32 ddxDriverMinorVersion B32;
- CARD32 ddxDriverPatchVersion B32;
- CARD32 clientDriverNameLength B32;
- CARD32 pad5 B32;
- CARD32 pad6 B32;
-} xXF86DRIGetClientDriverNameReply;
-#define sz_xXF86DRIGetClientDriverNameReply 32
-
-typedef struct _XF86DRICreateContext
-{
- CARD8 reqType; /* always DRIReqCode */
- CARD8 driReqType; /* always X_DRICreateContext */
- CARD16 length B16;
- CARD32 screen B32;
- CARD32 visual B32;
- CARD32 context B32;
-} xXF86DRICreateContextReq;
-#define sz_xXF86DRICreateContextReq 16
-
-typedef struct
-{
- BYTE type; /* X_Reply */
- BOOL pad1;
- CARD16 sequenceNumber B16;
- CARD32 length B32;
- CARD32 hHWContext B32;
- CARD32 pad2 B32;
- CARD32 pad3 B32;
- CARD32 pad4 B32;
- CARD32 pad5 B32;
- CARD32 pad6 B32;
-} xXF86DRICreateContextReply;
-#define sz_xXF86DRICreateContextReply 32
-
-typedef struct _XF86DRIDestroyContext
-{
- CARD8 reqType; /* always DRIReqCode */
- CARD8 driReqType; /* always X_DRIDestroyContext */
- CARD16 length B16;
- CARD32 screen B32;
- CARD32 context B32;
-} xXF86DRIDestroyContextReq;
-#define sz_xXF86DRIDestroyContextReq 12
-
-typedef struct _XF86DRICreateDrawable
-{
- CARD8 reqType; /* always DRIReqCode */
- CARD8 driReqType; /* always X_DRICreateDrawable */
- CARD16 length B16;
- CARD32 screen B32;
- CARD32 drawable B32;
-} xXF86DRICreateDrawableReq;
-#define sz_xXF86DRICreateDrawableReq 12
-
-typedef struct
-{
- BYTE type; /* X_Reply */
- BOOL pad1;
- CARD16 sequenceNumber B16;
- CARD32 length B32;
- CARD32 hHWDrawable B32;
- CARD32 pad2 B32;
- CARD32 pad3 B32;
- CARD32 pad4 B32;
- CARD32 pad5 B32;
- CARD32 pad6 B32;
-} xXF86DRICreateDrawableReply;
-#define sz_xXF86DRICreateDrawableReply 32
-
-typedef struct _XF86DRIDestroyDrawable
-{
- CARD8 reqType; /* always DRIReqCode */
- CARD8 driReqType; /* always X_DRIDestroyDrawable */
- CARD16 length B16;
- CARD32 screen B32;
- CARD32 drawable B32;
-} xXF86DRIDestroyDrawableReq;
-#define sz_xXF86DRIDestroyDrawableReq 12
-
-typedef struct _XF86DRIGetDrawableInfo
-{
- CARD8 reqType; /* always DRIReqCode */
- CARD8 driReqType; /* always X_DRIGetDrawableInfo */
- CARD16 length B16;
- CARD32 screen B32;
- CARD32 drawable B32;
-} xXF86DRIGetDrawableInfoReq;
-#define sz_xXF86DRIGetDrawableInfoReq 12
-
-typedef struct
-{
- BYTE type; /* X_Reply */
- BOOL pad1;
- CARD16 sequenceNumber B16;
- CARD32 length B32;
- CARD32 drawableTableIndex B32;
- CARD32 drawableTableStamp B32;
- INT16 drawableX B16;
- INT16 drawableY B16;
- INT16 drawableWidth B16;
- INT16 drawableHeight B16;
- CARD32 numClipRects B32;
- INT16 backX B16;
- INT16 backY B16;
- CARD32 numBackClipRects B32;
-} xXF86DRIGetDrawableInfoReply;
-
-#define sz_xXF86DRIGetDrawableInfoReply 36
-
-
-typedef struct _XF86DRIGetDeviceInfo
-{
- CARD8 reqType; /* always DRIReqCode */
- CARD8 driReqType; /* always X_DRIGetDeviceInfo */
- CARD16 length B16;
- CARD32 screen B32;
-} xXF86DRIGetDeviceInfoReq;
-#define sz_xXF86DRIGetDeviceInfoReq 8
-
-typedef struct
-{
- BYTE type; /* X_Reply */
- BOOL pad1;
- CARD16 sequenceNumber B16;
- CARD32 length B32;
- CARD32 hFrameBufferLow B32;
- CARD32 hFrameBufferHigh B32;
- CARD32 framebufferOrigin B32;
- CARD32 framebufferSize B32;
- CARD32 framebufferStride B32;
- CARD32 devPrivateSize B32;
-} xXF86DRIGetDeviceInfoReply;
-#define sz_xXF86DRIGetDeviceInfoReply 32
-
-typedef struct _XF86DRIOpenFullScreen
-{
- CARD8 reqType; /* always DRIReqCode */
- CARD8 driReqType; /* always X_DRIOpenFullScreen */
- CARD16 length B16;
- CARD32 screen B32;
- CARD32 drawable B32;
-} xXF86DRIOpenFullScreenReq;
-#define sz_xXF86DRIOpenFullScreenReq 12
-
-typedef struct
-{
- BYTE type;
- BOOL pad1;
- CARD16 sequenceNumber B16;
- CARD32 length B32;
- CARD32 isFullScreen B32;
- CARD32 pad2 B32;
- CARD32 pad3 B32;
- CARD32 pad4 B32;
- CARD32 pad5 B32;
- CARD32 pad6 B32;
-} xXF86DRIOpenFullScreenReply;
-#define sz_xXF86DRIOpenFullScreenReply 32
-
-typedef struct _XF86DRICloseFullScreen
-{
- CARD8 reqType; /* always DRIReqCode */
- CARD8 driReqType; /* always X_DRICloseFullScreen */
- CARD16 length B16;
- CARD32 screen B32;
- CARD32 drawable B32;
-} xXF86DRICloseFullScreenReq;
-#define sz_xXF86DRICloseFullScreenReq 12
-
-typedef struct
-{
- BYTE type;
- BOOL pad1;
- CARD16 sequenceNumber B16;
- CARD32 length B32;
- CARD32 pad2 B32;
- CARD32 pad3 B32;
- CARD32 pad4 B32;
- CARD32 pad5 B32;
- CARD32 pad6 B32;
- CARD32 pad7 B32;
-} xXF86DRICloseFullScreenReply;
-#define sz_xXF86DRICloseFullScreenReply 32
-
-
-#endif /* _XF86DRISTR_H_ */
diff --git a/src/glx/x11/xfont.c b/src/glx/x11/xfont.c
deleted file mode 100644
index 797fd7a4900..00000000000
--- a/src/glx/x11/xfont.c
+++ /dev/null
@@ -1,377 +0,0 @@
-/*
- * Mesa 3-D graphics library
- * Version: 3.1
- *
- * Copyright (C) 1999 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"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included
- * in all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
- * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- */
-
-
-/* xfonts.c -- glXUseXFont() for Mesa written by
- * Copyright (C) 1995 Thorsten.Ohl @ Physik.TH-Darmstadt.de
- */
-
-/*
- This was take from Mesa and modified to work in the real GLX structure.
- It provides a fully client side implementation of glXUseXFont and is
- called by that routine when direct rendering is enabled.
-*/
-
-#ifdef GLX_DIRECT_RENDERING
-
-#include "glxclient.h"
-
-/* Some debugging info. */
-
-#ifdef DEBUG
-#undef _R
-#undef _G
-#undef _B
-#include <ctype.h>
-
-int debug_xfonts = 0;
-
-static void
-dump_char_struct(XCharStruct * ch, char *prefix)
-{
- printf("%slbearing = %d, rbearing = %d, width = %d\n",
- prefix, ch->lbearing, ch->rbearing, ch->width);
- printf("%sascent = %d, descent = %d, attributes = %u\n",
- prefix, ch->ascent, ch->descent, (unsigned int) ch->attributes);
-}
-
-static void
-dump_font_struct(XFontStruct * font)
-{
- printf("ascent = %d, descent = %d\n", font->ascent, font->descent);
- printf("char_or_byte2 = (%u,%u)\n",
- font->min_char_or_byte2, font->max_char_or_byte2);
- printf("byte1 = (%u,%u)\n", font->min_byte1, font->max_byte1);
- printf("all_chars_exist = %s\n", font->all_chars_exist ? "True" : "False");
- printf("default_char = %c (\\%03o)\n",
- (char) (isprint(font->default_char) ? font->default_char : ' '),
- font->default_char);
- dump_char_struct(&font->min_bounds, "min> ");
- dump_char_struct(&font->max_bounds, "max> ");
-#if 0
- for (c = font->min_char_or_byte2; c <= font->max_char_or_byte2; c++) {
- char prefix[8];
- sprintf(prefix, "%d> ", c);
- dump_char_struct(&font->per_char[c], prefix);
- }
-#endif
-}
-
-static void
-dump_bitmap(unsigned int width, unsigned int height, GLubyte * bitmap)
-{
- unsigned int x, y;
-
- printf(" ");
- for (x = 0; x < 8 * width; x++)
- printf("%o", 7 - (x % 8));
- putchar('\n');
- for (y = 0; y < height; y++) {
- printf("%3o:", y);
- for (x = 0; x < 8 * width; x++)
- putchar((bitmap[width * (height - y - 1) + x / 8] & (1 << (7 - (x %
- 8))))
- ? '*' : '.');
- printf(" ");
- for (x = 0; x < width; x++)
- printf("0x%02x, ", bitmap[width * (height - y - 1) + x]);
- putchar('\n');
- }
-}
-#endif /* DEBUG */
-
-
-/* Implementation. */
-
-/* Fill a BITMAP with a character C from thew current font
- in the graphics context GC. WIDTH is the width in bytes
- and HEIGHT is the height in bits.
-
- Note that the generated bitmaps must be used with
-
- glPixelStorei (GL_UNPACK_SWAP_BYTES, GL_FALSE);
- glPixelStorei (GL_UNPACK_LSB_FIRST, GL_FALSE);
- glPixelStorei (GL_UNPACK_ROW_LENGTH, 0);
- glPixelStorei (GL_UNPACK_SKIP_ROWS, 0);
- glPixelStorei (GL_UNPACK_SKIP_PIXELS, 0);
- glPixelStorei (GL_UNPACK_ALIGNMENT, 1);
-
- Possible optimizations:
-
- * use only one reusable pixmap with the maximum dimensions.
- * draw the entire font into a single pixmap (careful with
- proportional fonts!).
-*/
-
-
-/*
- * Generate OpenGL-compatible bitmap.
- */
-static void
-fill_bitmap(Display * dpy, Window win, GC gc,
- unsigned int width, unsigned int height,
- int x0, int y0, unsigned int c, GLubyte * bitmap)
-{
- XImage *image;
- unsigned int x, y;
- Pixmap pixmap;
- XChar2b char2b;
-
- pixmap = XCreatePixmap(dpy, win, 8 * width, height, 1);
- XSetForeground(dpy, gc, 0);
- XFillRectangle(dpy, pixmap, gc, 0, 0, 8 * width, height);
- XSetForeground(dpy, gc, 1);
-
- char2b.byte1 = (c >> 8) & 0xff;
- char2b.byte2 = (c & 0xff);
-
- XDrawString16(dpy, pixmap, gc, x0, y0, &char2b, 1);
-
- image = XGetImage(dpy, pixmap, 0, 0, 8 * width, height, 1, XYPixmap);
- if (image) {
- /* Fill the bitmap (X11 and OpenGL are upside down wrt each other). */
- for (y = 0; y < height; y++)
- for (x = 0; x < 8 * width; x++)
- if (XGetPixel(image, x, y))
- bitmap[width * (height - y - 1) + x / 8] |=
- (1 << (7 - (x % 8)));
- XDestroyImage(image);
- }
-
- XFreePixmap(dpy, pixmap);
-}
-
-/*
- * determine if a given glyph is valid and return the
- * corresponding XCharStruct.
- */
-static XCharStruct *
-isvalid(XFontStruct * fs, int which)
-{
- unsigned int rows, pages;
- int byte1 = 0, byte2 = 0;
- int i, valid = 1;
-
- rows = fs->max_byte1 - fs->min_byte1 + 1;
- pages = fs->max_char_or_byte2 - fs->min_char_or_byte2 + 1;
-
- if (rows == 1) {
- /* "linear" fonts */
- if ((fs->min_char_or_byte2 > which) || (fs->max_char_or_byte2 < which))
- valid = 0;
- }
- else {
- /* "matrix" fonts */
- byte2 = which & 0xff;
- byte1 = which >> 8;
- if ((fs->min_char_or_byte2 > byte2) ||
- (fs->max_char_or_byte2 < byte2) ||
- (fs->min_byte1 > byte1) || (fs->max_byte1 < byte1))
- valid = 0;
- }
-
- if (valid) {
- if (fs->per_char) {
- if (rows == 1) {
- /* "linear" fonts */
- return (fs->per_char + (which - fs->min_char_or_byte2));
- }
- else {
- /* "matrix" fonts */
- i = ((byte1 - fs->min_byte1) * pages) +
- (byte2 - fs->min_char_or_byte2);
- return (fs->per_char + i);
- }
- }
- else {
- return (&fs->min_bounds);
- }
- }
- return (NULL);
-}
-
-_X_HIDDEN void
-DRI_glXUseXFont(Font font, int first, int count, int listbase)
-{
- GLXContext CC;
- Display *dpy;
- Window win;
- Pixmap pixmap;
- GC gc;
- XGCValues values;
- unsigned long valuemask;
- XFontStruct *fs;
-
- GLint swapbytes, lsbfirst, rowlength;
- GLint skiprows, skippixels, alignment;
-
- unsigned int max_width, max_height, max_bm_width, max_bm_height;
- GLubyte *bm;
-
- int i;
-
- CC = __glXGetCurrentContext();
- dpy = CC->currentDpy;
- win = CC->currentDrawable;
-
- fs = XQueryFont(dpy, font);
- if (!fs) {
- __glXSetError(CC, GL_INVALID_VALUE);
- return;
- }
-
- /* Allocate a bitmap that can fit all characters. */
- max_width = fs->max_bounds.rbearing - fs->min_bounds.lbearing;
- max_height = fs->max_bounds.ascent + fs->max_bounds.descent;
- max_bm_width = (max_width + 7) / 8;
- max_bm_height = max_height;
-
- bm = (GLubyte *) Xmalloc((max_bm_width * max_bm_height) * sizeof(GLubyte));
- if (!bm) {
- XFreeFontInfo(NULL, fs, 1);
- __glXSetError(CC, GL_OUT_OF_MEMORY);
- return;
- }
-
-#if 0
- /* get the page info */
- pages = fs->max_char_or_byte2 - fs->min_char_or_byte2 + 1;
- firstchar = (fs->min_byte1 << 8) + fs->min_char_or_byte2;
- lastchar = (fs->max_byte1 << 8) + fs->max_char_or_byte2;
- rows = fs->max_byte1 - fs->min_byte1 + 1;
- unsigned int first_char, last_char, pages, rows;
-#endif
-
- /* Save the current packing mode for bitmaps. */
- glGetIntegerv(GL_UNPACK_SWAP_BYTES, &swapbytes);
- glGetIntegerv(GL_UNPACK_LSB_FIRST, &lsbfirst);
- glGetIntegerv(GL_UNPACK_ROW_LENGTH, &rowlength);
- glGetIntegerv(GL_UNPACK_SKIP_ROWS, &skiprows);
- glGetIntegerv(GL_UNPACK_SKIP_PIXELS, &skippixels);
- glGetIntegerv(GL_UNPACK_ALIGNMENT, &alignment);
-
- /* Enforce a standard packing mode which is compatible with
- fill_bitmap() from above. This is actually the default mode,
- except for the (non)alignment. */
- glPixelStorei(GL_UNPACK_SWAP_BYTES, GL_FALSE);
- glPixelStorei(GL_UNPACK_LSB_FIRST, GL_FALSE);
- glPixelStorei(GL_UNPACK_ROW_LENGTH, 0);
- glPixelStorei(GL_UNPACK_SKIP_ROWS, 0);
- glPixelStorei(GL_UNPACK_SKIP_PIXELS, 0);
- glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
-
- pixmap = XCreatePixmap(dpy, win, 10, 10, 1);
- values.foreground = BlackPixel(dpy, DefaultScreen(dpy));
- values.background = WhitePixel(dpy, DefaultScreen(dpy));
- values.font = fs->fid;
- valuemask = GCForeground | GCBackground | GCFont;
- gc = XCreateGC(dpy, pixmap, valuemask, &values);
- XFreePixmap(dpy, pixmap);
-
-#ifdef DEBUG
- if (debug_xfonts)
- dump_font_struct(fs);
-#endif
-
- for (i = 0; i < count; i++) {
- unsigned int width, height, bm_width, bm_height;
- GLfloat x0, y0, dx, dy;
- XCharStruct *ch;
- int x, y;
- unsigned int c = first + i;
- int list = listbase + i;
- int valid;
-
- /* check on index validity and get the bounds */
- ch = isvalid(fs, c);
- if (!ch) {
- ch = &fs->max_bounds;
- valid = 0;
- }
- else {
- valid = 1;
- }
-
-#ifdef DEBUG
- if (debug_xfonts) {
- char s[7];
- sprintf(s, isprint(c) ? "%c> " : "\\%03o> ", c);
- dump_char_struct(ch, s);
- }
-#endif
-
- /* glBitmap()' parameters:
- straight from the glXUseXFont(3) manpage. */
- width = ch->rbearing - ch->lbearing;
- height = ch->ascent + ch->descent;
- x0 = -ch->lbearing;
- y0 = ch->descent - 1;
- dx = ch->width;
- dy = 0;
-
- /* X11's starting point. */
- x = -ch->lbearing;
- y = ch->ascent;
-
- /* Round the width to a multiple of eight. We will use this also
- for the pixmap for capturing the X11 font. This is slightly
- inefficient, but it makes the OpenGL part real easy. */
- bm_width = (width + 7) / 8;
- bm_height = height;
-
- glNewList(list, GL_COMPILE);
- if (valid && (bm_width > 0) && (bm_height > 0)) {
-
- memset(bm, '\0', bm_width * bm_height);
- fill_bitmap(dpy, win, gc, bm_width, bm_height, x, y, c, bm);
-
- glBitmap(width, height, x0, y0, dx, dy, bm);
-#ifdef DEBUG
- if (debug_xfonts) {
- printf("width/height = %u/%u\n", width, height);
- printf("bm_width/bm_height = %u/%u\n", bm_width, bm_height);
- dump_bitmap(bm_width, bm_height, bm);
- }
-#endif
- }
- else {
- glBitmap(0, 0, 0.0, 0.0, dx, dy, NULL);
- }
- glEndList();
- }
-
- Xfree(bm);
- XFreeFontInfo(NULL, fs, 1);
- XFreeGC(dpy, gc);
-
- /* Restore saved packing modes. */
- glPixelStorei(GL_UNPACK_SWAP_BYTES, swapbytes);
- glPixelStorei(GL_UNPACK_LSB_FIRST, lsbfirst);
- glPixelStorei(GL_UNPACK_ROW_LENGTH, rowlength);
- glPixelStorei(GL_UNPACK_SKIP_ROWS, skiprows);
- glPixelStorei(GL_UNPACK_SKIP_PIXELS, skippixels);
- glPixelStorei(GL_UNPACK_ALIGNMENT, alignment);
-}
-
-#endif